Repository navigation
fix(mobile): format briefing dates and amounts for the app locale - #8250
Conversation
Briefing screens rendered report.localDate, a date-only string, exactly as stored, next to a localized window line. Render it through the shared calendar-date formatter so the day follows the app language without a time-zone shift, on the list card, the report header and the Home card preview. briefingMoney formatted USD with four fraction digits, so the scorecard, agent rows, estimates and the settled charge disagreed with the currency's precision. Move it into a shared module that uses the currency precision for the active language and shows a positive amount below the smallest unit as "< 0,01" instead of rounding it to zero. The paid summary prompt asks the model for two-decimal USD amounts so the model-written paragraph agrees with the formatted surfaces.
|
bot: Verified on the Android emulator against the local dev stack with an owned local test account and a seeded briefing report (spend 182000 µ$, sessions 122000 µ$ and 1800 µ$).
Text was asserted from uiautomator dumps and the screenshots were read back with OCR. |
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Executive SummaryThe incremental commit adds a mounted regression test for the localized scheduled briefing date and a README note, and the Assumptions: Files Reviewed (6 files)
Carried findings verification (unchanged files)
Previous Review Summaries (3 snapshots, latest commit 38865f3)Current summary above is authoritative. Previous snapshots are kept for context only. Previous review (commit 38865f3)Status: No Issues Found | Recommendation: Merge Executive SummaryThe previous warning is fixed in 38865f3: Files Reviewed (2 files)
Carried findings verification (unchanged files)
Previous review (commit 85cfbd4)Status: 1 Issue Found | Recommendation: Address before merge Executive SummaryThe prior two suggestions are fixed in 85cfbd4; one remaining mismatch between the prompt's below-one-cent rule and the formatter's half-cent threshold can still make the model paragraph disagree with the scorecard. Overview
Issue Details (click to expand)WARNING
Files Reviewed (6 files)
Fix these issues in Kilo Cloud Previous review (commit 2d03a7a)Status: 2 Issues Found | Recommendation: Address before merge Overview
Issue Details (click to expand)SUGGESTION
Files Reviewed (9 files)
Reviewed by deepseek-flash-latest · Input: 66K · Output: 8.6K · Cached: 949.5K Review guidance: REVIEW.md from base branch |
A spend row with partial coverage prefixed the formatted amount with the "at least" copy, so a recorded amount below one cent rendered as a marker inside a marker. The formatter now takes the bound into account: a lower bound stays at the currency precision and the call site supplies the prefix, while an exact amount keeps the below-unit marker. The paid summary prompt carries the same rule, so a model-written paragraph states a below-one-cent amount instead of rounding it to zero.
|
bot: Follow-up for the lower-bound review remark: with partial spend coverage on the seeded report, the German report carries the at-least prefix on the scorecard and on each agent row, including the row below a cent, with the existing coverage hint directly below. No nested markers. Text asserted from uiautomator dump. |
The summary prompt called anything below a cent "less than the smallest unit", while the briefing surfaces keep the below-unit marker only below half a cent; amounts in between round up to one unit there. The prompt now names the same threshold and keeps the marker in the language's separators.
|
bot: Merged current main while preserving both briefing changes. Scheduled dates now format inside the shared period label; one-off period metadata and bounded historical prompt sampling remain intact. The new one-off review cost display uses the shared money formatter. Added mounted pt-BR/de calendar-day regression coverage, including a device timezone west of UTC. The summary prompt was exercised for both report kinds and locales using a temporary generator smoke; model-generated prose was not exercised. |
|
bot: Fresh Android end-to-end proof after the shared period-label extraction, using the full app with an owned fake account and isolated local backend/database. Optional analytics stayed off; no paid summary was generated.
The six captures below were visually inspected and checked for metadata; they contain only owned nonproduction fixture data on the affected briefing surfaces. |












Evidence
Evidence: demonstrated — the original Android run showed raw dates and inconsistent USD precision. This follow-up reproduced raw-date rendering in mounted tests, then verified the merged app's localized list/detail dates and amounts on Android in pt-BR and German, including a timezone west of UTC.
Change
BriefingPeriodLabelafter the merge with main.Verification
Current follow-up
pnpm install --frozen-lockfile— passed.@kilocode/harness-sdkand@kilocode/trpcbuilds passed.typecheck,lint, andcheck:unusedpassed. Targeted web lint and changed-source formatting passed;git diff --checkis clean.TZ=America/Los_Angeles: 7 files, 40 tests passed, including mounted pt-BR/de shared period-label coverage. With the raw-date expression restored temporarily, both new regression cases failed on the expected localized date.Fresh Android proof on the merged branch
The full app used an owned fake account and isolated local backend/database, with optional analytics off. Both the Android device and report used
America/Los_Angeles.22/10/2026; totalUS$ 0,18; agent rowsUS$ 0,12and< US$ 0,01.22.10.2026; total0,18 $; agent rows0,12 $and< 0,01 $.Avulso/Einmalig, its historical window, report timezone, and localized creation timestamp. No paid summary or charge was generated.Original Android run
The initial session exercised an owned fake account on the local development stack and seeded a report with 182000 microdollars total spend and agent rows of 122000 and 1800 microdollars:
20/10/2026; report totalUS$ 0,18; agent rowsUS$ 0,12and< US$ 0,01.20.10.2026; report total0,18 $; agent rows0,12 $and< 0,01 $.The original screenshots and observed UI text remain in the PR comments. Those captures are from the original session, not a replay of this merge.
Proxy answers
The owner's proxy gave these answers in the owner's place.
< US$ 0,01, localized consistently across briefing surfaces. Confidence: 0.72. Precedent: Keep equivalent values consistent across surfaces.