Skip to content

fix(mobile): show localized Auto model names in settings model rows - #8565

Merged
iscekic merged 3 commits into
mainfrom
drain/localized-auto-model-row-names
Oct 22, 2026
Merged

iscekic merged 3 commits into
mainfrom
drain/localized-auto-model-row-names

Conversation

@iscekic

@iscekic iscekic commented Oct 22, 2026 •

Copy link
Copy Markdown
Collaborator

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.

  • Add modelLabelFromCatalogue(models, id, fallbackName?) beside autoModelLabel in apps/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.
  • Route the four rows that resolve a selected model's name from the catalogue through it:
    • 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)
  • The persisted preference keeps the catalogue's raw name (setModel unchanged 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 to useTranslation.

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/mobile Vitest, 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 reads Auto Effizient, and a slug the catalogue lacks stays the slug.
  • components/tool-summary-translation-settings-screen.language.mounted.test.tsx — in German the stored kilo-auto/small row reads Auto Klein and a stored kilo-auto/efficient row reads Auto Effizient; a third case mounts in English (Auto Small), changes the app language to German after mount, and re-reads the row as Auto 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:

  1. Profile → Settings → "Werkzeugzusammenfassungen übersetzen": with the translation switch on and kilo-auto/small selected, the Model row reads Auto Klein.
  2. The same model appears in the picker as Auto Klein, and kilo-auto/efficient as Auto Effizient; selecting it closes the picker.
  3. After the pick, the row reads Auto Effizient — the row and the picker now agree.
  4. Code Reviewer → GitHub overview: the Modell row reads Auto Effizient for a config stored with kilo-auto/efficient.
  5. To-dos → list header reads Programmieren · Auto Effizient for a list defaulting to kilo-auto/efficient.

Not exercised end to end: the Security Agent analysis settings rows. The local GitHub integration fixture cannot pass the app's vulnerability_alerts permission 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.

  1. Question: Scope: should the voice-input transcription model row and its picker change too?
    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.

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.
@iscekic iscekic added drain Work item from the findings drain explorer:android Finding surfaced by the Android explorer labels Oct 22, 2026
@iscekic

iscekic commented Oct 22, 2026

Copy link
Copy Markdown
Collaborator Author

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.

  • 01-row-auto-klein.png: translation settings model row before any pick.
  • 02-picker-auto-effizient.png: model picker with the second Auto tier selected, every Auto row labelled in the app language.
  • 03-row-auto-effizient.png: translation settings model row after selecting that tier in the picker.
  • 04-reviewer-row-auto-effizient.png: code reviewer overview model row.
  • 05-todo-list-summary.png: to-do list header summary.

Settings model row before any pick

Model picker with the second Auto tier selected

Settings model row after selecting that tier

Code reviewer overview model row

To-do list header summary

@kilo-code-bot

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

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Executive Summary

The 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: [INFERENCE] The new mounted test was not executed in this read-only review; its re-render mechanism matches the existing useTranslation-driven language-change tests, and raw persisted-name storage is still asserted via preference.setModel in tool-summary-translation-settings-screen.mounted.test.tsx.

Files Reviewed (1 file)
  • apps/mobile/src/components/tool-summary-translation-settings-screen.language.mounted.test.tsx
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 Summary

The modelLabelFromCatalogue change is correct at all four call sites; the only finding is a new mounted test that does not verify its stated persisted-name or language-change behavior.

Assumptions: none for runtime behavior; the new tool-summary-translation-settings-screen.language.mounted.test.tsx was not executed in this read-only review, so its post-mount language-change coverage was assessed by reading the test only.

Overview

Severity Count
CRITICAL 0
WARNING 0
SUGGESTION 1
Issue Details (click to expand)

SUGGESTION

File Line Issue
apps/mobile/src/components/tool-summary-translation-settings-screen.language.mounted.test.tsx 110 Persisted-name assertion is a tautology, and the language change happens before mount so the render-time-recompute claim is untested
Files Reviewed (8 files)
  • apps/mobile/src/lib/auto-model-name.ts - verified fallback order (Auto label, catalogue name, persisted name, id)
  • apps/mobile/src/lib/auto-model-name.test.ts - no issues
  • apps/mobile/src/components/tool-summary-translation-settings-screen.tsx - no issues
  • apps/mobile/src/components/tool-summary-translation-settings-screen.language.mounted.test.tsx - 1 issue
  • apps/mobile/src/components/code-reviewer/platform-overview-rows.ts - no issues
  • apps/mobile/src/components/code-reviewer/platform-overview-rows.test.ts - no issues
  • apps/mobile/src/components/security-agent/analysis-settings-screen.tsx - no issues
  • apps/mobile/src/components/todos/use-todo-list-defaults-summary.ts - no issues

Fix these issues in Kilo Cloud


Reviewed by deepseek-flash-latest · Input: 45.9K · Output: 5.3K · Cached: 403.2K

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 22, 2026
@iscekic
iscekic enabled auto-merge October 22, 2026 10:44
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 explorer:android Finding surfaced by the Android explorer 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