Repository navigation
Drop the status dropdown from kanban cards and let a query node order its columns - #3532
Conversation
Pragmatic Code Review: PR #3532Review Type: Initial Review (no prior reviews or comments on the PR; one commit, Summary: The change does what the issue asks, in one cohesive commit. No blockers. One item is worth checking before merge: the menu's mouse path has not been exercised with real pointer events, and the app ships on WebKit, not the Chromium the browser tier runs. What I checked: the full source diff, Requirements Check
Project rules: no compatibility or migration code, no lint suppression, no raw Code Review Findings1. 🟡 Important: the menu's mouse path is untested with real pointer events, and the app runs on WebKit📁
The Recommendation:
Principle: a close-on-blur popup must not depend on click-focus behaviour, which differs between engines. 2. 🟡 Important: nothing tells a sighted keyboard user that
|
malibio
left a comment
There was a problem hiding this comment.
Automated pragmatic-code-review: APPROVE (posted as a comment — GitHub blocks self-approval). Full findings in the review comment above.
Review addressed (
|
… its columns (closes #3514) A kanban card showed a select with its own status. The card now shows only its title; a Move to menu opens from the card's context menu or with M on the focused card, and writes through the same path as a drag. A query node's view_config.kanban.columnOrder holds, per group-by field, that field's values in column order. Listed values come first, values the list omits follow in enum order, unknown values are ignored and Unassigned stays last. The viewer carries the order through every view-config write. Linear's Issues by Status board declares its workflow order. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ke M discoverable - Cancel mousedown inside the menu so a click on an item never blurs the menu shut before the click lands, whatever the engine does with button focus - Name the M shortcut in the card tooltip - Close an open menu when the board's columns or result set change - ArrowUp from the menu container goes to the last item - Leave the native context menu alone when a card has nowhere to move - The seeded view-config test requires columnOrder to order the groupBy field Skipped: flipping the menu above the card near the bottom of the board (the board scrolls to it); aria-haspopup on the title button (its click opens the node, not the menu); a real-pointer browser test (the browser tier has no userEvent setup, and the mousedown guard is asserted in Happy-DOM). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
058646b to
b92cf22
Compare
Closes #3514
What changed
Kanban cards carry no status control. The
<select class="kanban-card-move">on every card is gone; the card shows only its title, and its column is its status.A card can still be moved without a mouse. A "Move to" menu opens on demand, from the card's context menu or with
Mon the focused card. It lists every column but the card's own, takes arrow keys / Home / End / Escape, and writes through the samemoveCardpath as a drag. After a move, focus follows the card into its new column.A query node defines its kanban column order.
view_config.kanban.columnOrdermaps a group-by field to that field's values in column order, so each field keeps its own order when group-by changes.parseViewConfigObjectis now the one reader for both the query node'sviewConfigand the default view's stored preferences.Seeds. Linear's "Issues by Status" declares workflow order (Triage, Backlog, Open, In Progress, In Review, Done, Cancelled); its enum lists the base
task.statusvalues before the ones the playbook adds. The Jira and spec-driven boards are unchanged: their enum order is already the intended column order.view_configstays an open object owned by the viewer, so this adds a key, not a schema field.Generated files
packages/desktop-app/src/lib/types/generated/query-{fields,node}.ts— theview_configdoc comment changed.packages/skill/references/linear-playbook.md— the Linear view's seed config changed.Docs
nodespace-docs:components/node-types.md(thequery.view_configrow listskanban.columnOrder) andcomponents/query-node.md(column order rules, card behaviour, seeding).Tests
kanban-grouping.test.ts— column ordering: stored, partial, stale values, repeats, none.query-node-model.test.ts,default-view-prefs.test.ts— parsingcolumnOrder; merge keeps it across view and group-by changes.kanban-view-card-move.test.ts(new) — no dropdown on cards; keyboard move, Escape, context menu; column order applied by the board.query-node-viewer-materialize-race.test.ts— a saved query keeps its order across view and group-by changes; a default view carries it into preferences and the materialized node.kanban-dnd,kanban-consecutive-status-moves) — moves that used the select now go through the menu.columnOrder's shape; a Linear test checks the board orders every status and nothing else.bun run test:changedpasses (frontend, scripts, skill, browser, types:check, node-types:check, Rust).🤖 Generated with Claude Code