Skip to content

feat(missioncontrol): awaiting-human workflow states, attention layer, question/reply flow (v0.11.11.0)#2

Closed
developdaly wants to merge 14 commits into
mainfrom
feat/missioncontrol
Closed

feat(missioncontrol): awaiting-human workflow states, attention layer, question/reply flow (v0.11.11.0)#2
developdaly wants to merge 14 commits into
mainfrom
feat/missioncontrol

Conversation

@developdaly
Copy link
Copy Markdown
Owner

@developdaly developdaly commented Mar 23, 2026

Summary

  • Mission Control skill — persistent Kanban board daemon, cards bind to durable OpenClaw sessions.
  • Awaiting Human workflow state — agents POST questions to POST /api/cards/:id/questionawaiting_human. Replies resume session via POST /api/cards/:id/reply.
  • Attention layer — derived hasUnreadOutput, unreadCommentCount, attentionLevel computed server-side.
  • POST /api/cards/:id/read — marks viewed, updates lastViewedAt.
  • Card-level model selector — per-card model override with gateway catalog integration.
  • Typed activity timelineactivity[] with typed entries and per-entry actor.
  • PATCH allowlist enforced — typed Partial<Pick<Card>> allowlist (was raw Object.assign).
  • Activity type injection fixPOST /api/cards/:id/activity rejects client-set type/actor.
  • Base-path routing fixMC_BASE_PATH=/missioncontrol now routes correctly. Regression test added.

Tests

  • +5 regression tests (test/missioncontrol-base-path-regression.test.ts) — all pass
  • 394 total tests, 0 fail
  • 18-scenario API smoke test — all pass
  • Browser QA: login, board, awaiting-human tile, modals — all pass under MC_BASE_PATH=/missioncontrol

Pre-Landing Review: No issues found.

CRITICAL fixes confirmed: PATCH allowlist ✅, activity type CSS injection ✅

QA: Health 62 → 96

Found 1 high-severity bug (ISSUE-QA-001): base-path routing 404 loop. Fixed and verified.

🤖 Generated with Claude Code

developdaly and others added 14 commits March 21, 2026 23:44
…anagement

Standalone Bun server serving a drag-and-drop Kanban board with 14 fixed
pipeline columns (Backlog → Done) mapped to gstack skills. Moving a card
to a skill column triggers the corresponding skill via OpenClaw webhook.

Includes CLI (start/stop/open/show/add/move/process), REST API with
HMAC cookie auth, SSE log streaming, and a self-contained Tailwind UI.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
All UI fetch URLs now use BASE_PATH prefix so the board works behind
a reverse proxy at /missioncontrol. Set MC_BASE_PATH=/missioncontrol
in the Northflank env. Also adds DEPLOY.md with full Northflank setup.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Wrap the entire fetch handler in try/catch so uncaught errors return
a 500 JSON response instead of silently closing the socket. Also
guard req.json() parsing in the login handler specifically.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Add public /api/info endpoint returning version, uptime, runtime,
card count, and webhook status (no secrets). Login screen displays
this below the sign-in button; header shows version + card count
after authentication.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
…ayer, and question/reply flow

- Add `awaiting_human` to CardStatus; normalizeCard() maps unknown statuses to 'idle'
- Add `attentionMode`, `attentionReason`, `attentionUpdatedAt`, `lastViewedAt` fields to Card
- Add `POST /api/cards/:id/question` — agent posts a question, card enters awaiting_human
- Add `POST /api/cards/:id/reply` — human replies, agent resumes in same durable session
- Add `POST /api/cards/:id/read` — mark card as read, clears unread output/comment indicators
- Derive `hasUnreadOutput`, `unreadCommentCount`, `attentionLevel` server-side via decorateCard()
- Fix CRITICAL: PATCH /api/cards/:id now uses typed allowlist; raw body never reaches updateCard()
- Fix CRITICAL: POST /api/cards/:id/activity rejects client-set type/actor fields
- Fix: attentionMode/attentionReason edits are locked server-side when status === awaiting_human
- Add activity types: agent_question, human_reply, run_started, run_cancelled, session_linked, etc.
- Add tile-level attention chip and awaiting-human pill UI with pulse animation
- Add modal reply box (locked unless card is awaiting_human)
- Add modal attention controls (locked when awaiting_human, with helpful hint text)
- Guard prefers-reduced-motion on pulse animation
- Update CHANGELOG and DEPLOY docs
- strip MC_BASE_PATH prefixes before route matching so /missioncontrol, /missioncontrol/api/*, and /missioncontrol/auth/* resolve correctly
- keep raw /, /api/*, and /auth/* routes working for local/non-prefixed use
- add regression test coverage for base-path stripping behavior
…HANGELOG

- add /missioncontrol to skills table in README.md (after /autoplan)
- add /missioncontrol to all three install-prompt skill lists in README.md
- add missioncontrol/ to project structure tree in CLAUDE.md
- add /missioncontrol row and full section to docs/skills.md
- polish CHANGELOG 0.11.11.0 voice on attention-layer and read/reply bullets

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
feat(missioncontrol): add board column descriptions
…ptions

wip(missioncontrol): start multimedia card attachments
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