feat(mobile): show BYOK badges for CLI models - #5138
Conversation
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Executive SummaryIncremental review of the latest commits: the seed user-resolution helpers were extracted into shared Files Reviewed (10 files)
Previous Review Summary (commit 0887634)Current summary above is authoritative. Previous snapshots are kept for context only. Previous review (commit 0887634)Status: No Issues Found | Recommendation: Merge Executive SummaryReviewed the mobile BYOK badge predicate extraction (ungating BYOK from Files Reviewed (9 files)
Reviewed by kimi-k3 · Input: 44.3K · Output: 6.9K · Cached: 354.4K Review guidance: REVIEW.md from base branch |
Users now see a BYOK badge for eligible remote CLI models in the mobile picker row and selected-model pill. Cloud-agent model badges remain unchanged, and CLI free, data-collection, and cost metadata stay suppressed.
The change makes BYOK model selection visible before a remote CLI run and adds seed topics that provide repeatable BYOK fixture and usage evidence for verification.
The mobile selector uses one pure badge predicate that separates the user BYOK flag from gateway metadata. The seed topics encrypt a placeholder key, atomically replace marked catalog fixture data, and read usage rows through a bounded, read-only query.
Human steps: before merge, a repository administrator must enable Code Security under
Kilo-Org/cloudSettings → Code Security so the CodeQL checks can upload SARIF results. No product deployment step is needed after merge.E2E: bot-e2e — fresh iOS verification passed the remote CLI badge, cloud-agent badge regression, BYOK usage rows, and non-BYOK control evidence.
Visual Changes:
Remote CLI picker row:

Remote CLI selected-model pill:

Cloud-agent picker row:

Cloud-agent selected-model pill:

Checks: repository typecheck, repository lint, mobile model-selector tests, mobile unused-export checks, format, and diff checks passed locally. Current CodeQL checks fail only because Code Security is disabled on the private repository.