Add a Number Base Converter tool
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
この issue はまだ評価されていません。
説明
Add a tool that converts integers between binary, octal, decimal and hex (and any base from 2 to 36), and shows two's complement for a chosen bit width. Developers do this all the time, and none of our tools cover it. The Base64 "Encodings" tab only shows the hex of text bytes.
Scope
- Route
/number-base-converter. Registry: title "Number Base Converter", tagline "Numbers",heroDim: "", features like["Binary", "Octal", "Decimal", "Hex", "Two's complement"] lib/number-base.tsusingBigIntonly:parseInteger(input, base?): handles a sign, detects0b,0oand0x, and accepts_or spaces as separators. Errors say which character is wrong and where.formatInteger(value, base, { uppercase, groupSize })for bases 2 to 36toTwosComplement(value, bits)andfromTwosComplement(...)for 8, 16, 32 and 64 bits
- UI: one input with a base select, outputs for 2, 8, 10 and 16 with Copy buttons, a custom base, and a bit-width select.
app/(tools)/base64/is a good structure to copy.
Acceptance criteria
- Tests in
lib/__tests__/number-base.test.ts:"0xff"gives255n,"1111_1111"in base 2 gives255n,"-0b1010"gives-10n,"18446744073709551616"gives hex10000000000000000exactly,"0b102"gives an error that names2,"zz"in base 36 gives1295n,toTwosComplement(-1n, 8)gives11111111, andtoTwosComplement(128n, 8)gives an error - Nothing goes through
NumberorparseInt, so there's no precision loss above 2^53 - The standard new-tool checklist below is complete
Standard new-tool checklist
Everything (home grid, metadata, JSON-LD, OG image, sitemap, manifest, command palette) is driven by the registry in lib/tools.ts, so a new tool is mostly one registry entry plus a route.
- Add an entry to
TOOLSinlib/tools.tsfilling every field of theToolinterface (lib/tools.ts:19-50). UseapplicationCategory: "DeveloperApplication", reuse theCTA_PROJECTS/CTA_CONTACTconstants for the CTA links, and setsitemapPriority: 0.9like the other tools. - Pick
accentVarfrom the six theme variables inapp/globals.css(--cyan,--amber,--rose,--violet,--sky,--lime;--cyanand--rosearen't used by any tool yet) and setaccentHexto that variable's dark-theme value.heroDimmust be""or a substring ofheroHeading. - Write 3 or 4 FAQs (3 renders as a 3-column grid, see
components/shared/ToolPageLayout.tsx:25). KeepmetaTitleunder 60 characters andmetaDescriptionaround 150 to 160. - Keep
featuresandogDescriptionto plain Latin text and punctuation. The social card font is a subset with no arrow or symbol glyphs (lib/og.tsx:33-36). - Create
app/(tools)/<slug>/page.tsx,<Name>Client.tsx(with"use client"), andopengraph-image.tsx. Copypage.tsxandopengraph-image.tsxfromapp/(tools)/base64/and change the slug. - Put all pure logic in
lib/<name>.ts(no React, no DOM) with tests inlib/__tests__/<name>.test.ts. Tests can import with@/like the app does (vitest.config.tshas the alias). - Nothing leaves the browser: no network calls with user input, no analytics, no third-party scripts (the CSP in
middleware.tsblocks external scripts anyway). - Reuse shared pieces:
CopyButton,useToast, and optionallyuseRegisterCommandsfor command palette actions (example inapp/(tools)/base64/Base64Client.tsx:43-53). - Every input has a visible label or an
aria-label, the tool works with the keyboard alone, and it looks right in both light and dark themes. - Add the tool to the "Which tool?" dropdown in
.github/ISSUE_TEMPLATE/bug_report.yml. -
npm run lint && npm run test && npm run buildpasses.
One new tool per contributor, so more people get a chance. Add your registry entry at the end of TOOLS and rebase on develop before asking for review, since other new tools will touch the same file.
Want to work on this? Comment below and I'll assign it to you. Please take one issue at a time, branch off develop, and open your PR against develop with Closes #128 in the description.
- 主要言語
- TypeScript
- スター
- 1
- フォーク
- 9
- 平均マージ
- 10時間 24分
- マージ済み PR(30日)
- 93
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
codercops/toolbelt のほかの issue
-
bug good first issue hacktoberfest
難易度 2/5 1〜3時間 初心者へのやさしさ 90/100
メンテナーはふだん 1 日以内に返信
-
bug good first issue hacktoberfest
難易度 2/5 1〜3時間 初心者へのやさしさ 94/100
メンテナーはふだん 1 日以内に返信
-
bug good first issue hacktoberfest
難易度 2/5 1〜3時間 初心者へのやさしさ 92/100
メンテナーはふだん 1 日以内に返信
-
Stop the JSON formatter's Find bar from typing into the JSON対応中かも @kudala-bharani が 2 日前に担当しました。 オープンbug hacktoberfest help wanted
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
codercops/toolbelt#121 · コメント 2 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
JSON formatter: a duplicate key crashes the whole tool対応中かも @lb1192176991-lab が今日担当しました。 オープンbug good first issue hacktoberfest
難易度 2/5 1〜3時間 初心者へのやさしさ 35/100
codercops/toolbelt#218 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
codercops/toolbelt の issue をすべて見る
似ている issue
-
Area/Cloud Needs Triage Type/Bug
難易度 1/5 1〜3時間 初心者へのやさしさ 86/100
wso2/product-integrator#2847 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 67/100
bluesky-social/social-app#12118 ·
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 1/5 1時間未満 初心者へのやさしさ 85/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 77/100
heygen-com/hyperframes#6021 ·
メンテナーはふだん 1 日以内に返信
-
check:passed streams:edit
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信