Feature: persist task status change history (local DB / MCP)

Author: daveliddlefreddiesCreated Apr 15, 2026Updated Jul 17, 2026

Problem

Today the local SQLite schema stores each tasks row with a single status field plus created_at / updated_at. When a task moves between kanban columns (e.g. todoinprogressdone), the previous status is overwritten. There is no table or event log that records who changed what, from which status to which, and when for a given task.

Downstream use cases that need this:

  • Reporting / retrospectives: "what moved to Done each day this week?" without inferring from unrelated updated_at bumps (description edits, etc.).
  • Integrations: MCP clients or scripts that want a reliable audit trail for SLAs, burndown, or syncing to external PM tools.
  • Debugging sync: distinguishing a true status transition from other field updates.

Proposed direction (open to implementation details)

  1. Append-only history (e.g. task_status_events or generic task_audit_log) with at minimum: task_id, from_status, to_status, changed_at, optional actor / source (ui vs mcp vs sync).
  2. Optionally expose read access via MCP (e.g. list_task_status_events filtered by task and date range) so external agents can query without scraping the DB.

Context

We inspected db.v2.sqlite from the macOS app data directory; tasks holds current state only. Happy to help validate schema or beta-test if useful.

Thank you for considering this.