v0.2.0: kanban columns + assignee support #3

Merged
ejlewis merged 0 commits from v0.2.0-columns-assignee into main 2026-06-13 11:58:29 -05:00
Owner

Summary

Adds kanban column and assignee support to the MCP, closing the two real gaps in the Issues & Decisions / shared-project workflow. Purely additive — no breaking changes. Tool count 22 → 24.

  • Columns: Task/notes now surface column_id; new list_columns(project_id) tool (GET column/project/{id}); column_id writable on create/update (moves an item between swimlanes, e.g. to "Closed").
  • Assignee: Task surfaces assignee; new list_project_members(project_id) tool (GET project/{id}/users) resolves a person → user id; assignee writable on create/update. assignee=0 clears an existing assignee.
  • Read shape is ids-only by design — callers join names via the two list tools (no per-list enrichment round-trips).
  • Docs + version bumped to 0.2.0 (pyproject, compose, README, DESIGN.md §7).

Built spec-first (docs/superpowers/specs/2026-06-13-columns-assignee-design.md) and plan-driven (docs/superpowers/plans/2026-06-13-columns-assignee.md).

Verification

  • 102 unit tests pass (mocked transport/client; new coverage for the models, both endpoints, threaded write params, handler wrapping, tool registration, and the assignee=0 unassign path).
  • Live-verified against the real account (self-cleaning round-trip): column move New → Closed sticks; assignee write sticks via the existing batch/task payload (no dedicated endpoint needed); assignee=0 reads back as unassigned.

Test Plan

  • CI builds + publishes the 0.2.0 multi-arch images (GHCR + Gitea) on the v0.2.0 tag.
  • Redeploy and confirm list_columns / list_project_members are advertised by the live server.
  • In the host: list I&D columns, move a note to "Closed", confirm it lands in the right swimlane.

🤖 Generated with Claude Code

## Summary Adds **kanban column** and **assignee** support to the MCP, closing the two real gaps in the Issues & Decisions / shared-project workflow. Purely additive — no breaking changes. Tool count 22 → 24. - **Columns:** `Task`/notes now surface `column_id`; new `list_columns(project_id)` tool (`GET column/project/{id}`); `column_id` writable on create/update (moves an item between swimlanes, e.g. to "Closed"). - **Assignee:** `Task` surfaces `assignee`; new `list_project_members(project_id)` tool (`GET project/{id}/users`) resolves a person → user id; `assignee` writable on create/update. `assignee=0` clears an existing assignee. - **Read shape is ids-only by design** — callers join names via the two list tools (no per-list enrichment round-trips). - Docs + version bumped to `0.2.0` (pyproject, compose, README, DESIGN.md §7). Built spec-first (`docs/superpowers/specs/2026-06-13-columns-assignee-design.md`) and plan-driven (`docs/superpowers/plans/2026-06-13-columns-assignee.md`). ## Verification - **102 unit tests pass** (mocked transport/client; new coverage for the models, both endpoints, threaded write params, handler wrapping, tool registration, and the `assignee=0` unassign path). - **Live-verified against the real account** (self-cleaning round-trip): column move New → Closed sticks; assignee write sticks via the existing `batch/task` payload (no dedicated endpoint needed); `assignee=0` reads back as unassigned. ## Test Plan - [ ] CI builds + publishes the `0.2.0` multi-arch images (GHCR + Gitea) on the `v0.2.0` tag. - [ ] Redeploy and confirm `list_columns` / `list_project_members` are advertised by the live server. - [ ] In the host: list I&D columns, move a note to "Closed", confirm it lands in the right swimlane. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ejlewis/ticktick-mcp!3
No description provided.