Skip to content

i18n: multilingual TaskNotes app (9 locales) - #298

Merged
callumalpass merged 140 commits into
mainfrom
feat/lingui-pilot
Oct 26, 2026
Merged

callumalpass merged 140 commits into
mainfrom
feat/lingui-pilot

Conversation

@callumalpass

@callumalpass callumalpass commented Oct 23, 2026 •

Copy link
Copy Markdown
Owner

Status — branch qualified; blocked on current-main native intake requalification

Head: f082bd2024b67a2d2bb4fdbef56c328584cf7998 (pushed; remote SHA verified).

All eight requested v4 locale heads are merged, following the QA-fixed v2 and 13-ID v3 deltas. 1,294 active application messages; zero missing authored targets in all eight languages. No English placeholders, translator mocks, silent library overrides or relaxed gates.

Final dependencies

Both vendored packages come from a36fa00914af2aacef03b8e23cb566bee5531e4a:

  • Kit SHA256: da2ae8145e5744733c29726a5b56f999c19f82bdd9d48c57d67da29cc18dd9b5 (21,683 bytes).
  • UI SHA256: e7199463d7f4d282cfd6f5f16e71dc1aa1029330a634f43112ae5b2f63dea7a0 (129,246 bytes).

Exact byte/hash/sha512 lockfile-integrity checks and all original UI custody regressions remain intact. Public UI has exactly 197 active compiled IDs per locale; obsolete nzHlj8 is gone. All-nine runtime composition and check --compose pass without overrides.

Implementation / browser-discovered repairs

  • Synchronous English; eight lazy same-deployment locales; Settings persistence, browser/OS negotiation and document language. User content, paths, provider-neutral storage and authority diagnostics remain unchanged. Portuguese is Brazilian Portuguese; Chinese is Simplified.
  • Whole-plural account notices, contextual Planner and unambiguous inclusive month-end summaries. Real ICU/CLDR regressions cover 0/1/2/5/11/21/22/101.
  • Fresh browser testing caught Node JSON import attributes left unresolved by Vite, including production builds. A scoped AST transform normalizes only the packed UI's literal JSON import options before Vite analysis; UI stays outside dependency prebundling. Authenticated archives/catalogue values are unchanged. Regressions cover all eight imports, unknown options, unrelated modules and version queries.
  • German/Russian account copy now wraps at 320px/200% text. The outage test ends its simulated network failure before asserting recovery; no assertion was removed.
  • CI exposed two standalone Scratchpad/write-status fixtures missing the real Lingui provider. Reproduced the missing-provider error and wrapped both; all 26 affected desktop/mobile built checks pass. No production authority or storage code changed.

Verification

  • Full rpnpm verify: composition/authored/ICU/source checks (151 modules), release 383 pass / one existing skip, format/typecheck/lint, 231 files / 1,834 unit cases with coverage, both layer thresholds (129 application / 250 domain), TaskNotes conformance 4,982 pass / one existing skip, mdbase oracle and normal production build/fixture exclusion. The final pushed head passed the complete rerun (verify-final.log).
  • Separate rpnpm test: 231 files / 1,834 pass. rpnpm --pull dist build:e2e: pass.
  • Clean extraction + strict compile are byte-identical across all 18 PO/JSON files.
  • 134 built-artifact browser checks pass, desktop Chromium + Pixel 7 emulation, ports 19100/19101: 110 e2e checks (including ja/de/ru editing/user-data preservation, recurrence/month-end, all three account notices, plural counts, key dismissal/strict consent, Axe and reflow), plus 24 normal-production locale activation/negotiation/lazy-chunk checks. Another 54 ja/de/ru dev-server checks plus 13 legacy-fixture dev checks pass. All external traffic blocked; account ports are isolated fixtures, not real authority acceptance.
  • Failed initial runs and subsequent fixes are retained in evidence. Fresh production/e2e outputs and hash manifests are separate; normal production output restored locally. GitHub Production smoke is green on the final head (8 artifact checks and 141 desktop cases / 2 existing skips). Overall PR CI is not green: both native build workflows stop in the current-main production-intake regression with Frozen lock mismatch (details below).

Remaining merge requirements / unverified acceptance

Current-main integration blocker: main now includes #299 (9367389394c4817b661cdaf53e3d418855c99b63, reviewed native production intake). The PR's synthetic merge runs its production-intake test against this branch's new dependency lock and correctly rejects it: Frozen lock mismatch. The approved production config binds lock SHA256 66e29bfb3e1bc53f92049504d261ba95276b5195dc635ada4c3cc6c80a79cc18; this branch's lock is 3c10f15a7958bfa2cbff165bcb08ad9e112957f790ab1e6e1796a40f57937c3d. Failing runs: iOS, Android. Branch-only rpnpm gates pass; this does not make the current PR merge-ready. Coordinate reviewed native-intake/lock and UI-pin requalification with the release owner; no approved packet, digest or integrity guard was changed to make this pass.

Both vendored kit/UI file: dependencies MUST be swapped for published npm versions at merge time after the coordinated Connect release, with gates rerun. Requalify the Vite compatibility integration against those packages.

iOS acceptance remains explicitly waived/unverified, not passed and not a renewed execution blocker. No physical Android acceptance, native-speaker certification or real authority/LAB acceptance is claimed. No deployment, publication, tag, main merge or workflow dispatch was performed.

Evidence: existing .ops/artifacts/multilingual-products-lingui-pilot/final-pins-20261023/, .ops/work/multilingual-products-lingui-pilot.md, docs/translations.md and burst/status/app.md.

French and Brazilian Portuguese use the 'one' category for 0 and 1.
The six image/interval plurals only had =1, which left 0 on 'other'.
Found by the shared kit's CLDR plural-category check.
@callumalpass callumalpass mentioned this pull request Oct 24, 2026
@callumalpass
callumalpass marked this pull request as ready for review October 26, 2026 11:11
@callumalpass
callumalpass merged commit f8a38ff into main Oct 26, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant