Skip to content

fix(mobile): unify Gujarati to-do session and voice input copy - #9313

Merged
iscekic merged 1 commit into
mainfrom
drain/gu-todo-voice-copy
Oct 30, 2026
Merged

iscekic merged 1 commit into
mainfrom
drain/gu-todo-voice-copy

Conversation

@iscekic

@iscekic iscekic commented Oct 30, 2026

Copy link
Copy Markdown
Collaborator

Evidence

Evidence: partially demonstrated — the six approved findings were confirmed in the Gujarati catalog on main (78bc53382), and the fixed strings were then observed on the real Android dev client against the local stack, signed in as a seeded test account with the app language set to Gujarati: the to-do detail with four linked sessions, its session overflow sheet and unlink confirm, and the to-do lists' open counts. The voice input settings screen was captured in Gujarati too. Four voice input strings (gatewaySignInRequired, noSpeech, stopped, languageNotInstalledMessage, offlineModelDownloadScheduled) could not be reached on the emulator: its speech service reports no supported locale, so a microphone attempt lands on the "voice input is unavailable for this device's language" line before any consent, download or gateway-auth state, and the gateway sign-in line needs a signed-out request. Those values were verified in-process instead: a throwaway mount of the app's i18n instance with changeLanguage('gu') asserted each value with exactUsedKey equal to the key (no English fallback), the singular/plural open count at one and at two, and classifyVoiceInputError for the gateway-auth, no-speech and aborted codes; that smoke was deleted before the commit.

What changed

One locale, values only, in the Gujarati catalog, plus one line in the wording exceptions file.

  • One word for "session" in the to-do detail. Eleven values in the to-do item block move from the loanword to the catalog's majority term, which the notifications block already uses for the same object: the untitled linked session, the four session status labels, the pull-request label and its numbered form, the open hint, the unlink action and its confirm message, and the start-new-session button and its hint. Agreement stays neuter, so only the noun moves.
  • Single open count. The one category reads {{count}} ખુલ્લું with the plural kept in other. The one-wording check groups both by the identical English string, so the Gujarati exceptions array gains "{{count}} open"; the Greek, Finnish and Swedish catalogs already take exactly this route for the same family.
  • Gateway sign-in line names transcription. It now says sign in to use the voice-to-text feature through the same wording its sibling gateway errors use, and keeps the product name.
  • Offline spelling. Both remaining spellings of the loanword move to the form the catalog already uses for online and offline in the same message.
  • Tap spelling. The microphone instructions in stopped and noSpeech move to the spelling testPlaceholder already uses, so all three instructions in the voice input flow read the same.

No key, placeholder, plural category, nesting reference or English value changed. The notifications namespace keeps its own session term: another Gujarati work item owns that block.

Verification

  • node tools/i18n/check-catalogs.mjs: 87 languages, every catalog matches the English one.
  • node tools/i18n/check-plurals.mjs: every counted message and every locale declares its plural categories.
  • Mobile i18n suite: 21 files, 1820 tests, all passed.
  • Format check over the mobile source passes; the wording exceptions file lists no differences.
  • Device run on the emulator against the local dev stack, app language Gujarati, seeded personal account:
    • to-do detail: sessions header, the untitled linked session row, the four status chips, the start-new-session and link-session buttons;
    • session overflow sheet and unlink confirm: both use the same term as the rows above them;
    • to-do lists: one list shows the singular open count and another the plural;
    • voice input settings: the test field placeholder and the microphone status line render in Gujarati.

Design gate

Design gate: 4 cells, 0 errors, 13 warnings — pnpm dev:mobile:design-gate run on the to-do detail and voice input settings links, matrix standard, run against this head and uploaded for it.

Warning reasons, all pre-existing and outside this copy change:

  • touch-target on the mark-done prompt chip and on the microphone button: both controls exist unchanged on main; this change moves words, not frames.
  • unsettled on both screens: the detail screen carries a relative-time ticker and the voice screen re-renders while its model catalogue query settles, so the sampler never saw three identical frames; neither screen produced a layout-shift or overlap finding.

Production prerequisites

