Repository navigation
fix(mobile): show localized Auto model names in settings model rows - #8565
Conversation
Model rows that resolve a stored model from the gateway catalogue used the
catalogue's own name, which is English for Kilo's Auto models ("Auto Small"),
while the picker that writes the same id rendered the localized label
("Auto Klein"). The two disagreed on the same screen in a non-English app
language.
Add `modelLabelFromCatalogue`, which resolves an id through `autoModelLabel`
with the catalogue entry as the fallback, and route the tool-summary
translation row, the code-reviewer overview model row, the security-agent
analysis model rows and the to-do list defaults summary through it. The
persisted model name stays the catalogue's raw one, so the rows follow a
language change instead of freezing the label that was current at pick time.
|
bot: Android emulator, German app language, local dev stack with a seeded local test account. The settings rows and the model picker now name the app's Auto models the same way.
|
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Executive SummaryThe incremental commit closes the only prior finding: the tautological persisted-name assertion is gone, and the new case mounts in English, changes the app language to German after mount, and re-reads the row, which pins render-time resolution rather than a frozen label. Assumptions: Files Reviewed (1 file)
Previous Review Summary (commit 5eed38b)Current summary above is authoritative. Previous snapshots are kept for context only. Previous review (commit 5eed38b)Status: 1 Issue Found | Recommendation: Address before merge Executive SummaryThe Assumptions: Overview
Issue Details (click to expand)SUGGESTION
Files Reviewed (8 files)
Reviewed by deepseek-flash-latest · Input: 45.9K · Output: 5.3K · Cached: 403.2K Review guidance: REVIEW.md from base branch |





Change
Settings rows that resolve a stored model from the gateway catalogue showed the catalogue's own name. For Kilo's Auto models that name is English (
Auto Small,Auto Efficient), while the picker that writes the same id labels it from the app catalogue (Auto Klein,Auto Effizient). In a non-English app language the row and the picker disagreed on the same screen.modelLabelFromCatalogue(models, id, fallbackName?)besideautoModelLabelinapps/mobile/src/lib/auto-model-name.ts: it resolves the id through the Auto labels and falls back to the catalogue entry, then the persisted name, then the id.components/tool-summary-translation-settings-screen.tsx(row subtitle, including a stored model the live catalogue dropped)components/code-reviewer/platform-overview-rows.ts(overview model row)components/security-agent/analysis-settings-screen.tsx(triage, analysis and remediation model rows)components/todos/use-todo-list-defaults-summary.ts(list header summary)setModelunchanged except for a comment), so the label is computed at render and follows a language change instead of freezing the language current at pick time. Every surface recomputes per render and already subscribes touseTranslation.Voice-input transcription rows are unchanged: that catalogue is the transcription provider list, not the Auto catalogue, and its row and picker already render the same raw name.
Tests
apps/mobileVitest, full suite: 1253 files, 18597 passed / 2 skipped.Added:
lib/auto-model-name.test.ts— the resolver localizes a catalogue Auto model, a stored Auto model the catalogue dropped, keeps a third-party catalogue name, and falls back to the stored name then the id.components/code-reviewer/platform-overview-rows.test.ts— in German the model row readsAuto Effizient, and a slug the catalogue lacks stays the slug.components/tool-summary-translation-settings-screen.language.mounted.test.tsx— in German the storedkilo-auto/smallrow readsAuto Kleinand a storedkilo-auto/efficientrow readsAuto Effizient; a third case mounts in English (Auto Small), changes the app language to German after mount, and re-reads the row asAuto Klein, which pins the render-time resolution rather than a label frozen at pick time. All three fail on the base revision.End-to-end evidence (Android emulator, German app language, local dev stack)
Signed in with a seeded local fake account, app language set to German:
kilo-auto/smallselected, the Model row readsAuto Klein.Auto Klein, andkilo-auto/efficientasAuto Effizient; selecting it closes the picker.Auto Effizient— the row and the picker now agree.Auto Effizientfor a config stored withkilo-auto/efficient.Programmieren · Auto Effizientfor a list defaulting tokilo-auto/efficient.Not exercised end to end: the Security Agent analysis settings rows. The local GitHub integration fixture cannot pass the app's
vulnerability_alertspermission gate, so the screen is unreachable in this environment; those rows call the same resolver, and the resolver is covered by the unit tests above.Proxy answers
The owner's proxy gave these answers in the owner's place.
Answer: Leave them untouched (Recommended)
Confidence: 0.70 · Precedent: Speed and least work: "do the least amount of work possible, with no drop in quality". The brief makes voice conditional, and that catalogue has no Auto ids.