Add a Unicode & Invisible Character Inspector tool
メンテナーはふだん 1 日以内に返信
@srikar-naidu がすでに取り組んでいます。
2026年10月29日 から。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 45/100
- issue の種類
- 機能追加
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- nextjs, typescript
調査の方向性
Start by reading CONTRIBUTING.md's new-tool checklist and inspect the existing tool registry, tool pages, client components, and tests. Build the Unicode inspection and normalization logic in lib/ with tests for the listed edge cases, then follow the checklist for the page, registry, OG image, JSON-LD, sitemap, README, package keyword, and bug-report dropdown. Done means the listed acceptance criteria pass, including the lint, test, and build commands.
索引モデルが issue の本文から書いたものです。
説明
What problem does this solve?
Text that looks identical can contain different Unicode characters, invisible whitespace, or different normalization forms. This can cause unexpected behavior when comparing strings, debugging pasted text, or inspecting identifiers.
Toolbelt has encoding and text-conversion tools, but no dedicated way to inspect the characters behind a string.
Proposed solution
Add a fully client-side tool at /unicode-inspector that breaks text down into Unicode code points and makes invisible characters visible.
Scope
- Provide a labeled textarea that updates the inspection results as users type.
- Display one row per Unicode code point, showing:
- The character or a visible placeholder for whitespace/control characters.
- Its code point, such as
U+0041. - Its zero-based UTF-16 offset in the original input.
- Its UTF-16 code units and UTF-8 bytes in hexadecimal.
- Identify common invisible characters, including:
- Space, tab, LF, and CR.
- Non-breaking space (
U+00A0). - Zero-width space (
U+200B). - Zero-width non-joiner/joiner (
U+200C/U+200D). - Byte order mark (
U+FEFF). - Bidirectional formatting controls.
- Explain that some invisible characters are intentional, including joiners used in emoji and writing systems.
- Show separate counts for UTF-16 code units, Unicode code points, and UTF-8 bytes.
- Provide NFC and NFD normalization previews with an indication of whether normalization changes the input.
- Allow copying either normalized result without changing the original input.
- Include examples containing combining accents, emoji, and invisible whitespace.
Acceptance criteria
- Supplementary characters such as emoji appear as one code-point row with two UTF-16 code units.
- Combining sequences remain separate code-point rows and are not presented as single user-perceived characters.
- CRLF input displays CR and LF separately.
- Invisible characters have readable labels rather than blank cells.
- Unpaired UTF-16 surrogates are flagged explicitly; the UI explains that UTF-8 encoding replaces them with U+FFFD.
- NFC/NFD previews correctly distinguish composed and decomposed text, such as
éandefollowed by U+0301. - Input is displayed as text and never interpreted as HTML.
- Large inputs have a documented inspection limit and a clear truncation message.
- Controls are keyboard accessible and results remain readable in both themes.
- Pure inspection and normalization logic lives in
lib/with tests covering ASCII, emoji, combining marks, invisible characters, and unpaired surrogates. - Complete the new-tool checklist in CONTRIBUTING.md, including the registry entry, page, client component, OG image, JSON-LD, sitemap, README gallery/list, package keyword, and bug-report dropdown.
npm run lint && npm run test && npm run buildpass.
A complete Unicode character-name database, confusable-character detection, automatic removal of invisible characters, and grapheme-cluster segmentation are outside v1 scope.
Fit
- This can work entirely in the browser with no server or data leaving the tab.
- 主要言語
- TypeScript
- スター
- 1
- フォーク
- 9
- 平均マージ
- 7時間 3分
- マージ済み PR(30日)
- 199
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
codercops/toolbelt のほかの issue
-
Contributing to toolbelt: start here対応中かも @Saifjafri212213 が 3 日前に担当しました。 オープン
難易度 1/5 1時間未満 初心者へのやさしさ 1/100
codercops/toolbelt#101 · コメント 23 件 ·
メンテナーはふだん 1 日以内に返信
-
[admin] Quarterly content-refresh routine再び着手できるかも @anurag629 が 114 日前に担当しましたが、オープン中のプルリクエストはありません。 オープンadmin-only seo
codercops/toolbelt#47 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
[admin] Repurpose guides to dev communities and social再び着手できるかも @anurag629 が 114 日前に担当しましたが、オープン中のプルリクエストはありません。 オープンadmin-only seo
codercops/toolbelt#44 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
[admin] Digital PR and link outreach for the tools and guides再び着手できるかも @anurag629 が 114 日前に担当しましたが、オープン中のプルリクエストはありません。 オープンadmin-only seo
codercops/toolbelt#43 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
[admin] Submit toolbelt to developer directories and aggregators再び着手できるかも @anurag629 が 114 日前に担当しましたが、オープン中のプルリクエストはありません。 オープンadmin-only seo
codercops/toolbelt#42 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
codercops/toolbelt の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
oxidecomputer/skepsis#102 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
voidzero-dev/void#677 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
kunchenguid/gh-axi#247 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
lidge-jun/opencodex#8101 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信