project-management layer: action items, stakeholders, tickets, due datesmissioncache-db, mcp-missioncache, missioncache-dashboard, plugin commands
- New
action_items,stakeholders, andticketstables plus atasks.due_datecolumn (idempotent ALTER migration; existing DBs pick everything up on first open). SQLite is the source of truth; every mutation re-renders read-only## Action Items/## Stakeholders/## Ticketssections and a**Due:**header line into the project's context file under the existing sidecar lock, with a Recent Changes line per mutation. Sections self-heal into canonical positions on first data and are never created empty; done/dropped items stay visible in the mirror for 7 days, forever in the DB. All writes converge on one module (missioncache_db/pm_items.py) shared by the CLI, the MCP tools, and the dashboard. - CLI: new
action-item add|list|done|update,stakeholder add|remove|list,ticket add|remove|list, anddue-datecommand groups;<task>accepts an id or a project name.missioncache-db healthnow also flags overdue action items, a project due date within 7 days, and items open more than 14 days with no due date. - MCP: six new tools (
add_action_item,update_action_item,list_action_itemswith a cross-project scope,set_stakeholder,set_ticket,set_project_due_date).get_context_digestnow carriesdue_dateandaction_items_open(with per-item overdue flags) and merges the PM health warnings - best-effort, so a resume never fails on a missing DB. - Commands:
/missioncache:loadrenders an Action items block (with overdue marks) above Waiting on plus a Due line;/missioncache:savegains propose-then-apply duties - mark items the session completed as done, capture new commitments (yours or a colleague's, e.g. from meeting transcripts) with requester/assignee/due date/source. - Dashboard: new REST endpoints (
/api/tasks/{id}/pm, action-item/stakeholder/ticket/due-date CRUD, and/api/today). PM tables are read/written via SQLite directly (not mirrored into DuckDB). New default Attention view (#attention, replacing#today, which redirects), a full project detail page (#project/<name>) with Overview and Action Items tabs, and projects-list upgrades (Due column, open/overdue badge, at-risk dot). - The dashboard opens on a new Attention view, which answers "what needs me today" rather than "what have I got". A greeting, a stats strip, and three gadgets sized to one viewport - each scrolls inside itself, so the whole picture stays on one screen instead of running off the bottom. My work joins the two places your own work is recorded: open action items, plus Waiting-on rows whose
whocell names you. Those rows previously counted against "on other people" whatever the cell said, which under-reported your own plate roughly 4x while showing your asks under someone else's name. Waiting on people groups asks by age band (under 7d, 7-13d, 14-29d, 30d+) and, inside a band, by person with the most asks first. Someone holding asks in several bands appears in each one showing only that band's asks, with a+N elsewherebadge, because bucketing a person by their oldest ask hid the fact that they also owed you something from this week. Filters, a search across person, project and ask text, and a band-order toggle. Projects carries every project with something outstanding - an open item on you, an ask out with someone, or a due date - showing what is next - or, when a project has no next step, what you last did, taken from the newest Recent Changes bullet - plus checklist progress, items on you, asks out over seven days, and when it was last worked, filterable by category and searchable. - Colour on the Attention view carries one meaning each: red is "you are late" and nothing else, so a day with nothing overdue renders no red at all, and amber is someone else's latency. The view has a real type scale (it was 95% one size, which is why everything on it looked equally important), a single raised surface so there is a focal plane,
prefers-reduced-motionhonoured, and visible focus rings on every control, since the whole view is buttons and links and the custom backgrounds were painting over the browser's own ring.