Repository navigation
Translate the Project board's queue states - #1830
Conversation
f564f27 to
be9be42
Compare
be9be42 to
f0f3744
Compare
The board's queue read emits each row's lease state as the host's own lowercase id, and the row renders it through t(), which returns a missing key unchanged — so a Chinese interface printed "running"/"stalled" (ThinkFlowLab#1813). Replayed onto main f7ce89c: the change re-applied on the current main and the generated files (core/client.js, patches/ds-bot/) regenerated from the merged core, so nothing of main's is reverted. Only a replay of the reviewed change. Docs-not-needed: two dictionary entries and one test; no subsystem behaviour or owned path changes. Fixes ThinkFlowLab#1813
f0f3744 to
1a56091
Compare
|
Verdict: PASS at 1a56091 Ran at this tip: Five checks at this tip: tests-ok success (Node 24, plugins tree/social/workflow/timeline, package), merge-gate success, enqueue-guard success (computed tier T1 — no PASS needed; fork head), reviewed tip success. What I read: Red first is real: with only Not run: the full core/plugin suites and the smoke bench — the CI |
Fixes #1813
Owner: Dev2
Written-by: Dev-2
Reviewer: Birfy
Claim-Id: 4bb5d8a6714e4c62b36b4354f6e82051
Base: f7ce89c
Tip SHA: 1a56091
Tree: 384ec38ae7160840a317a623a484d7640672513c
Diff: 7 files, +58/−3
Replayed-by: Replay — merged main f7ce89c into this branch by hand (
update-branchanswered 422 "merge conflict between base and head"), regenerated from the merged core; the change set is the one above, nothing moved.What changed
The Project board's queue rows beside the columns print a live claim's state through the
host's own lowercase lease id —
core/src/client/project-board.js:178putsrunningorstalledin the row and:252renders it witht(row.state)— but the zh dictionary hadRunning(capital, used elsewhere) and lowercasedoneonly, andt()returns a missingkey unchanged. A Chinese interface therefore read "Dev4 · running". Two entries next to
doneincore/src/client/i18n.jsclose that:运行中reuses the wording of the existing capitalRunningentry instead of inventing asecond translation;
已停滞matches the stalled card's own copy. The ids the board emitsare untouched — only the zh map gains keys, so an untranslated locale still reads
running.core/test/i18n.test.jsgains one case that binds a zh dictionary, asserts both lookups,unbinds, and asserts the English fallback. #1768's three cases never bound a dictionary, so
the missing-key path (raw id, English by construction) kept CI green over the gap.
The branch is based on
b4e05acf(#1835, which re-cut0001/0002/0003/0005/0008and rewrote
core/client.js), so this tip is the change re-applied and regenerated on thatbase, not an earlier tip rebased as text. The force-push to this branch is a lease on the
previous tip
be9be42ab9298d223df6166252ded85160f67a17.Red first
The new case alone, on base
b4e05acf, dictionary entries removed, everything else at this tip:Generated mirrors
core/src/client/changed, sonode core/scripts/build-client.mjsrebuiltcore/client.js(+4) and
node scripts/ds-bot-patches.mjs generatere-cutpatches/ds-bot/0001-core-fixes.patch(27/1: the two dictionary lines plus the test, against#1835's new context) andpatches/ds-bot/0008-client-bundle.patch(5/1) and registeredtest/i18n.test.jsunder0001inpatches/ds-bot/topics.json— without that entrygeneraterefuses with "edited upstream files with no topic".changelog.d/1813-board-state-i18n.fixed.mdis the one-line fragment.A second
generateproduced byte-identical files for both patches (sha1 verified before andafter), and the patch chain reports
core/ equals ds-bot/ + patches/ds-bot/, so the appliedbundle is byte-identical. Nothing in the generated files was edited by hand. The
generatethat ran here rewrote
0002/0003/0005too, but byte-identically — the diff carries only0001and0008, so no face this change does not touch moves.Docs-not-needed: two zh entries and one test;
docs/subsystems/core-client.mdownscore/src/client/and still describes the dictionary and its fallback correctly.Verification at the tip
Ran:atf0f3744b3fea565960b9a9e44f9529a5e167c0a0(tree182e73c9) on the committed tree,git status --porcelainempty before and after:test/i18n.test.js3/3.github/scripts549/549, interop 37/37, live-e2e 24/24build-client.mjs --check: cleanarch-docs: OK (7 changed file(s))withARCH_DOCS_BASE=b4e05acf9c2785eced88e94f1b70e4f15c860c9f,read off the committed tree's run
Not run:the smoke bench (no change toindex.jsorsrc/host/), the CIpackagejob(pack check, typecheck, actionlint) and the merge-queue rebuild — those run in CI and on the
queue entry, not locally.
Checkpoint
{ "pr": 1830, "claim": "Dev2", "issue": 1813, "summary": "The Project board's queue rows print the host's lowercase lease ids (running, stalled) through t(), which returned them unchanged because the zh map had no such keys. Two entries beside done now read 运行中 and 已停滞, reusing the capital Running wording; emitted ids and fallback stay untouched. A case binds a zh dictionary and asserts both lookups, which #1768 never covered. This tip re-applies it on b4e05acf, where #1835 re-cut the patches and rewrote client.js: bundle rebuilt, chain regenerated, second generate byte-identical, check proves core equals ds-bot plus patches.", "files": [ "core/src/client/i18n.js", "core/test/i18n.test.js", "core/client.js", "patches/ds-bot/0001-core-fixes.patch", "patches/ds-bot/0008-client-bundle.patch", "patches/ds-bot/topics.json", "changelog.d/1813-board-state-i18n.fixed.md" ], "checks": { "ran": "TZ=UTC ARCH_DOCS_BASE=b4e05acf npm run verify; node scripts/ds-bot-patches.mjs check (twice, generate between); build-client.mjs --check", "result": "green", "at": "f0f3744b3fea565960b9a9e44f9529a5e167c0a0" }, "next": "none — ready for review" }