Files
mission-control/AGENTS.md
teernisse f5ce8a9091 feat(followup): implement PLAN-FOLLOWUP.md gap fixes
Complete implementation of 7 slices addressing E2E testing gaps:

Slice 0+1: Wire Actions + ReasonPrompt
- FocusView now uses useActions hook instead of direct act() calls
- Added pendingAction state pattern for skip/defer/complete actions
- ReasonPrompt integration with proper confirm/cancel flow
- Tags support in DecisionEntry interface

Slice 2: Drag Reorder UI
- Installed @dnd-kit (core, sortable, utilities)
- QueueView with DndContext, SortableContext, verticalListSortingStrategy
- SortableQueueItem wrapper component using useSortable hook
- pendingReorder state with ReasonPrompt for reorder reasons
- Cmd+Up/Down keyboard shortcuts for accessibility
- Fixed: Store item ID in PendingReorder to avoid stale queue reference

Slice 3: System Tray Integration
- tray.rs with TrayState, setup_tray, toggle_window_visibility
- Menu with Show/Quit items
- Left-click toggles window visibility
- update_tray_badge command updates tooltip with item count
- Frontend wiring in AppShell

Slice 4: E2E Test Updates
- Fixed test selectors for InboxView, Queue badge
- Exposed inbox store for test seeding

Slice 5: Staleness Visualization
- Already implemented in computeStaleness() with tests

Slice 6: Quick Wiring
- onStartBatch callback wired to QueueView
- SyncStatus rendered in nav area
- SettingsView renders Settings component

Slice 7: State Persistence
- settings-store with hydrate/update methods
- Tauri backend integration via read_settings/write_settings
- AppShell hydrates settings on mount

Bug fixes from code review:
- close_bead now has error isolation (try/catch) so decision logging
  and queue advancement continue even if bead close fails
- PendingReorder stores item ID to avoid stale queue reference

E2E tests for all ACs (tests/e2e/followup-acs.spec.ts):
- AC-F1: Drag reorder (4 tests)
- AC-F2: ReasonPrompt integration (7 tests)
- AC-F5: Staleness visualization (3 tests)
- AC-F6: Batch mode (2 tests)
- AC-F7: SyncStatus (2 tests)
- ReasonPrompt behavior (3 tests)

Tests: 388 frontend + 119 Rust + 32 E2E all passing

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-26 17:28:28 -05:00

116 lines
3.2 KiB
Markdown

# AGENTS.md - Mission Control Agent Swarm
## Project Overview
Mission Control is an ADHD-centric personal productivity hub built with Tauri 2.0 + React 19. It unifies GitLab activity (via `lore` CLI) and beads task tracking (via `br` CLI) into a single native interface.
**Core principle:** Surface THE ONE THING you should be doing right now.
## Architecture
```
Frontend (React 19 + Vite) Backend (Tauri/Rust)
| |
|---- IPC (invoke) ----------->|
| |
| CLI Traits (mockable)
| |
| lore --robot (GitLab)
| br (beads tasks)
| bv --robot-* (triage)
```
## Key Files
| Path | Purpose |
|------|---------|
| `src/App.tsx` | Main React component |
| `src-tauri/src/lib.rs` | Tauri app setup |
| `src-tauri/src/data/lore.rs` | Lore CLI trait + types |
| `src-tauri/src/data/beads.rs` | Beads CLI trait + types |
| `src-tauri/src/commands/mod.rs` | Tauri IPC commands |
| `PLAN.md` | Full implementation plan |
| `CLAUDE.md` | Project-specific Claude instructions |
## Agent Coordination
### Team Name
`purrfect-beaming-lynx`
### Beads Task Management
Use `br` and `bv` for task coordination:
```bash
# Get triage recommendations
bv --robot-triage | jq '.triage.quick_ref.top_picks'
# List all beads
br list --json
# Claim a task
br update <bead-id> --status in_progress
# Complete a task
br close <bead-id> --reason "Completed: <summary>"
# Show bead details
br show <bead-id> --json
```
### Communication
Use SendMessage tool for agent-to-agent coordination:
- Message teammates directly by name
- Use broadcast sparingly (only for critical team-wide issues)
- Check task list after completing each task
### Current Status
**Completed:**
- Phase 0: Test infrastructure (Vitest, Playwright, Rust mocks)
- Phase 1: Tauri scaffold, React shell, CLI traits
- Phase 2: Bridge + Data Layer (GitLab-Beads sync, state persistence)
- Phase 3: UI Components (FocusView, QueueView, InboxView, Settings, Debug)
- Phase 4: Navigation + keyboard shortcuts (Cmd+1-4, Cmd+,)
- Phase 5: TanStack Query data layer, error boundaries
- bv triage integration (get_triage, get_next_pick commands)
**In Progress:**
- UI polish and edge case handling
- Decision log analysis features
## Development Commands
```bash
# Run dev (frontend + backend)
npm run tauri:dev
# Frontend only
npm run dev
# Run tests
npm run test # Vitest
npm run test:e2e # Playwright
cargo test # Rust
# Lint
npm run lint
cargo clippy -- -D warnings
```
## Visual Verification
Playwright MCP tools can connect to `http://localhost:1420` for UI inspection:
- `browser_navigate` - Load pages
- `browser_snapshot` - Get accessibility tree
- `browser_take_screenshot` - Visual verification
## Critical Constraints
1. **CLI over libraries** - Shell out to `lore`/`br`/`bv`, don't import them
2. **Trait-based mocking** - All CLI interactions via traits for testability
3. **TDD** - Write failing test first, then implement
4. **No `any`** - Use `unknown` with type guards in TypeScript
5. **jj for VCS** - Use jj, not git (see global CLAUDE.md)