# Mission Control - Followup Implementation Plan > **Created:** 2026-02-26 > **Status:** Gaps identified from E2E testing pass ## Overview E2E testing against PLAN.md Acceptance Criteria revealed ~85% feature completeness. This document tracks the remaining gaps to reach full feature parity. --- ## Gap 1: Drag Reorder UI (AC-004) **Current State:** - `reorderQueue(fromIndex, toIndex)` exists in `focus-store.ts` - Tests pass for store logic - No drag-and-drop UI in QueueView **Required:** - Install DnD library (recommend `@dnd-kit/core` + `@dnd-kit/sortable`) - Wrap QueueView sections with DndContext - Make QueueItem components draggable - Wire drag end handler to call `reorderQueue` - Log reorder decision via `log_decision` command **Acceptance Criteria (from PLAN.md):** > AC-004: Given user is in Queue View, when user drags an item to new position, then order is persisted AND decision is logged with context AND user is prompted for optional reason. --- ## Gap 2: System Tray Integration (AC-007) **Current State:** - `TrayPopover` component fully implemented - Shows THE ONE THING, queue/inbox counts, quick actions - **Not wired to Tauri system tray** **Required:** - Add `tauri-plugin-system-tray` dependency (if not present) - Create tray icon in `src-tauri/src/lib.rs` - Wire tray click to show popover window - Update badge count on tray icon **Acceptance Criteria (from PLAN.md):** > AC-007: Given MC is running, when there are pending items, then menu bar icon shows badge with count AND clicking icon opens popover AND popover shows THE ONE THING and queue summary. --- ## Gap 3: ReasonPrompt Integration **Current State:** - `ReasonPrompt` component fully implemented with quick tags - Supports: Blocking, Urgent, Context switch, Energy, Flow tags - **Not wired to any actions** **Required:** - Wire ReasonPrompt to show before significant actions (set_focus, skip, defer) - Pass reason and tags to `log_decision` command - Make prompt optional (user can skip) **Acceptance Criteria (from PLAN.md):** > AC-005: Given user performs any significant action (set_focus, reorder, defer, skip, complete), when action is executed, then decision_log.jsonl is appended with: timestamp, action, bead_id, reason (if provided), tags, full context snapshot. --- ## Gap 4: E2E Test Updates **Current State:** - 2 Playwright tests failing due to outdated expectations - Tests expect old placeholder text / selectors are too broad **Required:** - Update "shows Inbox placeholder" test to verify InboxView content - Update "Queue tab shows item count badge" test with specific selector --- ## Priority Order 1. **Drag Reorder UI** - Core AC, frequently used interaction 2. **ReasonPrompt Integration** - Enables learning from user decisions 3. **System Tray Integration** - Polish feature, improves UX 4. **E2E Test Updates** - Maintenance, not blocking --- ## Technical Notes ### DnD Library Choice `@dnd-kit` is recommended over `react-beautiful-dnd` because: - Active maintenance (rbd is deprecated) - Better TypeScript support - Works with React 18/19 concurrent features - Smaller bundle size ### System Tray Considerations - macOS: Native menu bar item with badge - Windows: System tray icon - Linux: Varies by DE, may need fallback ### Decision Log Schema Existing schema from `src-tauri/src/data/state.rs`: ```rust pub struct Decision { pub timestamp: String, pub action: DecisionAction, pub bead_id: String, pub reason: Option, pub tags: Vec, pub context: DecisionContext, } ``` The backend is ready to receive tags - just need frontend to send them.