Repository navigation
fix(mobile): label the expiring credit amount accurately on the profile card - #8036
Conversation
…le card The expiring line under the profile balance summed every credit block with a future expiry date, but called the total bonus credits. Paid credits expire too (one year after purchase), so the expiring total includes paid base credit and the label misreads a personal balance as bonus credit. Reword the copy to 'credits expiring'; keep the key name so the locale catalogs stay untouched.
|
bot: Verified the profile credits card on the Android emulator against the local dev stack. The signed-in fake test account holds one paid expiring credit and one smaller free bonus expiring credit. The card shows the combined balance with "$61.00 in credits expiring 10/27/2027" underneath — the line now names the expiring credits total instead of calling the whole amount bonus credits. Fake-account test data only, non-production environment. |
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Executive SummaryThe incremental commit only updates the mounted credits-card test to assert the new English copy: both filters and both expectations now match Assumptions: Files Reviewed (2 files)
Previous Review Summaries (2 snapshots, latest commit 082fafe)Current summary above is authoritative. Previous snapshots are kept for context only. Previous review (commit 082fafe)Status: No Issues Found | Recommendation: Merge Executive SummaryThe incremental change rewords only the Assumptions: Files Reviewed (86 files)
Previous review (commit 6a395ad)Status: No Issues Found | Recommendation: Merge Executive SummarySingle-line English copy change; the placeholders ( Files Reviewed (1 file)
Reviewed by deepseek-flash-latest · Input: 88.6K · Output: 5.1K · Cached: 806.9K Review guidance: REVIEW.md from base branch |
|
Update the entire i18n catalog please |
Paid credit expires too, so the line under the profile balance now names the expiring credits instead of calling the whole amount bonus credit. English moved in the previous commit; this one carries the same change into the 86 translated catalogs: only the qualifier meaning "bonus" and the grammar that depended on it change, and both placeholders stay as they were.
|
bot: Done — all 86 translated catalogs now carry the change, not only English. Each value drops the qualifier that meant "bonus" and adjusts the grammar that depended on it; the key name, both placeholders, the register and the rest of each sentence stay as they were. Verification on the head commit:
Values, not keys: the English change and the key name are unchanged from the earlier commit. |
The mounted credits-card suite now checks the line the card renders, so its expected text and its filter follow the copy the catalog holds.

Evidence
Evidence: partially demonstrated — the catalog parity checks and a throwaway vitest that drove the app's own i18n instance through all 87 languages show the new line resolving from each catalog with both placeholders bound; the earlier Android emulator run shows the English line rendered on the Profile card, and the translated values were not re-photographed on a device.
Change
The expiring line under the profile balance (
profile.bonusCreditsExpiring) summed every credit block with a future expiry date but labelled the total as bonus credits. Paid credits expire too, so an account holding paid base credit plus a smaller bonus grant read the whole expiring total as bonus credit.The line now says "{{amount}} in credits expiring {{date}}" in English, and all 86 translated catalogs carry the same change: the qualifier meaning "bonus" is gone and the grammar that depended on it was adjusted, with the rest of each sentence, its register and both placeholders untouched. The key name stays
profile.bonusCreditsExpiring; renaming it would churn every catalog for no reader-visible gain, and the same line serves the organization context, which has the same credit-block shape.The catalog-wide translation is the owner's explicit request on this pull request. The mobile translation section asks for English-only edits and normally leaves translation to a separate slice; this slice was authorized to fill every catalog so readers whose language is not English do not see a line naming bonus credit under a balance that is not bonus credit.
Verification
pnpm --filter kilo-app check:i18n— passed, "87 languages, every catalog matches en.json".pnpm --filter kilo-app check:plurals— passed.pnpm --filter kilo-app format:check— passed.pnpm --filter kilo-app exec vitest run src/i18n— 17 files, 1697 tests passed, including a throwaway smoke (deleted before the commit) that called the app's i18n instance for all 87 languages withreturnDetails: true: every language resolved its own catalog entry (exactUsedKeyequals the key, so no English fallback), interpolated the amount and the date, left no{{…}}behind, and no catalog still held the old English string.pnpm --filter kilo-app exec vitest run src/components/profile-credits-card.mounted.test.tsx— 24 tests passed. The mounted suite the latestmainadded pins the rendered line, so its expected text and its filter now match the copy the catalog holds; without that the merged tree would assert the old wording.typecheckandlintwere clean on the parent commit; these commits change catalog values and one test's expected strings.Proxy answers
The owner's proxy gave these answers in the owner's place.
Answer: 'credits expiring'
Confidence: 0.80 · Precedent: Do the least work possible with no drop in quality (session 7f3470e0ba6f: "do the least amount of work possible, with no drop in quality"). The neutral wording is accurate, matches the brief's reword option, and keeps expiring paid credit visible.
profile.bonusCreditsExpiringeven though the copy no longer says bonus?Answer: Keep key name
Confidence: 0.75 · Precedent: Never hand-edit generated files (session df491946927a: "generated files must always be regenerated on conflict"). A rename would force hand edits to every other catalog, which apps/mobile/AGENTS.md forbids.
Answer: Yes, same line
Confidence: 0.85 · Precedent: Keep similar elements consistent across surfaces (session a247f3c19b1e: owner asked that the thought row match the tool call row). One accurate line covers both contexts, so no extra key is needed.