Commit graph

245 commits

Author SHA1 Message Date
zenchantlive
92a2b12d51 bd: backup 2026-03-02 06:27 2026-03-01 22:27:53 -08:00
ZenchantLive
8534ca974f bd: backup 2026-03-02 06:06 2026-03-01 22:06:34 -08:00
zenchantlive
87ce7dea10 fix: extract agent name from title/labels; add navigation to blocked modal 2026-03-01 21:38:05 -08:00
zenchantlive
922d574a5a fix: count derived blocked tasks in criticalAlerts 2026-03-01 21:31:12 -08:00
zenchantlive
c0857b1f79 bd: backup 2026-03-02 05:30 2026-03-01 21:30:17 -08:00
zenchantlive
79f4bacb5c fix: use theme CSS variables in BlockedTriageModal 2026-03-01 21:29:02 -08:00
zenchantlive
c8c91736b8 fix: remove buildProjectContext usage causing build error 2026-03-01 21:22:46 -08:00
zenchantlive
842f931f71 Wire BlockedTriageModal to UnifiedShell and TopBar
- Add import for BlockedTriageModal in unified-shell.tsx
- Add blockedTriageOpen state and handlers
- Pass onOpenBlockedTriage prop to TopBar
- Render BlockedTriageModal at end of UnifiedShell
- Add onOpenBlockedTriage prop to TopBarProps interface
- Update blocked items button onClick to use onOpenBlockedTriage
2026-03-01 21:19:11 -08:00
zenchantlive
29eefaf7ec feat: add BlockedTriageModal component with tests
- Create BlockedTriageModal component at src/components/shared/blocked-triage-modal.tsx
- Implements modal with blocked task triage functionality
- Uses deriveBlockedIds and buildBlockedByTree from kanban lib
- Each row shows blocker chain and has inline archetype picker
- Modal is scrollable and closes via Escape/close button
- Add corresponding tests at tests/components/blocked-triage-modal.test.tsx
- Register test in package.json test script
2026-03-01 21:12:46 -08:00
zenchantlive
c71e3742d9 bd: backup 2026-03-02 05:09 2026-03-01 21:09:03 -08:00
zenchantlive
ac269414e6 feat: export deriveBlockedIds for reuse in BlockedTriageModal 2026-03-01 21:04:35 -08:00
zenchantlive
0a3aa3d90b bd: backup 2026-03-02 04:54 2026-03-01 20:54:03 -08:00
ZenchantLive
d495fae38f bd: backup 2026-03-02 04:38 2026-03-01 20:38:41 -08:00
zenchantlive
4a7c2cc3ee bd: backup 2026-03-02 04:21 2026-03-01 20:21:14 -08:00
ZenchantLive
c15e273c85 bd: backup 2026-03-02 03:58 2026-03-01 19:58:48 -08:00
zenchantlive
d3a2c9417a bd: backup 2026-03-02 03:43 2026-03-01 19:43:19 -08:00
zenchantlive
e33017622a bd: backup 2026-03-02 03:27 2026-03-01 19:27:51 -08:00
ZenchantLive
917dfc7322 bd: backup 2026-03-02 03:12 2026-03-01 19:12:54 -08:00
zenchantlive
b2ded4e328 bd: backup 2026-03-02 02:25 2026-03-01 18:25:19 -08:00
zenchantlive
114bb18188 fix(telemetry-strip): use real activity events from /api/activity + SSE
TelemetryStrip now fetches from the same /api/activity endpoint and
subscribes to the same /api/events SSE stream as ActivityPanel. The
minimized dots use getEventTone() colors matching the full feed exactly
(created=green, closed=amber, reopened=blue, etc.) instead of derived
task status counts.

Co-Authored-By: Oz <oz-agent@warp.dev>
2026-03-01 18:23:53 -08:00
zenchantlive
a0787f85de fix(ux): remove dup Signal btn, add minimize to all feeds, strip shows recent events
- Remove duplicate Signal (telemetry) button from DAG nodes
- Add minimize (ChevronLeft) button to Epic Command Feed view, not just global feed
- TelemetryStrip now shows 8 most recently updated tasks as status-colored dots
  instead of static status counts — reflects live activity like the full feed does
