Skip to content

fix(mobile): correct Khmer profiles, agents, MCP and repo binding copy - #8467

Merged
iscekic merged 3 commits into
mainfrom
drain/km-profiles-agents-mcp-copy
Oct 22, 2026
Merged

iscekic merged 3 commits into
mainfrom
drain/km-profiles-agents-mcp-copy

Conversation

@iscekic

@iscekic iscekic commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

What changes

apps/mobile/src/i18n/locales/km.json only — values, no keys, no placeholders,
no other catalog. JSON-path diff against main: 0 keys added, 0 removed, 46
values changed, every {{token}} preserved.

Classes fixed:

  1. One noun per object.
    • Profile is កម្រងព័ត៌មាន across the profiles namespace: the screen title,
      newProfile, nameLabel, ownerLabel, descriptionLabel, the empty
      state, the delete dialog, the default-profile section, the agents title,
      the slug-conflict sentence, both toasts, and the create/delete/save/load
      errors. It previously alternated between ប្រវត្តិរូប, ទម្រង់ and
      កម្រងព័ត៌មាន, so one screen named the object up to three ways.
    • Repository is ឃ្លាំងកូដ across the repo-bindings namespace: the screen
      title, the picker placeholders, the pinned-repositories card and the
      pin/unbind actions. The card previously mixed កន្លែងផ្ទុក with ឃ្លាំង,
      and the rest kept the Latin loanword.
  2. Meaning.
    • agents.model ("Model override") said ការបដិសេធគំរូ — model rejection —
      and now reads ការជំនួសម៉ូដែល.
    • agents.prompt ("System prompt") named an input box and now names the
      instructions: ការណែនាំប្រព័ន្ធ.
    • agents.visibilitySubagent keeps no English label and no sentence stop,
      like its two sibling options: ភ្នាក់ងាររង - អាចហៅបានតែពីអ្នកដទៃប៉ុណ្ណោះ.
    • mcp.localType ("Local") said ក្នុងស្រុក, which describes a country, and
      now says នៅមូលដ្ឋាន beside the existing ពីចម្ងាយ for Remote.
    • mcp.headers ("Headers (JSON)") used the word for a book preface and now
      uses the catalog's HTTP-header term: ក្បាលសំណើ (JSON).
    • deleteBlocked kept "webhook trigger" untranslated, then referred back to
      it as គន្លឹះ ("keys"). Both sentences now name the webhook with the
      catalog's វេបហ៊ុក term, so the instruction tells the reader what to remove
      the profile from.
    • emptyDescription now reads as one "reuse … across sessions" predicate
      over environment variables, setup commands and skills, instead of a second
      "arrange" verb that took the skills.
    • deleteMessage opens with an explicit subject for "This", leaving "its"
      bound to the profile.
  3. Punctuation of titles and labels follows English.
    • No terminal ។ on newProfile, repoBindings.empty and emptyTitle,
      matching the English source and the sibling empty titles.
    • The MCP error and toast group carries no terminal ។: urlInvalid,
      saveFailed, deleteFailed and updateFailed lose it, so every message
      in that group reads alike. deleteFailed and updateFailed arrived from
      main during the sync and follow the same convention.
    • Full-sentence toasts and errors keep ។.
  4. Loanword casing. slashCommands.title writes the loanword lowercase,
    like slashCommands.empty and slashCommands.edit.