None.

Proxy answers

The owner's proxy gave these answers in the owner's place.

  1. Question: openCount fix: Finding AppBuilder - Fix model selector not showing saved model on reload #4 (singular one-count) cannot pass check:i18n without adding "{{count}} open" to the gu array of tools/i18n/wording-exceptions.json, a second file. el/fi/sv already do exactly this. Proceed?
    Answer: Fix + add the gu exception (Recommended)
    Confidence: 0.85 · Precedent: Fix the root cause and the class of the issue: session 8dbecc6e9e16, "please check all languages and so fix the class"; a small fix that unblocks the current PR's CI goes in that PR: session a9522cd75f53, "fix in this PR"
  2. Question: tap in noSpeech: voiceInput.noSpeech holds the identical sentence as stopped (same instruction, same feature) but with ટેપ. The finding and brief name only stopped and testPlaceholder. Change noSpeech to ટૅપ too?
    Answer: Change noSpeech too (Recommended)
    Confidence: 0.85 · Precedent: Fix the class, not the single symptom: session 00eb2a1d3e4b, "if anything repeats the same mistake over and over again, fix the class"; if you see a gap, fix it: session 89824a222897
  3. Question: gatewaySignInRequired: Wording for voiceInput.gatewaySignInRequired (English: "Sign in to use gateway transcription.")? Both keep "Kilo Gateway" and the અવાજને લખાણમાં ફેરવ… stem of its siblings.
    Answer: "Kilo Gateway દ્વારા અવાજને લખાણમાં ફેરવવાની સુવિધા વાપરવા સાઇન ઇન કરો." (Recommended)
    Confidence: 0.60 · Precedent: none

Name a session the same way across the to-do detail, give the single open
count a singular adjective, and align the voice input strings on the
transcription wording, the offline spelling, and the tap spelling.
@iscekic iscekic added drain Work item from the findings drain janitor:i18n Janitor finding: mobile copy and catalog checks labels Oct 30, 2026
@iscekic

iscekic commented Oct 30, 2026

Copy link
Copy Markdown
Collaborator Author

bot: Gujarati copy verified on the Android dev client against the local stack, signed in as a seeded test account with the app language set to Gujarati. Each capture is paired with a UI tree dump taken in the same command; the quoted strings in the body come from those dumps.

  • To-do detail: sessions header, the untitled linked session row, the status chips for a session waiting on input, one running, one finished and one with a pull request, plus the start-new-session and link-session buttons all use one term for the session.
  • Session overflow: the unlink action and its confirm message use the same term as the rows above them.
  • To-do lists: one list renders the singular open count and another the plural.
  • Voice input settings: the test field placeholder and the microphone instruction render in Gujarati.
  • Design gate: contact sheet of the standard matrix for both screens.

Gujarati to-do detail with four linked session status rows and the session action buttons

Gujarati session overflow sheet offering the unlink action

Gujarati unlink confirmation describing what the action removes

Gujarati to-do lists with singular and plural open counts

Gujarati voice input settings with the test field and microphone instruction

Design gate contact sheet for the to-do detail and voice input settings screens

@kilo-code-bot

kilo-code-bot Bot commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Files Reviewed (2 files)
  • apps/mobile/src/i18n/locales/gu.json - value-only copy changes; keys, {{count}}, {{language}}, {{number}} and {{title}} placeholders, plural categories, and the _one/_other split are unchanged
  • tools/i18n/wording-exceptions.json - the added "{{count}} open" gu entry matches the folded English source ({{count}} open) that the one-wording check groups by in tools/i18n/check-catalogs.mjs:947, and the array stays sorted ahead of no other entries

Reviewed by deepseek-flash-latest · Input: 59.9K · Output: 6.8K · Cached: 499.5K

Review guidance: REVIEW.md from base branch main

@iscekic iscekic added the merge:bot Bot-owned review; merge when ready once readiness passes and a review approves. label Oct 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

drain Work item from the findings drain janitor:i18n Janitor finding: mobile copy and catalog checks merge:bot Bot-owned review; merge when ready once readiness passes and a review approves.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants