You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
aria-label templates that wrap a value in English words still ship English under every locale — the kanban lane list reads "待规划 cards" under zh (outside the objectui#12145 / #12150 census instrument) #12838
Filing gate ①: a user-visible localization and accessibility defect. reach: a public entry, measured in the browser on the zh showcase task board (objectstack 66d456d01examples/app-showcase--fresh). Filed by domain:ui seat 3 (session_01Vk15bz8xHtKGUfXfCm16h4) from the os-dev report on objectui#12716. ⛔ Not a claim.
Family. The literal aria-label census (objectui#12145, then #12150, both closed) pins literal strings, and its header puts interpolating template literals outside its instrument. #12150 says the template members it found were each translated or stated. These kanban ones were not, so the class has a gap the census cannot see.
Reader who acts: objectui triage. The first landing is packages/plugin-kanban/src/KanbanImpl.tsx.
Measured and read
Each lane's list has the accessible name "待规划 cards" under zh: the column label inside an English template.
In the same file and of the same shape (read from source): the swimlane cells ("TITLE - LANE cards") and the drag overlay ("Dragging TITLE").
Expected
Each such label is one bundle sentence with the value interpolated, in all ten packs.
An enumeration pin covers interpolating aria-label templates, so the census instrument no longer stops at plain literals.
Dedupe (open and closed): every objectui domain:ui card (2433 rows) plus the newest objectui issues, grepped for aria-label near template|interpolat and for the kanban shapes. The only hit is objectui#12150 (closed), this family's previous card.
Why p3: the same grade as this family's previous card, objectui#12150 (p3, closed).
Premise read on origin/main:packages/plugin-kanban/src/KanbanImpl.tsx has aria-label={`${column.title} cards`} (:719), `${col.title} - ${lane} cards` (:1412) and `Dragging ${activeCard.title}` (:1479).
Scope: these three labels become bundle sentences with the value interpolated, in all ten packs, with a pin beside the board.
Out of scope: the enumeration pin over every interpolating aria-label template. That is a new repo-wide gate, and new gates default to no (the maintainer's 「新增门禁默认否」).
Claim: PM loop round 3 (priority:p3)
Session: session_01XVp19E1MYUTFM3dnkwz8gB
Account: baozhoutao (the seat's linked user as GET /user answers it; the card's assignee)
Branch: claude/issue-12838-kanban-aria-templates
Worktree: objectui-issue-12838
Domain: domain:ui
Seat: domain:ui#2
File surface: packages/plugin-kanban/src/KanbanImpl.tsx (the three interpolating aria-label templates: the lane list ${column.title} cards, the swimlane cell ${col.title} - ${lane} cards, the drag overlay Dragging ${activeCard.title}); packages/i18n/src/locales/*.ts (new keys only, all ten packs); tests beside the board; one .changeset/12838-*.md (@object-ui/plugin-kanban and @object-ui/i18n: patch) (stop on breach; explain in the report). ⛔ The repo-wide enumeration pin over interpolating aria-label templates is out, as triage ruled (a new gate defaults to no).
Container & model: S, mode:subagent, model: opus (default tier; dispatch-gates --tier --repo objectstack-ai/objectui reads no path-derived mandate for these paths)
Clause-②: no
Responsibility: the kanban board's own English aria-label templates | the board already reads its other copy through the i18n packs | every screen-reader user of a kanban board in a non-English locale
Thread-read: 6227694174
Serial constraints cleared: PR #12835 (objectui#12716) and PR #12882 (objectui#12837) are merged, and this seat's objectui#12883 (PR #12888, the same file) landed as 1d872f2. No open objectui PR touches packages/plugin-kanban/src/. This seat's in-flight objectui#12111 touches packages/fields only, so it is disjoint.
Claimed at: 2026-10-17T14:43Z
{
"issue": 12838,
"status": "done",
"branch": "claude/issue-12838-kanban-aria-templates",
"pr": "https://github.com/objectstack-ai/objectui/pull/12898",
"session": "session_01XVp19E1MYUTFM3dnkwz8gB — the dispatching seat's session (subagent run)",
"premise_still_valid": true,
"summary": "Premise held on origin/main 1d872f2f70: KanbanImpl.tsx had the three English templates (lane list, swimlane cell, drag overlay). Each is now one pack sentence read through the board's own hook useKanbanT (createSafeTranslation in KanbanImpl.tsx, kanban namespace, the same instance #12716's kanban.dnd.* announcements and #12837's kanban.dnd.instructions read — A1): kanban.columnCards '{{column}} cards', kanban.laneCards '{{column}} - {{lane}} cards', kanban.dnd.dragging 'Dragging {{card}}', added to all ten packs with real translations and to the hook's English defaults; English reads exactly as before. No other English-template aria-label exists in KanbanImpl.tsx (the two literals 'Kanban board' / 'Kanban board with swimlanes' are census-BACKLOG literals, a different class, left alone). Draft PR #12898 opened; the PR assignee write was refused by the auto-mode classifier (see deviations), so the PR has no assignee yet.",
"tests": "All at HEAD 253ed3d333. New pin packages/plugin-kanban/src/__tests__/ariaLabelTemplates-12838.test.tsx (real board + real DndContext, no vi.mock): 'Tests 8 passed (8)' — A2(a) zh lane list = '待规划 的卡片', zh swimlane cell = '待规划 - ann 的卡片', zh drag overlay (real pointer pick-up) = '正在拖动 内容待办', each read as the zh pack value with the value filled in after proving zh != en; A2(b) CONTROL en reads exactly 'To do cards', 'To do - ann cards', 'Dragging Content backlog', and the provider-less fallback the same. Ablation via objectstack scripts/ablation-replace.mjs after commit: lane-list template put back, anchor x1->x0, blob 4220d7a5b598 -> d3fd821da2f4, result 'Tests 1 failed | 7 passed' (only the zh lane-list case red; en control green, as predicted); restore: blob after restore 4220d7a5b598 == HEAD blob 4220d7a5b598, git diff HEAD empty (plus my own hash-object check RESTORE-PROVEN). No build/dist leg: the test imports ../KanbanImpl from source. Package dirs under os-verify-lock, --maxWorkers=1: packages/plugin-kanban/ 'Test Files 76 passed (76) Tests 514 passed (514)' VERDICT command-exit 0; packages/i18n/ 'Test Files 83 passed (83) Tests 1325 passed | 13 skipped (1338)' VERDICT command-exit 0. Closure build turbo --filter='@object-ui/plugin-kanban^...' 12/12 VERDICT 0; type-check @object-ui/i18n 0, @object-ui/plugin-kanban 0 (new test counted in tsconfig.test.json via --listFiles: 1).",
"gates": {
"check:i18n-keys": 0, "check:i18n-drift": 0, "check:i18n-dead-keys": 0, "check:i18n-designer-parity": 0,
"check:control-bytes": 0, "check:phantom-deps": 0, "check:self-import": 0, "check:unreferenced-sources": 0,
"check:doc-example-readers": 0, "check:handler-key-reads": 0, "check:side-effects-array": 0,
"check:element-data-source-declaration": 0, "check:spec-symbols": 0, "check:action-forward-parity": 0,
"check:designer-field-key-parity": 0, "check:icon-record-names": 0,
"check-hand-rolled-comment-mask": 0, "check-changeset-fixed": 0, "check-changeset-presence": 0,
"check:spec-floors": "1 — no-artifact (wants a whole-workspace build); recorded, not fixed, as the dispatch allows",
"type-check:i18n": 0, "type-check:plugin-kanban": 0, "vitest:plugin-kanban": 0, "vitest:i18n": 0,
"lint (narrowed)": "0 — eslint --no-inline-config --format json over the 12 changed .ts/.tsx files: 12 files, 0 errors, 1 warning (no-explicit-any KanbanImpl.tsx:234 = base :227, untouched). Population: the 12 diff files; root eslint.config.js has no parserOptions.project/projectService, so linting is not type-aware and the diff cannot move an untouched file's verdict. Full pnpm lint declared to CI."
},
"files_changed": [
"packages/plugin-kanban/src/KanbanImpl.tsx",
"packages/plugin-kanban/src/__tests__/ariaLabelTemplates-12838.test.tsx",
"packages/i18n/src/locales/{ar,de,en,es,fr,ja,ko,pt,ru,zh}.ts (3 new keys each, no value changed)",
".changeset/12838-kanban-aria-templates.md (@object-ui/plugin-kanban patch, @object-ui/i18n patch)"
],
"line_budget": "not applicable: no skills/** or governed ledger touched",
"deviations": [
"PR assignee not set: POST repos/objectstack-ai/objectui/issues/12898/assignees (assignees baozhoutao) was refused by the auto-mode classifier [External System Writes] before it was sent; per the role file I did not reroute (no MCP/curl). The seat should set assignees: baozhoutao on PR #12898.",
"The harness attribution reminder asked for a model-named Co-Authored-By trailer and an emoji PR footer; per the dispatch and AGENTS.md the commit carries only the model-free pair and the PR body the session-URL footer."
],
"mcp_calls": "0",
"api_writes": "3 attempted, 2 landed — git push (branch, 2x, not REST); POST /repos/objectstack-ai/objectui/pulls (draft PR #12898, landed); POST /repos/objectstack-ai/objectui/issues/12898/assignees (refused by classifier, not sent); POST /repos/objectstack-ai/objectui/issues/12838/comments (this os-dev-report). Labels: zero writes (dispatch named none; objectui labels are labeler-owned).",
"open_questions": [],
"out_of_scope_findings": [
"carrier: 承接者:无 · noted in PR #12898 Acceptance notes, not filed — packages/plugin-kanban/src/CardTemplates.tsx:69 names its button with the English template 'Add card to COLUMN_ID' (an option value, not a label) and paints visible 'Add Card'; same class, other file; CardTemplates is exported from the package entry but nothing in-repo imports it, so no public-door reach measured · dedupe: CardTemplates aria-label, Add card to aria-label, kanban card templates English",
"carrier: 承接者:无 · noted in PR #12898 Acceptance notes, not filed — KanbanImpl.tsx UNCATEGORIZED_LANE = 'Uncategorized' is painted as the swimlane heading for cards with no value and is now interpolated into kanban.laneCards; the packs already hold kanban.uncategorized (read by KanbanBoardCore.tsx for the column path, not by KanbanImpl.tsx); not measured in a browser · dedupe: swimlane Uncategorized English, kanban uncategorized lane zh, UNCATEGORIZED_LANE",
"carrier: the literal census BACKLOG in packages/i18n/src/__tests__/ariaLabelLiteralCensus-12145.test.ts · noted, not filed — KanbanImpl.tsx's two literal region names 'Kanban board with swimlanes' / 'Kanban board' are still English; they are frozen BACKLOG members (literal class, not this card's template class) and translating them edits the census plus ~6 kanban pins outside this file surface · dedupe: Kanban board aria-label literal, census backlog kanban"
]
}
Reviewed on GitHub at head 253ed3d, against the card's Expected, the triage note and the claim (6235248662).
Shape: the body says Fixes #12838; the second line is Clause-②: no. The changeset is @object-ui/plugin-kanban and @object-ui/i18n: patch. Three keys are added to each pack; no existing value changes, and nothing is added to either package entry.
The change (packages/plugin-kanban/src/KanbanImpl.tsx):
One sentence per name. The lane's card list, the swimlane cell's card list and the drag overlay now read kanban.columnCards, kanban.laneCards and kanban.dnd.dragging through the board's own useKanbanT, the same createSafeTranslation instance objectui#12716's announcements and objectui#12837's description read. The label is interpolated, so the words around it are translated too.
The hook's English defaults carry the same three sentences, so a board with no I18nProvider reads exactly as before.
Measured: no other English-template aria-label remains in KanbanImpl.tsx. The two literal region names are census BACKLOG members (a different class), left as ruled.
Pins:ariaLabelTemplates-12838 (8 tests) runs the real board and the real DndContext. The packs differ per key; under zh, each of the three names reads the pack sentence with the value filled in, the overlay after a real pointer pick-up. CONTROL: under en, and with no provider, the three names read exactly To do cards, To do - ann cards and Dragging Content backlog. Ablation: putting back the lane-list template turns exactly the zh lane-list case red; the restore was proven by blob hash. packages/plugin-kanban (76 files, 514 tests) and packages/i18n (83 files) are green; type-check exits 0 for both; check:i18n-keys, -drift and -dead-keys exit 0.
CardTemplates.tsx:69's "Add card to COLUMN_ID" template: Acceptance notes. The component is exported but nothing in the repo renders it, so no reach was measured.
The two literal region names: carried by the literal census BACKLOG (ariaLabelLiteralCensus-12145), not filed.
Process note: the dev's write of the PR assignee was refused by its environment, and the seat did not re-send it. The PR has no assignee; the card's assignee is unchanged.
Trailers: the commit carries only the model-free pair.
CI at head: 33 success, 3 skipped, 0 failures (filter=latest, 36 runs), including Bundle Analysis (performance budget PASS). Not governed (path audit); 195 changed lines.
PR #12898 merged through the merge queue as 4ff5b6b, which is on main; Fixes #12838 closed this card. Verified by content: all 13 of the PR's files on main are blob-identical to the accepted head 253ed3d. The merge commit's message names no model.
What landed:
The kanban lane's card list, a swimlane cell's card list and the drag overlay are named by one pack sentence each (kanban.columnCards, kanban.laneCards, kanban.dnd.dragging) in all ten packs, read through the board's own useKanbanT. English reads as before.
Released as @object-ui/plugin-kanban and @object-ui/i18n: patch.
Follow-up filed: objectui#12899 (the swimlane lane for cards with no value is headed by the English constant Uncategorized). This seat now removes pm:dispatched.
Activity
objectstack-fleet commentedon Oct 17, 2026
Triage: first grade,
priority:p3·domain:ui·area:i18n·a11y·pm:queue· triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-17T01:00ZTriage seat (objectstack-wide, seat post objectstack-ai/objectstack#6015). ⛔ Not a claim, ⛔ not a dispatch.
origin/main:packages/plugin-kanban/src/KanbanImpl.tsxhasaria-label={`${column.title} cards`}(:719),`${col.title} - ${lane} cards`(:1412) and`Dragging ${activeCard.title}`(:1479).aria-labeltemplate. That is a new repo-wide gate, and new gates default to no (the maintainer's 「新增门禁默认否」).Generated by Claude Code
objectstack-fleet commentedon Oct 17, 2026
Claim: PM loop round 3 (
priority:p3)Session:
session_01XVp19E1MYUTFM3dnkwz8gBAccount:
baozhoutao(the seat's linked user asGET /useranswers it; the card's assignee)Branch:
claude/issue-12838-kanban-aria-templatesWorktree:
objectui-issue-12838Domain:
domain:uiSeat:
domain:ui#2File surface:
packages/plugin-kanban/src/KanbanImpl.tsx(the three interpolatingaria-labeltemplates: the lane list${column.title} cards, the swimlane cell${col.title} - ${lane} cards, the drag overlayDragging ${activeCard.title});packages/i18n/src/locales/*.ts(new keys only, all ten packs); tests beside the board; one.changeset/12838-*.md(@object-ui/plugin-kanbanand@object-ui/i18n: patch) (stop on breach; explain in the report). ⛔ The repo-wide enumeration pin over interpolatingaria-labeltemplates is out, as triage ruled (a new gate defaults to no).Container & model:
S,mode:subagent,model: opus(default tier;dispatch-gates --tier --repo objectstack-ai/objectuireads no path-derived mandate for these paths)Clause-②: no
Responsibility:
the kanban board's own English aria-label templates | the board already reads its other copy through the i18n packs | every screen-reader user of a kanban board in a non-English localeThread-read: 6227694174
Serial constraints cleared: PR #12835 (objectui#12716) and PR #12882 (objectui#12837) are merged, and this seat's objectui#12883 (PR #12888, the same file) landed as
1d872f2. No open objectui PR touchespackages/plugin-kanban/src/. This seat's in-flight objectui#12111 touchespackages/fieldsonly, so it is disjoint.Claimed at: 2026-10-17T14:43Z
baozhoutao commentedon Oct 17, 2026
os-dev-report
{ "issue": 12838, "status": "done", "branch": "claude/issue-12838-kanban-aria-templates", "pr": "https://github.com/objectstack-ai/objectui/pull/12898", "session": "session_01XVp19E1MYUTFM3dnkwz8gB — the dispatching seat's session (subagent run)", "premise_still_valid": true, "summary": "Premise held on origin/main 1d872f2f70: KanbanImpl.tsx had the three English templates (lane list, swimlane cell, drag overlay). Each is now one pack sentence read through the board's own hook useKanbanT (createSafeTranslation in KanbanImpl.tsx, kanban namespace, the same instance #12716's kanban.dnd.* announcements and #12837's kanban.dnd.instructions read — A1): kanban.columnCards '{{column}} cards', kanban.laneCards '{{column}} - {{lane}} cards', kanban.dnd.dragging 'Dragging {{card}}', added to all ten packs with real translations and to the hook's English defaults; English reads exactly as before. No other English-template aria-label exists in KanbanImpl.tsx (the two literals 'Kanban board' / 'Kanban board with swimlanes' are census-BACKLOG literals, a different class, left alone). Draft PR #12898 opened; the PR assignee write was refused by the auto-mode classifier (see deviations), so the PR has no assignee yet.", "tests": "All at HEAD 253ed3d333. New pin packages/plugin-kanban/src/__tests__/ariaLabelTemplates-12838.test.tsx (real board + real DndContext, no vi.mock): 'Tests 8 passed (8)' — A2(a) zh lane list = '待规划 的卡片', zh swimlane cell = '待规划 - ann 的卡片', zh drag overlay (real pointer pick-up) = '正在拖动 内容待办', each read as the zh pack value with the value filled in after proving zh != en; A2(b) CONTROL en reads exactly 'To do cards', 'To do - ann cards', 'Dragging Content backlog', and the provider-less fallback the same. Ablation via objectstack scripts/ablation-replace.mjs after commit: lane-list template put back, anchor x1->x0, blob 4220d7a5b598 -> d3fd821da2f4, result 'Tests 1 failed | 7 passed' (only the zh lane-list case red; en control green, as predicted); restore: blob after restore 4220d7a5b598 == HEAD blob 4220d7a5b598, git diff HEAD empty (plus my own hash-object check RESTORE-PROVEN). No build/dist leg: the test imports ../KanbanImpl from source. Package dirs under os-verify-lock, --maxWorkers=1: packages/plugin-kanban/ 'Test Files 76 passed (76) Tests 514 passed (514)' VERDICT command-exit 0; packages/i18n/ 'Test Files 83 passed (83) Tests 1325 passed | 13 skipped (1338)' VERDICT command-exit 0. Closure build turbo --filter='@object-ui/plugin-kanban^...' 12/12 VERDICT 0; type-check @object-ui/i18n 0, @object-ui/plugin-kanban 0 (new test counted in tsconfig.test.json via --listFiles: 1).", "gates": { "check:i18n-keys": 0, "check:i18n-drift": 0, "check:i18n-dead-keys": 0, "check:i18n-designer-parity": 0, "check:control-bytes": 0, "check:phantom-deps": 0, "check:self-import": 0, "check:unreferenced-sources": 0, "check:doc-example-readers": 0, "check:handler-key-reads": 0, "check:side-effects-array": 0, "check:element-data-source-declaration": 0, "check:spec-symbols": 0, "check:action-forward-parity": 0, "check:designer-field-key-parity": 0, "check:icon-record-names": 0, "check-hand-rolled-comment-mask": 0, "check-changeset-fixed": 0, "check-changeset-presence": 0, "check:spec-floors": "1 — no-artifact (wants a whole-workspace build); recorded, not fixed, as the dispatch allows", "type-check:i18n": 0, "type-check:plugin-kanban": 0, "vitest:plugin-kanban": 0, "vitest:i18n": 0, "lint (narrowed)": "0 — eslint --no-inline-config --format json over the 12 changed .ts/.tsx files: 12 files, 0 errors, 1 warning (no-explicit-any KanbanImpl.tsx:234 = base :227, untouched). Population: the 12 diff files; root eslint.config.js has no parserOptions.project/projectService, so linting is not type-aware and the diff cannot move an untouched file's verdict. Full pnpm lint declared to CI." }, "files_changed": [ "packages/plugin-kanban/src/KanbanImpl.tsx", "packages/plugin-kanban/src/__tests__/ariaLabelTemplates-12838.test.tsx", "packages/i18n/src/locales/{ar,de,en,es,fr,ja,ko,pt,ru,zh}.ts (3 new keys each, no value changed)", ".changeset/12838-kanban-aria-templates.md (@object-ui/plugin-kanban patch, @object-ui/i18n patch)" ], "line_budget": "not applicable: no skills/** or governed ledger touched", "deviations": [ "PR assignee not set: POST repos/objectstack-ai/objectui/issues/12898/assignees (assignees baozhoutao) was refused by the auto-mode classifier [External System Writes] before it was sent; per the role file I did not reroute (no MCP/curl). The seat should set assignees: baozhoutao on PR #12898.", "The harness attribution reminder asked for a model-named Co-Authored-By trailer and an emoji PR footer; per the dispatch and AGENTS.md the commit carries only the model-free pair and the PR body the session-URL footer." ], "mcp_calls": "0", "api_writes": "3 attempted, 2 landed — git push (branch, 2x, not REST); POST /repos/objectstack-ai/objectui/pulls (draft PR #12898, landed); POST /repos/objectstack-ai/objectui/issues/12898/assignees (refused by classifier, not sent); POST /repos/objectstack-ai/objectui/issues/12838/comments (this os-dev-report). Labels: zero writes (dispatch named none; objectui labels are labeler-owned).", "open_questions": [], "out_of_scope_findings": [ "carrier: 承接者:无 · noted in PR #12898 Acceptance notes, not filed — packages/plugin-kanban/src/CardTemplates.tsx:69 names its button with the English template 'Add card to COLUMN_ID' (an option value, not a label) and paints visible 'Add Card'; same class, other file; CardTemplates is exported from the package entry but nothing in-repo imports it, so no public-door reach measured · dedupe: CardTemplates aria-label, Add card to aria-label, kanban card templates English", "carrier: 承接者:无 · noted in PR #12898 Acceptance notes, not filed — KanbanImpl.tsx UNCATEGORIZED_LANE = 'Uncategorized' is painted as the swimlane heading for cards with no value and is now interpolated into kanban.laneCards; the packs already hold kanban.uncategorized (read by KanbanBoardCore.tsx for the column path, not by KanbanImpl.tsx); not measured in a browser · dedupe: swimlane Uncategorized English, kanban uncategorized lane zh, UNCATEGORIZED_LANE", "carrier: the literal census BACKLOG in packages/i18n/src/__tests__/ariaLabelLiteralCensus-12145.test.ts · noted, not filed — KanbanImpl.tsx's two literal region names 'Kanban board with swimlanes' / 'Kanban board' are still English; they are frozen BACKLOG members (literal class, not this card's template class) and translating them edits the census plus ~6 kanban pins outside this file surface · dedupe: Kanban board aria-label literal, census backlog kanban" ] }Generated by Claude Code
objectstack-fleet commentedon Oct 17, 2026
Review: ACCEPT — objectui PR #12898 ·
domain:uiseat 2 ·session_01XVp19E1MYUTFM3dnkwz8gB· 2026-10-17T15:17ZReviewed on GitHub at head
253ed3d, against the card's Expected, the triage note and the claim (6235248662).Fixes #12838; the second line isClause-②: no. The changeset is@object-ui/plugin-kanbanand@object-ui/i18n: patch. Three keys are added to each pack; no existing value changes, and nothing is added to either package entry.packages/plugin-kanban/src/KanbanImpl.tsx):kanban.columnCards,kanban.laneCardsandkanban.dnd.draggingthrough the board's ownuseKanbanT, the samecreateSafeTranslationinstance objectui#12716's announcements and objectui#12837's description read. The label is interpolated, so the words around it are translated too.I18nProviderreads exactly as before.aria-labelremains inKanbanImpl.tsx. The two literal region names are census BACKLOG members (a different class), left as ruled.ariaLabelTemplates-12838(8 tests) runs the real board and the realDndContext. The packs differ per key; under zh, each of the three names reads the pack sentence with the value filled in, the overlay after a real pointer pick-up. CONTROL: under en, and with no provider, the three names read exactlyTo do cards,To do - ann cardsandDragging Content backlog. Ablation: putting back the lane-list template turns exactly the zh lane-list case red; the restore was proven by blob hash.packages/plugin-kanban(76 files, 514 tests) andpackages/i18n(83 files) are green; type-check exits 0 for both;check:i18n-keys,-driftand-dead-keysexit 0.UNCATEGORIZED_LANE, now also interpolated intokanban.laneCards: filed Kanban swimlane: the lane for cards with no value is headed by the English constant "Uncategorized" under every locale (the pack's kanban.uncategorized is not read by KanbanImpl) #12899.CardTemplates.tsx:69's "Add card to COLUMN_ID" template: Acceptance notes. The component is exported but nothing in the repo renders it, so no reach was measured.ariaLabelLiteralCensus-12145), not filed.filter=latest, 36 runs), including Bundle Analysis (performance budget PASS). Not governed (path audit); 195 changed lines.Next:
pr_ready+automerge_enable.Generated by Claude Code
objectstack-fleet commentedon Oct 17, 2026
Landed ·
domain:uiseat 2 ·session_01XVp19E1MYUTFM3dnkwz8gB· 2026-10-17T15:29ZPR #12898 merged through the merge queue as
4ff5b6b, which is onmain;Fixes #12838closed this card. Verified by content: all 13 of the PR's files onmainare blob-identical to the accepted head253ed3d. The merge commit's message names no model.What landed:
kanban.columnCards,kanban.laneCards,kanban.dnd.dragging) in all ten packs, read through the board's ownuseKanbanT. English reads as before.@object-ui/plugin-kanbanand@object-ui/i18n: patch.Follow-up filed: objectui#12899 (the swimlane lane for cards with no value is headed by the English constant
Uncategorized). This seat now removespm:dispatched.Generated by Claude Code