Repository navigation
fix(mobile): label the variable reveal control as an action - #8473
Conversation
The row-level reveal control in the manual environment-variables editor announced the "Secret" noun, while the edit form and the backend headers field announce the action with profiles.secrets.reveal. Use the same copy so a screen reader matches every reveal control the same way. The noun key has no other source use, so it leaves every catalog; the catalog check rejects an English key no source file references.
The to-do list settings sheet now subscribes to the Android back press, so its picker test's react-native mock needs the export to mount the sheet.
An empty arrow function in the mock trips the lint rule against empty functions; a spy keeps the subscription shape and passes lint.
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Executive SummaryThe incremental change since the last review is a one-line test-only Assumptions: Files Reviewed (92 files)
Previous Review Summary (commit c3ecf2b)Current summary above is authoritative. Previous snapshots are kept for context only. Previous review (commit c3ecf2b)Status: No Issues Found | Recommendation: Merge Executive SummaryThe reveal control's label change is consistent with the existing reveal toggles in the edit form and backend headers field, and the Assumptions: Files Reviewed (92 files)
Reviewed by deepseek-flash-latest · Input: 45.1K · Output: 4.2K · Cached: 481.8K Review guidance: REVIEW.md from base branch |
main already repaired the to-do picker's react-native mock, so the merge takes main's stub.
Change
profiles.secretLabel, the noun "Secret"; it now usesprofiles.secrets.reveal, the same copy the edit-form reveal toggle (profile-variables-rows.tsx:245) and the backend headers field (backend-headers-field.tsx:50) use.profiles.secretLabelhad no other source use after the change, so it is removed fromen.jsonand all 86 non-English catalogs. The catalog check rejects an English key that no source file references.apps/mobile/src/components/agents/advanced-config-panel.mounted.test.tsxadds a secret variable and asserts the row control announces the reveal action and reveals the draft value when pressed. With the previous label the test fails (Reveal valuecontrol missing); with this change it passes.Not changed: the edit-form toggle keeps one label for both states and conveys state through
accessibilityState.selected, matching the backend headers field.Verification
Unit and static checks:
pnpm --filter kilo-app check:i18n—check-catalogs: 87 languages, every catalog matches en.json.pnpm --filter kilo-app exec vitest run src/components/agents/advanced-config-panel.mounted.test.tsx— 11 passed.pnpm --filter kilo-app exec vitest run src/components/profiles/profile-variables-screen.mounted.test.tsx src/components/profiles/profile-variables-model.test.ts src/components/agents/advanced-config-panel.mounted.test.tsx src/i18n— 1647 passed.pnpm --filter kilo-app test— full mobile suite.pnpm --filter kilo-app typecheck,pnpm --filter kilo-app lint— clean.Android emulator end-to-end on the local dev stack (dev-client from the CI native artifact, local Postgres, fake test account, app language Khmer to match the reported locale):
uiautomator dumpof the variable row before the change:class="android.widget.Button" content-desc="សម្ងាត់" bounds="[823,1328][924,1429]"(the "Secret" noun; English build:
content-desc="Secret").Android Bundled … apps/mobile/index.js (8242 modules)), the same row control:class="android.widget.Button" content-desc="បង្ហាញតម្លៃ" bounds="[823,1328][924,1429]"— the reveal action, matching the edit form's control in the same locale.
selected="true"on the node and made the draft value visible in the row, so the action still works.The change affects only the announced label; the row's pixels are unchanged, so screenshots cannot show it. The accessibility tree dumps above are the evidence.
Main-side CI repair
maincurrently failsmobile-test (5/8): the to-do list settings sheet subscribes to theAndroid back press, and
todo-list-model-picker.mounted.test.tsx'sreact-nativemock doesnot export
BackHandler, so the shard dies withNo "BackHandler" export is defined on the "react-native" mock. The same shard fails onmainitself (run on the currentmainhead).This branch merges
mainand adds that export to the test mock (one line) so the shard canrun;
vitest run --shard=5/8passes locally with 153 files and 2021 tests.Proxy answers
The owner's proxy gave these answers in the owner's place.
Answer: Reuse profiles.secrets.reveal (Recommended)
Confidence: 0.85 · Precedent: Keep similar elements consistent across surfaces: the owner asked that the thought row match the tool call row.
Answer: Remove it from all catalogs (Recommended)
Confidence: 0.90 · Precedent: Remove obsolete code rather than keep it alongside: "alongside? why not instead?"
Answer: Yes, one mounted test (Recommended)
Confidence: 0.80 · Precedent: Catch errors in PRs as early as possible.