docs(plugin-kanban): document the badge element's colorClass / colorStyle members - #8134
Conversation
…tyle members The README's `KanbanCard` block wrote the `badges` element with 2 of the 4 members shipped by `packages/types/src/complex.ts` (`KanbanCard` at :63, which `@object-ui/plugin-kanban` re-exports through `src/types.ts`). Add the missing `colorClass` and `colorStyle` in the shipped order, with one comment line naming the pairing rule: a `colorClass` derived from `getBadgeHexAppearance` must carry that helper's style as `colorStyle`, because the class reads CSS custom properties only that style declares. Neither gate reds on this by design: `check-readme-exports.mjs` compares top-level property names only and deliberately does not walk nested declarations, and this README sits on `check-doc-snippet-types.mjs`'s `UNGATED_DOCS` ledger, so its fences are never compiled. The interface pin still reads `matches interface KanbanCard doc 7 key(s) vs own 7 of 7`, unchanged, because the addition is nested. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FhBNJcLRZLe8M87VcUgpKr
✅ Console Performance Budget
The eager closure is every chunk the entry reaches through static imports — what the browser fetches and parses before the app renders. The entry chunk on its own is a small fraction of it. 📦 Bundle Size Report
Size Limits
|
|
Standing down on
Every other check on Generated by Claude Code |
|
Armed — squash auto-merge enabled and the PR is in the merge queue,
On MERGED: content probe on re-fetched Generated by Claude Code |
|
LANDED — merged at 2026-09-06T18:21:43Z as Content probe on re-fetched
#7984 closed by the Generated by Claude Code |
Fixes #7984
packages/plugin-kanban/README.md'sKanbanCardblock documented thebadgeselement with 2 of the 4 members carried by the shipped declaration. This addscolorClassandcolorStylein the shipped order, with one comment line naming the pairing rule. Source of truth:packages/types/src/complex.ts(KanbanCardat :63), which@object-ui/plugin-kanbanre-exports throughsrc/types.ts:36. Nopackages/**source is touched — the diff is 2 added lines in one README.Side-by-side — the review IS the verification
No gate reds on this (see Why no gate holds it below), so please compare these by eye.
Shipped,
packages/types/src/complex.ts:67-89— JSDoc bodies elided to the load-bearing sentences; the full text is in the file:README after this change,
packages/plugin-kanban/README.md:129-135:Four member names, in the shipped order, with the shipped types (the README block's own single-quote convention for the
variantunion is kept, as is its// …trailing-comment style). The whole JSDoc is deliberately not transcribed — one line carries the pairing rule, which is the half a README reader cannot otherwise discover.The pairing rule, in one line
A
colorClassderived fromgetBadgeHexAppearance(color)(from@object-ui/fields) must be passed together with that helper'sstyleascolorStyle, because the class reads CSS custom properties that only that style declares. A badge carrying the class without the style references undefined variables; deriving the class some other way is how one option renders two colours on one screen (objectui#5183).Why no gate holds it (and why no gate was edited here)
Both boundaries are declared in the gates' own headers, so neither is a bug to patch:
scripts/check-readme-exports.mjscompares top-level property names only, in both directions, and its:576header says nested declarations are deliberately not walked. A nested member is outside the pin by design.packages/plugin-kanban/README.mdis onscripts/check-doc-snippet-types.mjs'sUNGATED_DOCSledger at:728(6 parse diagnostic(s) — blocks fenced ts that are bare object literals or elided bodies), so its fences are never compiled. That ledger is objectui#5174's shrink-only debt list and shrinking it has its own route.Per the triage ruling on the card (§3), widening either gate is a separate card; this PR edits neither.
Reader named in the dispatch, measured after the change —
node scripts/check-readme-exports.mjs --list, run on this branch's HEAD6316cfd8:Still 7 vs 7, as predicted: the addition is nested, so the top-level pin sees nothing move.
Control that the page is still ungated —
pnpm check:doc-snippetsexit 0, and its census line still reads227 document(s): 214 covered ..., 13 ungated — declared in this script, NOT verified by it, with this README among the 13. SoReact.CSSPropertiesin the block needs noimport typetoday; nothing compiles it. It is written with theReact.namespace spelling the shipped declaration uses, so it will still compile if and when this page comes off the ledger.Scope notes
KanbanCard/KanbanColumnpair. If whoever reconciles those moves this element, the README is re-touched once — one code block, a cheap second pass, and much cheaper than leaving a shipped README two members short indefinitely. That card ispm:blocked, and per triage this one is not mechanically blocked by it.KanbanSchema's zero-read members and the root README's kanban example) is the same family on a different face and is not part of this PR.copilot/*kanban branches that differ on it last moved 2026-01-14 through 2026-02-04 and sit 200–1977 commits behind main, andclaude/issue-5174-ungated-docs-batch25does not touch it.Gates
All run in this worktree at HEAD
6316cfd8, exit codes captured by redirect-then-capture:pnpm check:readme-exports✅ check-readme-exports: OK (... 58 key(s) compared both ways (0 fabricated, 0 stale omission(s) ...))pnpm exec vitest run scripts/__tests__/check-readme-exports.test.tsTest Files 1 passed (1) · Tests 87 passed (87)pnpm check:doc-fences✅ check:doc-fences — every TypeScript block in 227 document(s) is fenced ts/tsx/typescript ...pnpm check:doc-types✅ Every documented component type is registered.node scripts/check-doc-links.mjsLinks are valid across 17 scan roots.pnpm check:doc-snippets(control)Semantic phase: 567 of 567 block(s) judged, 0 failed.— this page among the 13 ungatedpnpm check:control-bytes✅ check-control-bytes: OK (scanned 6502 tracked text file(s); skipped 85 binary).node scripts/check-changeset-presence.mjs✅ No source or published contract of a released package changed in this range, so no changeset is owed.node scripts/check-governed-queue-guard.mjs --test packages/plugin-kanban/README.md✅ NOT GOVERNED — 1 path(s) checked against 5 governed surface(s); none matched.Plus a self-scan of the changed path for control bytes:
grep -naP '[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]' packages/plugin-kanban/README.mdexit 1 (no hits).Changeset: none added.
check-changeset-presence.mjsis the authority and it reads1 file(s) changed, 0 of them published source of a package the release covers— a README is not published source to that script, so nothing is owed. Noskip-changesetlabel was applied.Live E2E (informational)is red on every branch today for an upstream reason (objectui#7990 / objectstack#16186) — not from this change.🤖 Generated with Claude Code
https://claude.ai/code/session_01FhBNJcLRZLe8M87VcUgpKr
Generated by Claude Code