fix(ios): localize Settings accessibility labels#105859
Conversation
af978e9 to
401ad0f
Compare
|
Codex review: needs real behavior proof before merge. Reviewed July 12, 2026, 10:29 PM ET / July 13, 2026, 02:29 UTC. Summary PR surface: Other +2. Total +2 across 3 files. Reproducibility: yes. from source, but not from a live device: the gateway action accepted a raw Review metrics: none identified. 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 detailsBest possible solution: Land the typed localized-title change and matching scanner guard after Apple CI completes, ideally with a redacted device or simulator VoiceOver demonstration confirming the spoken non-English labels. Do we have a high-confidence way to reproduce the issue? Yes from source, but not from a live device: the gateway action accepted a raw Is this the best way to solve the issue? Yes; typing the title as AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against e9e7d385e013. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Other +2. Total +2 across 3 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
|
|
Merged via squash.
|
…ility labels 0aabf56 relaxed the wrapper contract to .accessibilityLabel(title) while the same pattern stayed in RAW_LOCALIZATION_BYPASSES, and #105859 then restored Text(title) in SettingsProTabSections.swift, leaving main's apple-app-i18n guard failing in both directions. Revert the contract to the original required pattern; both guard tables validate against current main.
* fix(ios): preserve localized accessibility labels * chore(i18n): refresh native source inventory
…ility labels 488277d relaxed the wrapper contract to .accessibilityLabel(title) while the same pattern stayed in RAW_LOCALIZATION_BYPASSES, and openclaw#105859 then restored Text(title) in SettingsProTabSections.swift, leaving main's apple-app-i18n guard failing in both directions. Revert the contract to the original required pattern; both guard tables validate against current main.
What Problem This Solves
Fixes an issue where localized Settings action accessibility labels could fall back to raw English, and where the Mac app i18n packaging guard failed after the last guarded wrapper was removed.
Why This Change Was Made
Keep localized label keys typed as
LocalizedStringKey, wrap them explicitly for SwiftUI accessibility lookup, and guard against both rawStringsignatures and direct raw accessibility labels.User Impact
VoiceOver receives localized Settings action labels. Mac app packaging no longer fails on the stale guard invariant.
Evidence
corepack pnpm apple:i18n:checkcorepack pnpm test test/scripts/apple-app-i18n.test.ts(13 passing)