- Each dot is colored by task status (blocked=red, active=amber, ready=green)
  with hover tooltip showing task id, title, and status

Co-Authored-By: Oz <oz-agent@warp.dev>
2026-03-01 18:20:49 -08:00
zenchantlive
c246ceaf21 feat(ux): consolidate Launch Swarm + telemetry UX with minimized strip
- Removed broken LaunchSwarmDialog (formula-based) from TopBar/LeftPanel
- All Rocket buttons (TopBar, LeftPanel, DAG nodes, social cards) now open
  AssignmentPanel (archetype-based) which actually works
- Every Rocket clears taskId first so assignMode && !taskId condition passes
- Conversation button priority: taskId always shows conversation, not assign panel
- Added TelemetryStrip: minimized right sidebar with status dots when non-telemetry
  panel (conversation/assignment) is active
- Live feed has minimize button → restores last taskId or assignMode
- DAG nodes: Signal icon → restores telemetry feed
- Social button on DAG nodes: single router.push to avoid race (setView + setTaskId)
- Fixed social card message button: opens right panel with drawer:closed (no popup)

Co-Authored-By: Oz <oz-agent@warp.dev>
2026-03-01 18:17:58 -08:00
zenchantlive
65d69ecbbc bd: backup 2026-03-02 01:44 2026-03-01 17:44:03 -08:00
zenchantlive
b82c176e12 fix: null-safe formulas, constrain assign row to card, fix TopBar dialog mounting
Co-Authored-By: Oz <oz-agent@warp.dev>
2026-03-01 17:30:01 -08:00
zenchantlive
300d5b13aa bd: backup 2026-03-02 01:25 2026-03-01 17:25:10 -08:00
zenchantlive
d6f88517b7 feat(8ij.5): wire ?swarm=X URL param to highlight tasks in both views
Co-Authored-By: Oz <oz-agent@warp.dev>
2026-03-01 17:25:08 -08:00
zenchantlive
ae7f13c3af feat(8ij.4): add LaunchSwarmDialog to TopBar as global action
Co-Authored-By: Oz <oz-agent@warp.dev>
2026-03-01 17:22:25 -08:00
zenchantlive
6b8aa408c8 feat(8ij.3): add Launch Swarm action to LeftPanel epic rows
Co-Authored-By: Oz <oz-agent@warp.dev>
2026-03-01 17:21:19 -08:00
zenchantlive
6d560b6c49 feat(8ij.2): add inline assign affordance to SocialCard
Co-Authored-By: Oz <oz-agent@warp.dev>
2026-03-01 17:18:13 -08:00
zenchantlive
b996d889d5 feat(8ij.1): extract useArchetypePicker hook from AssignmentPanel
Co-Authored-By: Oz <oz-agent@warp.dev>
2026-03-01 17:15:30 -08:00
zenchantlive
65fff3cf57 bd: backup 2026-03-02 01:09 2026-03-01 17:09:23 -08:00
ZenchantLive
bead6b3996 docs: require recurring memory reviews and provenance links in AGENTS 2026-03-01 16:57:26 -08:00
ZenchantLive
4c6a78006d docs(memory): require provenance links and evidence metadata in workflow 2026-03-01 16:55:07 -08:00
ZenchantLive
e1155c24cc bd: backup 2026-03-02 00:53 2026-03-01 16:53:54 -08:00
ZenchantLive
6ba2e8b3c4 docs: add native memory help pack and enforce workflow in AGENTS 2026-03-01 16:46:50 -08:00
ZenchantLive
9eb805cfa1 docs: finalize bd-native memory fabric plan and phase-1 evidence 2026-03-01 16:41:12 -08:00
ZenchantLive
641db8b172 bd: backup 2026-03-02 00:38 2026-03-01 16:38:54 -08:00
zenchantlive
139b053e90 bd: backup 2026-03-01 23:40 2026-03-01 15:40:46 -08:00
zenchantlive
659d170cb3 bd: backup 2026-03-01 23:24 2026-03-01 15:24:49 -08:00
ZenchantLive
55a04c73b8 bd: backup 2026-03-01 22:55 2026-03-01 14:55:58 -08:00
ZenchantLive
fa03819b75 bd: backup 2026-03-01 22:40 2026-03-01 14:40:28 -08:00
zenchantlive
103ec2350e bd: backup 2026-03-01 22:23 2026-03-01 14:23:18 -08:00
ZenchantLive
91089d832f bd: backup 2026-03-01 22:06 2026-03-01 14:06:39 -08:00
ZenchantLive
861ae89491 fix: wire conversation panel to DAG nodes with toggle support
- Add MessageSquare icon to GraphNodeCard; prop-thread onConversationOpen
  and selectedTaskId through WorkflowGraph node data (no useUrlState
  inside ReactFlow nodes — avoids context/timing issues)
