Commit graph

63 commits

Author SHA1 Message Date
openhands
a3f2ceef52 fix: address Qodo code review findings
- Add missing snapshot-differ.test.ts to npm test script
- Fix path traversal vulnerability in agent-mail.ts with message ID validation
- Fix readLastTouchedVersion to log errors instead of silently swallowing them
- Sanitize log statements to not leak full paths
- Add projectRoot validation to all API routes
- Fix activity persistence write race conditions with promise chaining

Co-authored-by: openhands <openhands@all-hands.dev>
2026-02-14 08:43:13 +00:00
zenchantlive
d1140c9809
Update src/app/api/events/route.ts
Co-authored-by: qodo-code-review[bot] <151058649+qodo-code-review[bot]@users.noreply.github.com>
2026-02-14 00:38:11 -08:00
zenchantlive
6fb9824c11
Update src/app/api/events/route.ts
Co-authored-by: qodo-free-for-open-source-projects[bot] <189517486+qodo-free-for-open-source-projects[bot]@users.noreply.github.com>
2026-02-14 00:37:53 -08:00
zenchantlive
1ae7efb31b feat(skills): formalize agent coordination via beadboard-driver
We moved from ad-hoc task claims to a strictly defined 'Skill' system.

Triumphs:
- Implemented the 'beadboard-driver' skill, which encodes our project-specific coordination protocols (claim, reservation, handoff).
- This ensures that any AI operative (or human supervisor) can participate in the project lifecycle using a unified CLI-driven state machine.
- Decoupled high-level mission logic from low-level file mutations, allowing for easier agent skill composition in the future.

Raw Honest Moment:
Initially, we were just 'winging it' with manual status updates. Formalizing this into a skill was a necessary step to ensure our collaboration is repeatable and resilient to agent context swaps.
2026-02-14 00:23:41 -08:00
zenchantlive
c7c3a25457 docs(beads): etch project history into memory bank and finalize skill-bb
We completed the 'Deep Metadata Etch' today, transforming our Beads issues from simple trackers into a permanent narrative of our collaboration.

Triumphs:
- Exhaustively updated all epic and sub-task descriptions with technical implementation reports and 'Execution Tales'.
- Finalized the 'bb' agent CLI skill (bb.ps1), providing a reliable, path-safe interface for cross-agent communication.
- Published ADR-001 and RFC-001 to document our coordination protocols.
- Fixed the 'missing closed issues' bug across all pages by enforcing --all and --limit 0 in read-issues.ts.

Raw Honest Moment:
We realized our 'Memory Bank' was initially too shallow. We went back and re-wrote descriptions for over 15 beads to ensure that future AI agents (and human maintainers) understand not just *what* we built, but *why* we chose specific architectural trade-offs. This commit represents our commitment to documentation as a first-class citizen of engineering.
2026-02-14 00:21:25 -08:00
zenchantlive
bfe4f853f0 feat(observability): chronological timeline and agent productivity APIs
We added the third major surface to the BeadBoard workspace: the Chronological Timeline. This provides the 'Audit' layer of our operational hierarchy.

Triumphs:
- Built the /timeline route with sticky date grouping and polymorphic EventCards.
- Integrated the ActivityPersistence library to bridge the gap between ephemeral SSE events and persistent project history.
- Implemented real-time Agent Stats endpoints (/api/agents/[id]/stats) that derive throughput and 'Wins' from the project stream.

Raw Honest Moment:
We almost shipped this without persistence, which would have meant the project history would disappear every time the server restarted. Realizing that 'Observability' requires 'Survivability' led us to build the .beadboard/activity.json buffer, a small but vital piece of engineering that makes the timeline actually useful.
2026-02-14 00:21:02 -08:00
zenchantlive
f3558dc0d1 feat(ui): deliver Social-Dense Agent Sessions Hub
This is our biggest UX pivot of the project. We abandoned the 'Page' model for a 'Command Workspace'.