Verification

  • pnpm --filter kilo-app check:i18n → Found 0 warnings and 0 errors.
    and check-catalogs: 87 languages, every catalog matches en.json
  • pnpm --filter kilo-app check:plurals → every counted message and every locale declares its plural categories
  • pnpm --filter kilo-app exec vitest run src/i18n src/components/profiles →
    43 files, 1892 tests passed (after merging main)
  • JSON-path diff against main: 0 keys added, 0 removed, 46 values changed;
    placeholder sets identical for every changed value
  • Wording groups (the checker's own fold rule): every changed key has a unique
    English wording, so no wording exception is needed; the Khmer catalog had no
    differing group before or after the change.

Throwaway mounted render run with the app language set to Khmer (real
components, catalog selected from the Khmer file, deleted before committing):

  • every changed key resolves from the Khmer catalog, not the English fallback,
    e.g. profiles.deleteMessage => សកម្មភាពនេះលុបកម្រងព័ត៌មាន និងការកំណត់របស់វាចេញជាអចិន្ត្រៃយ៍។ នេះមិនអាចត្រឡប់វិញបានទេ។
    and profiles.mcp.headers => ក្បាលសំណើ (JSON)
  • profiles list empty state renders title មិនទាន់មានកម្រងព័ត៌មានទេ, the new
    description, and the create action កម្រងព័ត៌មានថ្មី
  • the agent form renders field labels ការជំនួសម៉ូដែល, ការណែនាំប្រព័ន្ធ, the
    visibility heading, and the three visibility options, with
    ភ្នាក់ងាររង - អាចហៅបានតែពីអ្នកដទៃប៉ុណ្ណោះ as the radio's accessibility label
  • the MCP screen renders នៅមូលដ្ឋាន and ពីចម្ងាយ server rows, the remote
    server's edit sheet renders the ក្បាលសំណើ (JSON) field, and its failing
    save, delete and enable operations raise the Khmer saveFailed,
    deleteFailed and updateFailed messages with no terminal mark
  • the pinned-repositories card renders បានខ្ទាស់ទៅឃ្លាំងកូដ, its description and
    the ខ្ទាស់ឃ្លាំងកូដ action

Limit: the affected screens sit behind sign-in, so no screenshot is published;
the evidence above comes from rendering the real screens and the real catalog in
the app's own test renderer, not from a device capture.

Proxy answers

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

  1. Question: Profile noun scope: The brief fixes the profile noun as កម្រងព័ត៌មាន (matching the open agentChat slice), and the findings name ~25 profiles keys. Seven more profile-noun keys in the same namespace are not named by any finding and would keep ប្រវត្តិរូប/ទម្រង់, leaving the screen title and its own rows on two nouns. Apply the noun to the whole profiles namespace?
    Answer: Whole profiles namespace
    Confidence: 0.75 · Precedent: Fix the root cause and the class of the issue: if anything repeats the same mistake over and over again, fix the class; if you saw a gap, fix it
  2. Question: Repository noun: The pins card mixes កន្លែងផ្ទុក (title/empty) with ឃ្លាំង (description), while the generic 'repo' loanword appears in the pin/unbind actions and the screen title. The catalog's dominant term is ឃ្លាំងកូដ (81 uses). How far does the repository-noun fix go?
    Answer: Whole repoBindings namespace
    Confidence: 0.65 · Precedent: Fix the class of the issue on every affected surface; consistency rule across surfaces
  3. Question: Model term: 'Model override' currently reads model rejection. The catalog uses ម៉ូដែល for the AI model in the shared model labels and គំរូ in chat and for 'Template'. Which replacement?
    Answer: ការជំនួសម៉ូដែល
    Confidence: 0.60 · Precedent: Keep similar elements consistent across surfaces: the thought row should match the tool call row
  4. Question: MCP 'Local': the server type currently reads ក្នុងស្រុក (domestic). Its sibling is ពីចម្ងាយ (Remote). Which term for a locally running server?
    Answer: នៅមូលដ្ឋាន
    Confidence: 0.55 · Precedent: Keep similar elements consistent across surfaces
  5. Question: 'Headers (JSON)': the MCP and backend label currently reads បឋមកថា (book preface). The catalog renders HTTP request headers as ក្បាលសំណើ. Which label?
    Answer: ក្បាលសំណើ (JSON)
    Confidence: 0.70 · Precedent: Keep similar elements consistent across surfaces: the thought row should match the tool call row
  6. Question: Webhook trigger: the blocked-delete message mixes untranslated 'webhook trigger' with គន្លឹះ ('keys') for the back-reference. The catalog's webhook term is វេបហ៊ុក; there is no trigger noun anywhere in the catalog. Which wording?
    Answer: Name the webhook
    Confidence: 0.55 · Precedent: Do the least work possible with no drop in quality

The Khmer profile surface named the same object with three nouns, read the
model field as a rejection, named an input box for the system prompt, kept an
English subagent label with a sentence stop, and described local MCP servers,
HTTP headers, webhook blockers and repositories with words that mean something
else. Standardize one Khmer term per object across the profiles namespace,
name the webhook entity the delete-blocked message refers to, keep the MCP
error group unpunctuated like the English source, and use the same slug-style
loanword casing throughout the slash-command family.
@iscekic iscekic added drain Work item from the findings drain janitor:i18n Janitor finding: mobile copy and catalog checks labels Oct 21, 2026
Comment thread apps/mobile/src/i18n/locales/km.json Resolved
@kilo-code-bot

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

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Executive Summary

The incremental change only drops the terminal ។ from the three Khmer MCP failure messages, matching the English source and the rest of that error group; the previously reported profile-picker noun mismatch is now resolved on HEAD.

Assumptions: [INFERENCE] Verification comes from the current diff and catalog cross-reference; I did not run check:i18n, check:plurals, or the app.

Files Reviewed (1 file)
  • apps/mobile/src/i18n/locales/km.json
Previous Review Summary (commit c1f603e)

Current summary above is authoritative. Previous snapshots are kept for context only.

Previous review (commit c1f603e)

Status: 1 Issue Found | Recommendation: Address before merge

Executive Summary

The Khmer copy changes are structurally sound, but the profile picker that opens the renamed Profiles screen still uses ប្រវត្តិរូប and ទម្រង់, so the same object is still named three ways in one flow.

Assumptions: [INFERENCE] I did not run check:i18n, check:plurals, or the app; verification comes from the diff, the catalog cross-reference, and the screen usages under apps/mobile/src.

Overview

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

WARNING

File Line Issue
apps/mobile/src/i18n/locales/km.json 3550 The profile picker in agentChat.newSession.* still uses ប្រវត្តិរូប / ទម្រង់, including the manageProfiles button that opens this renamed screen and a duplicate copy of the empty-state message.
Files Reviewed (1 file)
  • apps/mobile/src/i18n/locales/km.json - 1 issue

Fix these issues in Kilo Cloud


Reviewed by deepseek-flash-latest · Input: 66.7K · Output: 5.4K · Cached: 469.4K

Review guidance: REVIEW.md from base branch main

@iscekic iscekic added merge:blocked merge:bot Bot-owned review; merge when ready once readiness passes and a review approves. merge:blocked:kilobot-not-ready Review bot has not recommended merge at this head and removed merge:blocked labels Oct 21, 2026
@iscekic iscekic added merge:blocked:insufficient-e2e Verification does not cover the change merge:bot Bot-owned review; merge when ready once readiness passes and a review approves. and removed merge:bot Bot-owned review; merge when ready once readiness passes and a review approves. merge:blocked:kilobot-not-ready Review bot has not recommended merge at this head merge:blocked:insufficient-e2e Verification does not cover the change labels Oct 22, 2026
@iscekic
iscekic added this pull request to the merge queue Oct 22, 2026
Merged via the queue into main with commit 68276c3 Oct 22, 2026
47 checks passed
@iscekic
iscekic deleted the drain/km-profiles-agents-mcp-copy branch October 22, 2026 02:46
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