#15 i18n Full-Rollout — Session 0: coverage scanner + parity gate (tooling)#58
Merged
Conversation
…amespace) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…anner correction Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Adds the CLI wrapper around findViolations (Task 1) that walks frontend/src/**/*.tsx, skips allowlisted files, and exits non-zero on violations; --init regenerates the baseline allowlist. Also wires up the scan:i18n / scan:i18n:init / check:i18n / test:i18n / lint:i18n npm scripts. AppLayout.tsx (one of the 8 already-localized pilot files) surfaced as an offender during --init: the "TaskWolf" brand/logo text in the sidebar. Marked it with an i18n-ignore comment since a brand name is non-UI content, not translatable copy. Re-ran --init afterward; all 8 pilot files are now absent from the allowlist and scan:i18n is green (0 hardcoded strings, 66 files still allowlisted).
…ration checklist
… string children) + tests
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Was & Warum
Session 0 des i18n Full-Rollouts (#15, Folge zu #13 Fundament+Pilot). Diese Session liefert nur die Werkzeuge, die den mehrsession-Rollout objektiv auf „100% lokalisiert" zwingen — keine Feature-String-Extraktion, keine Backend-Änderung.
Mechanik (objektive 100%-Ziellinie)
frontend/scripts/i18n-scan*.mjs) über die TypeScript-Compiler-API — abhängigkeitsfrei (kein ESLint-Stack; nutzt das bereits installiertetypescript, passend zur strengen Supply-Chain-Haltung des Repos). Erkennt JSX-Text-Kinder, String-/Template-Literal-Werte der Attributeplaceholder/title/aria-label/alt/labelund String-/Template-Literal-JSX-Expression-Kinder.frontend/scripts/i18n-allowlist.json, 66 Dateien) — CI ab jetzt grün; jede Folge-Session streicht ihre Dateien daraus. Leere Allowlist + Scanner grün = 100%. Neue/un-gelistete.tsx-Dateien sind sofort scanner-pflichtig (Regressionsschutz).frontend/scripts/i18n-parity*.mjs).test:i18n+lint:i18nimfrontend-build-Job (vor dem Build).Commits
35cd774to54f2a90in /frontend #15/fix(frontend): drop deprecated tsconfig baseUrl (unblocks TypeScript 6) #16) + Migrations-Checkliste{'literal'}/{`literal`}-JSX-Kinder) + 8 Tests,.tsx-Scope-Notiz.Verifikation
npm run test:i18n→ 17/17 grün ·npm run lint:i18n→ Scanner OK (0 Verstöße außerhalb Allowlist), Parität OK ·npm run build(tsc + Vite) grün.Nicht in dieser Session
Feature-String-Extraktion (startet Session 1 =
issues), Backend-MessageSource(separater Eintrag #16). Reihenfolge & DoD: Master-Specdocs/superpowers/specs/2026-07-13-i18n-full-rollout-design.md; Plandocs/superpowers/plans/2026-07-13-i18n-full-rollout-session0-tooling.md.Zurückgestellte Minor (aus Reviews, nicht blockierend)
Allowlist-Shrink-only nicht maschinell erzwungen (Konvention + Review);
walk()withFileTypes; Parität-Bad-JSON = rohe SyntaxError (bricht Build trotzdem korrekt); Stale-Allowlist-Eintrag-Warnung;kind-Asserts/Later-Span-Test für die neuen Detection-Tests.🤖 Generated with Claude Code