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>
3.2 KiB
3.2 KiB
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:
# 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
# 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 pagesbrowser_snapshot- Get accessibility treebrowser_take_screenshot- Visual verification
Critical Constraints
- CLI over libraries - Shell out to
lore/br/bv, don't import them - Trait-based mocking - All CLI interactions via traits for testability
- TDD - Write failing test first, then implement
- No
any- Useunknownwith type guards in TypeScript - jj for VCS - Use jj, not git (see global CLAUDE.md)