Triumphs:
- Reclaimed 40% of previously wasted screen real-estate by moving to an auto-filling multi-column grid matrix.
- Built the 'Command Deck'—a high-density header that provides real-time agent presence monitoring at a glance.
- Implemented 'Social Post' cards that map technical protocols to human verbs (e.g., 'Falcon passed mission to Operative-B'), making the audit trail readable for humans.
- Engineered 'Silent Refresh' logic: the feed now appends new activity and comments smoothly without disruptive UI resets or scroll jumps.

Raw Honest Moment:
The original card-based social feed was a failure. It was beautiful in isolation but useless for actual supervision. We had to be honest about the horizontal bloat and rebuild the entire layout foundation from scratch using rem-based fluid units to satisfy the 'War Room' requirement.
2026-02-14 00:20:41 -08:00
zenchantlive
28abfe3ce2 fix(realtime): unify authority via shared SSE subscription and watcher-v3
We resolved a major project fragmentation issue today. The Graph page was technically divergent from the Kanban board, causing P0 'stale data' bugs. We realized that 'Polling' is the enemy of truth in a multi-agent system.

Triumphs:
- Refactored the core SSE transport into a shared useBeadsSubscription hook. Now Kanban, Graph, and Sessions all obey the same lifecycle: Event -> Authority Fetch -> Reconcile.
- Upgraded the Chokidar watcher to monitor the global .beadboard/agent/messages directory, ensuring agent communication arrives instantly in the social feed.
- Forced a watcher version bump to 3 to solve the ghost-listener problem where old watchers were blocking file access during HMR.

Raw Honest Moment:
We spent significant time debugging why 'closed' issues were missing from the UI, only to find we were victims of our own CLI defaults (--limit 50). The fix was simple but humiliating: we just needed to ask for the truth (--all --limit 0).
2026-02-14 00:20:20 -08:00
zenchantlive
ab051952bd feat(logic): establish derived-activity engine and agent-session protocols
Today we reached a major architectural conclusion: project history shouldn't be stored, it should be derived. We rejected the overhead of a separate SQLite event store in favor of an O(N) snapshot-diffing engine that computes human-readable narratives directly from the issues.jsonl source of truth.

Key Triumphs:
- Implemented O(N) diffing algorithm in src/lib/snapshot-differ.ts that transforms raw JSONL into 16 distinct social event types.
- Engineered a file-based persistence layer (src/lib/activity-persistence.ts) to solve the 'Next.js HMR Wiped My Memory' bug, ensuring project heartbeat survives server restarts.
- Developed the agent-session data model that unifies Beads, Activity, and Cross-Agent Mail into a single 'Mission' context.

Raw Honest Moment:
We struggled for over an hour with 'missing history' before realizing that development-mode reloads were purging our in-memory buffers. The shift to a file-backed ring buffer was a reactive pivot that became a core project strength.
2026-02-14 00:19:59 -08:00
zenchantlive
4f8f3006e9 fix: always enable SSE auto-refresh on kanban page
Previously SSE was only enabled in single project mode (allowMutations).
Now auto-refresh works in all modes including aggregate.
2026-02-13 14:51:31 -08:00
zenchantlive
ad7a7b9b00 Add EpicChipStrip to kanban page with All Epics option and hide closed epics
- Move EpicChipStrip to shared components
- Use EpicChipStrip in kanban controls (full width)
- Add 'All Epics' option to show all tasks
- Filter closed epics from selector when 'Show closed' is unchecked
- Update imports in dependency-graph-page.tsx
2026-02-13 12:51:48 -08:00
zenchantlive
df4769bf07 chore: clear lint warnings and finalize shared epic chip strip 2026-02-13 12:44:14 -08:00
zenchantlive
74871545c7 Add epic filter to kanban board
- Add epicId filter to KanbanFilterOptions
- Filter issues by parent epic when epicId is set
- Add epic dropdown to kanban controls with title-first format
- Pass epics list from kanban page to controls
2026-02-13 12:35:17 -08:00
zenchantlive
2cfaa9b406 chore: migrate lint to eslint flat config and finalize graph card status handling 2026-02-13 12:27:09 -08:00
zenchantlive
a0261f181a ui: rename graph task labels to Unlocks/Blocks 2026-02-13 12:18:35 -08:00
zenchantlive
e6317594b6 ui: unify aero chrome surfaces and shared hero across kanban/graph 2026-02-13 12:17:57 -08:00
zenchantlive
c8d7f8eb0d readme pics 2026-02-13 00:20:44 -08:00
zenchantlive
969ecd5b47 readme 2026-02-13 00:11:58 -08:00
zenchantlive
8a8257d08f
Merge pull request #2 from zenchantlive/master
Core infrastructure: New modules for project scanning, registry management, filesystem watching, and real-time event bus with SSE support

Graph visualization: Complete dependency graph analysis system with layout algorithms, cycle detection, and blocker chain analysis

Issue mutations: Full mutation operation support (create, update, close, reopen, comment) with validation and error classification

Kanban enhancements: Refactored status model with execution checklist, blocked-by tree building, and actionable task identification

Issue editing: New draft editing module with field-level validation and change tracking

BD CLI bridge: Command execution wrapper with timeout support and structured error handling

Multi-project support: Project scope resolution for single vs. aggregate modes with registry-based project management

API endpoints: Complete REST API for projects, mutations, scanning, and real-time events

UI components: New dependency graph page, task card grid, enhanced kanban detail panel, and project scope controls

Styling: Comprehensive design system overhaul with Tailwind CSS v4, Google Fonts integration, and graph visualization styles

Parser improvements: Enhanced dependency parsing with schema flexibility (depends_on_id support, parent-child normalization)

Resilience: File read retry utility for handling transient filesystem errors

Comprehensive test coverage: 30+ new test suites covering all major modules and API routes
2026-02-13 00:09:00 -08:00
zenchantlive
75bf72435d fix(runtime): resolve white-screen parse regressions and harden checklist/realtime keying 2026-02-13 00:07:38 -08:00
zenchantlive
fbe1178e24
Update src/lib/aggregate-read.ts
Co-authored-by: qodo-free-for-open-source-projects[bot] <189517486+qodo-free-for-open-source-projects[bot]@users.noreply.github.com>
2026-02-13 00:01:45 -08:00
zenchantlive
264af1fd3b
Update src/lib/aggregate-read.ts
Co-authored-by: qodo-code-review[bot] <151058649+qodo-code-review[bot]@users.noreply.github.com>
2026-02-13 00:01:34 -08:00
zenchantlive
141ed954bb
Update src/lib/graph-view.ts
Co-authored-by: qodo-free-for-open-source-projects[bot] <189517486+qodo-free-for-open-source-projects[bot]@users.noreply.github.com>
2026-02-13 00:01:24 -08:00
zenchantlive
86a8068584
Update src/lib/graph-view.ts
Co-authored-by: qodo-code-review[bot] <151058649+qodo-code-review[bot]@users.noreply.github.com>
2026-02-13 00:01:11 -08:00
zenchantlive
d49f466fa9
Update src/app/api/events/route.ts
Co-authored-by: qodo-code-review[bot] <151058649+qodo-code-review[bot]@users.noreply.github.com>
2026-02-13 00:00:53 -08:00
zenchantlive
3834a5638c
Update src/lib/graph-view.ts
Co-authored-by: qodo-code-review[bot] <151058649+qodo-code-review[bot]@users.noreply.github.com>
2026-02-13 00:00:29 -08:00
zenchantlive
8def5ae1a3
Update src/app/api/events/route.ts
Co-authored-by: qodo-free-for-open-source-projects[bot] <189517486+qodo-free-for-open-source-projects[bot]@users.noreply.github.com>
2026-02-13 00:00:14 -08:00
zenchantlive
ec3bfa03ef
Update src/lib/graph-view.ts
Co-authored-by: qodo-free-for-open-source-projects[bot] <189517486+qodo-free-for-open-source-projects[bot]@users.noreply.github.com>
2026-02-12 23:59:52 -08:00
zenchantlive
422453c155 Merge branch 'master' of https://github.com/zenchantlive/beadboard 2026-02-12 23:57:23 -08:00
zenchantlive
6e1b20e961 docs: Rewrite README with strong feature highlights and multi-project capabilities (bb-18e) 2026-02-12 23:57:20 -08:00
zenchantlive
34171b91eb
Update .beads/issues.jsonl
Co-authored-by: qodo-free-for-open-source-projects[bot] <189517486+qodo-free-for-open-source-projects[bot]@users.noreply.github.com>
2026-02-12 23:54:23 -08:00
zenchantlive
1d25d812b4
Update src/components/graph/dependency-graph-page.tsx
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-12 23:52:02 -08:00
zenchantlive
63ff7ef65c
Update src/components/graph/epic-chip-strip.tsx
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-12 23:51:54 -08:00
zenchantlive
32a08ac35a
Merge pull request #1 from zenchantlive/feat/bb-18e-3-direction-hints
Graph clarity: add plain directional dependency hints
2026-02-12 23:49:35 -08:00
zenchantlive
3795cf1991
Update tests/guards/graph-responsive-contract.test.mjs
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-02-12 23:49:24 -08:00
zenchantlive
c0d61354ed
Update src/components/graph/graph-section.tsx
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-02-12 23:49:16 -08:00
zenchantlive
2d74fed039 test(graph): add directional hint contract in graph legend 2026-02-12 23:46:39 -08:00
zenchantlive
65b59a11f7 chore(repo): ignore local beads runtime lock and screenshot artifacts 2026-02-12 23:39:43 -08:00
zenchantlive
e1f3d48f6e feat(ui): Enhance Graph and Kanban UX (bb-18e)
- feat(kanban): Add progressive disclosure to task details drawer
- feat(kanban): Fix title layout on mobile (remove flex-row constraint)
- feat(kanban): Add bead count and metadata to epics
- style(globals): Add status color tokens and refined scrollbars
- deps: Add dagre for true DAG layout in graph view
- chore: Update capture scripts
2026-02-12 23:37:27 -08:00
zenchantlive
8490cb1d8c feat(graph): Implement Graph View with Dagre Layout and Epic Scope (bb-18e) 2026-02-12 23:36:41 -08:00
zenchantlive
7ab23448f0 Archive stash backlogs into repo docs for traceable recovery 2026-02-11 21:29:20 -08:00
zenchantlive
3bc64dd9e0 Merge feat/registry-api into master with unified test script 2026-02-11 21:28:55 -08:00
zenchantlive
48009e2d4f Fix scanner Dirent typing after branch consolidation 2026-02-11 21:28:06 -08:00
zenchantlive
89876b1862 Preserve recovered design-plan doc and ignore local beads lock artifact 2026-02-11 21:27:01 -08:00
zenchantlive
e599640d3b Persist root UI/tailwind/responsive guard refinements from stash backlog 2026-02-11 21:25:46 -08:00
zenchantlive
b4cb09a6cc Merge main into master and unify realtime + project-context test matrix 2026-02-11 21:06:38 -08:00
zenchantlive
3f2ae384f5 Add realtime watcher+SSE transport with tests and lock-retry read path 2026-02-11 21:05:27 -08:00
zenchantlive
89a9941d88 Merge bb-6aj-3-scanner 2026-02-11 21:00:28 -08:00
zenchantlive
50d3833766 feat: add project scanner with full-drive mode 2026-02-11 20:41:39 -08:00
zenchantlive
c836be46cf feat: add Windows project registry API and persistence 2026-02-11 20:35:36 -08:00