No description
Find a file
zenchantlive bd3b3da30a fix(graph): prevent SSE overwrites of optimistic label updates
## The Bug
User reported: 'An archetype can only exist on one task at a time - when
I try to make the next task have the same arch, it deleted the one I
added prior.'

## Root Cause
The SSE subscription (useBeadsSubscription) refreshes data from the server
whenever ANY change happens. When user assigns an archetype:

1. User clicks assign -> optimistic update adds label locally
2. SSE fires (from previous operation or heartbeat) -> fetches fresh data
3. useEffect syncs localLabels with data.labels (which doesn't have the
   new label yet)
4. Label disappears from UI
5. Eventually API completes and another SSE refresh brings it back

This race condition causes labels to flicker or disappear entirely.

## The Fix
Track pending optimistic labels in a useRef Set, and merge them with
incoming server data during sync:

1. pendingOptimisticLabels = useRef<Set<string>>(new Set())
2. When optimistically adding: add to pending set
3. useEffect merge: combine server labels + pending labels
4. After API completes: remove from pending set

This ensures optimistic labels survive SSE refreshes.

## Test Coverage
Added graph-node-labels-optimistic.test.tsx with 10 tests:
- Uses useRef for tracking
- Tracks in a Set
- Preserves labels during sync
- Adds/removes from pending set
- Handles multiple concurrent operations
- Per-node state isolation

## Verification
- typecheck: pass
- lint: pass (0 errors)
- test: all pass
2026-02-24 16:48:16 -08:00
.agent/skills/shadcn-ui chore: checkpoint before DAG views UX overhaul 2026-02-22 20:43:59 -08:00
.agents/skills docs+skills: add main UI/UX visual-truth PRD and skill links 2026-02-18 12:50:53 -08:00
.augment/skills/shadcn-ui chore: checkpoint before DAG views UX overhaul 2026-02-22 20:43:59 -08:00
.beadboard/agent/runtime chore: add .beadboard user profile directory 2026-02-15 21:20:26 -08:00
.beads docs: add session notes with honest retrospective 2026-02-24 16:18:53 -08:00
.claude/skills/shadcn-ui chore: checkpoint before DAG views UX overhaul 2026-02-22 20:43:59 -08:00
.cline/skills/shadcn-ui chore: checkpoint before DAG views UX overhaul 2026-02-22 20:43:59 -08:00
.openhands/skills/shadcn-ui chore: checkpoint before DAG views UX overhaul 2026-02-22 20:43:59 -08:00
assets fix(layout): unified right sidebar with chat mode and collapsing activity rail 2026-02-16 23:50:20 -08:00
components/ui feat(swarm): implement Swarm View remake with Operations, Archetypes, and Templates 2026-02-20 22:19:38 -08:00
docs docs: finalize UX design plan for DAG views and Command Center 2026-02-22 20:28:45 -08:00
lib fix: add lib/utils.ts for shadcn component imports 2026-02-15 21:22:05 -08:00
out fix(bb-ui2): integrate ThreadView into detail panels with sample data 2026-02-16 10:10:50 -08:00
public fix(bb-ui2): integrate ThreadView into detail panels with sample data 2026-02-16 10:10:50 -08:00
scripts chore: add utility scripts and additional test coverage 2026-02-15 21:19:31 -08:00
skills chore: checkpoint before DAG views UX overhaul 2026-02-22 20:43:59 -08:00
src fix(graph): prevent SSE overwrites of optimistic label updates 2026-02-24 16:48:16 -08:00
tests fix(graph): prevent SSE overwrites of optimistic label updates 2026-02-24 16:48:16 -08:00
tools feat(telemetry): complete bb-buff.1.3 - Backend Liveness Refactor 2026-02-15 21:14:05 -08:00
.eslintrc.json chore(repo): ignore local beads runtime lock and screenshot artifacts 2026-02-12 23:39:43 -08:00
.gitattributes chore: initialize beadboard baseline 2026-02-11 17:42:51 -08:00
.gitignore ignore 2026-02-17 13:11:29 -08:00
agent-help.txt chore: checkpoint before DAG views UX overhaul 2026-02-22 20:43:59 -08:00
AGENTS.md feat(swarm): implement Swarm View remake with Operations, Archetypes, and Templates 2026-02-20 22:19:38 -08:00
bb.ps1 docs(beads): etch project history into memory bank and finalize skill-bb 2026-02-14 00:21:25 -08:00
components.json feat(ui): complete bb-ui2.2 - shadcn/ui Setup 2026-02-15 21:16:26 -08:00
epic-help.txt chore: checkpoint before DAG views UX overhaul 2026-02-22 20:43:59 -08:00
epic.txt chore: checkpoint before DAG views UX overhaul 2026-02-22 20:43:59 -08:00
eslint-report.json chore: checkpoint before DAG views UX overhaul 2026-02-22 20:43:59 -08:00
eslint.config.mjs feat(swarm): implement Swarm View remake with Operations, Archetypes, and Templates 2026-02-20 22:19:38 -08:00
help.txt chore: checkpoint before DAG views UX overhaul 2026-02-22 20:43:59 -08:00
image-1.png readme pics 2026-02-13 00:20:44 -08:00
image.png readme pics 2026-02-13 00:20:44 -08:00
label-help.txt chore: checkpoint before DAG views UX overhaul 2026-02-22 20:43:59 -08:00
LICENSE chore: initialize beadboard baseline 2026-02-11 17:42:51 -08:00
next-env.d.ts Add tracer-bullet Kanban baseline with live issues read path 2026-02-11 17:55:26 -08:00
next.config.ts feat: establish tokenized kanban design foundation 2026-02-11 18:38:51 -08:00
NEXT_SESSION_PROMPT.md docs: add next session prompt for bb-ui2.6, .7, .8 2026-02-15 22:01:31 -08:00
package-lock.json feat(swarm): implement Swarm View remake with Operations, Archetypes, and Templates 2026-02-20 22:19:38 -08:00
package.json chore: checkpoint related UI improvements and supporting components 2026-02-24 16:25:45 -08:00
postcss.config.js feat: establish tokenized kanban design foundation 2026-02-11 18:38:51 -08:00
README.md readme pics 2026-02-13 00:20:44 -08:00
remotion.config.ts fix(bb-ui2): integrate ThreadView into detail panels with sample data 2026-02-16 10:10:50 -08:00
sse-output.txt chore: checkpoint before DAG views UX overhaul 2026-02-22 20:43:59 -08:00
state-help.txt chore: checkpoint before DAG views UX overhaul 2026-02-22 20:43:59 -08:00
tailwind.config.ts feat(ui3): elegant earthy task feed redesign 2026-02-16 23:20:47 -08:00
task1.txt chore: checkpoint before DAG views UX overhaul 2026-02-22 20:43:59 -08:00
task2.txt chore: checkpoint before DAG views UX overhaul 2026-02-22 20:43:59 -08:00
task3.txt chore: checkpoint before DAG views UX overhaul 2026-02-22 20:43:59 -08:00
test-output.txt chore: checkpoint before DAG views UX overhaul 2026-02-22 20:43:59 -08:00
test-output2.txt chore: checkpoint before DAG views UX overhaul 2026-02-22 20:43:59 -08:00
test-sse.mjs chore: checkpoint before DAG views UX overhaul 2026-02-22 20:43:59 -08:00
test-watcher.ts chore: checkpoint before DAG views UX overhaul 2026-02-22 20:43:59 -08:00
test2.txt chore: checkpoint before DAG views UX overhaul 2026-02-22 20:43:59 -08:00
tsconfig.json feat(ui): complete bb-ui2.2 - shadcn/ui Setup 2026-02-15 21:16:26 -08:00

BeadBoard

The Windows-native Control Center for Beads.

BeadBoard is a high-performance local dashboard for managing your software development tasks. Built on the Beads protocol, it provides a unified, visualization-rich interface over your distributed project landscape. alt text

🚀 Why BeadBoard?

Most task managers are siloes. BeadBoard is a lens over your source code.

  • Source of Truth: Reads directly from .beads/issues.jsonl in your repo. No database sync skew.
  • Windows Optimized: Built from the ground up to handle Windows paths, drive letters, and filesystem performance.
  • Zero Latency: Optimistic UI updates make interactions feel instant.

Core Features

1. Multi-Project Registry & Scanner

Stop context switching between repos.

  • Project Registry: Persist your favorite project roots for one-click access.
  • Auto-Discovery: Built-in filesystem scanner finds Bead-enabled projects across your drives.
  • Aggregate Mode: View tasks from all registered projects in a single unified board.

2. Interactive Kanban Dashboard (/)

Manage your flow state. Kanban Dashboard

  • Live Updates: Boards refresh automatically when the underlying JSONL files change (e.g., via CLI).
  • Progressive Disclosure: Task details, metadata, and relations are tucked away until you need them.
  • Smart Filtering: Filter by priority, assignee, status, or full-text search across thousands of beads.

3. Dependency Graph Explorer (/graph)

Understand the "Why" and "What's Next". alt text

  • Epic-Centric Layout: Automatically groups tasks by Epic for logical clustering.
  • True DAG Visualization: Uses Dagre layout engine to enforce a strict Left-to-Right dependency flow.
    • Left: Incoming Blockers
    • Center: Focus Task
    • Right: Unlocks / Downstream
  • Focus Mode: Minimizable dependency strip and deep-linking support for sharing exact views.
  • Smart Metadata: See bead counts, priorities, and status health at a glance.

🛠️ Stack

  • Framework: Next.js 15 (App Router)
  • UI Engine: React 19 + Framer Motion
  • Styling: Tailwind CSS + Custom Design System
  • Type Safety: Strict TypeScript

Quick Start

  1. Install: npm install
  2. Run: npm run dev
  3. Explore: Open http://localhost:3000

🤝 Contribution

  • Typecheck: npm run typecheck
  • Test: npm run test