- Fix ContextualRightPanel: check taskId before epicId so clicking the
  conversation icon always opens ThreadDrawer even when an epic filter
  is active
- setEpicId now clears task from URL so selecting an epic resets any
  open conversation thread
- handleGraphSelect toggles: second click on same node calls setTaskId(null)
  closing the right panel
- Add onSelect to WorkflowGraph flowModel deps to prevent stale callbacks
- Fix ContextualRightPanel onClose no-ops: wired to setTaskId(null) /
  setSwarmId(null) so back button works
- Right panel always visible (removed panel==='open' gate in UnifiedShell)
- SmartDag task grid: horizontal scroll, fixed-width cards, hideClosed=true
- Add <Suspense> in page.tsx for useSearchParams compatibility
- Enable dolt auto-start in .beads/config.yaml
- Add 14 static analysis tests (graph-node-conversation.test.tsx)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-01 13:51:46 -08:00
ZenchantLive
cb83fd92a9 bd: backup 2026-03-01 21:48 2026-03-01 13:48:59 -08:00
ZenchantLive
f9cfad3a99 bd: backup 2026-03-01 20:55 2026-03-01 12:55:24 -08:00
ZenchantLive
335beb82d6 feat(beadboard-550): replace issues.jsonl reads with direct Dolt SQL via mysql2
- src/lib/read-issues-dolt.ts: readIssuesViaDolt() queries issues+labels (GROUP_CONCAT)
  and dependencies in 2 SQL queries; normalizes Date cols to ISO strings; returns null
  on unreachable so caller can fall back gracefully
- src/lib/read-issues.ts: readIssuesFromDisk() tries Dolt first (always), falls back to
  issues.jsonl with console.warn; removes dead readIssuesViaBd/normalizeBdIssue/
  normalizeDependencies code now that the CLI path is superseded
- AGENTS.md: documents new Dolt read path + SSE watcher trigger; removes stale
  manual issues.jsonl re-export instructions (no longer needed)

Verified: bd writes update last-touched → chokidar fires → syncActivity → Dolt query
→ snapshot diff → SSE push. 146/146 tests pass, lint clean.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-28 17:33:43 -08:00
ZenchantLive
91b4777a7c feat(beadboard-550.1): add DoltClient with connection pooling and metadata config
- src/lib/dolt-client.ts: getDoltConnection(projectRoot) returns cached mysql2 Pool
- Reads host/port/database from .beads/metadata.json (no hardcoded values)
- DoltConnectionError typed error for missing metadata or unreachable server
- Tests connectivity on first connection; caches pool per resolved projectRoot
- connectionLimit: 5 for Next.js server-side concurrency

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-28 17:16:57 -08:00
ZenchantLive
bb1231860e chore: update next session prompt + install mysql2 for beadboard-550
- NEXT_SESSION_PROMPT.md: full context for Dolt mysql2 integration
  including schema, current read path, normalization approach, watcher
  concern, skills to use, and files to read
- mysql2 installed (beadboard-550.1 in_progress)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-28 17:08:38 -08:00
ZenchantLive
a2e523b751 docs: document Dolt backend, WSL2 mixed-env workaround, issues.jsonl sync
- AGENTS.md: add Data Backend & Platform Notes section explaining
  single-platform vs mixed WSL2+Windows setup, mirrored networking
  workaround, and manual issues.jsonl re-export step
- Creates beadboard-550 (Dolt mysql2 epic) to track long-term fix
- Note: mirrored networking is explicitly scoped as a mixed-env
  workaround, not a requirement for single-platform contributors

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-28 15:44:20 -08:00