feat(desktop): Kanban — dashboard-parity board plugin on the SDK

The founding opt-in plugin (defaultEnabled: false): /kanban board + drawer,
live task_events via ctx.socket, ⌘-click bulk ops, auto-nudge dispatch,
collapsible lanes, board switcher, and prose activity — all pure SDK-consumer
work against plugins/kanban/dashboard/plugin_api.py. Backend: /boards totals
count live cards only.
This commit is contained in:
Brooklyn Nicholson 2026-07-15 14:10:52 -04:00
parent 81aacdef4d
commit 79e7adae2d
10 changed files with 3325 additions and 1 deletions

View file

@ -2128,7 +2128,12 @@ def list_boards(include_archived: bool = Query(False)):
for b in boards:
b["is_current"] = (b["slug"] == current)
b["counts"] = _board_counts(b["slug"])
b["total"] = sum(b["counts"].values())
# Live cards only — archived tasks are hidden from every default
# board view, so advertising them in the switcher badge makes the
# two counts visibly disagree.
b["total"] = sum(
n for status, n in b["counts"].items() if status != "archived"
)
b["default_workspace_kind"] = _default_workspace_kind(b)
return {"boards": boards, "current": current}