feat(missioncontrol): awaiting-human workflow states, attention layer, question/reply flow (v0.11.11.0)#2
Closed
developdaly wants to merge 14 commits into
Closed
feat(missioncontrol): awaiting-human workflow states, attention layer, question/reply flow (v0.11.11.0)#2developdaly wants to merge 14 commits into
developdaly wants to merge 14 commits into
Conversation
…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
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
…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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
POST /api/cards/:id/question→awaiting_human. Replies resume session viaPOST /api/cards/:id/reply.hasUnreadOutput,unreadCommentCount,attentionLevelcomputed server-side.POST /api/cards/:id/read— marks viewed, updateslastViewedAt.activity[]with typed entries and per-entryactor.Partial<Pick<Card>>allowlist (was rawObject.assign).POST /api/cards/:id/activityrejects client-settype/actor.MC_BASE_PATH=/missioncontrolnow routes correctly. Regression test added.Tests
test/missioncontrol-base-path-regression.test.ts) — all passMC_BASE_PATH=/missioncontrolPre-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