Conversation
@opentui/solid declares peerDependencies.solid-js "1.9.11", incompatible with the workspace catalog pin "1.9.10". Bun could not collapse the two into one install and nested a second, unpatched solid-js@1.9.13 under @opentui/solid and @solidjs/start. Two live solid-js instances break Solid's context sharing: the renderer context created by @opentui/solid's copy is invisible to useRenderer() calls from the app tree (and from the ErrorBoundary's own fallback UI), so any TUI bootstrap error now crashes the whole process with "No renderer found" instead of rendering the TUI (or even a diagnostic). Add solid-js to the existing "overrides" block (same pattern already used for seroval etc.) so every consumer resolves to the single patched 1.9.10 instance. Verified: rebuilt CLI no longer prints "multiple instances of Solid" and reaches TUI plugin bootstrap instead of crashing at ~3s.
Add/update translation keys in all 18 locale files (ar, br, bs, da, de, en, es, fr, ja, ko, no, pl, ru, th, tr, zh, zht) plus the parity test, and wire the new keys into the settings and dialog components that previously had hardcoded English strings (debate model selector, local LLM dialog, settings dialog, and the settings-* panels for android, audio, benchmark, configuration, disk quota, general, git auth, mobile nav, observability, plugins, providers, remote access). Verified: i18n parity test passes (6/6, 25460 assertions).
bun test --max-concurrency=1 for the mobile package's test/test:ci scripts.
The 2026-07-17 i18n audit only verified fr/zh against the technical allowlist (parity.test.ts test 6), so ~26 real UI words under settings.fork.*/settings.localConfig.*/settings.desktop.remote.* were silently left as literal English copies in the other 14 locales (ar, br, bs, da, de, es, ja, ko, no, pl, ru, th, zht, tr) — most visibly the Audio/Benchmark/Configuration section titles the user reported. Translate the affected words (Audio, Configuration, Mode, Auto, Capture, Diagnostics, Model, Traces, Confirmation, Type, Plugins, Skills, Vision, Local, Internet, ...) per locale, keeping genuine cognates (e.g. "Benchmark"/"Internet" in German/Portuguese/Danish) where that reflects real UI convention rather than an oversight. Left untouched: URLs/placeholders/acronyms (CPU, GPU, RAM, ID, Top P) and the pre-existing deliberate allowlist entries for keyboard-shortcut group labels (Session/Navigation/Terminal/Prompt). Root cause of the silent gap: parity.test.ts's "audited settings scope" test only checked fr and zh against the allowlist, never the other 14 locales. Broadened it to loop over every locale so the same class of bug can't ship silently again. Verified: i18n parity test passes (6/6, 25474 assertions); no target key remains identical to English outside a deliberate cognate choice.
.github/workflows/typecheck.yml duplicated the 1500-LOC gate inline, predating scripts/loc-gate.mjs's i18n/ exclusion (flat translation dictionaries aren't "god files", ADR-0002). Every push now blocks on typecheck once locale files grow past 1500 lines, even though the PR-triggered loc-gate.yml workflow already exempts them via the same rule. Delegate to scripts/loc-gate.mjs directly so there's one source of truth for the LOC budget instead of two gates silently drifting apart. Verified: node scripts/loc-gate.mjs passes locally (246 files scanned, i18n/ excluded, none over 1500 LOC).
|
This PR doesn't fully meet our contributing guidelines and PR template. What needs to be fixed:
Please edit this PR description to address the above within 2 hours, or it will be automatically closed. If you believe this was flagged incorrectly, please let a maintainer know. |
|
Hey! Your PR title Please update it to start with one of:
Where See CONTRIBUTING.md for details. |
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.
Summary
No renderer found) caused by@opentui/solidpulling in a second, unpatched solid-js copy instead of the workspace catalog version.scripts/loc-gate.mjs(already excludes i18n/ as flat data, not "god files") instead of a stale inline duplicate that doesn't.Test plan
bun testi18n parity suite: 6/6 pass (25474 assertions)bun typecheckcleandevat 87c5580 (CodeQL, generate, nix-eval, test, typecheck, deploy)