Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 14 additions & 5 deletions .changeset/8913-object-kanban-columns-declared.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,11 +62,20 @@ render is the same defect one layer up, so neither is blessed:
in "Uncategorized") and a string-first mix is ignored whole. The protocol's "or"
names two array shapes and no mixed example.

**The bare-string array is admitted for parity and is inert on this block.** The
renderer honours it only when a board has no `groupBy`, and `groupBy` is required
on this face — so no document that passes this schema reaches it. It is declared
because refusing an arm the protocol names would be a second narrowing; the
requiredness is tracked as objectui#8990.
**The bare-string array is admitted for parity, and on this block it is now
REACHABLE.** The renderer honours it only when a board has no `groupBy` — the
`effectiveColumns` memo takes the string branch under `if (!schema.groupBy)` — and
`groupBy` was required on this face when this entry was written, so no document
that passed this schema could reach it. objectui#8990 has since made `groupBy`
optional on both twins (`groupBy?: string` in `objectql.ts`,
`z.string().optional()` in the Zod mirror), and a lane-less board now does reach
the arm: a board carrying only `objectName` and `columns: ['todo', 'doing', 'done']`
parses green and satisfies every guard on that branch, drawing those lanes titled
by the raw strings. It is declared because refusing an arm the protocol names would
be a second narrowing — that reason is unchanged; what moved is that the arm is
exercised rather than dormant. objectui#8990's own entry records the same
reachability from its side, pinned with a firing control in
`packages/plugin-kanban/src/__tests__/laneLessBoard-8990.test.tsx`.

**What is deliberately NOT judged.** `cards` is not required (a swimlane does not
carry its own cards), so an undeclared lane key such as the retired `items`
Expand Down
2 changes: 1 addition & 1 deletion .changeset/8992-user-actions-collapse-and-docblock.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ both measured by rebuilding `packages/types/dist` on each side of the change:
`description = undefined` after the strip, on both sides of this change, while
`buttons` — the one member that never carried a default — keeps its description
through it. So the three simply stop being an exception: before, the local extension
supplied descriptions the other ten defaulted keys did not have. Nothing in this
supplied descriptions the other seven defaulted keys did not have. Nothing in this
repository reads them.
2. In the emitted `objectql.zod.d.ts` the three move from `z.ZodOptional[z.ZodBoolean]`
to `z.ZodDefault[z.ZodBoolean]` — the spec's own declaration, as the compiler sees it
Expand Down