fix(ui): repair text spacing left behind by the icon migration (#4217 follow-up)#4238
Conversation
…follow-up)
The icon-system migration stripped decorative glyphs from translated
strings and from one tooltip, but did not collapse the whitespace or
restore the separators around them.
- dashboard.telemetry_help.step4: the stripped star left a double space
in en/fr/pl/ru/zh_Hans. Collapsed to a single space; zh_Hans collapses
to none, since Chinese does not space between words.
- map/popups/sections.tsx: the source-row tooltip lost its "→" separator,
leaving the run-on "Open <source> Node Details". Rephrased to
"Open Node Details for <source>" rather than restoring the arrow --
no-hardcoded-ui-glyph evaluates each template-literal quasi separately,
so a mid-sentence arrow reads as leading (" → Node Details") and trips
the rule, contrary to its own mid-sentence-arrow exemption.
No behavior change; locale keys are untouched.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016bxVewVnissUKiGZmhf9FW
|
Claude finished @Yeraze's task —— View job PR Review: fix(ui): repair text spacing left behind by the icon migration
This is a clean, surgical follow-up to #4217. The changes are correct and the reasoning in the PR description is sound. A few observations: Locale fixes (en, pl, ru, zh_Hans) ✅ French locale — minor note 🔍
zh_Hans ✅ No issues found — the changes are minimal, correct, and well-tested per the PR description (115 popup tests passing, locale scripts clean). One optional suggestion for a follow-up (not a blocker): the French string could say Verdict: approve as-is. |
Follow-up to #4217, which stripped decorative glyphs from translated strings and from one tooltip but did not collapse the whitespace or restore the separators around them.
Changes
Locale double-spaces —
dashboard.telemetry_help.step4read"Click the star icon…"inen,fr,pl,ru,zh_Hansafter the ⭐ was removed. Collapsed to a single space.zh_Hanscollapses to no space, since Chinese does not space between words.Tooltip separator —
src/components/map/popups/sections.tsxlost its→, leaving the run-onOpen <source> Node Details. Rephrased toOpen Node Details for <source>.I chose rephrasing over restoring the arrow deliberately:
no-hardcoded-ui-glyphevaluates each template-literal quasi separately, so in`Open ${s.sourceName} → Node Details`the second quasi is" → Node Details"and matchesLEADING_UI_SYMBOL_PATTERN(/^\s*[…→…]/). The arrow is mid-sentence in the rendered string, so this trips the rule contrary to its own comment ("Mid-sentence arrows describe direction/relationships; a leading arrow is an icon"). Rephrasing avoids both the awkward string and aneslint-disablefor a cosmetic tooltip. The quasi-boundary false positive itself is left unfixed — see below.Not addressed here
Two items from the #4217 review remain open, both worth a separate issue:
no-hardcoded-ui-glyph's character class omits●○◐⊘, so four functional status indicators were missed by the migration and can be reintroduced with green CI:MeshCoreRoomsView.tsx:239(three-state login dot),LiveTracePanel.tsx:135,RadioConfigurationSection.tsx:503-504,ChannelsConfigSection.tsx:548.Validation
npx eslint src/components/map/popups/sections.tsx— cleannode scripts/check-ui-locale-glyphs.mjs— passedvitest run src/components/map/popups— 115 passed,success: truenpm run lint:cifails locally, but every failing path is under.claude/worktrees/(stale local agent worktrees, git-excluded). Zero non-worktree ratchet violations.No behavior change; no locale keys added, renamed, or dropped.
🤖 Generated with Claude Code
https://claude.ai/code/session_016bxVewVnissUKiGZmhf9FW