Skip to content

feat(kanban): PM chat panel for conversational ticket management#226

Merged
khang859 merged 2 commits into
mainfrom
feat/kanban-pm-chat
Jun 9, 2026
Merged

feat(kanban): PM chat panel for conversational ticket management#226
khang859 merged 2 commits into
mainfrom
feat/kanban-pm-chat

Conversation

@khang859

@khang859 khang859 commented Jun 9, 2026

Copy link
Copy Markdown
Owner

Summary

  • Adds a Board PM chat panel to the Kanban tab (green PM button in the toolbar): talk to an AI product manager that creates/refines tickets, prioritizes, links dependencies, creates features, and moves cards — directly on the board as you chat.
  • Backend is headless rune, one session per board, one turn per message (--prompt, then --resume <id> --prompt). Requires rune with headless resume (feat: headless resume (--resume with --prompt) + session id on stderr rune#25). Conversations persist across app restarts; rune-missing/auth/crash errors surface in the panel; turns time out after 5 min; in-flight children are killed on quit.
  • The kanban MCP server gains a board-scoped token (RunScopeTaskScope | BoardScope union) and a PM_TOOLS set with explicit task_id params. Mutations route through KanbanCommands, so the PM follows the same rules as the UI: can't touch running tasks (status or edits), review stays worktree-only, other boards are invisible. PM persona ships as an AGENTS.md rune loads into its system prompt.

Test plan

  • npm run typecheck (node + web) and npm run build pass
  • Full vitest suite: 987 pass, incl. 9 new board-scope MCP tests (PM toolset listing, create/links/feature-inherit, running-task guards, cross-board isolation, worker-tool rejection)
  • Rune-side: 693 tests pass; live smoke confirmed session resume retains context
  • End-to-end via CDP against the dev app: sent a chat message → PM called kanban_create → ticket appeared in Triage with the PM confirming the id; concurrent turns on two boards ran isolated
  • Manual: try the PM on a real board (note: assistant reply renders at turn end; board updates live throughout)

Notes / follow-ups

  • Tool chips show rune's server-prefixed tool name (kanban_kanban_create) — cosmetic
  • Assistant markdown renders as plain text in bubbles
  • kanban_swarm excluded from PM tools in v1 (needs a board-scoped workspace-inheritance variant)

🤖 Generated with Claude Code

khang859 and others added 2 commits June 9, 2026 17:50
A "Board PM" chat panel inside the Kanban tab: describe features, bugs,
or piles of ideas and the PM shapes them into tickets via conversation.

- PmChatService drives one rune session per board, one headless turn per
  message (rune --prompt, then --resume <id> --prompt; requires rune with
  headless resume). Session ids persist to ~/.fleet/kanban/pm so
  conversations survive restarts. Errors are classified (rune missing /
  auth failure / crash), turns time out after 5 minutes, and in-flight
  children are killed on app shutdown.
- Kanban MCP server gains a board-scoped token (RunScope is now a
  TaskScope | BoardScope union) and a PM_TOOLS set with explicit task_id
  parameters. Mutations route through KanbanCommands, so the PM obeys
  the same rules as the UI: running tasks are untouchable (status AND
  edits), review stays worktree-only, and tasks/features on other
  boards are invisible. The PM persona ships as an AGENTS.md rune loads
  into its system prompt.
- Renderer: PmChatPanel (fixed right panel, KanbanDrawer pattern) with
  transcript bubbles + tool chips, a small pm-chat Zustand store, and a
  PM toggle button in the board toolbar. Created tickets appear live
  via the existing kanban:event refresh path.

Verified end-to-end by driving the dev app over CDP: a chat message
produced a ticket in triage with the PM confirming the id.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
setToolVisible fires updateSettings at window.fleet.settings, which the
bare window.fleet test stub doesn't provide — the rejected promise
surfaced as 2 unhandled errors and failed CI on main since b075f1f.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@khang859 khang859 merged commit 0d4fb9e into main Jun 9, 2026
1 check passed
@khang859 khang859 deleted the feat/kanban-pm-chat branch June 9, 2026 22:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant