feat(i18n): add native app locale inventory#97110
Conversation
|
Codex review: found issues before merge. Reviewed July 1, 2026, 5:57 AM ET / 09:57 UTC. Summary PR surface: Tests +146, Config +29, Other +19461. Total +19636 across 11 files. Reproducibility: yes. for the review finding: source inspection of the PR head artifact shows non-UI DebugHandler, NodePresenceAliveBeacon, and OpenClawMacCLI conditionals still included in apps/.i18n/native-source.json. Review metrics: 2 noteworthy metrics.
Stored data model Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Security Review findings
Review detailsBest possible solution: Keep the native inventory pattern, but scope conditional extraction to UI contexts, regenerate the artifact and tests, and land only after maintainers accept the separate native-i18n CI job. Do we have a high-confidence way to reproduce the issue? Yes for the review finding: source inspection of the PR head artifact shows non-UI DebugHandler, NodePresenceAliveBeacon, and OpenClawMacCLI conditionals still included in apps/.i18n/native-source.json. Is this the best way to solve the issue? Not yet; a repo-local generator matches the existing Control UI i18n pattern, but the extractor needs a tighter UI boundary and the separate CI job needs maintainer acceptance. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against fcb135dfc13e. Label changesLabel justifications:
Evidence reviewedPR surface: Tests +146, Config +29, Other +19461. Total +19636 across 11 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
ab24f11 to
1545198
Compare
e1c8f00 to
0a1b553
Compare
|
Final restack head: Exact-head proof:
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
Dependency GuardThis PR changes dependency-related files. Maintainers should confirm these changes are intentional. Changed files:
Maintainer follow-up:
|
Dependency graph changes notedThis PR includes dependency graph changes. The dependency guard is informational because the PR author is a repository admin or a member of
Security review is still recommended before merge when the dependency graph change is intentional. |
|
Merged via rebase.
|
What Problem This Solves
Native Android and Apple strings were outside the Control UI translation checks, so adding a language could leave app surfaces silently untranslated.
Why This Change Was Made
Add a deterministic inventory for Android Compose/resources and Apple SwiftUI/UIKit sources across iOS, macOS, and shared OpenClawKit. The shared matrix covers 21 target locales and feeds the existing provider-backed translation process.
The extractor covers direct UI calls, named UI arguments, multiline and concatenated Swift text, conditional branches, Swift
switchstring properties, Kotlinwhenstring helpers, Android resource collections, and user-visible state text. It excludes tests/generated paths, build substitutions, persistence/config identifiers, protocol payloads, and other machine literals.User Impact
CI detects native-app i18n drift across 2,318 source entries for Simplified Chinese, Traditional Chinese, Brazilian Portuguese, German, Spanish, Japanese, Korean, French, Hindi, Arabic, Italian, Turkish, Ukrainian, Indonesian, Polish, Thai, Vietnamese, Dutch, Persian, Russian, and Swedish.
Evidence
node scripts/run-vitest.mjs src/scripts/ci-changed-scope.test.ts test/scripts/native-app-i18n.test.ts test/scripts/plugin-prerelease-test-plan.test.ts(40 tests)node --import tsx scripts/native-app-i18n.ts check(2,318entries)git diff --checkThis is the foundation PR for the stacked Android, Apple, and refresh branches.