From ba52d2e90a2f6643c077131264682b0c304d9ea8 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 29 Nov 2025 13:45:17 -0800 Subject: [PATCH 01/49] bd daemon sync: 2025-11-29 13:45:17 --- .beads/beads.jsonl | 1 + 1 file changed, 1 insertion(+) diff --git a/.beads/beads.jsonl b/.beads/beads.jsonl index b4a7aba..6653c1f 100644 --- a/.beads/beads.jsonl +++ b/.beads/beads.jsonl @@ -57,6 +57,7 @@ {"id":"vsbeads-vlk","title":"viewContainer/title buttons not showing in BEADS header","description":"Configured beads.switchProject and beads.refresh commands in viewContainer/title menu with `when: viewContainer == beads`, but no buttons appear in the BEADS header. Only the [...] overflow menu shows.","design":"VS Code does not support extension-contributed inline buttons in viewContainer title bars. The `viewContainer/title` menu contribution point only adds items to the overflow/context menu.\n\nThis is confirmed by microsoft/vscode#74221 which was closed as out-of-scope.","notes":"**Finding:** This is a VS Code platform limitation, not a bug in our extension.\n\nPer [microsoft/vscode#74221](https://github.com/microsoft/vscode/issues/74221):\n- Built-in view containers (Run and Debug, Search) can have title bar buttons\n- Extension view containers can ONLY add to overflow menu (...)\n- Feature request was rejected as \"out-of-scope\"\n\n**Current workaround:** Use `view/title` to add buttons to individual view headers (e.g., Issues panel title bar) instead of the container title bar.\n\n**Status:** Won't fix - VS Code limitation","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-26T18:30:18.437949-08:00","updated_at":"2025-11-27T00:26:50.564762-08:00","closed_at":"2025-11-27T00:26:50.564762-08:00"} {"id":"vsbeads-vp1","title":"Implement Kanban board as editor panel","description":"Reimplement Kanban board as an editor panel instead of sidebar webview. Sidebar is too narrow for a useful Kanban view.","design":"Use `vscode.window.createWebviewPanel()` to open in editor area.\n- Register command to open Kanban\n- Full-width columns for drag-and-drop\n- Cards show status, priority, assignee\n- Drag between columns to change status","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-26T18:39:31.95544-08:00","updated_at":"2025-11-26T23:11:39.606519-08:00","labels":["ui"]} {"id":"vsbeads-wk9","title":"Make badge colors configurable via settings","description":"Expose status, priority, and type badge colors as VS Code settings so users can customize them. Should support both background and text colors for each value, with consideration for light/dark themes.","design":"Settings structure could be:\n- `beads.colors.priority.P0`: { bg, text }\n- `beads.colors.priority.P1`: { bg, text }\n- `beads.colors.status.open`: { bg, text }\n- `beads.colors.type.bug`: { bg, text }\n\nOr a single object per category. Consider theme-aware defaults.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-26T17:57:59.132401-08:00","updated_at":"2025-11-26T23:11:39.607417-08:00","labels":["ui"]} +{"id":"vsbeads-xd5","title":"Test protected branch workflow","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-11-29T13:45:16.869968-08:00","updated_at":"2025-11-29T13:45:16.869968-08:00"} {"id":"vsbeads-xgn","title":"Refine browser-task agent instructions","description":"Based on testing results, refine:\n\n- System prompt for optimal response format\n- Standard task patterns (reload, click sequence, verify)\n- What to include/exclude in summaries\n- Error reporting format","status":"open","priority":2,"issue_type":"task","created_at":"2025-11-28T21:52:30.218145-08:00","updated_at":"2025-11-28T21:52:30.218145-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-xgn","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:42.094448-08:00","created_by":"daemon"},{"issue_id":"vsbeads-xgn","depends_on_id":"vsbeads-hgm","type":"blocks","created_at":"2025-11-28T21:52:49.395613-08:00","created_by":"daemon"}]} {"id":"vsbeads-yjr","title":"Create browser-task sub-agent configuration","description":"Create `.claude/agents/browser-task.md` with:\n\n```markdown\n---\nname: browser-task\ndescription: Execute multi-step browser automation tasks in VS Code/code-server\ntools: mcp__chrome-devtools__*\nmodel: haiku\n---\n\nExecute browser automation tasks and return minimal summaries.\nDo not return full DOM snapshots. Summarize results concisely.\nIf errors occur, return specific error details.\n```\n\n**Questions to verify:**\n- Can we use glob `mcp__chrome-devtools__*` or must list each tool?\n- Should model be haiku (fast) or sonnet (better instruction following)?","status":"open","priority":1,"issue_type":"task","created_at":"2025-11-28T21:52:14.912814-08:00","updated_at":"2025-11-28T21:52:14.912814-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-yjr","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:41.99215-08:00","created_by":"daemon"}]} {"id":"vsbeads-zbt","title":"Test: OpenVSCode Server native (non-Docker) for bd socket access","description":"Test running OpenVSCode Server directly on macOS (not in Docker) to get native bd daemon socket access.\n\n## Motivation\nDocker isolation blocks access to `bd.sock` Unix socket. Native run should have full socket access.\n\n## Test Plan\n1. Install openvscode-server via npm or download release\n2. Run on localhost:8080 (different port from Docker instance)\n3. Install vscode-beads VSIX\n4. Verify Beads panel connects to daemon successfully\n5. Compare dev experience with Docker version\n\n## Success Criteria\n- Extension loads\n- Webviews work\n- bd daemon socket connects (no ECONNREFUSED)\n- Issues display in panel","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-27T17:53:52.58167-08:00","updated_at":"2025-11-27T17:57:42.340387-08:00","closed_at":"2025-11-27T17:57:42.340387-08:00","dependencies":[{"issue_id":"vsbeads-zbt","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.172572-08:00","created_by":"daemon"}]} From 05384608868711e233e901113614b021ec5776e4 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 29 Nov 2025 13:45:36 -0800 Subject: [PATCH 02/49] bd daemon sync: 2025-11-29 13:45:36 --- .beads/beads.jsonl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.beads/beads.jsonl b/.beads/beads.jsonl index 6653c1f..c5b4981 100644 --- a/.beads/beads.jsonl +++ b/.beads/beads.jsonl @@ -57,7 +57,7 @@ {"id":"vsbeads-vlk","title":"viewContainer/title buttons not showing in BEADS header","description":"Configured beads.switchProject and beads.refresh commands in viewContainer/title menu with `when: viewContainer == beads`, but no buttons appear in the BEADS header. Only the [...] overflow menu shows.","design":"VS Code does not support extension-contributed inline buttons in viewContainer title bars. The `viewContainer/title` menu contribution point only adds items to the overflow/context menu.\n\nThis is confirmed by microsoft/vscode#74221 which was closed as out-of-scope.","notes":"**Finding:** This is a VS Code platform limitation, not a bug in our extension.\n\nPer [microsoft/vscode#74221](https://github.com/microsoft/vscode/issues/74221):\n- Built-in view containers (Run and Debug, Search) can have title bar buttons\n- Extension view containers can ONLY add to overflow menu (...)\n- Feature request was rejected as \"out-of-scope\"\n\n**Current workaround:** Use `view/title` to add buttons to individual view headers (e.g., Issues panel title bar) instead of the container title bar.\n\n**Status:** Won't fix - VS Code limitation","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-26T18:30:18.437949-08:00","updated_at":"2025-11-27T00:26:50.564762-08:00","closed_at":"2025-11-27T00:26:50.564762-08:00"} {"id":"vsbeads-vp1","title":"Implement Kanban board as editor panel","description":"Reimplement Kanban board as an editor panel instead of sidebar webview. Sidebar is too narrow for a useful Kanban view.","design":"Use `vscode.window.createWebviewPanel()` to open in editor area.\n- Register command to open Kanban\n- Full-width columns for drag-and-drop\n- Cards show status, priority, assignee\n- Drag between columns to change status","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-26T18:39:31.95544-08:00","updated_at":"2025-11-26T23:11:39.606519-08:00","labels":["ui"]} {"id":"vsbeads-wk9","title":"Make badge colors configurable via settings","description":"Expose status, priority, and type badge colors as VS Code settings so users can customize them. Should support both background and text colors for each value, with consideration for light/dark themes.","design":"Settings structure could be:\n- `beads.colors.priority.P0`: { bg, text }\n- `beads.colors.priority.P1`: { bg, text }\n- `beads.colors.status.open`: { bg, text }\n- `beads.colors.type.bug`: { bg, text }\n\nOr a single object per category. Consider theme-aware defaults.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-26T17:57:59.132401-08:00","updated_at":"2025-11-26T23:11:39.607417-08:00","labels":["ui"]} -{"id":"vsbeads-xd5","title":"Test protected branch workflow","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-11-29T13:45:16.869968-08:00","updated_at":"2025-11-29T13:45:16.869968-08:00"} +{"id":"vsbeads-xd5","title":"Test protected branch workflow","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-29T13:45:16.869968-08:00","updated_at":"2025-11-29T13:45:35.922513-08:00","closed_at":"2025-11-29T13:45:35.922513-08:00"} {"id":"vsbeads-xgn","title":"Refine browser-task agent instructions","description":"Based on testing results, refine:\n\n- System prompt for optimal response format\n- Standard task patterns (reload, click sequence, verify)\n- What to include/exclude in summaries\n- Error reporting format","status":"open","priority":2,"issue_type":"task","created_at":"2025-11-28T21:52:30.218145-08:00","updated_at":"2025-11-28T21:52:30.218145-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-xgn","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:42.094448-08:00","created_by":"daemon"},{"issue_id":"vsbeads-xgn","depends_on_id":"vsbeads-hgm","type":"blocks","created_at":"2025-11-28T21:52:49.395613-08:00","created_by":"daemon"}]} {"id":"vsbeads-yjr","title":"Create browser-task sub-agent configuration","description":"Create `.claude/agents/browser-task.md` with:\n\n```markdown\n---\nname: browser-task\ndescription: Execute multi-step browser automation tasks in VS Code/code-server\ntools: mcp__chrome-devtools__*\nmodel: haiku\n---\n\nExecute browser automation tasks and return minimal summaries.\nDo not return full DOM snapshots. Summarize results concisely.\nIf errors occur, return specific error details.\n```\n\n**Questions to verify:**\n- Can we use glob `mcp__chrome-devtools__*` or must list each tool?\n- Should model be haiku (fast) or sonnet (better instruction following)?","status":"open","priority":1,"issue_type":"task","created_at":"2025-11-28T21:52:14.912814-08:00","updated_at":"2025-11-28T21:52:14.912814-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-yjr","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:41.99215-08:00","created_by":"daemon"}]} {"id":"vsbeads-zbt","title":"Test: OpenVSCode Server native (non-Docker) for bd socket access","description":"Test running OpenVSCode Server directly on macOS (not in Docker) to get native bd daemon socket access.\n\n## Motivation\nDocker isolation blocks access to `bd.sock` Unix socket. Native run should have full socket access.\n\n## Test Plan\n1. Install openvscode-server via npm or download release\n2. Run on localhost:8080 (different port from Docker instance)\n3. Install vscode-beads VSIX\n4. Verify Beads panel connects to daemon successfully\n5. Compare dev experience with Docker version\n\n## Success Criteria\n- Extension loads\n- Webviews work\n- bd daemon socket connects (no ECONNREFUSED)\n- Issues display in panel","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-27T17:53:52.58167-08:00","updated_at":"2025-11-27T17:57:42.340387-08:00","closed_at":"2025-11-27T17:57:42.340387-08:00","dependencies":[{"issue_id":"vsbeads-zbt","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.172572-08:00","created_by":"daemon"}]} From e48d12769a29976355d2a81932b1304c543134f5 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 29 Nov 2025 14:07:09 -0800 Subject: [PATCH 03/49] bd daemon sync: 2025-11-29 14:07:09 --- .beads/beads.jsonl | 1 + 1 file changed, 1 insertion(+) diff --git a/.beads/beads.jsonl b/.beads/beads.jsonl index c5b4981..6c213ed 100644 --- a/.beads/beads.jsonl +++ b/.beads/beads.jsonl @@ -38,6 +38,7 @@ {"id":"vsbeads-jru","title":"Add copy ID button to Details panel title bar","description":"Added copy button to Details panel VS Code title bar. Also normalized all copy feedback to use VS Code status bar messages (2s auto-dismiss) instead of yellow toast popups.\n\n**Changes:**\n- `package.json`: Added `beads.copyBeadId` command with conditional visibility (`when` clause)\n- `extension.ts`: Command handler using `setStatusBarMessage`\n- `BeadDetailsViewProvider.ts`: `getCurrentBeadId()` getter, context key management, `copyBeadId` message handler\n- `DetailsView.tsx`: Added `onCopyId` prop, uses message passing instead of toast\n- `types.ts`: Added `copyBeadId` message type\n\nButton only shows when a bead is selected.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-27T18:31:28.983608-08:00","updated_at":"2025-11-27T18:43:41.736313-08:00","closed_at":"2025-11-27T18:43:41.736313-08:00"} {"id":"vsbeads-jue","title":"Show dependents in BeadDetails view","description":"BeadDetails only shows \"Depends On\" (issues this bead depends on). Need to also show \"Dependents\" (issues that depend on this bead) to see the full relationship graph.\n\nCurrently the MCP show command returns both `dependencies` and `dependents`, but only dependencies are displayed in the UI.","design":"1. Update `Bead` type in types.ts to include `dependents?: string[]`\n2. Ensure backend passes through dependents from bd show\n3. Add \"Dependents\" section to BeadDetails.tsx (similar to \"Depends On\")\n4. Make dependent badges clickable to navigate to that issue","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-27T01:00:57.071592-08:00","updated_at":"2025-11-27T19:15:58.191577-08:00","closed_at":"2025-11-27T19:15:58.191577-08:00","dependencies":[{"issue_id":"vsbeads-jue","depends_on_id":"vsbeads-gr5","type":"related","created_at":"2025-11-27T01:01:56.807728-08:00","created_by":"daemon"}]} {"id":"vsbeads-k3d","title":"test","description":"test","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-11-27T19:00:03.991806-08:00","updated_at":"2025-11-27T20:44:36.231963-08:00","closed_at":"2025-11-27T20:44:36.231963-08:00","comments":[{"id":3,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T03:27:34Z"},{"id":4,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T03:27:47Z"},{"id":7,"issue_id":"vsbeads-k3d","author":"jason","text":"Test comment from bug investigation","created_at":"2025-11-28T03:46:44Z"},{"id":9,"issue_id":"vsbeads-k3d","author":"jason","text":"tst","created_at":"2025-11-28T03:51:07Z"},{"id":10,"issue_id":"vsbeads-k3d","author":"jason","text":"foo bar baz","created_at":"2025-11-28T03:52:00Z"},{"id":11,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T04:10:12Z"},{"id":12,"issue_id":"vsbeads-k3d","author":"jason","text":"Testing auto-scroll feature","created_at":"2025-11-28T04:15:27Z"},{"id":13,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T04:22:02Z"},{"id":14,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T04:22:27Z"},{"id":15,"issue_id":"vsbeads-k3d","author":"jason","text":"5es","created_at":"2025-11-28T04:24:20Z"},{"id":16,"issue_id":"vsbeads-k3d","author":"jason","text":"dfs","created_at":"2025-11-28T04:24:45Z"},{"id":17,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T04:26:07Z"},{"id":18,"issue_id":"vsbeads-k3d","author":"jason","text":"maybe?","created_at":"2025-11-28T04:33:19Z"},{"id":19,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T04:35:03Z"}]} +{"id":"vsbeads-kog","title":"Separate VS Code Marketplace content from README","description":"Currently README.md serves both as repo documentation and marketplace listing. Consider creating separate content for the marketplace (e.g., MARKETPLACE.md) to allow:\n- Marketplace-focused content for end users\n- README with development/contribution info for developers\n\nResearch vsce options for custom readme paths.","status":"open","priority":3,"issue_type":"task","created_at":"2025-11-29T14:07:09.085539-08:00","updated_at":"2025-11-29T14:07:09.085539-08:00","labels":["dx"]} {"id":"vsbeads-l27","title":"Markdown rendering has excessive spacing around lists","description":"UL elements have too much padding/margin around them, and there appears to be forced spacing between LI elements despite CSS rules attempting to remove it. The markdown rendering should be more compact - simple lists should look similar to plain text with proper bullet formatting.","status":"open","priority":3,"issue_type":"bug","created_at":"2025-11-26T17:55:40.606838-08:00","updated_at":"2025-11-26T23:11:39.607882-08:00","labels":["ui"]} {"id":"vsbeads-m0t","title":"Agent VS Code dev: next steps after research","description":"## Context\nResearch complete in `sandbox/agent-vscode-dev-research.md`. Ready to test and implement.\n\n## Immediate Next Step\n1. **Test Chrome DevTools MCP** (vsbeads-1k7)\n - Install: `claude mcp add chrome-devtools -- npx -y chrome-devtools-mcp@latest`\n - Restart Claude Code\n - Run test plan: navigate, click, snapshot, screenshot, console, evaluate_script\n - Key goal: verify console access works (painpoint for debugging)\n\n## If Chrome DevTools MCP works\n2. Create implementation beads from roadmap Phase 1:\n - Install code-server locally\n - Configure Chrome DevTools MCP for code-server\n - Test: open code-server, navigate, see console/errors\n - Install vscode-beads VSIX\n\n## If Chrome DevTools MCP fails\n- Fallback to Playwright MCP\n- May lose console access, need workaround\n\n## Reference\n- Research doc: `sandbox/agent-vscode-dev-research.md`\n- Epic: vsbeads-3cn\n- Research task: vsbeads-q6r","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-27T17:17:51.470823-08:00","updated_at":"2025-11-27T19:17:07.693297-08:00","closed_at":"2025-11-27T19:17:07.693297-08:00","dependencies":[{"issue_id":"vsbeads-m0t","depends_on_id":"vsbeads-1k7","type":"blocks","created_at":"2025-11-27T17:17:55.445037-08:00","created_by":"daemon"},{"issue_id":"vsbeads-m0t","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.250208-08:00","created_by":"daemon"}]} {"id":"vsbeads-mbo","title":"Fix bd sync prefix mismatch (vscode-beads- vs vscode-)","description":"bd sync fails with: \"prefix mismatch detected: database uses 'vscode-beads-' but found issues with prefixes: [vscode- (16 issues)]\". This prevents syncing beads to git.","design":"Error suggests using --rename-on-import flag. May need to:\n1. Run bd sync --rename-on-import\n2. Or fix the prefix in config.yaml\n3. Or re-export with correct prefix","notes":"**Root Cause:** Bug in `internal/utils/issue_id.go:ExtractIssuePrefix` - used `strings.Index` (first hyphen) instead of `strings.LastIndex` (last hyphen). For `vscode-beads-4n2`, it extracted prefix as `vscode` instead of `vscode-beads`.\n\n**Fix:** Already in beads main (commit 6294ef0c). New bd built at `/tmp/bd-new`.\n\n**Workaround Applied:** Renamed prefix from `vscode-beads` to `vsbeads`.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-26T18:52:04.449107-08:00","updated_at":"2025-11-26T23:13:56.591814-08:00","closed_at":"2025-11-26T23:13:56.591814-08:00"} From e8ecbb28edac9a6d84d1b9bcc0cd4dfc3189efad Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 29 Nov 2025 14:13:59 -0800 Subject: [PATCH 04/49] bd daemon sync: 2025-11-29 14:13:59 --- .beads/beads.jsonl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.beads/beads.jsonl b/.beads/beads.jsonl index 6c213ed..4139907 100644 --- a/.beads/beads.jsonl +++ b/.beads/beads.jsonl @@ -24,7 +24,7 @@ {"id":"vsbeads-cqi","title":"Redesign UI: sidebar for navigation, editor panels for views","description":"Move Kanban, Dependency Graph, and Details to WebviewPanel (editor tabs). Keep project selector and issue list in sidebar.","status":"open","priority":2,"issue_type":"feature","created_at":"2025-11-26T15:59:20.263974-08:00","updated_at":"2025-11-26T23:11:39.605734-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-cqi","depends_on_id":"vsbeads-92t","type":"blocks","created_at":"2025-11-26T15:59:26.155171-08:00","created_by":"daemon"}]} {"id":"vsbeads-cy5","title":"Setup GitHub Action for PR CI (lint, test, build)","description":"Add GitHub Action workflow to run on PRs to main branch. Should run lint, tests (once we have them), and verify build succeeds.","design":"`.github/workflows/ci.yml`\n- Trigger: pull_request to main\n- Steps: checkout, setup bun, install, lint, test, compile\n- Note: No tests exist yet - add placeholder or skip until tests added","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-26T18:39:27.003903-08:00","updated_at":"2025-11-27T20:56:11.148364-08:00","closed_at":"2025-11-27T20:56:11.148364-08:00"} {"id":"vsbeads-dso","title":"Setup VS Code Marketplace publisher account","description":"Create Azure DevOps org, get PAT, create planet57 publisher, configure for publishing. See sandbox/PUBLISHING.md for steps.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-26T18:39:27.189685-08:00","updated_at":"2025-11-27T20:56:48.666442-08:00","closed_at":"2025-11-27T20:56:48.666442-08:00"} -{"id":"vsbeads-ejn","title":"Research: Better beads workflow to avoid PR/branch conflicts","description":"Beads conflates PR/branch workflows with issue tracker changes, causing beads created in feature branches to be auto-deleted when PRs merge.\n\n**Problem:**\n- Beads created in feature branch get committed with code\n- PR merges bring beads into main via git\n- `bd sync --from-main` runs and treats these as \"foreign\" entries\n- git-history-backfill incorrectly deletes them as \"pruned from manifest\"\n\n**Analysis:** See `tmp/beads-deletion-analysis.md`\n**Full discussion:** See `tmp/session-subagent-discussion.jsonl`\n\n**Potential Solutions to Research:**\n\n1. **Protected branch support** - beads has this feature, unclear if it helps\n - Does it prevent sync from touching certain branches?\n - Can it isolate beads changes from code changes?\n\n2. **Dedicated beads branch** - worktree with separate branch just for .beads/\n - Code stays on feature branches\n - Beads always committed to a single branch (e.g., `beads-main`)\n - Avoids merge conflicts between code PRs and beads state\n\n3. **Gitignore .beads/ in feature branches**\n - Only commit beads on main\n - Feature branches inherit but don't modify\n - Sync happens only on main\n\n4. **Submodule approach** - .beads/ as separate git repo\n - Complete isolation of issue tracker from code\n - More complex setup\n\n\u003e submodule is probably not great sub modules tie to revisions and the revision of this will be constantly changing.\n\n**Goal:** Find a workflow where:\n- Beads can be created/updated during feature work\n- PRs don't bring stale/conflicting beads state\n- No accidental deletions via sync","design":"## Research Findings\n\n### Question: Is it by design that all branches carry beads changes?\n\n**Answer: NO - this is incidental and problematic, not by design.**\n\n### Evidence from GitHub Issues\n\n1. **Issue #207 (Using beads with PRs)** - Steve Yegge (Nov 4): \"We're taking a serious look at offering a multi-repo solution, where beads uses separate repos\"\n\n2. **Issue #195 (.beads as worktree on orphan branch)** - Steve Yegge (Nov 4): Rejected worktree approach as \"too git-centric\", pursuing separate repository option instead for:\n - Clean separation of issue tracking from code history\n - Platform-agnostic approach (VCS-independent)\n - Better monorepo/multi-project support\n\n3. **Issue #158 (Merge conflicts)** - Extensive discussion about multi-agent conflicts, led to improved 3-way merging in v0.24.1+\n\n### Currently Supported Solutions\n\n1. **Protected Branch Workflow** (`bd init --branch beads-metadata`):\n - Beads commits to separate branch via git worktrees\n - Code stays on feature branches\n - Periodically merge beads-metadata → main via PR\n - See: docs/PROTECTED_BRANCHES.md\n\n2. **Contributor Workflow** (`bd init --contributor`):\n - For OSS contributors\n - Issues stored in `~/.beads-planning` (separate local repo)\n - Never pollutes upstream PRs\n\n### Our Specific Bug\n\nThe `git-history-backfill` deleting beads from PRs appears to be a **bug**, not intended behavior:\n- Expected: Beads in git history should be **recovered** (added to local DB)\n- Actual: Beads are **deleted** as \"pruned from manifest\"\n\n### Recommendation\n\nTry protected branch workflow:\n```bash\nbd config set sync.branch beads-metadata\nbd daemon restart\n```\n\nConsider filing bug report for git-history-backfill behavior.","notes":"## Decision (2025-11-28)\n\n**Strategy:** Try protected branch workflow now, wait for upstream multi-repo solution.\n\n## Experiment on forge (2025-11-28)\n\nTested `bd config set sync.branch beads-metadata` with `--auto-commit --auto-push`:\n\n**What works:**\n- ✅ Beads commits go to `beads-metadata` branch (via worktree)\n- ✅ Auto-push to `origin/beads-metadata` works\n- ✅ `main` branch stays untouched (no new commits)\n\n**Issues found:**\n- ❌ Working tree still shows `.beads/beads.jsonl` modified (tracked on main)\n - Fix: untrack from main with `git rm --cached`\n- ❌ `beads-metadata` is NOT an orphan branch - it's a snapshot of main at config time\n - Contains full code tree + history\n - Designed for merge workflow, not true isolation\n - For \"never merge\" approach, this is wasteful/messy\n\n**Branch structure:**\n```\nmain ─────────────────────────────────► (gets beads.jsonl changes in working tree)\n \\\n └─ beads-metadata ──────────► (beads commits here, has full code copy)\n```\n\n**What we'd want (orphan):**\n```\nmain ──────────────────► (code only)\nbeads-metadata (orphan) ──────────────► (beads only, no shared history)\n```\n\nIssue #195 proposed orphan approach but Steve rejected as \"too git-centric\" - pursuing separate repo instead.\n\n**Status:** Experiment complete, need to decide:\n1. Live with non-orphan branch (functional but messy)\n2. DIY orphan branch (unsupported)\n3. Wait for upstream multi-repo","status":"in_progress","priority":2,"issue_type":"task","created_at":"2025-11-28T22:03:57.82966-08:00","updated_at":"2025-11-28T22:43:29.544702-08:00","labels":["infra"],"dependencies":[{"issue_id":"vsbeads-ejn","depends_on_id":"vsbeads-hw7","type":"related","created_at":"2025-11-28T22:04:03.147893-08:00","created_by":"daemon"}]} +{"id":"vsbeads-ejn","title":"Research: Better beads workflow to avoid PR/branch conflicts","description":"Beads conflates PR/branch workflows with issue tracker changes, causing beads created in feature branches to be auto-deleted when PRs merge.\n\n**Problem:**\n- Beads created in feature branch get committed with code\n- PR merges bring beads into main via git\n- `bd sync --from-main` runs and treats these as \"foreign\" entries\n- git-history-backfill incorrectly deletes them as \"pruned from manifest\"\n\n**Analysis:** See `tmp/beads-deletion-analysis.md`\n**Full discussion:** See `tmp/session-subagent-discussion.jsonl`\n\n**Potential Solutions to Research:**\n\n1. **Protected branch support** - beads has this feature, unclear if it helps\n - Does it prevent sync from touching certain branches?\n - Can it isolate beads changes from code changes?\n\n2. **Dedicated beads branch** - worktree with separate branch just for .beads/\n - Code stays on feature branches\n - Beads always committed to a single branch (e.g., `beads-main`)\n - Avoids merge conflicts between code PRs and beads state\n\n3. **Gitignore .beads/ in feature branches**\n - Only commit beads on main\n - Feature branches inherit but don't modify\n - Sync happens only on main\n\n4. **Submodule approach** - .beads/ as separate git repo\n - Complete isolation of issue tracker from code\n - More complex setup\n\n\u003e submodule is probably not great sub modules tie to revisions and the revision of this will be constantly changing.\n\n**Goal:** Find a workflow where:\n- Beads can be created/updated during feature work\n- PRs don't bring stale/conflicting beads state\n- No accidental deletions via sync","design":"## Research Findings\n\n### Question: Is it by design that all branches carry beads changes?\n\n**Answer: NO - this is incidental and problematic, not by design.**\n\n### Evidence from GitHub Issues\n\n1. **Issue #207 (Using beads with PRs)** - Steve Yegge (Nov 4): \"We're taking a serious look at offering a multi-repo solution, where beads uses separate repos\"\n\n2. **Issue #195 (.beads as worktree on orphan branch)** - Steve Yegge (Nov 4): Rejected worktree approach as \"too git-centric\", pursuing separate repository option instead for:\n - Clean separation of issue tracking from code history\n - Platform-agnostic approach (VCS-independent)\n - Better monorepo/multi-project support\n\n3. **Issue #158 (Merge conflicts)** - Extensive discussion about multi-agent conflicts, led to improved 3-way merging in v0.24.1+\n\n### Currently Supported Solutions\n\n1. **Protected Branch Workflow** (`bd init --branch beads-metadata`):\n - Beads commits to separate branch via git worktrees\n - Code stays on feature branches\n - Periodically merge beads-metadata → main via PR\n - See: docs/PROTECTED_BRANCHES.md\n\n2. **Contributor Workflow** (`bd init --contributor`):\n - For OSS contributors\n - Issues stored in `~/.beads-planning` (separate local repo)\n - Never pollutes upstream PRs\n\n### Our Specific Bug\n\nThe `git-history-backfill` deleting beads from PRs appears to be a **bug**, not intended behavior:\n- Expected: Beads in git history should be **recovered** (added to local DB)\n- Actual: Beads are **deleted** as \"pruned from manifest\"\n\n### Recommendation\n\nTry protected branch workflow:\n```bash\nbd config set sync.branch beads-metadata\nbd daemon restart\n```\n\nConsider filing bug report for git-history-backfill behavior.","notes":"## Decision (2025-11-28)\n\n**Strategy:** Try protected branch workflow now, wait for upstream multi-repo solution.\n\n## Experiment on forge (2025-11-28)\n\nTested `bd config set sync.branch beads-metadata` with `--auto-commit --auto-push`:\n\n**What works:**\n- ✅ Beads commits go to `beads-metadata` branch (via worktree)\n- ✅ Auto-push to `origin/beads-metadata` works\n- ✅ `main` branch stays untouched (no new commits)\n\n**Issues found:**\n- ❌ Working tree still shows `.beads/beads.jsonl` modified (tracked on main)\n - Fix: untrack from main with `git rm --cached`\n- ❌ `beads-metadata` is NOT an orphan branch - it's a snapshot of main at config time\n - Contains full code tree + history\n - Designed for merge workflow, not true isolation\n - For \"never merge\" approach, this is wasteful/messy\n\n**Branch structure:**\n```\nmain ─────────────────────────────────► (gets beads.jsonl changes in working tree)\n \\\n └─ beads-metadata ──────────► (beads commits here, has full code copy)\n```\n\n**What we'd want (orphan):**\n```\nmain ──────────────────► (code only)\nbeads-metadata (orphan) ──────────────► (beads only, no shared history)\n```\n\nIssue #195 proposed orphan approach but Steve rejected as \"too git-centric\" - pursuing separate repo instead.\n\n**Status:** Experiment complete, need to decide:\n1. Live with non-orphan branch (functional but messy)\n2. DIY orphan branch (unsupported)\n3. Wait for upstream multi-repo\n\n## Implementation (2025-11-29)\n\nSuccessfully migrated vscode-beads to protected branch workflow:\n- Untracked beads.jsonl/deletions.jsonl from main\n- Set sync.branch = beads-metadata\n- Daemon runs with --auto-commit --auto-push\n- Updated docs/development.md with setup instructions\n\n## Known Issue: beads.jsonl vs issues.jsonl confusion\n\nThere's upstream inconsistency about whether the JSONL file should be named `beads.jsonl` or `issues.jsonl`. Got conflicting answers from maintainers. Leaving as-is until upstream clarifies the canonical naming.","status":"in_progress","priority":2,"issue_type":"task","created_at":"2025-11-28T22:03:57.82966-08:00","updated_at":"2025-11-29T14:13:59.299756-08:00","labels":["infra"],"dependencies":[{"issue_id":"vsbeads-ejn","depends_on_id":"vsbeads-hw7","type":"related","created_at":"2025-11-28T22:04:03.147893-08:00","created_by":"daemon"}]} {"id":"vsbeads-fwp","title":"Improvement: Colored dropdowns in edit mode for type/status/priority","description":"In DetailsView edit mode, the type/status/priority dropdowns are plain text. They should show colored versions matching how they appear elsewhere:\n- Either as chips (like view mode)\n- Or as colored badges (like filter panel)\n\nThis improves visual consistency and makes it easier to identify options at a glance.\n\nLocation: `src/webview/views/DetailsView.tsx` lines 188-227","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-27T19:01:47.152941-08:00","updated_at":"2025-11-27T19:01:47.152941-08:00","labels":["ui"]} {"id":"vsbeads-fyn","title":"Add copy ID action to issues list rows","description":"Currently copying a bead ID requires clicking a row to open details, then clicking the ID badge. Add a way to copy the ID directly from the list without navigating away.\n\nOptions:\n- Click on ID column copies to clipboard\n- Right-click context menu with \"Copy ID\"\n- Small copy icon on hover","design":"Click on ID span in issues list row copies to clipboard. Row selection still happens (no propagation stop). Add cursor pointer and title tooltip on ID span. Show brief visual feedback on copy.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-27T01:36:42.479739-08:00","updated_at":"2025-11-28T16:53:09.00156-08:00","closed_at":"2025-11-28T16:53:09.00156-08:00"} {"id":"vsbeads-gfr","title":"Generate label colors algorithmically from label name","description":"Labels currently have no color distinction. Use a deterministic algorithm to generate background color from label name (e.g., hash to HSL hue). Auto-select light/dark foreground text based on background luminance for legibility.\n\nAlgorithm approach:\n- Hash label name to get consistent hue (0-360)\n- Use fixed saturation/lightness for consistency\n- Calculate relative luminance of background\n- Choose white or dark text based on WCAG contrast ratio","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-28T17:08:39.964997-08:00","updated_at":"2025-11-28T17:23:27.090457-08:00","closed_at":"2025-11-28T17:23:27.090457-08:00","labels":["ui"]} From d2aca93036f37de58001899ea250badfee9d7dc6 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 29 Nov 2025 14:14:15 -0800 Subject: [PATCH 05/49] bd daemon sync: 2025-11-29 14:14:15 --- .beads/beads.jsonl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.beads/beads.jsonl b/.beads/beads.jsonl index 4139907..7f77a33 100644 --- a/.beads/beads.jsonl +++ b/.beads/beads.jsonl @@ -24,7 +24,7 @@ {"id":"vsbeads-cqi","title":"Redesign UI: sidebar for navigation, editor panels for views","description":"Move Kanban, Dependency Graph, and Details to WebviewPanel (editor tabs). Keep project selector and issue list in sidebar.","status":"open","priority":2,"issue_type":"feature","created_at":"2025-11-26T15:59:20.263974-08:00","updated_at":"2025-11-26T23:11:39.605734-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-cqi","depends_on_id":"vsbeads-92t","type":"blocks","created_at":"2025-11-26T15:59:26.155171-08:00","created_by":"daemon"}]} {"id":"vsbeads-cy5","title":"Setup GitHub Action for PR CI (lint, test, build)","description":"Add GitHub Action workflow to run on PRs to main branch. Should run lint, tests (once we have them), and verify build succeeds.","design":"`.github/workflows/ci.yml`\n- Trigger: pull_request to main\n- Steps: checkout, setup bun, install, lint, test, compile\n- Note: No tests exist yet - add placeholder or skip until tests added","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-26T18:39:27.003903-08:00","updated_at":"2025-11-27T20:56:11.148364-08:00","closed_at":"2025-11-27T20:56:11.148364-08:00"} {"id":"vsbeads-dso","title":"Setup VS Code Marketplace publisher account","description":"Create Azure DevOps org, get PAT, create planet57 publisher, configure for publishing. See sandbox/PUBLISHING.md for steps.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-26T18:39:27.189685-08:00","updated_at":"2025-11-27T20:56:48.666442-08:00","closed_at":"2025-11-27T20:56:48.666442-08:00"} -{"id":"vsbeads-ejn","title":"Research: Better beads workflow to avoid PR/branch conflicts","description":"Beads conflates PR/branch workflows with issue tracker changes, causing beads created in feature branches to be auto-deleted when PRs merge.\n\n**Problem:**\n- Beads created in feature branch get committed with code\n- PR merges bring beads into main via git\n- `bd sync --from-main` runs and treats these as \"foreign\" entries\n- git-history-backfill incorrectly deletes them as \"pruned from manifest\"\n\n**Analysis:** See `tmp/beads-deletion-analysis.md`\n**Full discussion:** See `tmp/session-subagent-discussion.jsonl`\n\n**Potential Solutions to Research:**\n\n1. **Protected branch support** - beads has this feature, unclear if it helps\n - Does it prevent sync from touching certain branches?\n - Can it isolate beads changes from code changes?\n\n2. **Dedicated beads branch** - worktree with separate branch just for .beads/\n - Code stays on feature branches\n - Beads always committed to a single branch (e.g., `beads-main`)\n - Avoids merge conflicts between code PRs and beads state\n\n3. **Gitignore .beads/ in feature branches**\n - Only commit beads on main\n - Feature branches inherit but don't modify\n - Sync happens only on main\n\n4. **Submodule approach** - .beads/ as separate git repo\n - Complete isolation of issue tracker from code\n - More complex setup\n\n\u003e submodule is probably not great sub modules tie to revisions and the revision of this will be constantly changing.\n\n**Goal:** Find a workflow where:\n- Beads can be created/updated during feature work\n- PRs don't bring stale/conflicting beads state\n- No accidental deletions via sync","design":"## Research Findings\n\n### Question: Is it by design that all branches carry beads changes?\n\n**Answer: NO - this is incidental and problematic, not by design.**\n\n### Evidence from GitHub Issues\n\n1. **Issue #207 (Using beads with PRs)** - Steve Yegge (Nov 4): \"We're taking a serious look at offering a multi-repo solution, where beads uses separate repos\"\n\n2. **Issue #195 (.beads as worktree on orphan branch)** - Steve Yegge (Nov 4): Rejected worktree approach as \"too git-centric\", pursuing separate repository option instead for:\n - Clean separation of issue tracking from code history\n - Platform-agnostic approach (VCS-independent)\n - Better monorepo/multi-project support\n\n3. **Issue #158 (Merge conflicts)** - Extensive discussion about multi-agent conflicts, led to improved 3-way merging in v0.24.1+\n\n### Currently Supported Solutions\n\n1. **Protected Branch Workflow** (`bd init --branch beads-metadata`):\n - Beads commits to separate branch via git worktrees\n - Code stays on feature branches\n - Periodically merge beads-metadata → main via PR\n - See: docs/PROTECTED_BRANCHES.md\n\n2. **Contributor Workflow** (`bd init --contributor`):\n - For OSS contributors\n - Issues stored in `~/.beads-planning` (separate local repo)\n - Never pollutes upstream PRs\n\n### Our Specific Bug\n\nThe `git-history-backfill` deleting beads from PRs appears to be a **bug**, not intended behavior:\n- Expected: Beads in git history should be **recovered** (added to local DB)\n- Actual: Beads are **deleted** as \"pruned from manifest\"\n\n### Recommendation\n\nTry protected branch workflow:\n```bash\nbd config set sync.branch beads-metadata\nbd daemon restart\n```\n\nConsider filing bug report for git-history-backfill behavior.","notes":"## Decision (2025-11-28)\n\n**Strategy:** Try protected branch workflow now, wait for upstream multi-repo solution.\n\n## Experiment on forge (2025-11-28)\n\nTested `bd config set sync.branch beads-metadata` with `--auto-commit --auto-push`:\n\n**What works:**\n- ✅ Beads commits go to `beads-metadata` branch (via worktree)\n- ✅ Auto-push to `origin/beads-metadata` works\n- ✅ `main` branch stays untouched (no new commits)\n\n**Issues found:**\n- ❌ Working tree still shows `.beads/beads.jsonl` modified (tracked on main)\n - Fix: untrack from main with `git rm --cached`\n- ❌ `beads-metadata` is NOT an orphan branch - it's a snapshot of main at config time\n - Contains full code tree + history\n - Designed for merge workflow, not true isolation\n - For \"never merge\" approach, this is wasteful/messy\n\n**Branch structure:**\n```\nmain ─────────────────────────────────► (gets beads.jsonl changes in working tree)\n \\\n └─ beads-metadata ──────────► (beads commits here, has full code copy)\n```\n\n**What we'd want (orphan):**\n```\nmain ──────────────────► (code only)\nbeads-metadata (orphan) ──────────────► (beads only, no shared history)\n```\n\nIssue #195 proposed orphan approach but Steve rejected as \"too git-centric\" - pursuing separate repo instead.\n\n**Status:** Experiment complete, need to decide:\n1. Live with non-orphan branch (functional but messy)\n2. DIY orphan branch (unsupported)\n3. Wait for upstream multi-repo\n\n## Implementation (2025-11-29)\n\nSuccessfully migrated vscode-beads to protected branch workflow:\n- Untracked beads.jsonl/deletions.jsonl from main\n- Set sync.branch = beads-metadata\n- Daemon runs with --auto-commit --auto-push\n- Updated docs/development.md with setup instructions\n\n## Known Issue: beads.jsonl vs issues.jsonl confusion\n\nThere's upstream inconsistency about whether the JSONL file should be named `beads.jsonl` or `issues.jsonl`. Got conflicting answers from maintainers. Leaving as-is until upstream clarifies the canonical naming.","status":"in_progress","priority":2,"issue_type":"task","created_at":"2025-11-28T22:03:57.82966-08:00","updated_at":"2025-11-29T14:13:59.299756-08:00","labels":["infra"],"dependencies":[{"issue_id":"vsbeads-ejn","depends_on_id":"vsbeads-hw7","type":"related","created_at":"2025-11-28T22:04:03.147893-08:00","created_by":"daemon"}]} +{"id":"vsbeads-ejn","title":"Research: Better beads workflow to avoid PR/branch conflicts","description":"Beads conflates PR/branch workflows with issue tracker changes, causing beads created in feature branches to be auto-deleted when PRs merge.\n\n**Problem:**\n- Beads created in feature branch get committed with code\n- PR merges bring beads into main via git\n- `bd sync --from-main` runs and treats these as \"foreign\" entries\n- git-history-backfill incorrectly deletes them as \"pruned from manifest\"\n\n**Analysis:** See `tmp/beads-deletion-analysis.md`\n**Full discussion:** See `tmp/session-subagent-discussion.jsonl`\n\n**Potential Solutions to Research:**\n\n1. **Protected branch support** - beads has this feature, unclear if it helps\n - Does it prevent sync from touching certain branches?\n - Can it isolate beads changes from code changes?\n\n2. **Dedicated beads branch** - worktree with separate branch just for .beads/\n - Code stays on feature branches\n - Beads always committed to a single branch (e.g., `beads-main`)\n - Avoids merge conflicts between code PRs and beads state\n\n3. **Gitignore .beads/ in feature branches**\n - Only commit beads on main\n - Feature branches inherit but don't modify\n - Sync happens only on main\n\n4. **Submodule approach** - .beads/ as separate git repo\n - Complete isolation of issue tracker from code\n - More complex setup\n\n\u003e submodule is probably not great sub modules tie to revisions and the revision of this will be constantly changing.\n\n**Goal:** Find a workflow where:\n- Beads can be created/updated during feature work\n- PRs don't bring stale/conflicting beads state\n- No accidental deletions via sync","design":"## Research Findings\n\n### Question: Is it by design that all branches carry beads changes?\n\n**Answer: NO - this is incidental and problematic, not by design.**\n\n### Evidence from GitHub Issues\n\n1. **Issue #207 (Using beads with PRs)** - Steve Yegge (Nov 4): \"We're taking a serious look at offering a multi-repo solution, where beads uses separate repos\"\n\n2. **Issue #195 (.beads as worktree on orphan branch)** - Steve Yegge (Nov 4): Rejected worktree approach as \"too git-centric\", pursuing separate repository option instead for:\n - Clean separation of issue tracking from code history\n - Platform-agnostic approach (VCS-independent)\n - Better monorepo/multi-project support\n\n3. **Issue #158 (Merge conflicts)** - Extensive discussion about multi-agent conflicts, led to improved 3-way merging in v0.24.1+\n\n### Currently Supported Solutions\n\n1. **Protected Branch Workflow** (`bd init --branch beads-metadata`):\n - Beads commits to separate branch via git worktrees\n - Code stays on feature branches\n - Periodically merge beads-metadata → main via PR\n - See: docs/PROTECTED_BRANCHES.md\n\n2. **Contributor Workflow** (`bd init --contributor`):\n - For OSS contributors\n - Issues stored in `~/.beads-planning` (separate local repo)\n - Never pollutes upstream PRs\n\n### Our Specific Bug\n\nThe `git-history-backfill` deleting beads from PRs appears to be a **bug**, not intended behavior:\n- Expected: Beads in git history should be **recovered** (added to local DB)\n- Actual: Beads are **deleted** as \"pruned from manifest\"\n\n### Recommendation\n\nTry protected branch workflow:\n```bash\nbd config set sync.branch beads-metadata\nbd daemon restart\n```\n\nConsider filing bug report for git-history-backfill behavior.","notes":"## Decision (2025-11-28)\n\n**Strategy:** Try protected branch workflow now, wait for upstream multi-repo solution.\n\n## Experiment on forge (2025-11-28)\n\nTested `bd config set sync.branch beads-metadata` with `--auto-commit --auto-push`:\n\n**What works:**\n- ✅ Beads commits go to `beads-metadata` branch (via worktree)\n- ✅ Auto-push to `origin/beads-metadata` works\n- ✅ `main` branch stays untouched (no new commits)\n\n**Issues found:**\n- ❌ Working tree still shows `.beads/beads.jsonl` modified (tracked on main)\n - Fix: untrack from main with `git rm --cached`\n- ❌ `beads-metadata` is NOT an orphan branch - it's a snapshot of main at config time\n - Contains full code tree + history\n - Designed for merge workflow, not true isolation\n - For \"never merge\" approach, this is wasteful/messy\n\n**Branch structure:**\n```\nmain ─────────────────────────────────► (gets beads.jsonl changes in working tree)\n \\\n └─ beads-metadata ──────────► (beads commits here, has full code copy)\n```\n\n**What we'd want (orphan):**\n```\nmain ──────────────────► (code only)\nbeads-metadata (orphan) ──────────────► (beads only, no shared history)\n```\n\nIssue #195 proposed orphan approach but Steve rejected as \"too git-centric\" - pursuing separate repo instead.\n\n**Status:** Experiment complete, need to decide:\n1. Live with non-orphan branch (functional but messy)\n2. DIY orphan branch (unsupported)\n3. Wait for upstream multi-repo\n\n## Implementation (2025-11-29)\n\nSuccessfully migrated vscode-beads to protected branch workflow:\n- Untracked beads.jsonl/deletions.jsonl from main\n- Set sync.branch = beads-metadata\n- Daemon runs with --auto-commit --auto-push\n- Updated docs/development.md with setup instructions\n\n## Known Issue: beads.jsonl vs issues.jsonl confusion\n\nThere's upstream inconsistency about whether the JSONL file should be named `beads.jsonl` or `issues.jsonl`. Got conflicting answers from maintainers. Leaving as-is until upstream clarifies the canonical naming.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-28T22:03:57.82966-08:00","updated_at":"2025-11-29T14:14:15.314712-08:00","closed_at":"2025-11-29T14:14:15.314712-08:00","labels":["infra"],"dependencies":[{"issue_id":"vsbeads-ejn","depends_on_id":"vsbeads-hw7","type":"related","created_at":"2025-11-28T22:04:03.147893-08:00","created_by":"daemon"}]} {"id":"vsbeads-fwp","title":"Improvement: Colored dropdowns in edit mode for type/status/priority","description":"In DetailsView edit mode, the type/status/priority dropdowns are plain text. They should show colored versions matching how they appear elsewhere:\n- Either as chips (like view mode)\n- Or as colored badges (like filter panel)\n\nThis improves visual consistency and makes it easier to identify options at a glance.\n\nLocation: `src/webview/views/DetailsView.tsx` lines 188-227","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-27T19:01:47.152941-08:00","updated_at":"2025-11-27T19:01:47.152941-08:00","labels":["ui"]} {"id":"vsbeads-fyn","title":"Add copy ID action to issues list rows","description":"Currently copying a bead ID requires clicking a row to open details, then clicking the ID badge. Add a way to copy the ID directly from the list without navigating away.\n\nOptions:\n- Click on ID column copies to clipboard\n- Right-click context menu with \"Copy ID\"\n- Small copy icon on hover","design":"Click on ID span in issues list row copies to clipboard. Row selection still happens (no propagation stop). Add cursor pointer and title tooltip on ID span. Show brief visual feedback on copy.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-27T01:36:42.479739-08:00","updated_at":"2025-11-28T16:53:09.00156-08:00","closed_at":"2025-11-28T16:53:09.00156-08:00"} {"id":"vsbeads-gfr","title":"Generate label colors algorithmically from label name","description":"Labels currently have no color distinction. Use a deterministic algorithm to generate background color from label name (e.g., hash to HSL hue). Auto-select light/dark foreground text based on background luminance for legibility.\n\nAlgorithm approach:\n- Hash label name to get consistent hue (0-360)\n- Use fixed saturation/lightness for consistency\n- Calculate relative luminance of background\n- Choose white or dark text based on WCAG contrast ratio","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-28T17:08:39.964997-08:00","updated_at":"2025-11-28T17:23:27.090457-08:00","closed_at":"2025-11-28T17:23:27.090457-08:00","labels":["ui"]} From f2a90e4d4a68c23eddab5f0f16edec09e96a657c Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 29 Nov 2025 14:17:09 -0800 Subject: [PATCH 06/49] bd daemon sync: 2025-11-29 14:17:09 --- .beads/beads.jsonl | 1 + 1 file changed, 1 insertion(+) diff --git a/.beads/beads.jsonl b/.beads/beads.jsonl index 7f77a33..a1edf8f 100644 --- a/.beads/beads.jsonl +++ b/.beads/beads.jsonl @@ -8,6 +8,7 @@ {"id":"vsbeads-4n2","title":"Improve Details panel UX - consider inline expansion vs separate panel","description":"VS Code WebviewView API has show() but no collapse/hide method. Current behavior: Details panel auto-expands when bead selected but can't auto-collapse when cleared.\n\nOptions to explore:\n- Inline expansion in the Issues list (like a details row)\n- Editor panel instead of sidebar panel\n- TreeView with expandable items\n- Accept limitation with compact empty state (current)","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-26T16:33:59.306123-08:00","updated_at":"2025-11-26T23:11:39.608131-08:00","labels":["ui"]} {"id":"vsbeads-56z","title":"Add transient toast feedback for copy/refresh actions","description":"No visual feedback when:\n- Clicking bead ID/title to copy to clipboard\n- Clicking refresh button\n\nNeed transient toast/popup near the action location.","design":"Implement a simple toast component:\n- Positioned near the triggering element\n- Auto-dismisses after 1.5s\n- Small, non-intrusive\n- Use for: copy actions, refresh complete","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-27T00:07:42.824348-08:00","updated_at":"2025-11-27T00:57:29.115178-08:00","closed_at":"2025-11-27T00:57:29.115178-08:00","comments":[{"id":1,"issue_id":"vsbeads-56z","author":"jason","text":"Toast positioning still being refined","created_at":"2025-11-27T08:56:05Z"}]} {"id":"vsbeads-5c0","title":"Sub-agent browser automation to reduce context bloat","description":"Use sub-agents with isolated context windows to handle Chrome DevTools MCP operations, preventing context bloat in main conversation.\n\n**Problem:** Chrome DevTools MCP returns ~400 lines (full a11y tree) after every action, burning context fast.\n\n**Solution:** Delegate browser operations to short-lived sub-agents that:\n- Have their own context window (bloat stays there)\n- Return only minimal summaries to main agent\n- Batch multiple operations per invocation\n\n**Approach:**\n1. Create `browser-task` sub-agent with only Chrome DevTools MCP tools\n2. Focused instructions: execute task, return minimal summary\n3. Use for: reload window, click sequences, verify UI state","status":"open","priority":2,"issue_type":"epic","created_at":"2025-11-28T21:52:14.860652-08:00","updated_at":"2025-11-28T21:52:14.860652-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-28T21:52:42.200798-08:00","created_by":"daemon"},{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-n64","type":"related","created_at":"2025-11-28T21:52:42.256772-08:00","created_by":"daemon"}]} +{"id":"vsbeads-5nm","title":"Mutation watch spams errors when daemon dies","description":"When the beads daemon is killed, the extension spams error output repeatedly:\n\n```\n[ProjectManager] Mutation watch error: Socket error: connect ENOENT /Users/jason/ws/jdillon/vscode-beads/.beads/bd.sock\n[ProjectManager] Mutation watch error: Cannot read properties of null (reading 'filter')\n```\n\nThe \"filter\" error repeats continuously.","design":"## Root Cause\n\n1. **Error spam** (`BeadsDaemonClient.ts:490-510`): `startMutationWatch` uses `setInterval` polling every 1s. When daemon dies, every poll fails with socket error. The interval keeps running forever.\n\n2. **Null filter error** (`BeadsDaemonClient.ts:495`): `mutations.filter()` called but `getMutations` can return null if daemon returns `{success: true}` without data. The `execute` method casts `response.data as T` without null checking.\n\n3. **No reconnection logic**: When daemon dies, `daemonStatus` never updates and no recovery is attempted.\n\n## Fix Approach\n\n**BeadsDaemonClient.ts:**\n- Track consecutive failures in `startMutationWatch`\n- After N failures (e.g., 3), stop the interval and emit a 'disconnected' event\n- Add null guard: `const newMutations = (mutations ?? []).filter(...)`\n\n**BeadsProjectManager.ts:**\n- Listen for 'disconnected' event\n- Update `project.daemonStatus = 'stopped'`\n- Optionally: attempt auto-restart if `beads.autoStartDaemon` is true","acceptance_criteria":"- [ ] Killing daemon does not spam console output\n- [ ] \"Cannot read properties of null\" error never occurs\n- [ ] Daemon status indicator updates to \"stopped\" after daemon death\n- [ ] Log at most one \"daemon disconnected\" message per disconnect event","status":"open","priority":2,"issue_type":"bug","created_at":"2025-11-29T14:17:08.714282-08:00","updated_at":"2025-11-29T14:17:08.714282-08:00"} {"id":"vsbeads-65h","title":"Add label filter option to issues list","description":"Allow filtering issues by label in the issues list view. Could be a dropdown/chip selector similar to existing status filters.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-28T17:39:51.904712-08:00","updated_at":"2025-11-28T17:39:51.904712-08:00","labels":["ui"]} {"id":"vsbeads-6qz","title":"Bump minor version on release from main, reset patch to 0","description":"Current bump strategy increments patch version. For main branch releases, should bump minor version (0.x.0 → 0.y.0) and reset patch to 0. This better reflects semantic versioning where main releases are feature releases.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-28T17:04:40.688149-08:00","updated_at":"2025-11-28T21:39:01.557158-08:00","closed_at":"2025-11-28T21:39:01.557158-08:00","labels":["infra"]} {"id":"vsbeads-7ny","title":"Rename \"Beads Dashboard\" references to \"Beads\"","description":"Extension was renamed to \"Beads\" but there are leftover \"Beads Dashboard\" references. Output channel still shows \"Beads Dashboard\" in selector.","design":"Search and replace:\n- Output channel name in extension.ts\n- Any other \"Beads Dashboard\" strings in code/comments\n- Keep historical references in git commits as-is","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-11-26T18:43:02.79866-08:00","updated_at":"2025-11-27T01:18:57.016161-08:00","closed_at":"2025-11-27T01:18:57.016161-08:00"} From d353345dd97a755f2eeeda4acc1a94ec5c203f1d Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 29 Nov 2025 14:22:06 -0800 Subject: [PATCH 07/49] bd daemon sync: 2025-11-29 14:22:06 --- .beads/beads.jsonl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.beads/beads.jsonl b/.beads/beads.jsonl index a1edf8f..4121da6 100644 --- a/.beads/beads.jsonl +++ b/.beads/beads.jsonl @@ -8,7 +8,7 @@ {"id":"vsbeads-4n2","title":"Improve Details panel UX - consider inline expansion vs separate panel","description":"VS Code WebviewView API has show() but no collapse/hide method. Current behavior: Details panel auto-expands when bead selected but can't auto-collapse when cleared.\n\nOptions to explore:\n- Inline expansion in the Issues list (like a details row)\n- Editor panel instead of sidebar panel\n- TreeView with expandable items\n- Accept limitation with compact empty state (current)","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-26T16:33:59.306123-08:00","updated_at":"2025-11-26T23:11:39.608131-08:00","labels":["ui"]} {"id":"vsbeads-56z","title":"Add transient toast feedback for copy/refresh actions","description":"No visual feedback when:\n- Clicking bead ID/title to copy to clipboard\n- Clicking refresh button\n\nNeed transient toast/popup near the action location.","design":"Implement a simple toast component:\n- Positioned near the triggering element\n- Auto-dismisses after 1.5s\n- Small, non-intrusive\n- Use for: copy actions, refresh complete","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-27T00:07:42.824348-08:00","updated_at":"2025-11-27T00:57:29.115178-08:00","closed_at":"2025-11-27T00:57:29.115178-08:00","comments":[{"id":1,"issue_id":"vsbeads-56z","author":"jason","text":"Toast positioning still being refined","created_at":"2025-11-27T08:56:05Z"}]} {"id":"vsbeads-5c0","title":"Sub-agent browser automation to reduce context bloat","description":"Use sub-agents with isolated context windows to handle Chrome DevTools MCP operations, preventing context bloat in main conversation.\n\n**Problem:** Chrome DevTools MCP returns ~400 lines (full a11y tree) after every action, burning context fast.\n\n**Solution:** Delegate browser operations to short-lived sub-agents that:\n- Have their own context window (bloat stays there)\n- Return only minimal summaries to main agent\n- Batch multiple operations per invocation\n\n**Approach:**\n1. Create `browser-task` sub-agent with only Chrome DevTools MCP tools\n2. Focused instructions: execute task, return minimal summary\n3. Use for: reload window, click sequences, verify UI state","status":"open","priority":2,"issue_type":"epic","created_at":"2025-11-28T21:52:14.860652-08:00","updated_at":"2025-11-28T21:52:14.860652-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-28T21:52:42.200798-08:00","created_by":"daemon"},{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-n64","type":"related","created_at":"2025-11-28T21:52:42.256772-08:00","created_by":"daemon"}]} -{"id":"vsbeads-5nm","title":"Mutation watch spams errors when daemon dies","description":"When the beads daemon is killed, the extension spams error output repeatedly:\n\n```\n[ProjectManager] Mutation watch error: Socket error: connect ENOENT /Users/jason/ws/jdillon/vscode-beads/.beads/bd.sock\n[ProjectManager] Mutation watch error: Cannot read properties of null (reading 'filter')\n```\n\nThe \"filter\" error repeats continuously.","design":"## Root Cause\n\n1. **Error spam** (`BeadsDaemonClient.ts:490-510`): `startMutationWatch` uses `setInterval` polling every 1s. When daemon dies, every poll fails with socket error. The interval keeps running forever.\n\n2. **Null filter error** (`BeadsDaemonClient.ts:495`): `mutations.filter()` called but `getMutations` can return null if daemon returns `{success: true}` without data. The `execute` method casts `response.data as T` without null checking.\n\n3. **No reconnection logic**: When daemon dies, `daemonStatus` never updates and no recovery is attempted.\n\n## Fix Approach\n\n**BeadsDaemonClient.ts:**\n- Track consecutive failures in `startMutationWatch`\n- After N failures (e.g., 3), stop the interval and emit a 'disconnected' event\n- Add null guard: `const newMutations = (mutations ?? []).filter(...)`\n\n**BeadsProjectManager.ts:**\n- Listen for 'disconnected' event\n- Update `project.daemonStatus = 'stopped'`\n- Optionally: attempt auto-restart if `beads.autoStartDaemon` is true","acceptance_criteria":"- [ ] Killing daemon does not spam console output\n- [ ] \"Cannot read properties of null\" error never occurs\n- [ ] Daemon status indicator updates to \"stopped\" after daemon death\n- [ ] Log at most one \"daemon disconnected\" message per disconnect event","status":"open","priority":2,"issue_type":"bug","created_at":"2025-11-29T14:17:08.714282-08:00","updated_at":"2025-11-29T14:17:08.714282-08:00"} +{"id":"vsbeads-5nm","title":"Mutation watch spams errors when daemon dies","description":"When the beads daemon is killed, the extension spams error output repeatedly:\n\n```\n[ProjectManager] Mutation watch error: Socket error: connect ENOENT /Users/jason/ws/jdillon/vscode-beads/.beads/bd.sock\n[ProjectManager] Mutation watch error: Cannot read properties of null (reading 'filter')\n```\n\nThe \"filter\" error repeats continuously.","design":"## Root Cause\n\n1. **Error spam** (`BeadsDaemonClient.ts:490-510`): `startMutationWatch` uses `setInterval` polling every 1s. When daemon dies, every poll fails with socket error. The interval keeps running forever.\n\n2. **Null filter error** (`BeadsDaemonClient.ts:495`): `mutations.filter()` called but `getMutations` can return null if daemon returns `{success: true}` without data. The `execute` method casts `response.data as T` without null checking.\n\n3. **No reconnection logic**: When daemon dies, `daemonStatus` never updates and no recovery is attempted.\n\n## Fix Approach\n\n**BeadsDaemonClient.ts:**\n- Track consecutive failures in `startMutationWatch`\n- After N failures (e.g., 3), stop the interval and emit a 'disconnected' event\n- Add null guard: `const newMutations = (mutations ?? []).filter(...)`\n\n**BeadsProjectManager.ts:**\n- Listen for 'disconnected' event\n- Update `project.daemonStatus = 'stopped'`\n- Optionally: attempt auto-restart if `beads.autoStartDaemon` is true","acceptance_criteria":"- [ ] Killing daemon does not spam console output\n- [ ] \"Cannot read properties of null\" error never occurs\n- [ ] Daemon status indicator updates to \"stopped\" after daemon death\n- [ ] Log at most one \"daemon disconnected\" message per disconnect event","status":"in_progress","priority":2,"issue_type":"bug","created_at":"2025-11-29T14:17:08.714282-08:00","updated_at":"2025-11-29T14:22:06.274644-08:00","dependencies":[{"issue_id":"vsbeads-5nm","depends_on_id":"vsbeads-ba5","type":"related","created_at":"2025-11-29T14:22:06.235038-08:00","created_by":"daemon"}]} {"id":"vsbeads-65h","title":"Add label filter option to issues list","description":"Allow filtering issues by label in the issues list view. Could be a dropdown/chip selector similar to existing status filters.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-28T17:39:51.904712-08:00","updated_at":"2025-11-28T17:39:51.904712-08:00","labels":["ui"]} {"id":"vsbeads-6qz","title":"Bump minor version on release from main, reset patch to 0","description":"Current bump strategy increments patch version. For main branch releases, should bump minor version (0.x.0 → 0.y.0) and reset patch to 0. This better reflects semantic versioning where main releases are feature releases.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-28T17:04:40.688149-08:00","updated_at":"2025-11-28T21:39:01.557158-08:00","closed_at":"2025-11-28T21:39:01.557158-08:00","labels":["infra"]} {"id":"vsbeads-7ny","title":"Rename \"Beads Dashboard\" references to \"Beads\"","description":"Extension was renamed to \"Beads\" but there are leftover \"Beads Dashboard\" references. Output channel still shows \"Beads Dashboard\" in selector.","design":"Search and replace:\n- Output channel name in extension.ts\n- Any other \"Beads Dashboard\" strings in code/comments\n- Keep historical references in git commits as-is","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-11-26T18:43:02.79866-08:00","updated_at":"2025-11-27T01:18:57.016161-08:00","closed_at":"2025-11-27T01:18:57.016161-08:00"} From a3c614b17a7e9c32b2d7f205c1a5fada43dfcde9 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 29 Nov 2025 14:30:39 -0800 Subject: [PATCH 08/49] fix: remove erroneous vsbeads-gfr deletion record --- .beads/deletions.jsonl | 1 - 1 file changed, 1 deletion(-) diff --git a/.beads/deletions.jsonl b/.beads/deletions.jsonl index 132aed3..0aef015 100644 --- a/.beads/deletions.jsonl +++ b/.beads/deletions.jsonl @@ -15,4 +15,3 @@ {"id":"vsbeads-c04","ts":"2025-11-28T23:54:29.184309Z","by":"git-history-backfill","reason":"recovered from git history (pruned from manifest)"} {"id":"vsbeads-e4j","ts":"2025-11-28T23:54:29.190131Z","by":"git-history-backfill","reason":"recovered from git history (pruned from manifest)"} {"id":"vsbeads-92s","ts":"2025-11-28T23:54:29.195367Z","by":"git-history-backfill","reason":"recovered from git history (pruned from manifest)"} -{"id":"vsbeads-gfr","ts":"2025-11-29T01:24:30.363325Z","by":"git-history-backfill","reason":"recovered from git history (pruned from manifest)"} From 83704634faf3c8b01839e0eb6c57ec4e25085fa9 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 29 Nov 2025 14:36:31 -0800 Subject: [PATCH 09/49] bd daemon sync: 2025-11-29 14:36:31 --- .beads/beads.jsonl | 1 - 1 file changed, 1 deletion(-) diff --git a/.beads/beads.jsonl b/.beads/beads.jsonl index 4121da6..51513a7 100644 --- a/.beads/beads.jsonl +++ b/.beads/beads.jsonl @@ -28,7 +28,6 @@ {"id":"vsbeads-ejn","title":"Research: Better beads workflow to avoid PR/branch conflicts","description":"Beads conflates PR/branch workflows with issue tracker changes, causing beads created in feature branches to be auto-deleted when PRs merge.\n\n**Problem:**\n- Beads created in feature branch get committed with code\n- PR merges bring beads into main via git\n- `bd sync --from-main` runs and treats these as \"foreign\" entries\n- git-history-backfill incorrectly deletes them as \"pruned from manifest\"\n\n**Analysis:** See `tmp/beads-deletion-analysis.md`\n**Full discussion:** See `tmp/session-subagent-discussion.jsonl`\n\n**Potential Solutions to Research:**\n\n1. **Protected branch support** - beads has this feature, unclear if it helps\n - Does it prevent sync from touching certain branches?\n - Can it isolate beads changes from code changes?\n\n2. **Dedicated beads branch** - worktree with separate branch just for .beads/\n - Code stays on feature branches\n - Beads always committed to a single branch (e.g., `beads-main`)\n - Avoids merge conflicts between code PRs and beads state\n\n3. **Gitignore .beads/ in feature branches**\n - Only commit beads on main\n - Feature branches inherit but don't modify\n - Sync happens only on main\n\n4. **Submodule approach** - .beads/ as separate git repo\n - Complete isolation of issue tracker from code\n - More complex setup\n\n\u003e submodule is probably not great sub modules tie to revisions and the revision of this will be constantly changing.\n\n**Goal:** Find a workflow where:\n- Beads can be created/updated during feature work\n- PRs don't bring stale/conflicting beads state\n- No accidental deletions via sync","design":"## Research Findings\n\n### Question: Is it by design that all branches carry beads changes?\n\n**Answer: NO - this is incidental and problematic, not by design.**\n\n### Evidence from GitHub Issues\n\n1. **Issue #207 (Using beads with PRs)** - Steve Yegge (Nov 4): \"We're taking a serious look at offering a multi-repo solution, where beads uses separate repos\"\n\n2. **Issue #195 (.beads as worktree on orphan branch)** - Steve Yegge (Nov 4): Rejected worktree approach as \"too git-centric\", pursuing separate repository option instead for:\n - Clean separation of issue tracking from code history\n - Platform-agnostic approach (VCS-independent)\n - Better monorepo/multi-project support\n\n3. **Issue #158 (Merge conflicts)** - Extensive discussion about multi-agent conflicts, led to improved 3-way merging in v0.24.1+\n\n### Currently Supported Solutions\n\n1. **Protected Branch Workflow** (`bd init --branch beads-metadata`):\n - Beads commits to separate branch via git worktrees\n - Code stays on feature branches\n - Periodically merge beads-metadata → main via PR\n - See: docs/PROTECTED_BRANCHES.md\n\n2. **Contributor Workflow** (`bd init --contributor`):\n - For OSS contributors\n - Issues stored in `~/.beads-planning` (separate local repo)\n - Never pollutes upstream PRs\n\n### Our Specific Bug\n\nThe `git-history-backfill` deleting beads from PRs appears to be a **bug**, not intended behavior:\n- Expected: Beads in git history should be **recovered** (added to local DB)\n- Actual: Beads are **deleted** as \"pruned from manifest\"\n\n### Recommendation\n\nTry protected branch workflow:\n```bash\nbd config set sync.branch beads-metadata\nbd daemon restart\n```\n\nConsider filing bug report for git-history-backfill behavior.","notes":"## Decision (2025-11-28)\n\n**Strategy:** Try protected branch workflow now, wait for upstream multi-repo solution.\n\n## Experiment on forge (2025-11-28)\n\nTested `bd config set sync.branch beads-metadata` with `--auto-commit --auto-push`:\n\n**What works:**\n- ✅ Beads commits go to `beads-metadata` branch (via worktree)\n- ✅ Auto-push to `origin/beads-metadata` works\n- ✅ `main` branch stays untouched (no new commits)\n\n**Issues found:**\n- ❌ Working tree still shows `.beads/beads.jsonl` modified (tracked on main)\n - Fix: untrack from main with `git rm --cached`\n- ❌ `beads-metadata` is NOT an orphan branch - it's a snapshot of main at config time\n - Contains full code tree + history\n - Designed for merge workflow, not true isolation\n - For \"never merge\" approach, this is wasteful/messy\n\n**Branch structure:**\n```\nmain ─────────────────────────────────► (gets beads.jsonl changes in working tree)\n \\\n └─ beads-metadata ──────────► (beads commits here, has full code copy)\n```\n\n**What we'd want (orphan):**\n```\nmain ──────────────────► (code only)\nbeads-metadata (orphan) ──────────────► (beads only, no shared history)\n```\n\nIssue #195 proposed orphan approach but Steve rejected as \"too git-centric\" - pursuing separate repo instead.\n\n**Status:** Experiment complete, need to decide:\n1. Live with non-orphan branch (functional but messy)\n2. DIY orphan branch (unsupported)\n3. Wait for upstream multi-repo\n\n## Implementation (2025-11-29)\n\nSuccessfully migrated vscode-beads to protected branch workflow:\n- Untracked beads.jsonl/deletions.jsonl from main\n- Set sync.branch = beads-metadata\n- Daemon runs with --auto-commit --auto-push\n- Updated docs/development.md with setup instructions\n\n## Known Issue: beads.jsonl vs issues.jsonl confusion\n\nThere's upstream inconsistency about whether the JSONL file should be named `beads.jsonl` or `issues.jsonl`. Got conflicting answers from maintainers. Leaving as-is until upstream clarifies the canonical naming.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-28T22:03:57.82966-08:00","updated_at":"2025-11-29T14:14:15.314712-08:00","closed_at":"2025-11-29T14:14:15.314712-08:00","labels":["infra"],"dependencies":[{"issue_id":"vsbeads-ejn","depends_on_id":"vsbeads-hw7","type":"related","created_at":"2025-11-28T22:04:03.147893-08:00","created_by":"daemon"}]} {"id":"vsbeads-fwp","title":"Improvement: Colored dropdowns in edit mode for type/status/priority","description":"In DetailsView edit mode, the type/status/priority dropdowns are plain text. They should show colored versions matching how they appear elsewhere:\n- Either as chips (like view mode)\n- Or as colored badges (like filter panel)\n\nThis improves visual consistency and makes it easier to identify options at a glance.\n\nLocation: `src/webview/views/DetailsView.tsx` lines 188-227","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-27T19:01:47.152941-08:00","updated_at":"2025-11-27T19:01:47.152941-08:00","labels":["ui"]} {"id":"vsbeads-fyn","title":"Add copy ID action to issues list rows","description":"Currently copying a bead ID requires clicking a row to open details, then clicking the ID badge. Add a way to copy the ID directly from the list without navigating away.\n\nOptions:\n- Click on ID column copies to clipboard\n- Right-click context menu with \"Copy ID\"\n- Small copy icon on hover","design":"Click on ID span in issues list row copies to clipboard. Row selection still happens (no propagation stop). Add cursor pointer and title tooltip on ID span. Show brief visual feedback on copy.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-27T01:36:42.479739-08:00","updated_at":"2025-11-28T16:53:09.00156-08:00","closed_at":"2025-11-28T16:53:09.00156-08:00"} -{"id":"vsbeads-gfr","title":"Generate label colors algorithmically from label name","description":"Labels currently have no color distinction. Use a deterministic algorithm to generate background color from label name (e.g., hash to HSL hue). Auto-select light/dark foreground text based on background luminance for legibility.\n\nAlgorithm approach:\n- Hash label name to get consistent hue (0-360)\n- Use fixed saturation/lightness for consistency\n- Calculate relative luminance of background\n- Choose white or dark text based on WCAG contrast ratio","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-28T17:08:39.964997-08:00","updated_at":"2025-11-28T17:23:27.090457-08:00","closed_at":"2025-11-28T17:23:27.090457-08:00","labels":["ui"]} {"id":"vsbeads-gr5","title":"Filter presets/favorites system for Issues panel","description":"Currently filtering requires manually adding multiple filters (e.g., Open + In Progress + Blocked to exclude Closed). Need a better UX for common filter combinations.","design":"**Options considered:**\n\n1. **Preset filters** - Built-in presets like \"Not Closed\", \"Active Work\"\n - Simple UX, covers common cases\n - Limited flexibility\n\n2. **Negated filters** - Click to toggle +/- on any filter\n - Full flexibility\n - More complex UX, needs visual indicator\n\n3. **Default filter** - Start with a filter applied (e.g., \"Not Closed\")\n - Good for most common use case\n - User can clear if needed\n\n**Recommended approach:**\nCombination of 1 + 3: Filter \"favorites\" dropdown that preconfigures filter sets.\n- Start with static built-in favorites: \"Not Closed\", \"Active\" (in_progress + blocked), \"All\"\n- Future: Allow saving custom filter sets as favorites\n- Default to \"Not Closed\" on load","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-26T23:34:31.877133-08:00","updated_at":"2025-11-26T23:34:31.877133-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-gr5","depends_on_id":"vsbeads-34v","type":"parent-child","created_at":"2025-11-26T23:34:39.784152-08:00","created_by":"daemon"}]} {"id":"vsbeads-gsb","title":"Support secondary sort in issues table","description":"Add multi-column sorting to the issues table.\n\nPossible approaches:\n- Shift+click for secondary sort (common pattern)\n- Always use a default secondary sort (e.g., Updated as tiebreaker)\n- Configurable sort order via settings","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-27T13:04:59.70662-08:00","updated_at":"2025-11-27T13:04:59.70662-08:00","labels":["ui"]} {"id":"vsbeads-hgm","title":"Test sub-agent context isolation","description":"After creating browser-task agent, test that:\n\n1. MCP response bloat stays in sub-agent context\n2. Only summary returns to main agent\n3. Measure context savings vs direct MCP calls\n\n**Test workflow:**\n- Invoke browser-task to reload code-server window\n- Check main context size before/after\n- Compare to doing reload directly with MCP","status":"open","priority":1,"issue_type":"task","created_at":"2025-11-28T21:52:30.146368-08:00","updated_at":"2025-11-28T21:52:30.146368-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-hgm","depends_on_id":"vsbeads-yjr","type":"blocks","created_at":"2025-11-28T21:52:30.148724-08:00","created_by":"daemon"},{"issue_id":"vsbeads-hgm","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:42.044495-08:00","created_by":"daemon"}]} From 876deda798d2cb0f0c939c2000749b4f68b15930 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 29 Nov 2025 14:44:27 -0800 Subject: [PATCH 10/49] bd daemon sync: 2025-11-29 14:44:27 --- .beads/beads.jsonl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.beads/beads.jsonl b/.beads/beads.jsonl index 51513a7..3f24470 100644 --- a/.beads/beads.jsonl +++ b/.beads/beads.jsonl @@ -8,7 +8,7 @@ {"id":"vsbeads-4n2","title":"Improve Details panel UX - consider inline expansion vs separate panel","description":"VS Code WebviewView API has show() but no collapse/hide method. Current behavior: Details panel auto-expands when bead selected but can't auto-collapse when cleared.\n\nOptions to explore:\n- Inline expansion in the Issues list (like a details row)\n- Editor panel instead of sidebar panel\n- TreeView with expandable items\n- Accept limitation with compact empty state (current)","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-26T16:33:59.306123-08:00","updated_at":"2025-11-26T23:11:39.608131-08:00","labels":["ui"]} {"id":"vsbeads-56z","title":"Add transient toast feedback for copy/refresh actions","description":"No visual feedback when:\n- Clicking bead ID/title to copy to clipboard\n- Clicking refresh button\n\nNeed transient toast/popup near the action location.","design":"Implement a simple toast component:\n- Positioned near the triggering element\n- Auto-dismisses after 1.5s\n- Small, non-intrusive\n- Use for: copy actions, refresh complete","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-27T00:07:42.824348-08:00","updated_at":"2025-11-27T00:57:29.115178-08:00","closed_at":"2025-11-27T00:57:29.115178-08:00","comments":[{"id":1,"issue_id":"vsbeads-56z","author":"jason","text":"Toast positioning still being refined","created_at":"2025-11-27T08:56:05Z"}]} {"id":"vsbeads-5c0","title":"Sub-agent browser automation to reduce context bloat","description":"Use sub-agents with isolated context windows to handle Chrome DevTools MCP operations, preventing context bloat in main conversation.\n\n**Problem:** Chrome DevTools MCP returns ~400 lines (full a11y tree) after every action, burning context fast.\n\n**Solution:** Delegate browser operations to short-lived sub-agents that:\n- Have their own context window (bloat stays there)\n- Return only minimal summaries to main agent\n- Batch multiple operations per invocation\n\n**Approach:**\n1. Create `browser-task` sub-agent with only Chrome DevTools MCP tools\n2. Focused instructions: execute task, return minimal summary\n3. Use for: reload window, click sequences, verify UI state","status":"open","priority":2,"issue_type":"epic","created_at":"2025-11-28T21:52:14.860652-08:00","updated_at":"2025-11-28T21:52:14.860652-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-28T21:52:42.200798-08:00","created_by":"daemon"},{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-n64","type":"related","created_at":"2025-11-28T21:52:42.256772-08:00","created_by":"daemon"}]} -{"id":"vsbeads-5nm","title":"Mutation watch spams errors when daemon dies","description":"When the beads daemon is killed, the extension spams error output repeatedly:\n\n```\n[ProjectManager] Mutation watch error: Socket error: connect ENOENT /Users/jason/ws/jdillon/vscode-beads/.beads/bd.sock\n[ProjectManager] Mutation watch error: Cannot read properties of null (reading 'filter')\n```\n\nThe \"filter\" error repeats continuously.","design":"## Root Cause\n\n1. **Error spam** (`BeadsDaemonClient.ts:490-510`): `startMutationWatch` uses `setInterval` polling every 1s. When daemon dies, every poll fails with socket error. The interval keeps running forever.\n\n2. **Null filter error** (`BeadsDaemonClient.ts:495`): `mutations.filter()` called but `getMutations` can return null if daemon returns `{success: true}` without data. The `execute` method casts `response.data as T` without null checking.\n\n3. **No reconnection logic**: When daemon dies, `daemonStatus` never updates and no recovery is attempted.\n\n## Fix Approach\n\n**BeadsDaemonClient.ts:**\n- Track consecutive failures in `startMutationWatch`\n- After N failures (e.g., 3), stop the interval and emit a 'disconnected' event\n- Add null guard: `const newMutations = (mutations ?? []).filter(...)`\n\n**BeadsProjectManager.ts:**\n- Listen for 'disconnected' event\n- Update `project.daemonStatus = 'stopped'`\n- Optionally: attempt auto-restart if `beads.autoStartDaemon` is true","acceptance_criteria":"- [ ] Killing daemon does not spam console output\n- [ ] \"Cannot read properties of null\" error never occurs\n- [ ] Daemon status indicator updates to \"stopped\" after daemon death\n- [ ] Log at most one \"daemon disconnected\" message per disconnect event","status":"in_progress","priority":2,"issue_type":"bug","created_at":"2025-11-29T14:17:08.714282-08:00","updated_at":"2025-11-29T14:22:06.274644-08:00","dependencies":[{"issue_id":"vsbeads-5nm","depends_on_id":"vsbeads-ba5","type":"related","created_at":"2025-11-29T14:22:06.235038-08:00","created_by":"daemon"}]} +{"id":"vsbeads-5nm","title":"Mutation watch spams errors when daemon dies","description":"When the beads daemon is killed, the extension spams error output repeatedly:\n\n```\n[ProjectManager] Mutation watch error: Socket error: connect ENOENT /Users/jason/ws/jdillon/vscode-beads/.beads/bd.sock\n[ProjectManager] Mutation watch error: Cannot read properties of null (reading 'filter')\n```\n\nThe \"filter\" error repeats continuously.","design":"## Root Cause\n\n1. **Error spam** (`BeadsDaemonClient.ts:490-510`): `startMutationWatch` used `setInterval` polling every 1s. When daemon dies, every poll failed with socket error - interval kept running forever.\n\n2. **Null filter error** (`BeadsDaemonClient.ts:495`): `mutations.filter()` called but `getMutations` could return null if daemon returned `{success: true}` without data.\n\n3. **No status feedback**: When daemon died, `daemonStatus` never updated.\n\n## Fix Implemented\n\n**BeadsDaemonClient.ts:**\n- Null guards on all array-returning methods (`list`, `ready`, `listComments`, `getMutations`)\n- Replaced `setInterval` with `setTimeout` + exponential backoff (1s -\u003e 2s -\u003e 4s -\u003e ... -\u003e 30s max)\n- Added `disconnected` and `reconnected` events (emit only on state change)\n- Track connection state to avoid duplicate events\n\n**BeadsProjectManager.ts:**\n- Listen for `disconnected`/`reconnected` events instead of generic `error`\n- Update `project.daemonStatus` on disconnect/reconnect\n- Fire `onActiveProjectChanged` to update UI","acceptance_criteria":"- [x] Null guards prevent \"Cannot read properties of null (reading 'filter')\" error\n- [x] Exponential backoff prevents error spam (1s -\u003e 30s max)\n- [x] Single \"Daemon disconnected\" message on disconnect\n- [x] Single \"Daemon reconnected\" message on reconnect\n- [x] daemonStatus updates to \"stopped\"/\"running\" appropriately\n- [ ] Status bar icon changes color on disconnect (UI needs to consume daemonStatus)","status":"in_progress","priority":2,"issue_type":"bug","created_at":"2025-11-29T14:17:08.714282-08:00","updated_at":"2025-11-29T14:44:26.452939-08:00","dependencies":[{"issue_id":"vsbeads-5nm","depends_on_id":"vsbeads-ba5","type":"related","created_at":"2025-11-29T14:22:06.235038-08:00","created_by":"daemon"}]} {"id":"vsbeads-65h","title":"Add label filter option to issues list","description":"Allow filtering issues by label in the issues list view. Could be a dropdown/chip selector similar to existing status filters.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-28T17:39:51.904712-08:00","updated_at":"2025-11-28T17:39:51.904712-08:00","labels":["ui"]} {"id":"vsbeads-6qz","title":"Bump minor version on release from main, reset patch to 0","description":"Current bump strategy increments patch version. For main branch releases, should bump minor version (0.x.0 → 0.y.0) and reset patch to 0. This better reflects semantic versioning where main releases are feature releases.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-28T17:04:40.688149-08:00","updated_at":"2025-11-28T21:39:01.557158-08:00","closed_at":"2025-11-28T21:39:01.557158-08:00","labels":["infra"]} {"id":"vsbeads-7ny","title":"Rename \"Beads Dashboard\" references to \"Beads\"","description":"Extension was renamed to \"Beads\" but there are leftover \"Beads Dashboard\" references. Output channel still shows \"Beads Dashboard\" in selector.","design":"Search and replace:\n- Output channel name in extension.ts\n- Any other \"Beads Dashboard\" strings in code/comments\n- Keep historical references in git commits as-is","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-11-26T18:43:02.79866-08:00","updated_at":"2025-11-27T01:18:57.016161-08:00","closed_at":"2025-11-27T01:18:57.016161-08:00"} From 47efee5da77d185626b74d0eea0e643b894e9962 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 29 Nov 2025 15:04:49 -0800 Subject: [PATCH 11/49] bd daemon sync: 2025-11-29 15:04:49 --- .beads/beads.jsonl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.beads/beads.jsonl b/.beads/beads.jsonl index 3f24470..e9f2a05 100644 --- a/.beads/beads.jsonl +++ b/.beads/beads.jsonl @@ -6,12 +6,14 @@ {"id":"vsbeads-3cn","title":"Agent-Driven VS Code Extension Development","description":"Enable Claude to effectively develop and debug VS Code extensions through browser automation and MCP integration.\n\nGoals:\n- Run VS Code in a browser (code-server or VS Code Web) with locally-built extensions\n- Control VS Code via MCP (Browser MCP, Chrome DevTools MCP, or Playwright)\n- Access debugging tools: screenshots, logs, inspector, terminal output\n- Enable human participation via VNC/X11 for guidance and review\n\nSuccess criteria:\n- Claude can start/stop VS Code, reload extensions, run commands\n- Claude can see UI state, logs, and errors programmatically\n- Jason can observe and guide Claude's actions in real-time","status":"in_progress","priority":2,"issue_type":"epic","created_at":"2025-11-27T13:28:48.987495-08:00","updated_at":"2025-11-27T20:55:24.433168-08:00","labels":["dx"],"comments":[{"id":2,"issue_id":"vsbeads-3cn","author":"jason","text":"Context is a problem...","created_at":"2025-11-28T03:11:56Z"},{"id":21,"issue_id":"vsbeads-3cn","author":"jason","text":"a very big problem","created_at":"2025-11-28T04:53:09Z"}]} {"id":"vsbeads-3zm","title":"Filter menu UX improvements: submenu indicators and click-away dismiss","description":"Two issues with the filter menu:\n\n1. **Submenu indicators missing**: When clicking the filter menu, it's not clear that the first menu item leads to submenus. There should be visual treatment (arrow/chevron) to indicate there's another menu before a selection is made.\n\n2. **Dismiss behavior**: The filter button requires multiple clicks to dismiss if you were just looking. Should dismiss as soon as the user clicks away from the menu (standard click-outside-to-close behavior).","status":"open","priority":3,"issue_type":"bug","created_at":"2025-11-27T13:31:46.108524-08:00","updated_at":"2025-11-27T13:31:46.108524-08:00","labels":["ui"]} {"id":"vsbeads-4n2","title":"Improve Details panel UX - consider inline expansion vs separate panel","description":"VS Code WebviewView API has show() but no collapse/hide method. Current behavior: Details panel auto-expands when bead selected but can't auto-collapse when cleared.\n\nOptions to explore:\n- Inline expansion in the Issues list (like a details row)\n- Editor panel instead of sidebar panel\n- TreeView with expandable items\n- Accept limitation with compact empty state (current)","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-26T16:33:59.306123-08:00","updated_at":"2025-11-26T23:11:39.608131-08:00","labels":["ui"]} +{"id":"vsbeads-4rj","title":"Retry button doesn't reload details panel","description":"When clicking Retry after daemon reconnects, the Issues panel reloads but the Details panel does not refresh. Both panels should refresh on retry.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-11-29T15:04:48.965543-08:00","updated_at":"2025-11-29T15:04:48.965543-08:00"} {"id":"vsbeads-56z","title":"Add transient toast feedback for copy/refresh actions","description":"No visual feedback when:\n- Clicking bead ID/title to copy to clipboard\n- Clicking refresh button\n\nNeed transient toast/popup near the action location.","design":"Implement a simple toast component:\n- Positioned near the triggering element\n- Auto-dismisses after 1.5s\n- Small, non-intrusive\n- Use for: copy actions, refresh complete","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-27T00:07:42.824348-08:00","updated_at":"2025-11-27T00:57:29.115178-08:00","closed_at":"2025-11-27T00:57:29.115178-08:00","comments":[{"id":1,"issue_id":"vsbeads-56z","author":"jason","text":"Toast positioning still being refined","created_at":"2025-11-27T08:56:05Z"}]} {"id":"vsbeads-5c0","title":"Sub-agent browser automation to reduce context bloat","description":"Use sub-agents with isolated context windows to handle Chrome DevTools MCP operations, preventing context bloat in main conversation.\n\n**Problem:** Chrome DevTools MCP returns ~400 lines (full a11y tree) after every action, burning context fast.\n\n**Solution:** Delegate browser operations to short-lived sub-agents that:\n- Have their own context window (bloat stays there)\n- Return only minimal summaries to main agent\n- Batch multiple operations per invocation\n\n**Approach:**\n1. Create `browser-task` sub-agent with only Chrome DevTools MCP tools\n2. Focused instructions: execute task, return minimal summary\n3. Use for: reload window, click sequences, verify UI state","status":"open","priority":2,"issue_type":"epic","created_at":"2025-11-28T21:52:14.860652-08:00","updated_at":"2025-11-28T21:52:14.860652-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-28T21:52:42.200798-08:00","created_by":"daemon"},{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-n64","type":"related","created_at":"2025-11-28T21:52:42.256772-08:00","created_by":"daemon"}]} {"id":"vsbeads-5nm","title":"Mutation watch spams errors when daemon dies","description":"When the beads daemon is killed, the extension spams error output repeatedly:\n\n```\n[ProjectManager] Mutation watch error: Socket error: connect ENOENT /Users/jason/ws/jdillon/vscode-beads/.beads/bd.sock\n[ProjectManager] Mutation watch error: Cannot read properties of null (reading 'filter')\n```\n\nThe \"filter\" error repeats continuously.","design":"## Root Cause\n\n1. **Error spam** (`BeadsDaemonClient.ts:490-510`): `startMutationWatch` used `setInterval` polling every 1s. When daemon dies, every poll failed with socket error - interval kept running forever.\n\n2. **Null filter error** (`BeadsDaemonClient.ts:495`): `mutations.filter()` called but `getMutations` could return null if daemon returned `{success: true}` without data.\n\n3. **No status feedback**: When daemon died, `daemonStatus` never updated.\n\n## Fix Implemented\n\n**BeadsDaemonClient.ts:**\n- Null guards on all array-returning methods (`list`, `ready`, `listComments`, `getMutations`)\n- Replaced `setInterval` with `setTimeout` + exponential backoff (1s -\u003e 2s -\u003e 4s -\u003e ... -\u003e 30s max)\n- Added `disconnected` and `reconnected` events (emit only on state change)\n- Track connection state to avoid duplicate events\n\n**BeadsProjectManager.ts:**\n- Listen for `disconnected`/`reconnected` events instead of generic `error`\n- Update `project.daemonStatus` on disconnect/reconnect\n- Fire `onActiveProjectChanged` to update UI","acceptance_criteria":"- [x] Null guards prevent \"Cannot read properties of null (reading 'filter')\" error\n- [x] Exponential backoff prevents error spam (1s -\u003e 30s max)\n- [x] Single \"Daemon disconnected\" message on disconnect\n- [x] Single \"Daemon reconnected\" message on reconnect\n- [x] daemonStatus updates to \"stopped\"/\"running\" appropriately\n- [ ] Status bar icon changes color on disconnect (UI needs to consume daemonStatus)","status":"in_progress","priority":2,"issue_type":"bug","created_at":"2025-11-29T14:17:08.714282-08:00","updated_at":"2025-11-29T14:44:26.452939-08:00","dependencies":[{"issue_id":"vsbeads-5nm","depends_on_id":"vsbeads-ba5","type":"related","created_at":"2025-11-29T14:22:06.235038-08:00","created_by":"daemon"}]} {"id":"vsbeads-65h","title":"Add label filter option to issues list","description":"Allow filtering issues by label in the issues list view. Could be a dropdown/chip selector similar to existing status filters.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-28T17:39:51.904712-08:00","updated_at":"2025-11-28T17:39:51.904712-08:00","labels":["ui"]} {"id":"vsbeads-6qz","title":"Bump minor version on release from main, reset patch to 0","description":"Current bump strategy increments patch version. For main branch releases, should bump minor version (0.x.0 → 0.y.0) and reset patch to 0. This better reflects semantic versioning where main releases are feature releases.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-28T17:04:40.688149-08:00","updated_at":"2025-11-28T21:39:01.557158-08:00","closed_at":"2025-11-28T21:39:01.557158-08:00","labels":["infra"]} {"id":"vsbeads-7ny","title":"Rename \"Beads Dashboard\" references to \"Beads\"","description":"Extension was renamed to \"Beads\" but there are leftover \"Beads Dashboard\" references. Output channel still shows \"Beads Dashboard\" in selector.","design":"Search and replace:\n- Output channel name in extension.ts\n- Any other \"Beads Dashboard\" strings in code/comments\n- Keep historical references in git commits as-is","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-11-26T18:43:02.79866-08:00","updated_at":"2025-11-27T01:18:57.016161-08:00","closed_at":"2025-11-27T01:18:57.016161-08:00"} +{"id":"vsbeads-7ue","title":"Show connection status indicator instead of full error view on disconnect","description":"When daemon disconnects, the entire panel shows an error view with Retry button. Better UX would be a status indicator (green→red) that shows connection state without replacing the panel content.","status":"open","priority":2,"issue_type":"feature","created_at":"2025-11-29T15:04:49.017327-08:00","updated_at":"2025-11-29T15:04:49.017327-08:00"} {"id":"vsbeads-8pl","title":"Reduce Dashboard view minimum height","description":"Dashboard stats section takes too much vertical space, partially cutting off the Issues panel below. Need more compact layout for the stat boxes.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-27T01:01:36.914842-08:00","updated_at":"2025-11-27T01:05:05.154318-08:00","closed_at":"2025-11-27T01:05:05.154318-08:00"} {"id":"vsbeads-8wo","title":"Support patch version bumps for release branches","description":"When releasing from a release branch (e.g., release-0.2.x), should increment patch version (0.2.0 → 0.2.1) for bugfix releases. Complements the minor bump strategy for main branch releases.","status":"open","priority":4,"issue_type":"task","created_at":"2025-11-28T17:04:40.744218-08:00","updated_at":"2025-11-28T17:04:40.744218-08:00","labels":["infra"]} {"id":"vsbeads-92t","title":"Implement BeadsDaemonClient with Unix socket RPC","description":"Replace CLI-spawning BeadsBackend with direct daemon socket connection using JSON-RPC protocol. Support real-time mutations via get_mutations.","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-26T15:59:20.209079-08:00","updated_at":"2025-11-26T23:11:39.603475-08:00","closed_at":"2025-11-26T16:03:59.684447-08:00"} From a6857222ae7ff6740479e8497bf6a4e3ee436f93 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 29 Nov 2025 15:04:55 -0800 Subject: [PATCH 12/49] bd daemon sync: 2025-11-29 15:04:55 --- .beads/beads.jsonl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.beads/beads.jsonl b/.beads/beads.jsonl index e9f2a05..69ebd3b 100644 --- a/.beads/beads.jsonl +++ b/.beads/beads.jsonl @@ -6,14 +6,14 @@ {"id":"vsbeads-3cn","title":"Agent-Driven VS Code Extension Development","description":"Enable Claude to effectively develop and debug VS Code extensions through browser automation and MCP integration.\n\nGoals:\n- Run VS Code in a browser (code-server or VS Code Web) with locally-built extensions\n- Control VS Code via MCP (Browser MCP, Chrome DevTools MCP, or Playwright)\n- Access debugging tools: screenshots, logs, inspector, terminal output\n- Enable human participation via VNC/X11 for guidance and review\n\nSuccess criteria:\n- Claude can start/stop VS Code, reload extensions, run commands\n- Claude can see UI state, logs, and errors programmatically\n- Jason can observe and guide Claude's actions in real-time","status":"in_progress","priority":2,"issue_type":"epic","created_at":"2025-11-27T13:28:48.987495-08:00","updated_at":"2025-11-27T20:55:24.433168-08:00","labels":["dx"],"comments":[{"id":2,"issue_id":"vsbeads-3cn","author":"jason","text":"Context is a problem...","created_at":"2025-11-28T03:11:56Z"},{"id":21,"issue_id":"vsbeads-3cn","author":"jason","text":"a very big problem","created_at":"2025-11-28T04:53:09Z"}]} {"id":"vsbeads-3zm","title":"Filter menu UX improvements: submenu indicators and click-away dismiss","description":"Two issues with the filter menu:\n\n1. **Submenu indicators missing**: When clicking the filter menu, it's not clear that the first menu item leads to submenus. There should be visual treatment (arrow/chevron) to indicate there's another menu before a selection is made.\n\n2. **Dismiss behavior**: The filter button requires multiple clicks to dismiss if you were just looking. Should dismiss as soon as the user clicks away from the menu (standard click-outside-to-close behavior).","status":"open","priority":3,"issue_type":"bug","created_at":"2025-11-27T13:31:46.108524-08:00","updated_at":"2025-11-27T13:31:46.108524-08:00","labels":["ui"]} {"id":"vsbeads-4n2","title":"Improve Details panel UX - consider inline expansion vs separate panel","description":"VS Code WebviewView API has show() but no collapse/hide method. Current behavior: Details panel auto-expands when bead selected but can't auto-collapse when cleared.\n\nOptions to explore:\n- Inline expansion in the Issues list (like a details row)\n- Editor panel instead of sidebar panel\n- TreeView with expandable items\n- Accept limitation with compact empty state (current)","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-26T16:33:59.306123-08:00","updated_at":"2025-11-26T23:11:39.608131-08:00","labels":["ui"]} -{"id":"vsbeads-4rj","title":"Retry button doesn't reload details panel","description":"When clicking Retry after daemon reconnects, the Issues panel reloads but the Details panel does not refresh. Both panels should refresh on retry.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-11-29T15:04:48.965543-08:00","updated_at":"2025-11-29T15:04:48.965543-08:00"} +{"id":"vsbeads-4rj","title":"Retry button doesn't reload details panel","description":"When clicking Retry after daemon reconnects, the Issues panel reloads but the Details panel does not refresh. Both panels should refresh on retry.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-11-29T15:04:48.965543-08:00","updated_at":"2025-11-29T15:04:48.965543-08:00","dependencies":[{"issue_id":"vsbeads-4rj","depends_on_id":"vsbeads-5nm","type":"discovered-from","created_at":"2025-11-29T15:04:54.883404-08:00","created_by":"daemon"}]} {"id":"vsbeads-56z","title":"Add transient toast feedback for copy/refresh actions","description":"No visual feedback when:\n- Clicking bead ID/title to copy to clipboard\n- Clicking refresh button\n\nNeed transient toast/popup near the action location.","design":"Implement a simple toast component:\n- Positioned near the triggering element\n- Auto-dismisses after 1.5s\n- Small, non-intrusive\n- Use for: copy actions, refresh complete","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-27T00:07:42.824348-08:00","updated_at":"2025-11-27T00:57:29.115178-08:00","closed_at":"2025-11-27T00:57:29.115178-08:00","comments":[{"id":1,"issue_id":"vsbeads-56z","author":"jason","text":"Toast positioning still being refined","created_at":"2025-11-27T08:56:05Z"}]} {"id":"vsbeads-5c0","title":"Sub-agent browser automation to reduce context bloat","description":"Use sub-agents with isolated context windows to handle Chrome DevTools MCP operations, preventing context bloat in main conversation.\n\n**Problem:** Chrome DevTools MCP returns ~400 lines (full a11y tree) after every action, burning context fast.\n\n**Solution:** Delegate browser operations to short-lived sub-agents that:\n- Have their own context window (bloat stays there)\n- Return only minimal summaries to main agent\n- Batch multiple operations per invocation\n\n**Approach:**\n1. Create `browser-task` sub-agent with only Chrome DevTools MCP tools\n2. Focused instructions: execute task, return minimal summary\n3. Use for: reload window, click sequences, verify UI state","status":"open","priority":2,"issue_type":"epic","created_at":"2025-11-28T21:52:14.860652-08:00","updated_at":"2025-11-28T21:52:14.860652-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-28T21:52:42.200798-08:00","created_by":"daemon"},{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-n64","type":"related","created_at":"2025-11-28T21:52:42.256772-08:00","created_by":"daemon"}]} {"id":"vsbeads-5nm","title":"Mutation watch spams errors when daemon dies","description":"When the beads daemon is killed, the extension spams error output repeatedly:\n\n```\n[ProjectManager] Mutation watch error: Socket error: connect ENOENT /Users/jason/ws/jdillon/vscode-beads/.beads/bd.sock\n[ProjectManager] Mutation watch error: Cannot read properties of null (reading 'filter')\n```\n\nThe \"filter\" error repeats continuously.","design":"## Root Cause\n\n1. **Error spam** (`BeadsDaemonClient.ts:490-510`): `startMutationWatch` used `setInterval` polling every 1s. When daemon dies, every poll failed with socket error - interval kept running forever.\n\n2. **Null filter error** (`BeadsDaemonClient.ts:495`): `mutations.filter()` called but `getMutations` could return null if daemon returned `{success: true}` without data.\n\n3. **No status feedback**: When daemon died, `daemonStatus` never updated.\n\n## Fix Implemented\n\n**BeadsDaemonClient.ts:**\n- Null guards on all array-returning methods (`list`, `ready`, `listComments`, `getMutations`)\n- Replaced `setInterval` with `setTimeout` + exponential backoff (1s -\u003e 2s -\u003e 4s -\u003e ... -\u003e 30s max)\n- Added `disconnected` and `reconnected` events (emit only on state change)\n- Track connection state to avoid duplicate events\n\n**BeadsProjectManager.ts:**\n- Listen for `disconnected`/`reconnected` events instead of generic `error`\n- Update `project.daemonStatus` on disconnect/reconnect\n- Fire `onActiveProjectChanged` to update UI","acceptance_criteria":"- [x] Null guards prevent \"Cannot read properties of null (reading 'filter')\" error\n- [x] Exponential backoff prevents error spam (1s -\u003e 30s max)\n- [x] Single \"Daemon disconnected\" message on disconnect\n- [x] Single \"Daemon reconnected\" message on reconnect\n- [x] daemonStatus updates to \"stopped\"/\"running\" appropriately\n- [ ] Status bar icon changes color on disconnect (UI needs to consume daemonStatus)","status":"in_progress","priority":2,"issue_type":"bug","created_at":"2025-11-29T14:17:08.714282-08:00","updated_at":"2025-11-29T14:44:26.452939-08:00","dependencies":[{"issue_id":"vsbeads-5nm","depends_on_id":"vsbeads-ba5","type":"related","created_at":"2025-11-29T14:22:06.235038-08:00","created_by":"daemon"}]} {"id":"vsbeads-65h","title":"Add label filter option to issues list","description":"Allow filtering issues by label in the issues list view. Could be a dropdown/chip selector similar to existing status filters.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-28T17:39:51.904712-08:00","updated_at":"2025-11-28T17:39:51.904712-08:00","labels":["ui"]} {"id":"vsbeads-6qz","title":"Bump minor version on release from main, reset patch to 0","description":"Current bump strategy increments patch version. For main branch releases, should bump minor version (0.x.0 → 0.y.0) and reset patch to 0. This better reflects semantic versioning where main releases are feature releases.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-28T17:04:40.688149-08:00","updated_at":"2025-11-28T21:39:01.557158-08:00","closed_at":"2025-11-28T21:39:01.557158-08:00","labels":["infra"]} {"id":"vsbeads-7ny","title":"Rename \"Beads Dashboard\" references to \"Beads\"","description":"Extension was renamed to \"Beads\" but there are leftover \"Beads Dashboard\" references. Output channel still shows \"Beads Dashboard\" in selector.","design":"Search and replace:\n- Output channel name in extension.ts\n- Any other \"Beads Dashboard\" strings in code/comments\n- Keep historical references in git commits as-is","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-11-26T18:43:02.79866-08:00","updated_at":"2025-11-27T01:18:57.016161-08:00","closed_at":"2025-11-27T01:18:57.016161-08:00"} -{"id":"vsbeads-7ue","title":"Show connection status indicator instead of full error view on disconnect","description":"When daemon disconnects, the entire panel shows an error view with Retry button. Better UX would be a status indicator (green→red) that shows connection state without replacing the panel content.","status":"open","priority":2,"issue_type":"feature","created_at":"2025-11-29T15:04:49.017327-08:00","updated_at":"2025-11-29T15:04:49.017327-08:00"} +{"id":"vsbeads-7ue","title":"Show connection status indicator instead of full error view on disconnect","description":"When daemon disconnects, the entire panel shows an error view with Retry button. Better UX would be a status indicator (green→red) that shows connection state without replacing the panel content.","status":"open","priority":2,"issue_type":"feature","created_at":"2025-11-29T15:04:49.017327-08:00","updated_at":"2025-11-29T15:04:49.017327-08:00","dependencies":[{"issue_id":"vsbeads-7ue","depends_on_id":"vsbeads-5nm","type":"discovered-from","created_at":"2025-11-29T15:04:54.924745-08:00","created_by":"daemon"}]} {"id":"vsbeads-8pl","title":"Reduce Dashboard view minimum height","description":"Dashboard stats section takes too much vertical space, partially cutting off the Issues panel below. Need more compact layout for the stat boxes.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-27T01:01:36.914842-08:00","updated_at":"2025-11-27T01:05:05.154318-08:00","closed_at":"2025-11-27T01:05:05.154318-08:00"} {"id":"vsbeads-8wo","title":"Support patch version bumps for release branches","description":"When releasing from a release branch (e.g., release-0.2.x), should increment patch version (0.2.0 → 0.2.1) for bugfix releases. Complements the minor bump strategy for main branch releases.","status":"open","priority":4,"issue_type":"task","created_at":"2025-11-28T17:04:40.744218-08:00","updated_at":"2025-11-28T17:04:40.744218-08:00","labels":["infra"]} {"id":"vsbeads-92t","title":"Implement BeadsDaemonClient with Unix socket RPC","description":"Replace CLI-spawning BeadsBackend with direct daemon socket connection using JSON-RPC protocol. Support real-time mutations via get_mutations.","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-26T15:59:20.209079-08:00","updated_at":"2025-11-26T23:11:39.603475-08:00","closed_at":"2025-11-26T16:03:59.684447-08:00"} From 1b7583c3165daab84a772d6a719988cbf873142b Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Thu, 4 Dec 2025 12:13:55 -0800 Subject: [PATCH 13/49] bd sync: 2025-12-04 12:13:55 --- .beads/beads.jsonl | 108 ++++++++++++++++++++++++++++--------------- .beads/metadata.json | 2 +- 2 files changed, 72 insertions(+), 38 deletions(-) diff --git a/.beads/beads.jsonl b/.beads/beads.jsonl index 69ebd3b..061bf6d 100644 --- a/.beads/beads.jsonl +++ b/.beads/beads.jsonl @@ -1,67 +1,101 @@ {"id":"vsbeads-1k7","title":"Test Chrome DevTools MCP for agent browser automation","description":"Quick spike to verify Chrome DevTools MCP works for our use case.\n\n## Install\n```bash\nclaude mcp add chrome-devtools -- npx -y chrome-devtools-mcp@latest\n```\n\n## Test Plan\n\n1. **Navigate** - Open a webpage (e.g., https://example.com)\n2. **Click** - Click on a link/element\n3. **Inspect DOM** - Use `take_snapshot` to see page structure\n4. **Screenshot** - Use `take_screenshot` to capture visual state\n5. **Console access** - Use `list_console_messages` to read dev console output\n6. **Script execution** - Use `evaluate_script` to run `document.title` or `getComputedStyle()`\n\n## Success Criteria\n- Headed browser window opens (Jason can watch)\n- All 6 capabilities work\n- Console messages are accessible (key painpoint)\n\n## Fallback\nIf this doesn't work well, try Playwright MCP instead.","notes":"## Test Results - ALL PASSED\n\n| Capability | Tool | Status |\n|------------|------|--------|\n| Navigate | `navigate_page` | ✅ |\n| Click | `click` | ✅ |\n| DOM Snapshot | `take_snapshot` | ✅ |\n| Screenshot | `take_screenshot` | ✅ (viewport only) |\n| Console access | `list_console_messages` | ✅ |\n| Script execution | `evaluate_script` | ✅ |\n| Computed styles | `evaluate_script` + JS | ✅ |\n\n## Decision\n**Chrome DevTools MCP is the winner** for agent browser automation:\n- Headed mode by default (human can watch)\n- Full console access (key painpoint solved)\n- Script execution for computed styles\n- Network/performance tools available\n\n## Not needed for now\n- Playwright MCP: fallback if chrome-devtools issues arise\n- Browser MCP: less capable, no evaluate_script\n- chrome-inspector-mcp: requires extension, evaluate_script suffices\n\n## Limitations noted\n- Screenshots capture page viewport only, not Chrome UI/DevTools\n- See vsbeads-uak for macOS window capture research","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-27T17:17:05.174573-08:00","updated_at":"2025-11-27T17:39:10.636615-08:00","closed_at":"2025-11-27T17:39:10.636615-08:00","dependencies":[{"issue_id":"vsbeads-1k7","depends_on_id":"vsbeads-q6r","type":"discovered-from","created_at":"2025-11-27T17:17:09.142776-08:00","created_by":"daemon"},{"issue_id":"vsbeads-1k7","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.223845-08:00","created_by":"daemon"}]} -{"id":"vsbeads-1vr","title":"Extract Daemon* API types to separate file","description":"Refactor daemon API types out of types.ts into a dedicated file (e.g., daemon-types.ts).\n\nCurrent inline types to extract:\n- `DaemonBeadDependency` (already defined)\n- `DaemonComment` (inline in issueToWebviewBead signature)\n- Full daemon issue structure (the large inline type in issueToWebviewBead)\n\nBenefits:\n- Clear separation between daemon API types and internal/webview types\n- Easier to update when daemon API changes\n- Better documentation of the daemon contract","status":"open","priority":3,"issue_type":"chore","created_at":"2025-11-28T15:55:07.524718-08:00","updated_at":"2025-11-28T15:55:07.524718-08:00","labels":["backend"]} +{"id":"vsbeads-1nq","title":"Column menu doesn't close when clicking outside","description":"In the Issues list, the column visibility menu (⋮ button) stays open when clicking outside of it. Should close on click-away like other menus.","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-12-01T15:08:03.146209-08:00","updated_at":"2025-12-01T15:56:32.500857-08:00","closed_at":"2025-12-01T15:56:32.500857-08:00","labels":["ui"]} +{"id":"vsbeads-1vr","title":"Extract Daemon* API types to separate file","description":"Refactor daemon API types out of types.ts into a dedicated file (e.g., daemon-types.ts).\n\nCurrent inline types to extract:\n- `DaemonBeadDependency` (already defined)\n- `DaemonComment` (inline in issueToWebviewBead signature)\n- Full daemon issue structure (the large inline type in issueToWebviewBead)\n\nBenefits:\n- Clear separation between daemon API types and internal/webview types\n- Easier to update when daemon API changes\n- Better documentation of the daemon contract","status":"open","priority":3,"issue_type":"chore","estimated_minutes":90,"created_at":"2025-11-28T15:55:07.524718-08:00","updated_at":"2025-12-04T11:59:33.211027-08:00","labels":["backend"]} {"id":"vsbeads-1za","title":"Fix Issues view: sticky header and remove excess padding","description":"Two issues with the Issues view:\n1. Table header scrolls off screen - should be sticky/fixed at top\n2. Unnecessary padding around the list taking up space","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-27T01:37:30.569797-08:00","updated_at":"2025-11-27T02:10:19.754932-08:00","closed_at":"2025-11-27T02:10:19.754932-08:00"} {"id":"vsbeads-33u","title":"Add search clear button to Issues panel","description":"Add a clear (×) button inside the search input field to quickly clear the search text.\n\nStandard UX pattern - shows when there's text in the search field.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-27T19:08:09.666845-08:00","updated_at":"2025-11-27T19:42:30.460018-08:00","closed_at":"2025-11-27T19:42:30.460018-08:00","comments":[{"id":5,"issue_id":"vsbeads-33u","author":"jason","text":"Closed prematurely - need user verification","created_at":"2025-11-28T03:37:32Z"}]} {"id":"vsbeads-34v","title":"Add static filter favorites with \"Not Closed\" default","description":"Initial implementation of filter favorites. Add a dropdown with static preset filter combinations, defaulting to \"Not Closed\".","design":"**Implementation:**\n1. Add favorites dropdown next to \"+ Filter\" button\n2. Static presets:\n - \"All\" - no filters\n - \"Not Closed\" - status: open, in_progress, blocked (default)\n - \"Active\" - status: in_progress, blocked\n3. On load, apply \"Not Closed\" preset\n4. Selecting a preset replaces current filters\n5. Manual filter changes clear the preset selection (show as \"Custom\")\n\n**UI placement:**\n`[Favorites ▾] [+ Filter] [Clear]`\n\nOr integrate into existing filter UI as first option in the filter menu.","acceptance_criteria":"- Favorites dropdown visible in filter toolbar\n- \"Not Closed\" applied by default on panel load\n- Selecting preset updates filter chips\n- Clear button resets to \"All\"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-26T23:34:31.948083-08:00","updated_at":"2025-11-26T23:36:12.283982-08:00","closed_at":"2025-11-26T23:36:12.283982-08:00"} -{"id":"vsbeads-3cn","title":"Agent-Driven VS Code Extension Development","description":"Enable Claude to effectively develop and debug VS Code extensions through browser automation and MCP integration.\n\nGoals:\n- Run VS Code in a browser (code-server or VS Code Web) with locally-built extensions\n- Control VS Code via MCP (Browser MCP, Chrome DevTools MCP, or Playwright)\n- Access debugging tools: screenshots, logs, inspector, terminal output\n- Enable human participation via VNC/X11 for guidance and review\n\nSuccess criteria:\n- Claude can start/stop VS Code, reload extensions, run commands\n- Claude can see UI state, logs, and errors programmatically\n- Jason can observe and guide Claude's actions in real-time","status":"in_progress","priority":2,"issue_type":"epic","created_at":"2025-11-27T13:28:48.987495-08:00","updated_at":"2025-11-27T20:55:24.433168-08:00","labels":["dx"],"comments":[{"id":2,"issue_id":"vsbeads-3cn","author":"jason","text":"Context is a problem...","created_at":"2025-11-28T03:11:56Z"},{"id":21,"issue_id":"vsbeads-3cn","author":"jason","text":"a very big problem","created_at":"2025-11-28T04:53:09Z"}]} -{"id":"vsbeads-3zm","title":"Filter menu UX improvements: submenu indicators and click-away dismiss","description":"Two issues with the filter menu:\n\n1. **Submenu indicators missing**: When clicking the filter menu, it's not clear that the first menu item leads to submenus. There should be visual treatment (arrow/chevron) to indicate there's another menu before a selection is made.\n\n2. **Dismiss behavior**: The filter button requires multiple clicks to dismiss if you were just looking. Should dismiss as soon as the user clicks away from the menu (standard click-outside-to-close behavior).","status":"open","priority":3,"issue_type":"bug","created_at":"2025-11-27T13:31:46.108524-08:00","updated_at":"2025-11-27T13:31:46.108524-08:00","labels":["ui"]} -{"id":"vsbeads-4n2","title":"Improve Details panel UX - consider inline expansion vs separate panel","description":"VS Code WebviewView API has show() but no collapse/hide method. Current behavior: Details panel auto-expands when bead selected but can't auto-collapse when cleared.\n\nOptions to explore:\n- Inline expansion in the Issues list (like a details row)\n- Editor panel instead of sidebar panel\n- TreeView with expandable items\n- Accept limitation with compact empty state (current)","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-26T16:33:59.306123-08:00","updated_at":"2025-11-26T23:11:39.608131-08:00","labels":["ui"]} -{"id":"vsbeads-4rj","title":"Retry button doesn't reload details panel","description":"When clicking Retry after daemon reconnects, the Issues panel reloads but the Details panel does not refresh. Both panels should refresh on retry.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-11-29T15:04:48.965543-08:00","updated_at":"2025-11-29T15:04:48.965543-08:00","dependencies":[{"issue_id":"vsbeads-4rj","depends_on_id":"vsbeads-5nm","type":"discovered-from","created_at":"2025-11-29T15:04:54.883404-08:00","created_by":"daemon"}]} +{"id":"vsbeads-385","title":"Table should stretch to fill container width","description":"After fixing column resize (table-layout: fixed + colgroup), the table no longer stretches to fill the panel width. There's a visible gap between the right edge of the table and the panel splitter.\n\nExpected: Table fills available width, with columns resizable within that space.\nActual: Table width is sum of column widths, leaving empty space on right.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-01T15:29:34.045547-08:00","updated_at":"2025-12-01T15:56:32.38194-08:00","closed_at":"2025-12-01T15:56:32.38194-08:00","labels":["ui"]} +{"id":"vsbeads-3cn","title":"Agent-Driven VS Code Extension Development","description":"Enable Claude to effectively develop and debug VS Code extensions through browser automation and MCP integration.\n\nGoals:\n- Run VS Code in a browser (code-server or VS Code Web) with locally-built extensions\n- Control VS Code via MCP (Browser MCP, Chrome DevTools MCP, or Playwright)\n- Access debugging tools: screenshots, logs, inspector, terminal output\n- Enable human participation via VNC/X11 for guidance and review\n\nSuccess criteria:\n- Claude can start/stop VS Code, reload extensions, run commands\n- Claude can see UI state, logs, and errors programmatically\n- Jason can observe and guide Claude's actions in real-time","status":"open","priority":2,"issue_type":"epic","estimated_minutes":1800,"created_at":"2025-11-27T13:28:48.987495-08:00","updated_at":"2025-12-04T11:58:55.337807-08:00","labels":["dx"],"comments":[{"id":2,"issue_id":"vsbeads-3cn","author":"jason","text":"Context is a problem...","created_at":"2025-11-28T03:11:56Z"},{"id":21,"issue_id":"vsbeads-3cn","author":"jason","text":"a very big problem","created_at":"2025-11-28T04:53:09Z"},{"id":22,"issue_id":"vsbeads-3cn","author":"jason","text":"Initial design, we moved on to some real exploration on wonderland/platform to test with mobile-mcp. Will follow up here after more work is done there.","created_at":"2025-12-01T02:09:06Z"}]} +{"id":"vsbeads-3rk","title":"Test issue with multiple labels","description":"Testing labels overflow indicator","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-01T14:55:15.765599-08:00","updated_at":"2025-12-01T15:12:56.122436-08:00","closed_at":"2025-12-01T15:12:56.122436-08:00","labels":["a","b","c","d","dx","e","ui"]} +{"id":"vsbeads-3zm","title":"Filter menu UX improvements: submenu indicators and click-away dismiss","description":"Two issues with the filter menu:\n\n1. **Submenu indicators missing**: When clicking the filter menu, it's not clear that the first menu item leads to submenus. There should be visual treatment (arrow/chevron) to indicate there's another menu before a selection is made.\n\n2. **Dismiss behavior**: The filter button requires multiple clicks to dismiss if you were just looking. Should dismiss as soon as the user clicks away from the menu (standard click-outside-to-close behavior).","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-11-27T13:31:46.108524-08:00","updated_at":"2025-11-30T17:32:31.489179-08:00","closed_at":"2025-11-30T17:32:31.489179-08:00","labels":["ui"]} +{"id":"vsbeads-49u","title":"Investigate: estimated_minutes field not settable via bd CLI","description":"The `estimated_minutes` field exists in the beads schema (per daemon API docs) but `bd update` doesn't have an `--estimate` flag to set it.\n\nQuestions:\n1. Is this field supported at all in current beads?\n2. Is there a different way to set it (create only? direct JSONL edit?)\n3. Should we file upstream issue to add `--estimate` flag?\n\nWithout ability to set estimates, the Estimate column in vscode-beads is useless.","notes":"---\n\n**2025-12-04 Update**: ✅ **FIXED in v0.29.0!** The `--estimate` / `-e` flag is now properly implemented:\n- `bd create --estimate \u003cminutes\u003e`\n- `bd update \u003cid\u003e --estimate \u003cminutes\u003e`\n- Protocol structs have `EstimatedMinutes` field\n\nVerified in local clone at `~/ws/reference/beads`. vscode-beads Estimate column is now usable once users upgrade to beads v0.29.0+.","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-12-01T16:03:02.12189-08:00","updated_at":"2025-12-04T11:47:04.526243-08:00","closed_at":"2025-12-04T11:47:04.526243-08:00","labels":["dx"]} +{"id":"vsbeads-4n2","title":"Improve Details panel UX - consider inline expansion vs separate panel","description":"VS Code WebviewView API has show() but no collapse/hide method. Current behavior: Details panel auto-expands when bead selected but can't auto-collapse when cleared.\n\nOptions to explore:\n- Inline expansion in the Issues list (like a details row)\n- Editor panel instead of sidebar panel\n- TreeView with expandable items\n- Accept limitation with compact empty state (current)","status":"open","priority":3,"issue_type":"feature","estimated_minutes":300,"created_at":"2025-11-26T16:33:59.306123-08:00","updated_at":"2025-12-04T12:00:11.87706-08:00","labels":["ui"]} +{"id":"vsbeads-4rj","title":"Retry button doesn't reload details panel","description":"When clicking Retry after daemon reconnects, the Issues panel reloads but the Details panel does not refresh. Both panels should refresh on retry.","status":"open","priority":3,"issue_type":"bug","estimated_minutes":60,"created_at":"2025-11-29T15:04:48.965543-08:00","updated_at":"2025-12-04T11:59:27.840917-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-4rj","depends_on_id":"vsbeads-5nm","type":"discovered-from","created_at":"2025-11-29T15:04:54.883404-08:00","created_by":"daemon"}]} +{"id":"vsbeads-4uw","title":"Evaluate TanStack Table for Issues list","description":"Consider using TanStack Table (headless) for the Issues table instead of custom resize/sort/filter logic. Would give us battle-tested implementations without UI opinions.\n\nTrade-offs to evaluate:\n- Bundle size impact\n- API learning curve\n- Migration effort from current custom implementation\n- VS Code webview compatibility","status":"open","priority":3,"issue_type":"task","estimated_minutes":180,"created_at":"2025-12-01T15:29:33.996813-08:00","updated_at":"2025-12-04T11:59:23.20143-08:00","labels":["dx","ui"]} {"id":"vsbeads-56z","title":"Add transient toast feedback for copy/refresh actions","description":"No visual feedback when:\n- Clicking bead ID/title to copy to clipboard\n- Clicking refresh button\n\nNeed transient toast/popup near the action location.","design":"Implement a simple toast component:\n- Positioned near the triggering element\n- Auto-dismisses after 1.5s\n- Small, non-intrusive\n- Use for: copy actions, refresh complete","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-27T00:07:42.824348-08:00","updated_at":"2025-11-27T00:57:29.115178-08:00","closed_at":"2025-11-27T00:57:29.115178-08:00","comments":[{"id":1,"issue_id":"vsbeads-56z","author":"jason","text":"Toast positioning still being refined","created_at":"2025-11-27T08:56:05Z"}]} -{"id":"vsbeads-5c0","title":"Sub-agent browser automation to reduce context bloat","description":"Use sub-agents with isolated context windows to handle Chrome DevTools MCP operations, preventing context bloat in main conversation.\n\n**Problem:** Chrome DevTools MCP returns ~400 lines (full a11y tree) after every action, burning context fast.\n\n**Solution:** Delegate browser operations to short-lived sub-agents that:\n- Have their own context window (bloat stays there)\n- Return only minimal summaries to main agent\n- Batch multiple operations per invocation\n\n**Approach:**\n1. Create `browser-task` sub-agent with only Chrome DevTools MCP tools\n2. Focused instructions: execute task, return minimal summary\n3. Use for: reload window, click sequences, verify UI state","status":"open","priority":2,"issue_type":"epic","created_at":"2025-11-28T21:52:14.860652-08:00","updated_at":"2025-11-28T21:52:14.860652-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-28T21:52:42.200798-08:00","created_by":"daemon"},{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-n64","type":"related","created_at":"2025-11-28T21:52:42.256772-08:00","created_by":"daemon"}]} -{"id":"vsbeads-5nm","title":"Mutation watch spams errors when daemon dies","description":"When the beads daemon is killed, the extension spams error output repeatedly:\n\n```\n[ProjectManager] Mutation watch error: Socket error: connect ENOENT /Users/jason/ws/jdillon/vscode-beads/.beads/bd.sock\n[ProjectManager] Mutation watch error: Cannot read properties of null (reading 'filter')\n```\n\nThe \"filter\" error repeats continuously.","design":"## Root Cause\n\n1. **Error spam** (`BeadsDaemonClient.ts:490-510`): `startMutationWatch` used `setInterval` polling every 1s. When daemon dies, every poll failed with socket error - interval kept running forever.\n\n2. **Null filter error** (`BeadsDaemonClient.ts:495`): `mutations.filter()` called but `getMutations` could return null if daemon returned `{success: true}` without data.\n\n3. **No status feedback**: When daemon died, `daemonStatus` never updated.\n\n## Fix Implemented\n\n**BeadsDaemonClient.ts:**\n- Null guards on all array-returning methods (`list`, `ready`, `listComments`, `getMutations`)\n- Replaced `setInterval` with `setTimeout` + exponential backoff (1s -\u003e 2s -\u003e 4s -\u003e ... -\u003e 30s max)\n- Added `disconnected` and `reconnected` events (emit only on state change)\n- Track connection state to avoid duplicate events\n\n**BeadsProjectManager.ts:**\n- Listen for `disconnected`/`reconnected` events instead of generic `error`\n- Update `project.daemonStatus` on disconnect/reconnect\n- Fire `onActiveProjectChanged` to update UI","acceptance_criteria":"- [x] Null guards prevent \"Cannot read properties of null (reading 'filter')\" error\n- [x] Exponential backoff prevents error spam (1s -\u003e 30s max)\n- [x] Single \"Daemon disconnected\" message on disconnect\n- [x] Single \"Daemon reconnected\" message on reconnect\n- [x] daemonStatus updates to \"stopped\"/\"running\" appropriately\n- [ ] Status bar icon changes color on disconnect (UI needs to consume daemonStatus)","status":"in_progress","priority":2,"issue_type":"bug","created_at":"2025-11-29T14:17:08.714282-08:00","updated_at":"2025-11-29T14:44:26.452939-08:00","dependencies":[{"issue_id":"vsbeads-5nm","depends_on_id":"vsbeads-ba5","type":"related","created_at":"2025-11-29T14:22:06.235038-08:00","created_by":"daemon"}]} -{"id":"vsbeads-65h","title":"Add label filter option to issues list","description":"Allow filtering issues by label in the issues list view. Could be a dropdown/chip selector similar to existing status filters.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-28T17:39:51.904712-08:00","updated_at":"2025-11-28T17:39:51.904712-08:00","labels":["ui"]} +{"id":"vsbeads-5c0","title":"Sub-agent browser automation to reduce context bloat","description":"Use sub-agents with isolated context windows to handle Chrome DevTools MCP operations, preventing context bloat in main conversation.\n\n**Problem:** Chrome DevTools MCP returns ~400 lines (full a11y tree) after every action, burning context fast.\n\n**Solution:** Delegate browser operations to short-lived sub-agents that:\n- Have their own context window (bloat stays there)\n- Return only minimal summaries to main agent\n- Batch multiple operations per invocation\n\n**Approach:**\n1. Create `browser-task` sub-agent with only Chrome DevTools MCP tools\n2. Focused instructions: execute task, return minimal summary\n3. Use for: reload window, click sequences, verify UI state","status":"open","priority":2,"issue_type":"epic","estimated_minutes":600,"created_at":"2025-11-28T21:52:14.860652-08:00","updated_at":"2025-12-04T11:58:51.219932-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-28T21:52:42.200798-08:00","created_by":"daemon"},{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-n64","type":"related","created_at":"2025-11-28T21:52:42.256772-08:00","created_by":"daemon"}]} +{"id":"vsbeads-5nm","title":"Mutation watch spams errors when daemon dies","description":"When the beads daemon is killed, the extension spams error output repeatedly:\n\n```\n[ProjectManager] Mutation watch error: Socket error: connect ENOENT /Users/jason/ws/jdillon/vscode-beads/.beads/bd.sock\n[ProjectManager] Mutation watch error: Cannot read properties of null (reading 'filter')\n```\n\nThe \"filter\" error repeats continuously.","design":"## Root Cause\n\n1. **Error spam** (`BeadsDaemonClient.ts:490-510`): `startMutationWatch` used `setInterval` polling every 1s. When daemon dies, every poll failed with socket error - interval kept running forever.\n\n2. **Null filter error** (`BeadsDaemonClient.ts:495`): `mutations.filter()` called but `getMutations` could return null if daemon returned `{success: true}` without data.\n\n3. **No status feedback**: When daemon died, `daemonStatus` never updated.\n\n## Fix Implemented\n\n**BeadsDaemonClient.ts:**\n- Null guards on all array-returning methods (`list`, `ready`, `listComments`, `getMutations`)\n- Replaced `setInterval` with `setTimeout` + exponential backoff (1s -\u003e 2s -\u003e 4s -\u003e ... -\u003e 30s max)\n- Added `disconnected` and `reconnected` events (emit only on state change)\n- Track connection state to avoid duplicate events\n\n**BeadsProjectManager.ts:**\n- Listen for `disconnected`/`reconnected` events instead of generic `error`\n- Update `project.daemonStatus` on disconnect/reconnect\n- Fire `onActiveProjectChanged` to update UI","acceptance_criteria":"- [x] Null guards prevent \"Cannot read properties of null (reading 'filter')\" error\n- [x] Exponential backoff prevents error spam (1s -\u003e 30s max)\n- [x] Single \"Daemon disconnected\" message on disconnect\n- [x] Single \"Daemon reconnected\" message on reconnect\n- [x] daemonStatus updates to \"stopped\"/\"running\" appropriately\n- [ ] Status bar icon changes color on disconnect (UI needs to consume daemonStatus)","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-29T14:17:08.714282-08:00","updated_at":"2025-11-29T15:14:07.810064-08:00","closed_at":"2025-11-29T15:14:07.810064-08:00","dependencies":[{"issue_id":"vsbeads-5nm","depends_on_id":"vsbeads-ba5","type":"related","created_at":"2025-11-29T14:22:06.235038-08:00","created_by":"daemon"}]} +{"id":"vsbeads-65h","title":"Add label filter option to issues list","description":"Allow filtering issues by label in the issues list view. Could be a dropdown/chip selector similar to existing status filters.","status":"open","priority":2,"issue_type":"feature","estimated_minutes":150,"created_at":"2025-11-28T17:39:51.904712-08:00","updated_at":"2025-12-04T11:58:52.723838-08:00","labels":["ui"]} +{"id":"vsbeads-6mx","title":"Support file attachments via beads-attachments directory","description":"Consider supporting file attachments (screenshots, docs) by:\n\n1. Store files in a `beads-attachments/` directory in repo (or on beads-metadata branch)\n2. Extension provides \"Attach file\" action that:\n - Copies/moves file to `beads-attachments/\u003cissue-id\u003e/filename.png`\n - Adds markdown link/embed to issue body or as a comment\n3. Render inline in Details panel when markdown contains `![](beads-attachments/...)`\n\nUse cases:\n- \"Look at this screenshot\" during bug reports\n- Design mockups attached to feature issues\n- Reference docs for complex tasks\n\nQuestions:\n- Store on main branch or beads-metadata branch?\n- Naming convention: `beads-attachments/\u003cissue-id\u003e/` or flat with prefixes?\n- Auto-cleanup when issue is compacted/deleted?","status":"open","priority":4,"issue_type":"feature","estimated_minutes":480,"created_at":"2025-11-30T01:18:31.564585-08:00","updated_at":"2025-12-04T12:00:13.942853-08:00","labels":["ui"]} {"id":"vsbeads-6qz","title":"Bump minor version on release from main, reset patch to 0","description":"Current bump strategy increments patch version. For main branch releases, should bump minor version (0.x.0 → 0.y.0) and reset patch to 0. This better reflects semantic versioning where main releases are feature releases.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-28T17:04:40.688149-08:00","updated_at":"2025-11-28T21:39:01.557158-08:00","closed_at":"2025-11-28T21:39:01.557158-08:00","labels":["infra"]} +{"id":"vsbeads-7eg","title":"Dynamic updates from daemon events are broken","description":"Extension does not automatically refresh when beads are modified via CLI. Changes made with bd update (e.g., adding labels, updating estimates) don't trigger UI refresh until manual reload.\n\n**Observed:**\n- Added 'test' label to vsbeads-7jw via CLI\n- Extension UI did not update automatically\n- Details panel still shows old labels\n\n**Expected:**\n- Daemon should emit change events\n- Extension should subscribe and refresh affected views\n\n**Impact:** Critical for workflow - users expect real-time updates when CLI and extension are used together.","notes":"**Root Cause:**\n`setupMutationWatching()` (called after daemon auto-start) only called `startMutationWatch()` but never registered the `mutation`, `disconnected`, and `reconnected` event listeners. The polling ran but events went unhandled.\n\n**Fix:**\n1. Moved event listener registration into `setupMutationWatching()`\n2. Refactored `setActiveProject()` to use `setupMutationWatching()` instead of duplicating code\n\n**Files changed:**\n- `src/backend/BeadsProjectManager.ts`","status":"closed","priority":1,"issue_type":"bug","estimated_minutes":60,"created_at":"2025-12-04T12:03:29.191873-08:00","updated_at":"2025-12-04T12:13:41.742744-08:00","closed_at":"2025-12-04T12:13:41.742744-08:00","labels":["backend","daemon"]} +{"id":"vsbeads-7g6","title":"Edit mode: removing labels via X button doesn't persist on save","description":"In Details panel edit mode, clicking X on a label badge and then clicking Save doesn't actually remove the label. The change is lost.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-01T14:56:40.573858-08:00","updated_at":"2025-12-01T15:56:32.557872-08:00","closed_at":"2025-12-01T15:56:32.557872-08:00","labels":["ui"]} +{"id":"vsbeads-7jw","title":"Setup dedicated test workspace for UI testing","description":"Create a separate workspace/project with beads initialized for testing the extension UI, so we don't pollute vscode-beads with test beads.\n\nPossible approaches:\n- Create `test-workspace/` directory with `.beads/` initialized\n- Or use a separate repo entirely\n- Should have sample beads with various states, labels, priorities, dependencies for testing edge cases","status":"open","priority":1,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-01T15:45:24.063029-08:00","updated_at":"2025-12-04T11:58:41.463335-08:00","labels":["dx"]} {"id":"vsbeads-7ny","title":"Rename \"Beads Dashboard\" references to \"Beads\"","description":"Extension was renamed to \"Beads\" but there are leftover \"Beads Dashboard\" references. Output channel still shows \"Beads Dashboard\" in selector.","design":"Search and replace:\n- Output channel name in extension.ts\n- Any other \"Beads Dashboard\" strings in code/comments\n- Keep historical references in git commits as-is","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-11-26T18:43:02.79866-08:00","updated_at":"2025-11-27T01:18:57.016161-08:00","closed_at":"2025-11-27T01:18:57.016161-08:00"} -{"id":"vsbeads-7ue","title":"Show connection status indicator instead of full error view on disconnect","description":"When daemon disconnects, the entire panel shows an error view with Retry button. Better UX would be a status indicator (green→red) that shows connection state without replacing the panel content.","status":"open","priority":2,"issue_type":"feature","created_at":"2025-11-29T15:04:49.017327-08:00","updated_at":"2025-11-29T15:04:49.017327-08:00","dependencies":[{"issue_id":"vsbeads-7ue","depends_on_id":"vsbeads-5nm","type":"discovered-from","created_at":"2025-11-29T15:04:54.924745-08:00","created_by":"daemon"}]} +{"id":"vsbeads-7ue","title":"Show connection status indicator instead of full error view on disconnect","description":"When daemon disconnects, the entire panel shows an error view with Retry button. Better UX would be a status indicator (green→red) that shows connection state without replacing the panel content.","status":"open","priority":2,"issue_type":"feature","estimated_minutes":210,"created_at":"2025-11-29T15:04:49.017327-08:00","updated_at":"2025-12-04T11:58:48.492907-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-7ue","depends_on_id":"vsbeads-5nm","type":"discovered-from","created_at":"2025-11-29T15:04:54.924745-08:00","created_by":"daemon"}]} +{"id":"vsbeads-868","title":"Ensure all critical daemon operations are logged to output","description":"Hard to debug daemon auto-start because logging may be missing or unclear. Need to verify that all critical operations (daemon start/stop, connection state changes, errors) are logged to the Beads output channel with clear context.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-29T15:11:28.197113-08:00","updated_at":"2025-12-02T23:51:38.589224-08:00","closed_at":"2025-12-02T23:51:38.589224-08:00","labels":["daemon","dx"],"dependencies":[{"issue_id":"vsbeads-868","depends_on_id":"vsbeads-5nm","type":"discovered-from","created_at":"2025-11-29T15:11:33.979743-08:00","created_by":"daemon"}]} +{"id":"vsbeads-8et","title":"Labels column: inconsistent overflow indicators (... vs +N)","description":"In the Issues list Labels column, overflow is shown inconsistently:\n- Sometimes shows `...` after labels\n- Sometimes shows `+1` or `+N` after labels\n\nShould pick one pattern and use it consistently. `+N` is clearer as it tells you how many more labels exist.","notes":"Current state: Changed from 2-label limit + +N to show all labels with CSS ellipsis overflow. However, can't verify the fix because column resize is broken (vsbeads-oqb) - can't make column smaller to test overflow behavior.\n\nBlocked by: vsbeads-oqb (column resize)\n\nChanges made:\n- IssuesView.tsx: Removed slice(0,2) limit, now renders all labels \n- styles.css: Restored text-overflow: ellipsis on .labels-cell","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-30T01:12:05.180628-08:00","updated_at":"2025-12-01T15:56:32.33104-08:00","closed_at":"2025-12-01T15:56:32.33104-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-8et","depends_on_id":"vsbeads-oqb","type":"blocks","created_at":"2025-12-01T15:12:55.315222-08:00","created_by":"daemon"}]} +{"id":"vsbeads-8oc","title":"Add right-click context menu for type/status/priority in Issues list","description":"Add context menu actions to the Issues list so users can right-click on type/status/priority badges to change them inline.\n\nSimilar to the inline editing in Details view (vsbeads-fwp), but using right-click instead of click since the list rows already have click-to-select behavior.\n\n## Requirements\n- Right-click on type badge → dropdown menu to change type\n- Right-click on status badge → dropdown menu to change status \n- Right-click on priority badge → dropdown menu to change priority\n- Changes auto-save (no confirmation needed)\n- Use same ColoredSelect dropdown component from Details view\n\n## Notes\n- Click on row = select issue (existing behavior)\n- Right-click on badge = edit that field (new behavior)","status":"open","priority":3,"issue_type":"feature","estimated_minutes":210,"created_at":"2025-12-01T00:39:43.583441-08:00","updated_at":"2025-12-04T11:59:24.877438-08:00","labels":["ui"],"comments":[{"id":24,"issue_id":"vsbeads-8oc","author":"jason","text":"**Estimate: Medium (~1-2 hours)**\n\nWhat's needed:\n1. Add `onContextMenu` handlers to type/status/priority badge cells in IssuesView\n2. Render a positioned dropdown menu on right-click (similar to column menu)\n3. Wire up the change to call `onUpdateBead` (already exists but unused in IssuesView)\n4. Reuse `ColoredSelect` or create a context menu variant\n\nComplexity factors:\n- We already have dropdown/menu patterns (column menu, preset dropdown)\n- We already have `ColoredSelect` component from DetailsView\n- Main work is positioning the context menu at click coordinates\n- Need to handle click-outside dismiss (pattern already exists)\n\nThe patterns exist, it's mostly wiring them together in a new context.","created_at":"2025-12-02T00:41:30Z"}]} +{"id":"vsbeads-8p0","title":"Detect uninitialized beads projects and show helpful message","description":"When a project has `.beads/` directory but no database (not initialized), the daemon start fails with \"no database path configured\".\n\nCurrent behavior: Shows generic \"Daemon failed to start\" error.\n\nDesired behavior:\n1. Detect uninitialized state (has .beads/ but no beads.db)\n2. Show specific message: \"Beads not initialized. Run `bd init` in this directory.\"\n3. Future: Could offer to auto-initialize or show a dialog with \"Initialize\" button\n\nRelated error: `Error: no database path configured (run 'bd init' or set BEADS_DB)`","status":"open","priority":2,"issue_type":"feature","estimated_minutes":120,"created_at":"2025-12-02T23:16:32.248375-08:00","updated_at":"2025-12-04T11:58:46.044557-08:00","labels":["daemon","ui","ux"]} {"id":"vsbeads-8pl","title":"Reduce Dashboard view minimum height","description":"Dashboard stats section takes too much vertical space, partially cutting off the Issues panel below. Need more compact layout for the stat boxes.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-27T01:01:36.914842-08:00","updated_at":"2025-11-27T01:05:05.154318-08:00","closed_at":"2025-11-27T01:05:05.154318-08:00"} -{"id":"vsbeads-8wo","title":"Support patch version bumps for release branches","description":"When releasing from a release branch (e.g., release-0.2.x), should increment patch version (0.2.0 → 0.2.1) for bugfix releases. Complements the minor bump strategy for main branch releases.","status":"open","priority":4,"issue_type":"task","created_at":"2025-11-28T17:04:40.744218-08:00","updated_at":"2025-11-28T17:04:40.744218-08:00","labels":["infra"]} +{"id":"vsbeads-8wo","title":"Support patch version bumps for release branches","description":"When releasing from a release branch (e.g., release-0.2.x), should increment patch version (0.2.0 → 0.2.1) for bugfix releases. Complements the minor bump strategy for main branch releases.","status":"closed","priority":4,"issue_type":"task","created_at":"2025-11-28T17:04:40.744218-08:00","updated_at":"2025-12-01T16:38:38.472019-08:00","closed_at":"2025-12-01T16:38:38.472019-08:00","labels":["infra"]} {"id":"vsbeads-92t","title":"Implement BeadsDaemonClient with Unix socket RPC","description":"Replace CLI-spawning BeadsBackend with direct daemon socket connection using JSON-RPC protocol. Support real-time mutations via get_mutations.","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-26T15:59:20.209079-08:00","updated_at":"2025-11-26T23:11:39.603475-08:00","closed_at":"2025-11-26T16:03:59.684447-08:00"} -{"id":"vsbeads-93b","title":"Release workflow: validate changelog before publish","description":"Current release workflow doesn't check if CHANGELOG.md is properly updated before publishing.\n\nShould detect:\n- Missing release notes for the version being released\n- Non-empty [Unreleased] section when releasing (suggests notes weren't moved)\n- Version mismatch between package.json and changelog\n\nCould be a pre-release validation step in the GitHub Action.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-28T17:28:03.814546-08:00","updated_at":"2025-11-28T17:28:03.814546-08:00","labels":["infra"]} -{"id":"vsbeads-94s","title":"Change to a better icon for Beads in the side panel","description":"The current icon in the VS Code activity bar/side panel could be improved. Find or create a more distinctive icon that better represents Beads.","status":"open","priority":3,"issue_type":"task","created_at":"2025-11-27T02:15:50.331234-08:00","updated_at":"2025-11-27T02:15:50.331234-08:00","labels":["ui"]} -{"id":"vsbeads-9cp","title":"Configurable columns: reorder, type icons, user preferences","description":"Add configuration and customization options for the Issues table columns:\n\n**Column Configuration:**\n- Reorder columns via drag-and-drop or settings\n- Show/hide specific columns\n- User preferences persisted\n\n**Type Icons:**\n- Add icons for issue types (bug, feature, task, epic, chore)\n- Use in type column and dependency badges (Depends On / Blocks sections)\n- Color badges by type in dependency lists\n\n**Reference:** See vsbeads-jue for where type-based coloring is needed in dep badges.","design":"Options:\n- Drag-and-drop column reordering (complex)\n- Settings-based column order array (simpler)\n- Type icons: bug=🐛, feature=✨, task=☑️, epic=🎯, chore=🔧 (or codicons)","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-27T01:39:27.294846-08:00","updated_at":"2025-11-27T19:08:06.42803-08:00","labels":["ui"]} -{"id":"vsbeads-ba5","title":"Extension should auto-start daemon when not running","description":"Extension failed to connect with error: \"Socket error: connect ENOENT /Users/jason/ws/jdillon/vscode-beads/.beads/bd.sock\"\n\nThe daemon wasn't running and the extension didn't auto-start it. Need to investigate why the auto-start mechanism failed.","design":"## Investigation Areas\n\n1. **Why didn't auto-start work?**\n - Check if startDaemon is being called on connection failure\n - Verify the retry/backoff logic in BeadsBackend\n - Check if there's a race condition or timeout issue\n\n2. **Potential improvements**\n - Add daemon status indicator to UI (statusbar or panel)\n - Add \"Restart Daemon\" command to command palette\n - Show daemon connection status per-project in multi-root workspaces\n - Better error messaging when daemon fails to start\n\n3. **Diagnostics needed**\n - View current daemon connections across all projects\n - Force restart capability\n - Daemon health/metrics visibility in extension","status":"open","priority":2,"issue_type":"bug","created_at":"2025-11-29T02:34:16.15086-08:00","updated_at":"2025-11-29T02:34:16.15086-08:00"} +{"id":"vsbeads-93b","title":"Release workflow: local slash command with changelog validation","description":"Replace `workflow_dispatch` with tag-triggered workflow. Add `/release` slash command for local release management.\n\n## Current problems\n- Must go to GitHub to trigger release\n- Version auto-calculated after publish → can't finalize changelog first\n- Post-release version bump creates chicken/egg with changelog\n\n## Solution\n\n### `/release` slash command\n1. **Compute default version** based on branch:\n - `main` → bump minor (0.1.3 → 0.2.0)\n - `release-v*` → bump patch (0.2.0 → 0.2.1)\n - Present as default, allow override\n\n2. **Audit changelog** for missing entries:\n - Parse git log since last tag\n - Compare to changelog entries\n - Flag potential gaps (feat/fix commits not in changelog)\n - Skip: docs, chore, refactor, ci commits\n - If gaps → ask user to update first\n\n3. **Validate \u0026 execute**:\n - Verify `[Unreleased]` has content\n - Move `[Unreleased]` → `[X.Y.Z] - YYYY-MM-DD`\n - Update `package.json` version\n - Commit: `chore: release vX.Y.Z`\n - Tag: `vX.Y.Z`\n - Push branch + tag\n\n### GitHub workflow changes\n- Trigger: `on: push: tags: 'v*'`\n- Remove: version calculation, post-publish bump\n- Keep: build, lint, package, publish, create release","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-28T17:28:03.814546-08:00","updated_at":"2025-11-29T17:35:03.199437-08:00","closed_at":"2025-11-29T17:35:03.199437-08:00","labels":["infra"]} +{"id":"vsbeads-94s","title":"Change to a better icon for Beads in the side panel","description":"The current icon in the VS Code activity bar/side panel could be improved. Find or create a more distinctive icon that better represents Beads.","status":"open","priority":3,"issue_type":"task","estimated_minutes":90,"created_at":"2025-11-27T02:15:50.331234-08:00","updated_at":"2025-12-04T11:59:35.93427-08:00","labels":["ui"]} +{"id":"vsbeads-9cp","title":"Configurable columns: reorder, type icons, user preferences","description":"Add configuration and customization options for the Issues table columns:\n\n**Column Configuration:**\n- Reorder columns via drag-and-drop or settings\n- Show/hide specific columns\n- User preferences persisted\n\n**Type Icons:**\n- Add icons for issue types (bug, feature, task, epic, chore)\n- Use in type column and dependency badges (Depends On / Blocks sections)\n- Color badges by type in dependency lists\n\n**Reference:** See vsbeads-jue for where type-based coloring is needed in dep badges.","design":"Options:\n- Drag-and-drop column reordering (complex)\n- Settings-based column order array (simpler)\n- Type icons: bug=🐛, feature=✨, task=☑️, epic=🎯, chore=🔧 (or codicons)","status":"open","priority":3,"issue_type":"feature","estimated_minutes":480,"created_at":"2025-11-27T01:39:27.294846-08:00","updated_at":"2025-12-04T11:59:37.42992-08:00","labels":["ui"]} +{"id":"vsbeads-ba5","title":"Extension should auto-start daemon when not running","description":"Extension failed to connect with error: \"Socket error: connect ENOENT /Users/jason/ws/jdillon/vscode-beads/.beads/bd.sock\"\n\nThe daemon wasn't running and the extension didn't auto-start it. Need to investigate why the auto-start mechanism failed.","design":"## Investigation Areas\n\n1. **Why didn't auto-start work?**\n - Check if startDaemon is being called on connection failure\n - Verify the retry/backoff logic in BeadsBackend\n - Check if there's a race condition or timeout issue\n\n2. **Potential improvements**\n - Add daemon status indicator to UI (statusbar or panel)\n - Add \"Restart Daemon\" command to command palette\n - Show daemon connection status per-project in multi-root workspaces\n - Better error messaging when daemon fails to start\n\n3. **Diagnostics needed**\n - View current daemon connections across all projects\n - Force restart capability\n - Daemon health/metrics visibility in extension","status":"open","priority":3,"issue_type":"bug","estimated_minutes":180,"created_at":"2025-11-29T02:34:16.15086-08:00","updated_at":"2025-12-04T11:59:29.224036-08:00","labels":["daemon"]} {"id":"vsbeads-bci","title":"Fix confusing dependency type handling and parent-child usage","description":"Dependency handling is confusing in multiple ways:\n\n**Problem 1: Directional confusion**\n- `blocks` relationship is the same whether viewed as \"depends on\" or \"blocks\"\n- UI shows \"Depends On\" and \"Blocks\" sections but both use `blocks` type\n- Not clear to users that these are the same underlying relationship\n\n**Problem 2: Not using parent-child for epics**\n- We have epics (e.g., vsbeads-5c0) with child tasks\n- But agent creates them with `blocks` dependencies, not `parent-child`\n- Should epics use `parent-child` type? What's the semantic difference?\n\n**Problem 3: Unclear when to use each type**\n- `blocks` - hard blocker, affects ready queue\n- `related` - soft link, context only\n- `parent-child` - epic/subtask hierarchy\n- `discovered-from` - work found during other work\n\nWhen should agent use parent-child vs blocks vs discovered-from?\n\n**Potential fixes:**\n1. Add dependency graph visualization showing relationships clearly\n2. Update CLAUDE.md/agent instructions on when to use each type\n3. Clarify UI labels (maybe show relationship type, not just direction)\n4. Consider migrating existing epic→task relationships to parent-child","design":"## Correct Usage (from beads docs)\n\n**`blocks`** - Hard blocker between independent issues\n- \"Task A blocks Task B\" = B can't start until A is done\n- Both directions affect ready queue\n\n**`parent-child`** - Epic/subtask hierarchy\n- `bd dep add EPIC_ID TASK_ID --type parent-child`\n- Epic is parent, tasks are children\n- Special behaviors:\n - `bd epic status` shows progress/completion %\n - `bd epic close-eligible` auto-closes complete epics\n - Children blocked if parent is blocked\n- **We should use this for epics, not `blocks`!**\n\n**`related`** - Soft link for context\n- Doesn't affect ready queue\n- Just for reference/navigation\n\n**`discovered-from`** - Work discovered during other work\n- Tracks \"yak shaving\" chains\n- `bd dep tree --reverse` shows discovery tree\n\n## Current Problem\n\nAgent creates epic relationships with `blocks` but should use `parent-child`:\n```bash\n# Wrong (what we do now):\nbd dep add vsbeads-5c0 vsbeads-yjr --type blocks\n\n# Right (what we should do):\nbd dep add vsbeads-5c0 vsbeads-yjr --type parent-child\n```\n\n## Fixes Needed\n\n1. Update CLAUDE.md with dependency type guidance\n2. Fix vscode-beads MCP tools to support `--type` parameter\n3. Consider graph view showing relationship types with different edge styles","notes":"## Upstream Bug: `bd show` mislabels dependency types\n\nFrom `sandbox/bd-show-display-bug.md`:\n\n**Bug:** `bd show` displays ALL dependencies under \"Blocks\" header, regardless of actual type.\n\n```\n$ bd show platform-wue\n\nBlocks (10): # WRONG - these are parent-child!\n ← platform-1pi: ...\n```\n\n**Actual data in beads.jsonl:**\n```json\n{\"issue_id\":\"platform-1pi\",\"depends_on_id\":\"platform-wue\",\"type\":\"parent-child\",...}\n```\n\n**Expected:**\n```\nChildren (10):\n ← platform-1pi: ...\n```\n\n## Impact on vscode-beads\n\nThe `--json` output should include `dependency_type` field. We can:\n1. Use `dependency_type` from JSON to display correctly in UI\n2. Group by type: \"Children\", \"Blocks\", \"Related\", \"Discovered From\"\n3. Different visual styling per type (icons, colors)\n\n## Action Items\n\n1. **Upstream:** File bug/PR for `bd show` to respect dependency type in display\n2. **vscode-beads:** Use `dependency_type` from daemon API to display correctly\n3. **vscode-beads:** Show relationship type in UI (badge, icon, or section header)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-29T02:42:42.366247-08:00","updated_at":"2025-11-29T13:07:18.994989-08:00","closed_at":"2025-11-29T13:07:18.994989-08:00","labels":["dx","ui"]} -{"id":"vsbeads-btf","title":"Scroll to latest comment when adding a comment in Details view","description":"When adding a comment in the Details panel, the view should auto-scroll to show the newly added comment at the bottom. Initial implementation attempts didn't work due to webview scroll container complexity.","status":"open","priority":4,"issue_type":"feature","created_at":"2025-11-27T20:45:35.746701-08:00","updated_at":"2025-11-27T20:45:35.746701-08:00","labels":["ui"]} +{"id":"vsbeads-bcu","title":"Test bead for labels overflow","description":"Testing label display and overflow behaviordfsfs","status":"open","priority":3,"issue_type":"task","estimated_minutes":0,"created_at":"2025-12-01T15:32:16.718649-08:00","updated_at":"2025-12-04T11:59:22.270468-08:00","labels":["E","a","b","c","d"]} +{"id":"vsbeads-btf","title":"Scroll to latest comment when adding a comment in Details view","description":"When adding a comment in the Details panel, the view should auto-scroll to show the newly added comment at the bottom. Initial implementation attempts didn't work due to webview scroll container complexity.","status":"open","priority":4,"issue_type":"feature","estimated_minutes":45,"created_at":"2025-11-27T20:45:35.746701-08:00","updated_at":"2025-12-04T12:00:18.508148-08:00","labels":["ui"],"comments":[{"id":23,"issue_id":"vsbeads-btf","author":"jason","text":"turns out this is kinda hard, or was for claude to get correct.","created_at":"2025-12-02T00:38:50Z"}]} {"id":"vsbeads-c46","title":"Bug: Unable to add comment to issue (or comment doesn't show up)","description":"Adding a comment via the Details panel doesn't work or the comment doesn't appear after adding.\n\nNeed to investigate:\n- Is the message being sent to extension?\n- Is the bd CLI being called correctly?\n- Is the view refreshing after add?\n\nLocation: `src/webview/views/DetailsView.tsx` (add comment UI) and `src/providers/BeadDetailsViewProvider.ts` (handler)","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-27T19:12:55.728488-08:00","updated_at":"2025-11-27T20:44:36.179784-08:00","closed_at":"2025-11-27T20:44:36.179784-08:00","comments":[{"id":8,"issue_id":"vsbeads-c46","author":"jason","text":"test","created_at":"2025-11-28T03:50:08Z"}]} -{"id":"vsbeads-cqi","title":"Redesign UI: sidebar for navigation, editor panels for views","description":"Move Kanban, Dependency Graph, and Details to WebviewPanel (editor tabs). Keep project selector and issue list in sidebar.","status":"open","priority":2,"issue_type":"feature","created_at":"2025-11-26T15:59:20.263974-08:00","updated_at":"2025-11-26T23:11:39.605734-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-cqi","depends_on_id":"vsbeads-92t","type":"blocks","created_at":"2025-11-26T15:59:26.155171-08:00","created_by":"daemon"}]} +{"id":"vsbeads-cp3","title":"Replace native select menu in saved filter selector with styled dropdown","description":"The saved filter preset selector in the Issues panel uses a native `\u003cselect\u003e` element which renders with the OS native menu. This is inconsistent with the styled ColoredSelect dropdowns used elsewhere.\n\nShould use ColoredSelect or a similar custom dropdown component for visual consistency.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-30T13:49:12.24872-08:00","updated_at":"2025-12-01T16:11:51.517045-08:00","closed_at":"2025-12-01T16:11:51.517045-08:00","labels":["ui"]} +{"id":"vsbeads-cqi","title":"Redesign UI: sidebar for navigation, editor panels for views","description":"Move Kanban, Dependency Graph, and Details to WebviewPanel (editor tabs). Keep project selector and issue list in sidebar.","status":"open","priority":2,"issue_type":"feature","estimated_minutes":960,"created_at":"2025-11-26T15:59:20.263974-08:00","updated_at":"2025-12-04T11:58:59.107775-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-cqi","depends_on_id":"vsbeads-92t","type":"blocks","created_at":"2025-11-26T15:59:26.155171-08:00","created_by":"daemon"}]} {"id":"vsbeads-cy5","title":"Setup GitHub Action for PR CI (lint, test, build)","description":"Add GitHub Action workflow to run on PRs to main branch. Should run lint, tests (once we have them), and verify build succeeds.","design":"`.github/workflows/ci.yml`\n- Trigger: pull_request to main\n- Steps: checkout, setup bun, install, lint, test, compile\n- Note: No tests exist yet - add placeholder or skip until tests added","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-26T18:39:27.003903-08:00","updated_at":"2025-11-27T20:56:11.148364-08:00","closed_at":"2025-11-27T20:56:11.148364-08:00"} +{"id":"vsbeads-d8u","title":"Replace native project dropdown with custom menu showing daemon status","description":"The project selector currently uses a native `\u003cselect\u003e` element, which limits styling.\n\nReplace with a custom dropdown menu that:\n1. Shows daemon status icon (●/○) next to each project in the dropdown list\n2. Allows consistent styling with the rest of the UI\n3. Can show additional project info (path tooltip, etc.)\n\nCurrent: Native select with status dot shown separately\nDesired: Custom dropdown with status icon integrated per-project option","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-12-02T23:20:13.569524-08:00","updated_at":"2025-12-02T23:43:37.764288-08:00","closed_at":"2025-12-02T23:43:37.764288-08:00","labels":["ui","ux"]} +{"id":"vsbeads-drg","title":"Document branch naming convention in CLAUDE.md","description":"Add branch naming strategy to CLAUDE.md:\n\nFormat: `beads/\u003cbead-id\u003e-\u003cterse-description\u003e`\n\nExamples:\n- `beads/vsbeads-93b-release-workflow`\n- `beads/vsbeads-xyz-fix-daemon-polling`\n\nThis ties branches to tracked work and makes it easy to find related issues.","status":"open","priority":4,"issue_type":"task","estimated_minutes":30,"created_at":"2025-11-29T16:47:10.870444-08:00","updated_at":"2025-12-04T12:00:16.819609-08:00","labels":["dx"]} {"id":"vsbeads-dso","title":"Setup VS Code Marketplace publisher account","description":"Create Azure DevOps org, get PAT, create planet57 publisher, configure for publishing. See sandbox/PUBLISHING.md for steps.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-26T18:39:27.189685-08:00","updated_at":"2025-11-27T20:56:48.666442-08:00","closed_at":"2025-11-27T20:56:48.666442-08:00"} +{"id":"vsbeads-e36","title":"Add icons to view contributions","description":"VS Code warns about missing `icon` property on view contributions in package.json.\n\nIcons are used when views are dragged to Activity Bar or title can't be shown.\n\nViews needing icons:\n- beadsDashboard\n- beadsPanel (Issues)\n- beadsDetails\n\nOptions:\n- Use same beads-icon.svg for all (quick fix)\n- Create distinct icons per view (better UX)\n\nDecide on iconography style before implementing.","status":"open","priority":4,"issue_type":"task","estimated_minutes":60,"created_at":"2025-11-29T17:41:35.403094-08:00","updated_at":"2025-12-04T12:00:15.568122-08:00","labels":["ui"]} +{"id":"vsbeads-ebs","title":"Add comment count column to Issues list","description":"Add a synthetic column showing comment count per bead, hidden by default.\n\nUse case: Sort/filter by activity level - beads with more comments often indicate complexity or ongoing discussion.\n\nImplementation notes:\n- Column disabled by default (like Assignee/Estimate)\n- Would need comment count in list data (currently only fetched in Details view)\n- Consider if daemon API supports count without fetching full comments","status":"open","priority":4,"issue_type":"feature","estimated_minutes":90,"created_at":"2025-12-01T17:18:34.567726-08:00","updated_at":"2025-12-04T12:00:13.1052-08:00","labels":["ui"]} +{"id":"vsbeads-eeg","title":"Filter count overlay not fixed to bottom-right of issues list","description":"The \"42 of 75\" filter count overlay in the Issues list should be fixed to the bottom-right corner of the table container, but currently it only appears in the correct position when scrollbars are at their starting positions.\n\nWhen scrolling horizontally or vertically, the overlay moves with the content instead of staying pinned to the viewport corner of the container.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-30T14:04:28.644697-08:00","updated_at":"2025-11-30T14:07:31.186018-08:00","closed_at":"2025-11-30T14:07:31.186018-08:00","labels":["ui"]} +{"id":"vsbeads-efp","title":"Normalize typography across dropdown menus","description":"Font sizes and weights appear slightly inconsistent across different dropdown menus (preset dropdown, filter menu, column menu). Should audit and normalize typography to be consistent.","status":"open","priority":3,"issue_type":"bug","estimated_minutes":90,"created_at":"2025-12-01T16:11:51.469647-08:00","updated_at":"2025-12-04T11:59:06.810638-08:00","labels":["ui"]} {"id":"vsbeads-ejn","title":"Research: Better beads workflow to avoid PR/branch conflicts","description":"Beads conflates PR/branch workflows with issue tracker changes, causing beads created in feature branches to be auto-deleted when PRs merge.\n\n**Problem:**\n- Beads created in feature branch get committed with code\n- PR merges bring beads into main via git\n- `bd sync --from-main` runs and treats these as \"foreign\" entries\n- git-history-backfill incorrectly deletes them as \"pruned from manifest\"\n\n**Analysis:** See `tmp/beads-deletion-analysis.md`\n**Full discussion:** See `tmp/session-subagent-discussion.jsonl`\n\n**Potential Solutions to Research:**\n\n1. **Protected branch support** - beads has this feature, unclear if it helps\n - Does it prevent sync from touching certain branches?\n - Can it isolate beads changes from code changes?\n\n2. **Dedicated beads branch** - worktree with separate branch just for .beads/\n - Code stays on feature branches\n - Beads always committed to a single branch (e.g., `beads-main`)\n - Avoids merge conflicts between code PRs and beads state\n\n3. **Gitignore .beads/ in feature branches**\n - Only commit beads on main\n - Feature branches inherit but don't modify\n - Sync happens only on main\n\n4. **Submodule approach** - .beads/ as separate git repo\n - Complete isolation of issue tracker from code\n - More complex setup\n\n\u003e submodule is probably not great sub modules tie to revisions and the revision of this will be constantly changing.\n\n**Goal:** Find a workflow where:\n- Beads can be created/updated during feature work\n- PRs don't bring stale/conflicting beads state\n- No accidental deletions via sync","design":"## Research Findings\n\n### Question: Is it by design that all branches carry beads changes?\n\n**Answer: NO - this is incidental and problematic, not by design.**\n\n### Evidence from GitHub Issues\n\n1. **Issue #207 (Using beads with PRs)** - Steve Yegge (Nov 4): \"We're taking a serious look at offering a multi-repo solution, where beads uses separate repos\"\n\n2. **Issue #195 (.beads as worktree on orphan branch)** - Steve Yegge (Nov 4): Rejected worktree approach as \"too git-centric\", pursuing separate repository option instead for:\n - Clean separation of issue tracking from code history\n - Platform-agnostic approach (VCS-independent)\n - Better monorepo/multi-project support\n\n3. **Issue #158 (Merge conflicts)** - Extensive discussion about multi-agent conflicts, led to improved 3-way merging in v0.24.1+\n\n### Currently Supported Solutions\n\n1. **Protected Branch Workflow** (`bd init --branch beads-metadata`):\n - Beads commits to separate branch via git worktrees\n - Code stays on feature branches\n - Periodically merge beads-metadata → main via PR\n - See: docs/PROTECTED_BRANCHES.md\n\n2. **Contributor Workflow** (`bd init --contributor`):\n - For OSS contributors\n - Issues stored in `~/.beads-planning` (separate local repo)\n - Never pollutes upstream PRs\n\n### Our Specific Bug\n\nThe `git-history-backfill` deleting beads from PRs appears to be a **bug**, not intended behavior:\n- Expected: Beads in git history should be **recovered** (added to local DB)\n- Actual: Beads are **deleted** as \"pruned from manifest\"\n\n### Recommendation\n\nTry protected branch workflow:\n```bash\nbd config set sync.branch beads-metadata\nbd daemon restart\n```\n\nConsider filing bug report for git-history-backfill behavior.","notes":"## Decision (2025-11-28)\n\n**Strategy:** Try protected branch workflow now, wait for upstream multi-repo solution.\n\n## Experiment on forge (2025-11-28)\n\nTested `bd config set sync.branch beads-metadata` with `--auto-commit --auto-push`:\n\n**What works:**\n- ✅ Beads commits go to `beads-metadata` branch (via worktree)\n- ✅ Auto-push to `origin/beads-metadata` works\n- ✅ `main` branch stays untouched (no new commits)\n\n**Issues found:**\n- ❌ Working tree still shows `.beads/beads.jsonl` modified (tracked on main)\n - Fix: untrack from main with `git rm --cached`\n- ❌ `beads-metadata` is NOT an orphan branch - it's a snapshot of main at config time\n - Contains full code tree + history\n - Designed for merge workflow, not true isolation\n - For \"never merge\" approach, this is wasteful/messy\n\n**Branch structure:**\n```\nmain ─────────────────────────────────► (gets beads.jsonl changes in working tree)\n \\\n └─ beads-metadata ──────────► (beads commits here, has full code copy)\n```\n\n**What we'd want (orphan):**\n```\nmain ──────────────────► (code only)\nbeads-metadata (orphan) ──────────────► (beads only, no shared history)\n```\n\nIssue #195 proposed orphan approach but Steve rejected as \"too git-centric\" - pursuing separate repo instead.\n\n**Status:** Experiment complete, need to decide:\n1. Live with non-orphan branch (functional but messy)\n2. DIY orphan branch (unsupported)\n3. Wait for upstream multi-repo\n\n## Implementation (2025-11-29)\n\nSuccessfully migrated vscode-beads to protected branch workflow:\n- Untracked beads.jsonl/deletions.jsonl from main\n- Set sync.branch = beads-metadata\n- Daemon runs with --auto-commit --auto-push\n- Updated docs/development.md with setup instructions\n\n## Known Issue: beads.jsonl vs issues.jsonl confusion\n\nThere's upstream inconsistency about whether the JSONL file should be named `beads.jsonl` or `issues.jsonl`. Got conflicting answers from maintainers. Leaving as-is until upstream clarifies the canonical naming.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-28T22:03:57.82966-08:00","updated_at":"2025-11-29T14:14:15.314712-08:00","closed_at":"2025-11-29T14:14:15.314712-08:00","labels":["infra"],"dependencies":[{"issue_id":"vsbeads-ejn","depends_on_id":"vsbeads-hw7","type":"related","created_at":"2025-11-28T22:04:03.147893-08:00","created_by":"daemon"}]} -{"id":"vsbeads-fwp","title":"Improvement: Colored dropdowns in edit mode for type/status/priority","description":"In DetailsView edit mode, the type/status/priority dropdowns are plain text. They should show colored versions matching how they appear elsewhere:\n- Either as chips (like view mode)\n- Or as colored badges (like filter panel)\n\nThis improves visual consistency and makes it easier to identify options at a glance.\n\nLocation: `src/webview/views/DetailsView.tsx` lines 188-227","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-27T19:01:47.152941-08:00","updated_at":"2025-11-27T19:01:47.152941-08:00","labels":["ui"]} +{"id":"vsbeads-fwp","title":"Improvement: Colored dropdowns in edit mode for type/status/priority","description":"In DetailsView edit mode, the type/status/priority dropdowns are plain text. They should show colored versions matching how they appear elsewhere.\n\n## Requirements\n\n### Part 1: Colored dropdowns in edit mode\nApply filter-chip style (colored left border) to the select elements in edit mode. This matches the existing pattern used in the Issues list filter bar.\n\nCurrent location: `src/webview/views/DetailsView.tsx` lines 246-286\n\n### Part 2: Inline editing from view mode\nAdd ability to edit type/status/priority directly from the view page without entering full edit mode:\n- Option A: Click on badge to open dropdown menu\n- Option B: Right-click context menu on badge\n- Option C: Click badge → transforms to select → auto-saves\n\nDecision pending after Part 1 implementation.\n\n## Implementation Notes\n- Filter chips use: `border-left: 3px solid var(--chip-accent-color)` \n- Status colors: `STATUS_COLORS` in `types.ts`\n- Priority colors: `PRIORITY_COLORS` in `types.ts`\n- Type colors: CSS classes `.type-bug`, `.type-feature`, etc.\n\n## Testing\nUse code-server + Chrome DevTools MCP for testing (see `docs/code-server-testing.md`).","design":"## Part 1: Colored dropdowns in edit mode\n- Add `TYPE_COLORS` and `TYPE_TEXT_COLORS` constants to `types.ts` (extract from CSS)\n- Apply filter-chip style (colored left border) to select elements\n- Use inline style with CSS variable for color\n\n## Part 2: Inline editing from view mode\n- **Auto-save**: Yes, changes save immediately (no confirmation)\n- **Visual affordance**: None initially (test without hover effects)\n- **Scope**: type/status/priority only (labels/assignee later)\n- **Interaction**: Click badge → dropdown menu → select → auto-save\n\n## Prep for vsbeads-wk9\nNormalize all color constants (STATUS_COLORS, PRIORITY_COLORS, TYPE_COLORS) to same structure for future configurability.","notes":"## Progress\n\n### Part 1: Colored dropdowns in edit mode ✅\n- PR #21 opened\n- Added `ColoredSelect` component\n- Added `TYPE_COLORS`, `TYPE_TEXT_COLORS`, `TYPE_LABELS` to types.ts\n- Trigger uses filter-chip style (colored left border)\n- Dropdown menu shows full colored badges\n\n### Part 2: Inline editing from view mode\n- Next up: click badge in view mode → dropdown → auto-save","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-27T19:01:47.152941-08:00","updated_at":"2025-11-30T17:32:31.442482-08:00","closed_at":"2025-11-30T17:32:31.442482-08:00","labels":["ui"]} {"id":"vsbeads-fyn","title":"Add copy ID action to issues list rows","description":"Currently copying a bead ID requires clicking a row to open details, then clicking the ID badge. Add a way to copy the ID directly from the list without navigating away.\n\nOptions:\n- Click on ID column copies to clipboard\n- Right-click context menu with \"Copy ID\"\n- Small copy icon on hover","design":"Click on ID span in issues list row copies to clipboard. Row selection still happens (no propagation stop). Add cursor pointer and title tooltip on ID span. Show brief visual feedback on copy.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-27T01:36:42.479739-08:00","updated_at":"2025-11-28T16:53:09.00156-08:00","closed_at":"2025-11-28T16:53:09.00156-08:00"} -{"id":"vsbeads-gr5","title":"Filter presets/favorites system for Issues panel","description":"Currently filtering requires manually adding multiple filters (e.g., Open + In Progress + Blocked to exclude Closed). Need a better UX for common filter combinations.","design":"**Options considered:**\n\n1. **Preset filters** - Built-in presets like \"Not Closed\", \"Active Work\"\n - Simple UX, covers common cases\n - Limited flexibility\n\n2. **Negated filters** - Click to toggle +/- on any filter\n - Full flexibility\n - More complex UX, needs visual indicator\n\n3. **Default filter** - Start with a filter applied (e.g., \"Not Closed\")\n - Good for most common use case\n - User can clear if needed\n\n**Recommended approach:**\nCombination of 1 + 3: Filter \"favorites\" dropdown that preconfigures filter sets.\n- Start with static built-in favorites: \"Not Closed\", \"Active\" (in_progress + blocked), \"All\"\n- Future: Allow saving custom filter sets as favorites\n- Default to \"Not Closed\" on load","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-26T23:34:31.877133-08:00","updated_at":"2025-11-26T23:34:31.877133-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-gr5","depends_on_id":"vsbeads-34v","type":"parent-child","created_at":"2025-11-26T23:34:39.784152-08:00","created_by":"daemon"}]} -{"id":"vsbeads-gsb","title":"Support secondary sort in issues table","description":"Add multi-column sorting to the issues table.\n\nPossible approaches:\n- Shift+click for secondary sort (common pattern)\n- Always use a default secondary sort (e.g., Updated as tiebreaker)\n- Configurable sort order via settings","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-27T13:04:59.70662-08:00","updated_at":"2025-11-27T13:04:59.70662-08:00","labels":["ui"]} -{"id":"vsbeads-hgm","title":"Test sub-agent context isolation","description":"After creating browser-task agent, test that:\n\n1. MCP response bloat stays in sub-agent context\n2. Only summary returns to main agent\n3. Measure context savings vs direct MCP calls\n\n**Test workflow:**\n- Invoke browser-task to reload code-server window\n- Check main context size before/after\n- Compare to doing reload directly with MCP","status":"open","priority":1,"issue_type":"task","created_at":"2025-11-28T21:52:30.146368-08:00","updated_at":"2025-11-28T21:52:30.146368-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-hgm","depends_on_id":"vsbeads-yjr","type":"blocks","created_at":"2025-11-28T21:52:30.148724-08:00","created_by":"daemon"},{"issue_id":"vsbeads-hgm","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:42.044495-08:00","created_by":"daemon"}]} -{"id":"vsbeads-hjx","title":"Filter toggle button feels broken when filters are active","description":"When the filter panel is open and filters are active (icon is green), clicking the filter toggle button doesn't do anything. This feels broken.\n\nPossible solutions:\n- Toggle could hide/show the panel without clearing filters\n- Some other UX pattern\n\nNeed to determine the right behavior.","status":"open","priority":4,"issue_type":"bug","created_at":"2025-11-27T02:27:29.005135-08:00","updated_at":"2025-11-27T02:27:29.005135-08:00","labels":["ui"]} -{"id":"vsbeads-hw7","title":"Investigate: beads auto-deleted via git-history-backfill","description":"Several beads created on 2025-11-28 were automatically deleted at 23:54:29 via `git-history-backfill` with reason \"recovered from git history (pruned from manifest)\".\n\n**Affected beads:**\n- vsbeads-ded (epic)\n- vsbeads-b80, vsbeads-csu, vsbeads-8q3, vsbeads-jpc (tasks)\n- vsbeads-b0e, vsbeads-xtn, vsbeads-cau, vsbeads-c04, vsbeads-e4j, vsbeads-92s\n\n**Investigation needed:**\n1. What triggered git-history-backfill?\n2. Was there a git checkout/reset/merge that reverted .beads files?\n3. Check git reflog for what happened around that time\n4. Review bd sync behavior - should it delete beads not in git history?\n\n**Session file for reference:** `tmp/session-subagent-discussion.jsonl`","status":"open","priority":2,"issue_type":"bug","created_at":"2025-11-28T21:51:58.272122-08:00","updated_at":"2025-11-28T21:51:58.272122-08:00","labels":["infra"]} -{"id":"vsbeads-ipb","title":"Show time in addition to date for timestamps in Details view","description":"Created/Updated/Closed timestamps in Details view currently only show date (toLocaleDateString). Should also show time for better context.\n\nLocation: `src/webview/views/DetailsView.tsx` (details-meta section)","status":"open","priority":4,"issue_type":"feature","created_at":"2025-11-27T20:49:34.095573-08:00","updated_at":"2025-11-27T20:49:34.095573-08:00","labels":["ui"]} -{"id":"vsbeads-jb7","title":"Allow opening issue detail in editor panel","description":"Add option to open an issue's full detail view in an editor panel (tab) instead of just the sidebar Details panel. This allows viewing/editing while keeping sidebar free, and the view doesn't change when selecting different issues in the list.","design":"- Double-click or context menu \"Open in Editor\" on issue row\n- Opens `vscode.window.createWebviewPanel()` in editor area\n- Panel is independent - doesn't sync with sidebar selection\n- Can have multiple issue tabs open\n- Full editing support\n- Title shows issue ID","status":"open","priority":2,"issue_type":"feature","created_at":"2025-11-26T18:39:34.504524-08:00","updated_at":"2025-11-26T23:11:39.604108-08:00","labels":["ui"]} +{"id":"vsbeads-gr5","title":"Filter presets/favorites system for Issues panel","description":"Currently filtering requires manually adding multiple filters (e.g., Open + In Progress + Blocked to exclude Closed). Need a better UX for common filter combinations.","design":"**Options considered:**\n\n1. **Preset filters** - Built-in presets like \"Not Closed\", \"Active Work\"\n - Simple UX, covers common cases\n - Limited flexibility\n\n2. **Negated filters** - Click to toggle +/- on any filter\n - Full flexibility\n - More complex UX, needs visual indicator\n\n3. **Default filter** - Start with a filter applied (e.g., \"Not Closed\")\n - Good for most common use case\n - User can clear if needed\n\n**Recommended approach:**\nCombination of 1 + 3: Filter \"favorites\" dropdown that preconfigures filter sets.\n- Start with static built-in favorites: \"Not Closed\", \"Active\" (in_progress + blocked), \"All\"\n- Future: Allow saving custom filter sets as favorites\n- Default to \"Not Closed\" on load","status":"open","priority":3,"issue_type":"feature","estimated_minutes":300,"created_at":"2025-11-26T23:34:31.877133-08:00","updated_at":"2025-12-04T11:59:38.532327-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-gr5","depends_on_id":"vsbeads-34v","type":"parent-child","created_at":"2025-11-26T23:34:39.784152-08:00","created_by":"daemon"}]} +{"id":"vsbeads-gsb","title":"Support secondary sort in issues table","description":"Add multi-column sorting to the issues table.\n\nPossible approaches:\n- Shift+click for secondary sort (common pattern)\n- Always use a default secondary sort (e.g., Updated as tiebreaker)\n- Configurable sort order via settings","status":"open","priority":3,"issue_type":"feature","estimated_minutes":150,"created_at":"2025-11-27T13:04:59.70662-08:00","updated_at":"2025-12-04T11:59:34.886598-08:00","labels":["ui"]} +{"id":"vsbeads-hgm","title":"Test sub-agent context isolation","description":"After creating browser-task agent, test that:\n\n1. MCP response bloat stays in sub-agent context\n2. Only summary returns to main agent\n3. Measure context savings vs direct MCP calls\n\n**Test workflow:**\n- Invoke browser-task to reload code-server window\n- Check main context size before/after\n- Compare to doing reload directly with MCP","status":"open","priority":1,"issue_type":"task","estimated_minutes":90,"created_at":"2025-11-28T21:52:30.146368-08:00","updated_at":"2025-12-04T11:58:43.57841-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-hgm","depends_on_id":"vsbeads-yjr","type":"blocks","created_at":"2025-11-28T21:52:30.148724-08:00","created_by":"daemon"},{"issue_id":"vsbeads-hgm","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:42.044495-08:00","created_by":"daemon"}]} +{"id":"vsbeads-hjx","title":"Filter toggle button feels broken when filters are active","description":"When the filter panel is open and filters are active (icon is green), clicking the filter toggle button doesn't do anything. This feels broken.\n\nPossible solutions:\n- Toggle could hide/show the panel without clearing filters\n- Some other UX pattern\n\nNeed to determine the right behavior.","status":"open","priority":4,"issue_type":"bug","estimated_minutes":90,"created_at":"2025-11-27T02:27:29.005135-08:00","updated_at":"2025-12-04T12:00:20.708765-08:00","labels":["ui"]} +{"id":"vsbeads-hw7","title":"Investigate: beads auto-deleted via git-history-backfill","description":"Several beads created on 2025-11-28 were automatically deleted at 23:54:29 via `git-history-backfill` with reason \"recovered from git history (pruned from manifest)\".\n\n**Affected beads:**\n- vsbeads-ded (epic)\n- vsbeads-b80, vsbeads-csu, vsbeads-8q3, vsbeads-jpc (tasks)\n- vsbeads-b0e, vsbeads-xtn, vsbeads-cau, vsbeads-c04, vsbeads-e4j, vsbeads-92s\n\n**Investigation needed:**\n1. What triggered git-history-backfill?\n2. Was there a git checkout/reset/merge that reverted .beads files?\n3. Check git reflog for what happened around that time\n4. Review bd sync behavior - should it delete beads not in git history?\n\n**Session file for reference:** `tmp/session-subagent-discussion.jsonl`","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-28T21:51:58.272122-08:00","updated_at":"2025-12-01T16:25:56.160078-08:00","closed_at":"2025-12-01T16:25:56.160078-08:00","labels":["infra"]} +{"id":"vsbeads-ipb","title":"Show time in addition to date for timestamps in Details view","description":"Created/Updated/Closed timestamps in Details view currently only show date (toLocaleDateString). Should also show time for better context.\n\nLocation: `src/webview/views/DetailsView.tsx` (details-meta section)","status":"open","priority":4,"issue_type":"feature","estimated_minutes":45,"created_at":"2025-11-27T20:49:34.095573-08:00","updated_at":"2025-12-04T12:00:17.811951-08:00","labels":["ui"]} +{"id":"vsbeads-iur","title":"Show labels in Details panel child bead references","description":"Child bead references in the Details panel dependencies section should display labels (like they do in the Issues list).","status":"open","priority":3,"issue_type":"feature","estimated_minutes":60,"created_at":"2025-11-30T00:34:09.763359-08:00","updated_at":"2025-12-04T11:59:25.787945-08:00","labels":["ui"]} +{"id":"vsbeads-iyn","title":"Daemons management view","description":"Add a dedicated daemons view panel showing all workspace daemons with detailed status and management options.\n\n**Potential features:**\n- List all beads projects with daemon status\n- Start/Stop/Restart buttons per daemon\n- Health indicators (DB status, uptime, last activity)\n- Log viewer integration\n- Auto-refresh status\n\nLower priority since status bar + quick pick menu covers basic needs.","status":"open","priority":3,"issue_type":"feature","estimated_minutes":420,"created_at":"2025-12-03T00:13:55.94898-08:00","updated_at":"2025-12-04T11:59:01.921198-08:00","labels":["daemon","ui"]} +{"id":"vsbeads-izh","title":"Show date+time in Updated/Created columns when wide enough","description":"Currently Updated/Created columns always show date only (e.g., \"12/1/2025\"). When the column is resized wider, should show date + time (e.g., \"12/1/2025 4:15 PM\").\n\nImplementation:\n- Check column width from state\n- If width \u003e threshold (e.g., 120px), use `toLocaleString()` instead of `toLocaleDateString()`\n- Could also show relative time (\"2h ago\") for very narrow columns","status":"open","priority":3,"issue_type":"feature","estimated_minutes":60,"created_at":"2025-12-01T16:16:37.968279-08:00","updated_at":"2025-12-04T11:59:05.666368-08:00","labels":["ui"]} +{"id":"vsbeads-jb7","title":"Allow opening issue detail in editor panel","description":"Add option to open an issue's full detail view in an editor panel (tab) instead of just the sidebar Details panel. This allows viewing/editing while keeping sidebar free, and the view doesn't change when selecting different issues in the list.","design":"- Double-click or context menu \"Open in Editor\" on issue row\n- Opens `vscode.window.createWebviewPanel()` in editor area\n- Panel is independent - doesn't sync with sidebar selection\n- Can have multiple issue tabs open\n- Full editing support\n- Title shows issue ID","status":"open","priority":2,"issue_type":"feature","estimated_minutes":300,"created_at":"2025-11-26T18:39:34.504524-08:00","updated_at":"2025-12-04T11:58:56.508839-08:00","labels":["ui"]} {"id":"vsbeads-jru","title":"Add copy ID button to Details panel title bar","description":"Added copy button to Details panel VS Code title bar. Also normalized all copy feedback to use VS Code status bar messages (2s auto-dismiss) instead of yellow toast popups.\n\n**Changes:**\n- `package.json`: Added `beads.copyBeadId` command with conditional visibility (`when` clause)\n- `extension.ts`: Command handler using `setStatusBarMessage`\n- `BeadDetailsViewProvider.ts`: `getCurrentBeadId()` getter, context key management, `copyBeadId` message handler\n- `DetailsView.tsx`: Added `onCopyId` prop, uses message passing instead of toast\n- `types.ts`: Added `copyBeadId` message type\n\nButton only shows when a bead is selected.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-27T18:31:28.983608-08:00","updated_at":"2025-11-27T18:43:41.736313-08:00","closed_at":"2025-11-27T18:43:41.736313-08:00"} {"id":"vsbeads-jue","title":"Show dependents in BeadDetails view","description":"BeadDetails only shows \"Depends On\" (issues this bead depends on). Need to also show \"Dependents\" (issues that depend on this bead) to see the full relationship graph.\n\nCurrently the MCP show command returns both `dependencies` and `dependents`, but only dependencies are displayed in the UI.","design":"1. Update `Bead` type in types.ts to include `dependents?: string[]`\n2. Ensure backend passes through dependents from bd show\n3. Add \"Dependents\" section to BeadDetails.tsx (similar to \"Depends On\")\n4. Make dependent badges clickable to navigate to that issue","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-27T01:00:57.071592-08:00","updated_at":"2025-11-27T19:15:58.191577-08:00","closed_at":"2025-11-27T19:15:58.191577-08:00","dependencies":[{"issue_id":"vsbeads-jue","depends_on_id":"vsbeads-gr5","type":"related","created_at":"2025-11-27T01:01:56.807728-08:00","created_by":"daemon"}]} {"id":"vsbeads-k3d","title":"test","description":"test","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-11-27T19:00:03.991806-08:00","updated_at":"2025-11-27T20:44:36.231963-08:00","closed_at":"2025-11-27T20:44:36.231963-08:00","comments":[{"id":3,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T03:27:34Z"},{"id":4,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T03:27:47Z"},{"id":7,"issue_id":"vsbeads-k3d","author":"jason","text":"Test comment from bug investigation","created_at":"2025-11-28T03:46:44Z"},{"id":9,"issue_id":"vsbeads-k3d","author":"jason","text":"tst","created_at":"2025-11-28T03:51:07Z"},{"id":10,"issue_id":"vsbeads-k3d","author":"jason","text":"foo bar baz","created_at":"2025-11-28T03:52:00Z"},{"id":11,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T04:10:12Z"},{"id":12,"issue_id":"vsbeads-k3d","author":"jason","text":"Testing auto-scroll feature","created_at":"2025-11-28T04:15:27Z"},{"id":13,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T04:22:02Z"},{"id":14,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T04:22:27Z"},{"id":15,"issue_id":"vsbeads-k3d","author":"jason","text":"5es","created_at":"2025-11-28T04:24:20Z"},{"id":16,"issue_id":"vsbeads-k3d","author":"jason","text":"dfs","created_at":"2025-11-28T04:24:45Z"},{"id":17,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T04:26:07Z"},{"id":18,"issue_id":"vsbeads-k3d","author":"jason","text":"maybe?","created_at":"2025-11-28T04:33:19Z"},{"id":19,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T04:35:03Z"}]} -{"id":"vsbeads-kog","title":"Separate VS Code Marketplace content from README","description":"Currently README.md serves both as repo documentation and marketplace listing. Consider creating separate content for the marketplace (e.g., MARKETPLACE.md) to allow:\n- Marketplace-focused content for end users\n- README with development/contribution info for developers\n\nResearch vsce options for custom readme paths.","status":"open","priority":3,"issue_type":"task","created_at":"2025-11-29T14:07:09.085539-08:00","updated_at":"2025-11-29T14:07:09.085539-08:00","labels":["dx"]} -{"id":"vsbeads-l27","title":"Markdown rendering has excessive spacing around lists","description":"UL elements have too much padding/margin around them, and there appears to be forced spacing between LI elements despite CSS rules attempting to remove it. The markdown rendering should be more compact - simple lists should look similar to plain text with proper bullet formatting.","status":"open","priority":3,"issue_type":"bug","created_at":"2025-11-26T17:55:40.606838-08:00","updated_at":"2025-11-26T23:11:39.607882-08:00","labels":["ui"]} +{"id":"vsbeads-kog","title":"Separate VS Code Marketplace content from README","description":"Currently README.md serves both as repo documentation and marketplace listing. Consider creating separate content for the marketplace (e.g., MARKETPLACE.md) to allow:\n- Marketplace-focused content for end users\n- README with development/contribution info for developers\n\nResearch vsce options for custom readme paths.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-29T14:07:09.085539-08:00","updated_at":"2025-11-29T15:49:25.780981-08:00","closed_at":"2025-11-29T15:49:25.780981-08:00","labels":["dx"]} +{"id":"vsbeads-kz0","title":"Add more optional columns to Issues list (assignee, estimate, etc.)","description":"Users may want to see/sort by additional fields not currently exposed as columns:\n- Assignee\n- Estimate (if beads supports this)\n- External ref\n- Dependency count (blocked by / blocks)\n\nThese should be optional columns available via the column visibility menu (⋮).","notes":"Added Assignee and Estimate columns. Estimate column will show '-' for all beads since bd CLI doesn't expose --estimate flag for update. Field exists in schema (estimated_minutes) but not settable via current CLI.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-12-01T15:55:30.048853-08:00","updated_at":"2025-12-01T16:03:02.172879-08:00","closed_at":"2025-12-01T16:03:02.172879-08:00","labels":["ui"]} +{"id":"vsbeads-l27","title":"Markdown rendering has excessive spacing around lists","description":"UL elements have too much padding/margin around them, and there appears to be forced spacing between LI elements despite CSS rules attempting to remove it. The markdown rendering should be more compact - simple lists should look similar to plain text with proper bullet formatting.","status":"open","priority":3,"issue_type":"bug","estimated_minutes":60,"created_at":"2025-11-26T17:55:40.606838-08:00","updated_at":"2025-12-04T12:00:10.285316-08:00","labels":["ui"]} +{"id":"vsbeads-ly2","title":"Improve daemon status management and zombie daemon detection","description":"Comprehensive daemon status management improvements:\n\n**Issues Fixed:**\n1. Stale dropdown status after connect/disconnect\n2. No visual feedback when daemon disconnects\n3. Zombie daemon handling (process running but socket missing/unresponsive)\n4. No way to restart daemon from UI\n\n**Features Added:**\n- **Status bar item**: Shows daemon status (green=running, yellow=stopped, red=zombie)\n- **Click menu**: Start/Stop/Restart options, Show Logs\n- **Detailed status check**: Detects edge cases (no DB, stale PID, zombie state)\n- **Commands**: `beads.restartDaemon`, `beads.checkDaemonStatus`, `beads.showDaemonMenu`\n\n**Technical Changes:**\n- `getDaemonStatus()` - comprehensive status with DB/socket/PID/process/health checks\n- `restartDaemon()` - stop + start with cleanup pause\n- `startDaemonProcess()` - refactored, detects \"already running\" error\n- Status bar with ThemeColor backgrounds for visibility\n- Quick pick menu with context-aware options","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-03T00:03:06.507996-08:00","updated_at":"2025-12-03T00:18:16.246048-08:00","closed_at":"2025-12-03T00:18:16.246048-08:00","labels":["daemon","ui"]} {"id":"vsbeads-m0t","title":"Agent VS Code dev: next steps after research","description":"## Context\nResearch complete in `sandbox/agent-vscode-dev-research.md`. Ready to test and implement.\n\n## Immediate Next Step\n1. **Test Chrome DevTools MCP** (vsbeads-1k7)\n - Install: `claude mcp add chrome-devtools -- npx -y chrome-devtools-mcp@latest`\n - Restart Claude Code\n - Run test plan: navigate, click, snapshot, screenshot, console, evaluate_script\n - Key goal: verify console access works (painpoint for debugging)\n\n## If Chrome DevTools MCP works\n2. Create implementation beads from roadmap Phase 1:\n - Install code-server locally\n - Configure Chrome DevTools MCP for code-server\n - Test: open code-server, navigate, see console/errors\n - Install vscode-beads VSIX\n\n## If Chrome DevTools MCP fails\n- Fallback to Playwright MCP\n- May lose console access, need workaround\n\n## Reference\n- Research doc: `sandbox/agent-vscode-dev-research.md`\n- Epic: vsbeads-3cn\n- Research task: vsbeads-q6r","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-27T17:17:51.470823-08:00","updated_at":"2025-11-27T19:17:07.693297-08:00","closed_at":"2025-11-27T19:17:07.693297-08:00","dependencies":[{"issue_id":"vsbeads-m0t","depends_on_id":"vsbeads-1k7","type":"blocks","created_at":"2025-11-27T17:17:55.445037-08:00","created_by":"daemon"},{"issue_id":"vsbeads-m0t","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.250208-08:00","created_by":"daemon"}]} {"id":"vsbeads-mbo","title":"Fix bd sync prefix mismatch (vscode-beads- vs vscode-)","description":"bd sync fails with: \"prefix mismatch detected: database uses 'vscode-beads-' but found issues with prefixes: [vscode- (16 issues)]\". This prevents syncing beads to git.","design":"Error suggests using --rename-on-import flag. May need to:\n1. Run bd sync --rename-on-import\n2. Or fix the prefix in config.yaml\n3. Or re-export with correct prefix","notes":"**Root Cause:** Bug in `internal/utils/issue_id.go:ExtractIssuePrefix` - used `strings.Index` (first hyphen) instead of `strings.LastIndex` (last hyphen). For `vscode-beads-4n2`, it extracted prefix as `vscode` instead of `vscode-beads`.\n\n**Fix:** Already in beads main (commit 6294ef0c). New bd built at `/tmp/bd-new`.\n\n**Workaround Applied:** Renamed prefix from `vscode-beads` to `vsbeads`.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-26T18:52:04.449107-08:00","updated_at":"2025-11-26T23:13:56.591814-08:00","closed_at":"2025-11-26T23:13:56.591814-08:00"} -{"id":"vsbeads-n64","title":"Build optimized agent automation for VS Code/code-server (reduce context bloat)","description":"Chrome DevTools MCP returns ~400 lines (full a11y tree) after EVERY action. This burns through context extremely fast. Need to build custom tooling.\n\n**Problem observed:**\n- `press_key` → 401 lines returned\n- `click` → full snapshot returned \n- Simple reload workflow = ~120KB context\n- Playwright MCP has same issue (also uses a11y snapshots)\n\n**Direction:**\nBuild custom tooling for optimized agent-driven VS Code/code-server automation:\n1. Helper extension that exposes simple commands (reload, focus panel, etc.) callable via API\n2. Custom MCP that returns minimal/filtered responses instead of full tree\n3. Script-based helpers agent can invoke without snapshot overhead\n4. Same pattern needed for Figma later\n\n**Current workaround:**\n- Use Chrome DevTools MCP sparingly for single feature verification\n- Leave window reload to human to avoid context burn\n- Hybrid: agent codes, human clicks to verify","status":"open","priority":2,"issue_type":"task","created_at":"2025-11-27T18:31:28.924977-08:00","updated_at":"2025-11-27T18:36:56.270524-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-n64","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.275699-08:00","created_by":"daemon"}]} -{"id":"vsbeads-ops","title":"Redesign Dashboard for compactness and usefulness","description":"Current dashboard has redundant/space-wasting sections. The status bar chart duplicates the summary cards above. Need a more compact, meaningful layout.","design":"**Keep:**\n- Summary cards (Total, Ready, In Progress, Blocked) - useful at a glance\n- In Progress list - very useful\n\n**Remove/Replace:**\n- Status breakdown bars (redundant with cards)\n- Priority breakdown bars (takes too much space)\n\n**Options for compact redesign:**\n\n**Option A: Type + Priority chips**\n```\n[Summary Cards Row]\n\nBY TYPE BY PRIORITY\nbug: 3 P1: 1 P2: 4 P3: 3\nfeature: 4\ntask: 1\n\nIN PROGRESS BLOCKED (if any)\n- issue... - issue...\n```\n\n**Option B: Single stats row**\n```\n[Summary Cards Row]\n\nTypes: 🐛3 ✨4 📋1 Priority: P1:1 P2:4 P3:3\n\nIN PROGRESS READY (top 3)\n- issue... - issue...\n```\n\n**Option C: Kanban-lite summary**\n```\n[Summary Cards Row]\n\nREADY (3) IN PROGRESS (2) BLOCKED (0)\n- issue... - issue... (none)\n- issue... - issue...\n```\n\nRecommendation: Option C - shows actionable items, no redundancy","status":"open","priority":2,"issue_type":"feature","created_at":"2025-11-26T18:20:49.922324-08:00","updated_at":"2025-11-26T23:11:39.605441-08:00","labels":["ui"]} -{"id":"vsbeads-oqb","title":"Fix column resize in Issues list","description":"Column resize handles are visible and highlight on hover, but dragging doesn't properly resize columns. Title column can be made bigger but not smaller despite minWidth being reduced. The resize logic and CSS need debugging.","design":"Current implementation:\n- Resize handle on right edge of each th\n- onMouseDown captures startX and startWidth\n- mousemove calculates delta and updates column width in state\n- width applied via inline style\n\nIssues to investigate:\n- Is the state actually updating?\n- Is the width being applied correctly?\n- Is something else overriding the width?\n- Table layout behavior with/without table-layout: fixed","status":"open","priority":2,"issue_type":"bug","created_at":"2025-11-26T18:25:55.633017-08:00","updated_at":"2025-11-26T23:11:39.605193-08:00","labels":["ui"]} +{"id":"vsbeads-n64","title":"Build optimized agent automation for VS Code/code-server (reduce context bloat)","description":"Chrome DevTools MCP returns ~400 lines (full a11y tree) after EVERY action. This burns through context extremely fast. Need to build custom tooling.\n\n**Problem observed:**\n- `press_key` → 401 lines returned\n- `click` → full snapshot returned \n- Simple reload workflow = ~120KB context\n- Playwright MCP has same issue (also uses a11y snapshots)\n\n**Direction:**\nBuild custom tooling for optimized agent-driven VS Code/code-server automation:\n1. Helper extension that exposes simple commands (reload, focus panel, etc.) callable via API\n2. Custom MCP that returns minimal/filtered responses instead of full tree\n3. Script-based helpers agent can invoke without snapshot overhead\n4. Same pattern needed for Figma later\n\n**Current workaround:**\n- Use Chrome DevTools MCP sparingly for single feature verification\n- Leave window reload to human to avoid context burn\n- Hybrid: agent codes, human clicks to verify","status":"open","priority":2,"issue_type":"task","estimated_minutes":720,"created_at":"2025-11-27T18:31:28.924977-08:00","updated_at":"2025-12-04T11:58:54.423038-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-n64","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.275699-08:00","created_by":"daemon"}]} +{"id":"vsbeads-onk","title":"Consider dev/snapshot version suffix after release","description":"After tagging a release, main stays at the released version (e.g., 0.2.0). This could be confusing when building from main after additional commits - same version but different code.\n\nOptions to consider:\n- Bump to `X.Y+1.0-dev` after release\n- Bump to `X.Y.Z-SNAPSHOT` pattern\n- Leave as-is (simpler, beads project does this)\n\nIf implementing, update `/project-release` to bump version after pushing tag.","status":"open","priority":3,"issue_type":"task","estimated_minutes":45,"created_at":"2025-11-29T17:34:58.801913-08:00","updated_at":"2025-12-04T11:59:26.955052-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-onk","depends_on_id":"vsbeads-93b","type":"related","created_at":"2025-11-29T17:35:03.165667-08:00","created_by":"daemon"}]} +{"id":"vsbeads-ops","title":"Redesign Dashboard for compactness and usefulness","description":"Current dashboard has redundant/space-wasting sections. The status bar chart duplicates the summary cards above. Need a more compact, meaningful layout.","design":"**Keep:**\n- Summary cards (Total, Ready, In Progress, Blocked) - useful at a glance\n- In Progress list - very useful\n\n**Remove/Replace:**\n- Status breakdown bars (redundant with cards)\n- Priority breakdown bars (takes too much space)\n\n**Options for compact redesign:**\n\n**Option A: Type + Priority chips**\n```\n[Summary Cards Row]\n\nBY TYPE BY PRIORITY\nbug: 3 P1: 1 P2: 4 P3: 3\nfeature: 4\ntask: 1\n\nIN PROGRESS BLOCKED (if any)\n- issue... - issue...\n```\n\n**Option B: Single stats row**\n```\n[Summary Cards Row]\n\nTypes: 🐛3 ✨4 📋1 Priority: P1:1 P2:4 P3:3\n\nIN PROGRESS READY (top 3)\n- issue... - issue...\n```\n\n**Option C: Kanban-lite summary**\n```\n[Summary Cards Row]\n\nREADY (3) IN PROGRESS (2) BLOCKED (0)\n- issue... - issue... (none)\n- issue... - issue...\n```\n\nRecommendation: Option C - shows actionable items, no redundancy","status":"open","priority":2,"issue_type":"feature","estimated_minutes":300,"created_at":"2025-11-26T18:20:49.922324-08:00","updated_at":"2025-12-04T11:58:57.526016-08:00","labels":["ui"]} +{"id":"vsbeads-oqb","title":"Fix column resize in Issues list","description":"Column resize handles are visible and highlight on hover, but dragging doesn't properly resize columns. Title column can be made bigger but not smaller despite minWidth being reduced. The resize logic and CSS need debugging.","design":"Current implementation:\n- Resize handle on right edge of each th\n- onMouseDown captures startX and startWidth\n- mousemove calculates delta and updates column width in state\n- width applied via inline style\n\nIssues to investigate:\n- Is the state actually updating?\n- Is the width being applied correctly?\n- Is something else overriding the width?\n- Table layout behavior with/without table-layout: fixed","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-26T18:25:55.633017-08:00","updated_at":"2025-12-01T15:56:32.434936-08:00","closed_at":"2025-12-01T15:56:32.434936-08:00","labels":["ui"]} {"id":"vsbeads-q29","title":"Setup GitHub Action to build VSIX on push to main","description":"Add GitHub Action workflow to build extension VSIX archive on push to main. Upload as artifact for manual download/testing.","design":"`.github/workflows/build.yml`\n- Trigger: push to main\n- Steps: checkout, setup bun, install, compile, vsce package\n- Upload VSIX as artifact\n- Could also publish to marketplace on tag (see PUBLISHING.md)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-26T18:39:27.093552-08:00","updated_at":"2025-11-27T20:56:11.086242-08:00","closed_at":"2025-11-27T20:56:11.086242-08:00"} {"id":"vsbeads-q6r","title":"Research: Agent-based VS Code extension development options","description":"Research and document the best approaches for enabling agent-driven VS Code extension development.\n\n## Areas to investigate\n\n### VS Code in Browser\n- code-server (https://github.com/coder/code-server)\n- VS Code Web / vscode.dev\n- Custom builds with local extension support\n\n### Browser Automation/MCP\n- Browser MCP (https://browsermcp.io/)\n- Chrome DevTools MCP (https://github.com/ChromeDevTools/chrome-devtools-mcp)\n- Playwright (https://playwright.dev/)\n- Other automation options\n\n### Required Capabilities\n- Start/stop VS Code, reload extensions\n- Take screenshots, see logs, debug inspector\n- Terminal/output panel access\n- Problem panel (type errors)\n- Command palette execution\n- Webview inspection\n- Test runner integration\n\n### Human Participation\n- VNC access for headless environments\n- X11 forwarding options\n- Screen sharing alternatives\n\n## Deliverable\nResearch document in sandbox/ with findings, trade-offs, and recommendations.","notes":"## Research Findings\n\n### Winning Stack\n```\nChrome DevTools MCP + code-server\n```\n\n### VS Code in Browser - DECIDED ✅\n| Option | Verdict |\n|--------|---------|\n| **code-server** | ✅ WINNER - native macOS, bd socket works |\n| OpenVSCode Server | ⚠️ Docker only, socket blocked |\n| vscode.dev | ❌ No local extension support |\n\n### Browser Automation - DECIDED ✅\n| Option | Verdict |\n|--------|---------|\n| **Chrome DevTools MCP** | ✅ WINNER - headed, console access, evaluate_script |\n| Browser MCP | ❌ Less capable |\n| Playwright MCP | Fallback if needed |\n\n### Capabilities Verified ✅\n- Start/stop VS Code: CLI `code-server` command\n- Reload extensions: DevTools \"Developer: Reload Window\"\n- Screenshots: `take_screenshot`\n- Console access: `list_console_messages`\n- Command palette: `press_key` Meta+Shift+P\n- Webview inspection: `take_snapshot` sees iframe content\n- Extension install: `code-server --install-extension`\n\n### Still to Verify\n- Terminal/output panel access\n- Problem panel (type errors via getDiagnostics?)\n- Test runner integration\n\n### Human Participation - SOLVED\nHeaded browser = human watches directly. No VNC/X11 needed.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-27T13:28:56.851044-08:00","updated_at":"2025-11-27T18:36:56.350768-08:00","closed_at":"2025-11-27T18:36:56.350768-08:00","dependencies":[{"issue_id":"vsbeads-q6r","depends_on_id":"vsbeads-3cn","type":"blocks","created_at":"2025-11-27T13:28:56.85284-08:00","created_by":"daemon"}]} {"id":"vsbeads-q92","title":"Investigate real-time mutation updates not working","description":"Issues panel doesn't update when beads are created via CLI/MCP. The mutation watching infrastructure exists but may not be working correctly.","design":"Debug checklist:\n- Check \"Beads Dashboard\" output channel for mutation logs\n- Verify daemon is connected and mutation watch started\n- Check if getMutations RPC is returning data\n- Verify mutation timestamp filtering isn't too aggressive\n- Test with manual refresh to confirm data is available","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-26T18:41:19.755338-08:00","updated_at":"2025-11-26T23:44:58.678746-08:00","closed_at":"2025-11-26T23:44:58.678746-08:00"} +{"id":"vsbeads-qtl","title":"Sort labels alphabetically in display","description":"Labels are displayed in whatever order they're stored. Should sort alphabetically for consistent display across issues.","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-12-01T16:16:04.313747-08:00","updated_at":"2025-12-01T16:31:26.682726-08:00","closed_at":"2025-12-01T16:31:26.682726-08:00","labels":["ui"]} {"id":"vsbeads-rbp","title":"Bug: Edit mode status selector shows \"Unknown\"","description":"In DetailsView edit mode, the status dropdown shows \"Unknown\" as an option. This shouldn't be selectable - it's only for display when status can't be parsed.\n\nLocation: `src/webview/views/DetailsView.tsx` lines 201-212","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-27T19:01:47.079665-08:00","updated_at":"2025-11-27T19:19:24.818633-08:00","closed_at":"2025-11-27T19:19:24.818633-08:00"} -{"id":"vsbeads-rru","title":"Implement Dependency Graph as editor panel","description":"Reimplement the dependency graph view as an editor panel (like Settings) instead of sidebar webview. More space for visualization, better UX.","design":"Use `vscode.window.createWebviewPanel()` to open in editor area.\n- Register command to open graph\n- Panel shows in editor tabs like Settings/Keyboard Shortcuts\n- Can have full width for node visualization\n- Consider using a proper graph library (d3, cytoscape, etc)","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-26T18:39:29.324895-08:00","updated_at":"2025-11-26T23:11:39.606778-08:00","labels":["ui"]} -{"id":"vsbeads-rtk","title":"Render comments with markdown support","description":"Comments in the Details view are rendered as plain text. Should render with markdown support for code blocks, links, formatting, etc.\n\n**Current behavior:**\n- Comments display as raw text\n- Code snippets, links, bold/italic not rendered\n\n**Expected:**\n- Markdown formatting rendered in comment display\n- Code blocks with syntax highlighting\n- Links clickable\n- Lists, headers, etc. supported\n\n**Location:** `src/webview/views/DetailsView.tsx` (comment display section)","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-29T12:10:26.143399-08:00","updated_at":"2025-11-29T12:10:26.143399-08:00","labels":["ui"]} +{"id":"vsbeads-rru","title":"Implement Dependency Graph as editor panel","description":"Reimplement the dependency graph view as an editor panel (like Settings) instead of sidebar webview. More space for visualization, better UX.","design":"Use `vscode.window.createWebviewPanel()` to open in editor area.\n- Register command to open graph\n- Panel shows in editor tabs like Settings/Keyboard Shortcuts\n- Can have full width for node visualization\n- Consider using a proper graph library (d3, cytoscape, etc)","status":"open","priority":3,"issue_type":"feature","estimated_minutes":480,"created_at":"2025-11-26T18:39:29.324895-08:00","updated_at":"2025-12-04T11:59:40.971443-08:00","labels":["ui"]} +{"id":"vsbeads-rtk","title":"Render comments with markdown support","description":"Comments in the Details view are rendered as plain text. Should render with markdown support for code blocks, links, formatting, etc.\n\n**Current behavior:**\n- Comments display as raw text\n- Code snippets, links, bold/italic not rendered\n\n**Expected:**\n- Markdown formatting rendered in comment display\n- Code blocks with syntax highlighting\n- Links clickable\n- Lists, headers, etc. supported\n\n**Location:** `src/webview/views/DetailsView.tsx` (comment display section)","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-29T12:10:26.143399-08:00","updated_at":"2025-12-01T17:17:27.957323-08:00","closed_at":"2025-12-01T17:17:27.957323-08:00","labels":["ui"],"comments":[{"id":25,"issue_id":"vsbeads-rtk","author":"jason","text":"**Estimate: Easy-Medium (~1-1.5 hours)**\n\nWhat's needed:\n1. Add a markdown library (e.g., `marked`, `react-markdown`, or `micromark`)\n2. Replace plain text comment rendering with markdown-rendered output\n3. Add CSS for markdown elements (code blocks, links, lists)\n4. Sanitize HTML output for security\n\nComplexity factors:\n- No markdown lib currently installed - need to add one\n- VS Code webviews have restrictions on external resources\n- Syntax highlighting would add complexity (optional)\n- Need to handle CSS styling for markdown elements\n\n~1 hour for basic markdown, +30min if syntax highlighting wanted.","created_at":"2025-12-02T00:42:01Z"},{"id":26,"issue_id":"vsbeads-rtk","author":"jason","text":"# HERE\n\n**THERE**","created_at":"2025-12-02T01:16:57Z"}]} {"id":"vsbeads-rz9","title":"Test: code-server vs OpenVSCode Server for local dev","description":"Compare the two VS Code in browser options for our use case.\n\n## Test Plan\n\n### OpenVSCode Server (Gitpod) - Test First\n```bash\ndocker run -p 3000:3000 gitpod/openvscode-server\n```\n- Open in Chrome DevTools MCP\n- Install vscode-beads VSIX\n- Verify extension loads, webviews work\n- Check console access for errors\n\n### code-server (Coder) - Compare\n```bash\nbrew install code-server\ncode-server --bind-addr localhost:8080\n```\n- Same tests as above\n- Compare: auth, settings persistence, extension compat\n\n## Decision Criteria\n- Extension installation ease\n- Webview support (critical for vscode-beads)\n- Console/error visibility\n- Closer to desktop VS Code behavior","notes":"## Final Verdict\n\n**Winner: code-server** for vscode-beads development on macOS.\n\n---\n\n## OpenVSCode Server (Docker) - PARTIAL ⚠️\n\n### Setup\n```bash\ndocker run -p 3000:3000 -v $(pwd):/home/workspace:cached gitpod/openvscode-server\n```\n\n### Results\n- ✅ Extension installs and loads\n- ✅ Webviews render correctly\n- ❌ **bd daemon socket blocked** by Docker isolation\n - Error: `connect ECONNREFUSED /home/workspace/.beads/bd.sock`\n\n### CLI Install\n```bash\ndocker exec \u003ccontainer-id\u003e /home/.openvscode-server/bin/openvscode-server \\\n --install-extension /home/workspace/vscode-beads-0.1.0.vsix\n```\n\n**Verdict**: Good for UI testing only, not full extension functionality.\n\n---\n\n## code-server (Native) - SUCCESS ✅\n\n### Setup\n```bash\nbrew install code-server\ncode-server --bind-addr localhost:8080 --auth none /path/to/project\n```\n\n### Results\n- ✅ Extension installs via CLI\n- ✅ Webviews render correctly\n- ✅ **bd daemon socket works** (native macOS access)\n- ✅ Full functionality - issues list, filters, everything\n\n### CLI Install\n```bash\ncode-server --install-extension /path/to/extension.vsix\n```\n\n**Verdict**: Full functionality, recommended for vscode-beads development.\n\n---\n\n## Comparison Table\n\n| Feature | code-server | OpenVSCode Server |\n|---------|-------------|-------------------|\n| Install | `brew install` | Docker only (macOS) |\n| bd socket | ✅ Works | ❌ Blocked |\n| CLI install | ✅ | ✅ |\n| Webviews | ✅ | ✅ |\n| Dev workflow | Full | UI testing only |","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-27T17:38:55.41521-08:00","updated_at":"2025-11-27T18:00:01.424195-08:00","closed_at":"2025-11-27T18:00:01.424195-08:00","dependencies":[{"issue_id":"vsbeads-rz9","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.1978-08:00","created_by":"daemon"}]} +{"id":"vsbeads-s4i","title":"Refresh project list when workspace folders change","description":"When adding or removing folders from VS Code workspace, the beads project list doesn't update. Removed folders still appear in the project dropdown.\n\n**Expected behavior:**\n- Adding a folder with `.beads/` should add it to the project list\n- Removing a folder should remove it from the project list\n- If the active project is removed, switch to another available project\n\n**Fix:**\nListen to `vscode.workspace.onDidChangeWorkspaceFolders` event and call `projectManager.discoverProjects()` to refresh.","status":"in_progress","priority":2,"issue_type":"bug","estimated_minutes":120,"created_at":"2025-12-03T00:26:43.500466-08:00","updated_at":"2025-12-04T12:12:57.674616-08:00","labels":["backend","ux"]} +{"id":"vsbeads-t5e","title":"Research external issue tracker sync (GitHub/GitLab/Jira)","description":"While beads is great for managing context and agent work, teams often need a subset of beads to sync with external trackers (GitHub Issues, GitLab, Jira, etc.).\n\nResearch questions:\n1. What upstream beads features exist for external sync? (check `external_ref` field usage)\n2. Are there examples or docs for bi-directional sync?\n3. What's the recommended workflow - manual link via `external_ref` or automated sync?\n4. Any plugins or integrations available?\n\nGoal: Understand what's possible today and what gaps exist for team workflows.","status":"open","priority":3,"issue_type":"task","estimated_minutes":180,"created_at":"2025-12-01T16:40:03.527205-08:00","updated_at":"2025-12-04T11:59:04.481436-08:00","labels":["dx","research"]} +{"id":"vsbeads-toz","title":"Architecture review: extension and React component design","description":"Review the vscode-beads extension architecture from an expert perspective.\n\nAreas to evaluate:\n1. **Component duplication** - Where are we duplicating code that should be extracted?\n2. **Common components** - Are shared components in `common/` well-designed and reusable?\n3. **Hacks/workarounds** - Identify technical debt and quick fixes that need proper solutions\n4. **State management** - Is the webview↔extension messaging pattern clean?\n5. **View structure** - Are views (IssuesView, DetailsView, etc.) well-organized?\n6. **CSS organization** - Is `styles.css` maintainable or becoming a dumping ground?\n7. **Type safety** - Are types properly shared between extension and webview?\n\nDeliverable: Report with findings, recommendations, and priority for improvements.","status":"open","priority":2,"issue_type":"task","estimated_minutes":300,"created_at":"2025-12-01T17:23:41.507236-08:00","updated_at":"2025-12-04T11:58:47.201579-08:00","labels":["dx","research"]} {"id":"vsbeads-tty","title":"Improve dependency/dependent display in Details view - show type + title","description":"The \"Depends On\" and \"Blocks\" sections in Details view currently only show issue IDs as badges. Hard to understand what issues are without navigating back and forth.\n\nMinimum: Show type + title alongside ID\nIdeal: Mini issues list with type, title, status, priority columns\n\nLocation: `src/webview/views/DetailsView.tsx` (deps-list sections)","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-27T20:47:54.611811-08:00","updated_at":"2025-11-28T00:24:25.518796-08:00","closed_at":"2025-11-28T00:24:25.518796-08:00"} -{"id":"vsbeads-ua2","title":"Research: code execution skill as MCP replacement","description":"Future work: Build skill with TypeScript utilities as eventual MCP replacement.\n\n**Approach:**\n- `.claude/skills/vscode-dev/SKILL.md` + supporting files\n- Functions: `reloadWindow()`, `clickElement()`, `getElementContent()`\n- Execute via Bash, return minimal output\n- Eventually deprecate Chrome DevTools MCP dependency\n\n**Note:** Skills share parent context (no isolation), but if output is minimal, that's fine.","status":"open","priority":3,"issue_type":"task","created_at":"2025-11-28T21:52:30.285657-08:00","updated_at":"2025-11-28T21:52:30.285657-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-ua2","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:42.143962-08:00","created_by":"daemon"}]} -{"id":"vsbeads-uak","title":"Research: macOS window screenshot for full Chrome capture","description":"Browser MCP tools only capture page viewport, not full Chrome window (including DevTools).\n\nResearch how to capture full window via macOS:\n- `screencapture -l \u003cwindowid\u003e` requires finding window ID\n- AppleScript can list windows but may need permissions\n- Useful for showing agent what's visible in DevTools panel\n\nLow priority - programmatic console/network access works for most cases.","status":"open","priority":3,"issue_type":"task","created_at":"2025-11-27T17:34:17.25294-08:00","updated_at":"2025-11-27T17:34:17.25294-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-uak","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.301246-08:00","created_by":"daemon"}]} +{"id":"vsbeads-ua2","title":"Research: code execution skill as MCP replacement","description":"Future work: Build skill with TypeScript utilities as eventual MCP replacement.\n\n**Approach:**\n- `.claude/skills/vscode-dev/SKILL.md` + supporting files\n- Functions: `reloadWindow()`, `clickElement()`, `getElementContent()`\n- Execute via Bash, return minimal output\n- Eventually deprecate Chrome DevTools MCP dependency\n\n**Note:** Skills share parent context (no isolation), but if output is minimal, that's fine.","status":"open","priority":3,"issue_type":"task","estimated_minutes":180,"created_at":"2025-11-28T21:52:30.285657-08:00","updated_at":"2025-12-04T11:59:31.525211-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-ua2","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:42.143962-08:00","created_by":"daemon"}]} +{"id":"vsbeads-uak","title":"Research: macOS window screenshot for full Chrome capture","description":"Browser MCP tools only capture page viewport, not full Chrome window (including DevTools).\n\nResearch how to capture full window via macOS:\n- `screencapture -l \u003cwindowid\u003e` requires finding window ID\n- AppleScript can list windows but may need permissions\n- Useful for showing agent what's visible in DevTools panel\n\nLow priority - programmatic console/network access works for most cases.","status":"open","priority":3,"issue_type":"task","estimated_minutes":90,"created_at":"2025-11-27T17:34:17.25294-08:00","updated_at":"2025-12-04T11:59:34.100523-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-uak","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.301246-08:00","created_by":"daemon"}]} {"id":"vsbeads-vlk","title":"viewContainer/title buttons not showing in BEADS header","description":"Configured beads.switchProject and beads.refresh commands in viewContainer/title menu with `when: viewContainer == beads`, but no buttons appear in the BEADS header. Only the [...] overflow menu shows.","design":"VS Code does not support extension-contributed inline buttons in viewContainer title bars. The `viewContainer/title` menu contribution point only adds items to the overflow/context menu.\n\nThis is confirmed by microsoft/vscode#74221 which was closed as out-of-scope.","notes":"**Finding:** This is a VS Code platform limitation, not a bug in our extension.\n\nPer [microsoft/vscode#74221](https://github.com/microsoft/vscode/issues/74221):\n- Built-in view containers (Run and Debug, Search) can have title bar buttons\n- Extension view containers can ONLY add to overflow menu (...)\n- Feature request was rejected as \"out-of-scope\"\n\n**Current workaround:** Use `view/title` to add buttons to individual view headers (e.g., Issues panel title bar) instead of the container title bar.\n\n**Status:** Won't fix - VS Code limitation","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-26T18:30:18.437949-08:00","updated_at":"2025-11-27T00:26:50.564762-08:00","closed_at":"2025-11-27T00:26:50.564762-08:00"} -{"id":"vsbeads-vp1","title":"Implement Kanban board as editor panel","description":"Reimplement Kanban board as an editor panel instead of sidebar webview. Sidebar is too narrow for a useful Kanban view.","design":"Use `vscode.window.createWebviewPanel()` to open in editor area.\n- Register command to open Kanban\n- Full-width columns for drag-and-drop\n- Cards show status, priority, assignee\n- Drag between columns to change status","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-26T18:39:31.95544-08:00","updated_at":"2025-11-26T23:11:39.606519-08:00","labels":["ui"]} -{"id":"vsbeads-wk9","title":"Make badge colors configurable via settings","description":"Expose status, priority, and type badge colors as VS Code settings so users can customize them. Should support both background and text colors for each value, with consideration for light/dark themes.","design":"Settings structure could be:\n- `beads.colors.priority.P0`: { bg, text }\n- `beads.colors.priority.P1`: { bg, text }\n- `beads.colors.status.open`: { bg, text }\n- `beads.colors.type.bug`: { bg, text }\n\nOr a single object per category. Consider theme-aware defaults.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-26T17:57:59.132401-08:00","updated_at":"2025-11-26T23:11:39.607417-08:00","labels":["ui"]} +{"id":"vsbeads-vp1","title":"Implement Kanban board as editor panel","description":"Reimplement Kanban board as an editor panel instead of sidebar webview. Sidebar is too narrow for a useful Kanban view.","design":"Use `vscode.window.createWebviewPanel()` to open in editor area.\n- Register command to open Kanban\n- Full-width columns for drag-and-drop\n- Cards show status, priority, assignee\n- Drag between columns to change status","status":"open","priority":3,"issue_type":"feature","estimated_minutes":600,"created_at":"2025-11-26T18:39:31.95544-08:00","updated_at":"2025-12-04T11:59:40.103462-08:00","labels":["ui"]} +{"id":"vsbeads-wk9","title":"Make badge colors configurable via settings","description":"Expose status, priority, and type badge colors as VS Code settings so users can customize them. Should support both background and text colors for each value, with consideration for light/dark themes.","design":"Settings structure could be:\n- `beads.colors.priority.P0`: { bg, text }\n- `beads.colors.priority.P1`: { bg, text }\n- `beads.colors.status.open`: { bg, text }\n- `beads.colors.type.bug`: { bg, text }\n\nOr a single object per category. Consider theme-aware defaults.","status":"open","priority":3,"issue_type":"feature","estimated_minutes":120,"created_at":"2025-11-26T17:57:59.132401-08:00","updated_at":"2025-12-04T12:00:09.336584-08:00","labels":["ui"]} +{"id":"vsbeads-xbq","title":"UI blocked when daemon not running - no project switching possible","description":"When daemon connection fails (ENOENT socket error), the entire UI is blocked by ErrorMessage component. User cannot switch to a different project that might have a working daemon.\n\nRoot causes:\n1. App.tsx renders only ErrorMessage when there's an error - no project selector\n2. DashboardView has no project selector at all (IssuesView does)\n3. Need \"Start Daemon\" button for socket errors","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-02T22:57:17.513308-08:00","updated_at":"2025-12-02T23:43:37.817589-08:00","closed_at":"2025-12-02T23:43:37.817589-08:00","labels":["daemon","ui","ux"]} {"id":"vsbeads-xd5","title":"Test protected branch workflow","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-29T13:45:16.869968-08:00","updated_at":"2025-11-29T13:45:35.922513-08:00","closed_at":"2025-11-29T13:45:35.922513-08:00"} -{"id":"vsbeads-xgn","title":"Refine browser-task agent instructions","description":"Based on testing results, refine:\n\n- System prompt for optimal response format\n- Standard task patterns (reload, click sequence, verify)\n- What to include/exclude in summaries\n- Error reporting format","status":"open","priority":2,"issue_type":"task","created_at":"2025-11-28T21:52:30.218145-08:00","updated_at":"2025-11-28T21:52:30.218145-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-xgn","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:42.094448-08:00","created_by":"daemon"},{"issue_id":"vsbeads-xgn","depends_on_id":"vsbeads-hgm","type":"blocks","created_at":"2025-11-28T21:52:49.395613-08:00","created_by":"daemon"}]} -{"id":"vsbeads-yjr","title":"Create browser-task sub-agent configuration","description":"Create `.claude/agents/browser-task.md` with:\n\n```markdown\n---\nname: browser-task\ndescription: Execute multi-step browser automation tasks in VS Code/code-server\ntools: mcp__chrome-devtools__*\nmodel: haiku\n---\n\nExecute browser automation tasks and return minimal summaries.\nDo not return full DOM snapshots. Summarize results concisely.\nIf errors occur, return specific error details.\n```\n\n**Questions to verify:**\n- Can we use glob `mcp__chrome-devtools__*` or must list each tool?\n- Should model be haiku (fast) or sonnet (better instruction following)?","status":"open","priority":1,"issue_type":"task","created_at":"2025-11-28T21:52:14.912814-08:00","updated_at":"2025-11-28T21:52:14.912814-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-yjr","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:41.99215-08:00","created_by":"daemon"}]} +{"id":"vsbeads-xgn","title":"Refine browser-task agent instructions","description":"Based on testing results, refine:\n\n- System prompt for optimal response format\n- Standard task patterns (reload, click sequence, verify)\n- What to include/exclude in summaries\n- Error reporting format","status":"open","priority":2,"issue_type":"task","estimated_minutes":120,"created_at":"2025-11-28T21:52:30.218145-08:00","updated_at":"2025-12-04T11:58:49.641387-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-xgn","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:42.094448-08:00","created_by":"daemon"},{"issue_id":"vsbeads-xgn","depends_on_id":"vsbeads-hgm","type":"blocks","created_at":"2025-11-28T21:52:49.395613-08:00","created_by":"daemon"}]} +{"id":"vsbeads-xkk","title":"Improve Add Dependency UX - support all dependency types","description":"Current \"Add Dependency\" input only creates \"blocks\" type dependencies. Should support all dependency types:\n- blocks (hard blocker)\n- related (soft link)\n- parent-child (epic/subtask)\n- discovered-from (found during work)\n\nOptions:\n1. Dropdown to select type before adding\n2. Syntax like `issue-id:parent-child` or `issue-id --type related`\n3. Separate \"Add as child\" / \"Add related\" buttons\n\nAlso clarify the direction - currently adds a \"blocked by\" relationship (this issue depends on the entered ID).","status":"open","priority":3,"issue_type":"feature","estimated_minutes":210,"created_at":"2025-12-01T15:51:31.66003-08:00","updated_at":"2025-12-04T11:59:07.849454-08:00","labels":["ui"]} +{"id":"vsbeads-yjr","title":"Create browser-task sub-agent configuration","description":"Create `.claude/agents/browser-task.md` with:\n\n```markdown\n---\nname: browser-task\ndescription: Execute multi-step browser automation tasks in VS Code/code-server\ntools: mcp__chrome-devtools__*\nmodel: haiku\n---\n\nExecute browser automation tasks and return minimal summaries.\nDo not return full DOM snapshots. Summarize results concisely.\nIf errors occur, return specific error details.\n```\n\n**Questions to verify:**\n- Can we use glob `mcp__chrome-devtools__*` or must list each tool?\n- Should model be haiku (fast) or sonnet (better instruction following)?","status":"open","priority":1,"issue_type":"task","estimated_minutes":60,"created_at":"2025-11-28T21:52:14.912814-08:00","updated_at":"2025-12-04T11:58:45.105085-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-yjr","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:41.99215-08:00","created_by":"daemon"}]} {"id":"vsbeads-zbt","title":"Test: OpenVSCode Server native (non-Docker) for bd socket access","description":"Test running OpenVSCode Server directly on macOS (not in Docker) to get native bd daemon socket access.\n\n## Motivation\nDocker isolation blocks access to `bd.sock` Unix socket. Native run should have full socket access.\n\n## Test Plan\n1. Install openvscode-server via npm or download release\n2. Run on localhost:8080 (different port from Docker instance)\n3. Install vscode-beads VSIX\n4. Verify Beads panel connects to daemon successfully\n5. Compare dev experience with Docker version\n\n## Success Criteria\n- Extension loads\n- Webviews work\n- bd daemon socket connects (no ECONNREFUSED)\n- Issues display in panel","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-27T17:53:52.58167-08:00","updated_at":"2025-11-27T17:57:42.340387-08:00","closed_at":"2025-11-27T17:57:42.340387-08:00","dependencies":[{"issue_id":"vsbeads-zbt","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.172572-08:00","created_by":"daemon"}]} {"id":"vsbeads-zkc","title":"Test: code-server for native macOS dev with bd socket access","description":"Test code-server (Coder) running natively on macOS for vscode-beads development.\n\n## Motivation\n- openvscode-server only available via Docker on macOS\n- Docker isolation blocks bd daemon socket access\n- code-server runs natively, should have full socket access\n\n## Setup\n```bash\nbrew install code-server\ncode-server --bind-addr localhost:8080\n```\n\n## Test Plan\n1. Install code-server via brew\n2. Start on localhost:8080\n3. Install vscode-beads VSIX\n4. Verify Beads panel connects to bd daemon\n5. Test Chrome DevTools MCP integration\n6. Document CLI options for extension management\n\n## Success Criteria\n- Extension loads\n- Webviews work \n- bd daemon socket connects (no ECONNREFUSED)\n- Issues display in panel","notes":"## Results - SUCCESS ✅\n\n### Setup\n```bash\nbrew install code-server\ncode-server --bind-addr localhost:8080 --auth none /path/to/project\n```\n\n### CLI Extension Management\n```bash\ncode-server --install-extension /path/to/extension.vsix\ncode-server --list-extensions\n```\n\n### Test Results\n- ✅ VS Code loads in browser at localhost:8080\n- ✅ Extension installs via CLI\n- ✅ Extension loads after reload + trust folder\n- ✅ Beads tab appears in activity bar\n- ✅ Webviews render correctly\n- ✅ **bd daemon socket connects** (no ECONNREFUSED!)\n- ✅ Issues list displays all 26 issues\n- ✅ Filter controls, project selector work\n\n### Why It Works\ncode-server runs natively on macOS, so it has direct access to the Unix socket at `.beads/bd.sock`. No Docker isolation.\n\n### Dev Workflow\n1. `bun run watch` (local rebuild)\n2. `bun run package` (create VSIX)\n3. `code-server --install-extension vscode-beads-*.vsix`\n4. DevTools MCP: \"Developer: Reload Window\"\n5. Test extension in browser\n\n### Comparison vs OpenVSCode Server (Docker)\n| Feature | code-server | OpenVSCode Server |\n|---------|-------------|-------------------|\n| Install | `brew install` | Docker only on macOS |\n| bd socket | ✅ Works | ❌ Docker isolation |\n| CLI install | ✅ | ✅ |\n| Webviews | ✅ | ✅ |\n\n**Winner: code-server** for vscode-beads development on macOS.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-27T17:57:42.397471-08:00","updated_at":"2025-11-27T17:59:55.75636-08:00","closed_at":"2025-11-27T17:59:55.75636-08:00","dependencies":[{"issue_id":"vsbeads-zkc","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.146686-08:00","created_by":"daemon"}]} +{"id":"vsbeads-zsy","title":"Add press/click feedback to buttons in webview","description":"Buttons in the webview (like \"Start Daemon\", \"Retry\") don't have clear press feedback. When clicked, there's no visual indication the button was pressed, making it feel unresponsive even when the action is triggered.\n\nAdd `:active` styles or a brief visual state change on click to provide clear feedback.","status":"open","priority":3,"issue_type":"bug","estimated_minutes":30,"created_at":"2025-12-02T23:18:16.910844-08:00","updated_at":"2025-12-04T11:59:03.256734-08:00","labels":["ui","ux"]} diff --git a/.beads/metadata.json b/.beads/metadata.json index c41ac40..a0a0742 100644 --- a/.beads/metadata.json +++ b/.beads/metadata.json @@ -1,5 +1,5 @@ { "database": "beads.db", "jsonl_export": "beads.jsonl", - "last_bd_version": "0.26.0" + "last_bd_version": "0.28.0" } \ No newline at end of file From fb9e5a4a9fe4c87d135be15b036ec33a3bd10a33 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Wed, 7 Jan 2026 23:34:11 -0800 Subject: [PATCH 14/49] bd daemon sync: 2026-01-07 23:34:11 --- .beads/issues.jsonl | 192 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 192 insertions(+) create mode 100644 .beads/issues.jsonl diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl new file mode 100644 index 0000000..5842e2d --- /dev/null +++ b/.beads/issues.jsonl @@ -0,0 +1,192 @@ +{"id":"vsbeads-02bf","title":"Test molecule type display","description":"Testing how molecule type looks in the UI","status":"closed","priority":3,"issue_type":"molecule","created_at":"2025-12-25T17:03:47.421651-08:00","updated_at":"2025-12-25T17:04:36.356328-08:00","closed_at":"2025-12-25T17:04:36.356328-08:00","close_reason":"Test complete - UI looks good","labels":["test"]} +{"id":"vsbeads-09ad","title":"Details view: dependency list doesn't refresh when dependent status changes","description":"When a dependent bead's status changes (e.g., open → in_progress), the dependency list in Details view doesn't update until user navigates away and back. Likely missing refresh trigger when bead data updates.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-22T01:20:55.37934-08:00","updated_at":"2025-12-22T01:20:55.37934-08:00","labels":["ui"]} +{"id":"vsbeads-0e0","title":"Hook flag mismatch: --no-git-history passed to bd import","description":"## Problem\n\nThe post-checkout hook calls:\n```bash\nbd sync --import-only --no-git-history\n```\n\nThis fails because when `--import-only` is used, `bd sync` internally calls `bd import` and passes `--no-git-history` to it. But `bd import` doesn't have that flag.\n\n## Error\n```\nError importing: import failed: exit status 1\nError: unknown flag: --no-git-history\nUsage:\n bd import [flags]\n```\n\n## Expected\n`bd sync --import-only --no-git-history` should work, or the hook should use different flags.\n\n## Workaround\nThe warning is harmless - `bd sync` works fine when called manually.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-17T02:18:27.830006-08:00","updated_at":"2025-12-17T02:18:27.830006-08:00","labels":["beads","hooks"]} +{"id":"vsbeads-0l0","title":"Details panel sometimes delays updating when selecting issue","description":"When clicking on an issue in the Issues list, the Details panel sometimes doesn't update immediately. There's a noticeable delay (few seconds) where the old issue remains displayed, making it appear broken.\n\n**Observed behavior:**\n- Click issue in Issues list\n- Details panel shows previous issue (or loading state)\n- After a few seconds, the correct issue appears\n\n**Expected behavior:**\n- Details panel should update immediately on selection, or show a clear loading indicator\n\n**Possible causes:**\n- Internal data reload triggered by selection\n- Race condition between selection event and data fetch\n- Daemon polling interfering with UI updates\n- Multiple re-renders during state transitions\n\n**Investigation needed:**\n- Check if `selectedBeadId` change triggers unnecessary data refetch\n- Look at timing of `postMessage` flow between webview and extension\n- Check if daemon mutation events are causing intermediate states","status":"open","priority":2,"issue_type":"bug","estimated_minutes":120,"created_at":"2025-12-04T17:09:05.568882-08:00","updated_at":"2025-12-05T12:01:16.715451-08:00","labels":["bug","ui","ux"]} +{"id":"vsbeads-0s0","title":"Extract useColumnState hook","description":"Extract column persistence logic from IssuesView:\n- Load from vscode.getState()\n- Merge with defaults for new columns\n- Save on change\n\nCreates src/webview/hooks/useColumnState.ts","status":"closed","priority":3,"issue_type":"task","estimated_minutes":45,"created_at":"2025-12-04T15:54:10.909895-08:00","updated_at":"2025-12-10T00:30:35.081364-08:00","closed_at":"2025-12-10T00:30:35.081364-08:00","labels":["dx","refactor","ui"]} +{"id":"vsbeads-1k7","title":"Test Chrome DevTools MCP for agent browser automation","description":"Quick spike to verify Chrome DevTools MCP works for our use case.\n\n## Install\n```bash\nclaude mcp add chrome-devtools -- npx -y chrome-devtools-mcp@latest\n```\n\n## Test Plan\n\n1. **Navigate** - Open a webpage (e.g., https://example.com)\n2. **Click** - Click on a link/element\n3. **Inspect DOM** - Use `take_snapshot` to see page structure\n4. **Screenshot** - Use `take_screenshot` to capture visual state\n5. **Console access** - Use `list_console_messages` to read dev console output\n6. **Script execution** - Use `evaluate_script` to run `document.title` or `getComputedStyle()`\n\n## Success Criteria\n- Headed browser window opens (Jason can watch)\n- All 6 capabilities work\n- Console messages are accessible (key painpoint)\n\n## Fallback\nIf this doesn't work well, try Playwright MCP instead.","notes":"## Test Results - ALL PASSED\n\n| Capability | Tool | Status |\n|------------|------|--------|\n| Navigate | `navigate_page` | ✅ |\n| Click | `click` | ✅ |\n| DOM Snapshot | `take_snapshot` | ✅ |\n| Screenshot | `take_screenshot` | ✅ (viewport only) |\n| Console access | `list_console_messages` | ✅ |\n| Script execution | `evaluate_script` | ✅ |\n| Computed styles | `evaluate_script` + JS | ✅ |\n\n## Decision\n**Chrome DevTools MCP is the winner** for agent browser automation:\n- Headed mode by default (human can watch)\n- Full console access (key painpoint solved)\n- Script execution for computed styles\n- Network/performance tools available\n\n## Not needed for now\n- Playwright MCP: fallback if chrome-devtools issues arise\n- Browser MCP: less capable, no evaluate_script\n- chrome-inspector-mcp: requires extension, evaluate_script suffices\n\n## Limitations noted\n- Screenshots capture page viewport only, not Chrome UI/DevTools\n- See vsbeads-uak for macOS window capture research","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-27T17:17:05.174573-08:00","updated_at":"2025-11-27T17:39:10.636615-08:00","closed_at":"2025-11-27T17:39:10.636615-08:00","dependencies":[{"issue_id":"vsbeads-1k7","depends_on_id":"vsbeads-q6r","type":"discovered-from","created_at":"2025-11-27T17:17:09.142776-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-1k7","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.223845-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-1le","title":"User customization and preferences","description":"Settings, preferences, and customization options for personalizing the extension experience.","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-10T02:09:38.170459-08:00","updated_at":"2025-12-10T02:09:38.170459-08:00","labels":["ui"]} +{"id":"vsbeads-1nq","title":"Column menu doesn't close when clicking outside","description":"In the Issues list, the column visibility menu (⋮ button) stays open when clicking outside of it. Should close on click-away like other menus.","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-12-01T15:08:03.146209-08:00","updated_at":"2025-12-01T15:56:32.500857-08:00","closed_at":"2025-12-01T15:56:32.500857-08:00","labels":["ui"]} +{"id":"vsbeads-1vr","title":"Extract Daemon* API types to separate file","description":"Refactor daemon API types out of types.ts into a dedicated file (e.g., daemon-types.ts).\n\nCurrent inline types to extract:\n- `DaemonBeadDependency` (already defined)\n- `DaemonComment` (inline in issueToWebviewBead signature)\n- Full daemon issue structure (the large inline type in issueToWebviewBead)\n\nBenefits:\n- Clear separation between daemon API types and internal/webview types\n- Easier to update when daemon API changes\n- Better documentation of the daemon contract","status":"open","priority":3,"issue_type":"chore","estimated_minutes":90,"created_at":"2025-11-28T15:55:07.524718-08:00","updated_at":"2025-12-04T11:59:33.211027-08:00","labels":["backend"]} +{"id":"vsbeads-1za","title":"Fix Issues view: sticky header and remove excess padding","description":"Two issues with the Issues view:\n1. Table header scrolls off screen - should be sticky/fixed at top\n2. Unnecessary padding around the list taking up space","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-27T01:37:30.569797-08:00","updated_at":"2025-11-27T02:10:19.754932-08:00","closed_at":"2025-11-27T02:10:19.754932-08:00"} +{"id":"vsbeads-24b","title":"Test external ref","status":"closed","priority":2,"issue_type":"task","estimated_minutes":69,"created_at":"2025-12-17T00:43:08.51775-08:00","updated_at":"2025-12-17T16:24:17.709896-08:00","closed_at":"2025-12-17T01:52:21.51488-08:00","close_reason":"Test issue - verified external_ref and estimate display correctly","external_ref":"https://github.com/steveyegge/beads/issues/123"} +{"id":"vsbeads-2byn","title":"Markdown links to relative files should open in VS Code editor","notes":"## Problem\nMarkdown links to relative files (e.g., `[config](./src/config.ts)`) in bead content don't do anything when clicked.\n\n## Expected\nClicking a relative file link should open the file in VS Code editor.\n\n## Implementation\n1. Intercept link clicks in markdown renderer\n2. Detect relative file paths (starts with `./`, `../`, or no protocol)\n3. Resolve path relative to workspace root\n4. Use VS Code API: `vscode.commands.executeCommand('vscode.open', vscode.Uri.file(resolvedPath))`\n\n## Considerations\n- Handle missing files gracefully (show error toast)\n- Support line number anchors? e.g., `./file.ts#L42`\n- External URLs should still open in browser","status":"closed","priority":2,"issue_type":"feature","assignee":"jdillon","created_at":"2025-12-29T00:49:31.625156-08:00","created_by":"jason","updated_at":"2025-12-29T13:46:41.907893-08:00","closed_at":"2025-12-29T13:46:41.907903-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-2byn","depends_on_id":"vsbeads-un3l","type":"parent-child","created_at":"2025-12-29T11:39:53.301409-08:00","created_by":"daemon"}]} +{"id":"vsbeads-2t7n","title":"Add BeadsStore with caching and on-demand loading","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-25T17:42:12.08201-08:00","updated_at":"2025-12-25T17:42:12.08201-08:00","labels":["architecture","backend"]} +{"id":"vsbeads-33u","title":"Add search clear button to Issues panel","description":"Add a clear (×) button inside the search input field to quickly clear the search text.\n\nStandard UX pattern - shows when there's text in the search field.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-27T19:08:09.666845-08:00","updated_at":"2025-11-27T19:42:30.460018-08:00","closed_at":"2025-11-27T19:42:30.460018-08:00","comments":[{"id":5,"issue_id":"vsbeads-33u","author":"jason","text":"Closed prematurely - need user verification","created_at":"2025-11-28T03:37:32Z"}]} +{"id":"vsbeads-34v","title":"Add static filter favorites with \"Not Closed\" default","description":"Initial implementation of filter favorites. Add a dropdown with static preset filter combinations, defaulting to \"Not Closed\".","design":"**Implementation:**\n1. Add favorites dropdown next to \"+ Filter\" button\n2. Static presets:\n - \"All\" - no filters\n - \"Not Closed\" - status: open, in_progress, blocked (default)\n - \"Active\" - status: in_progress, blocked\n3. On load, apply \"Not Closed\" preset\n4. Selecting a preset replaces current filters\n5. Manual filter changes clear the preset selection (show as \"Custom\")\n\n**UI placement:**\n`[Favorites ▾] [+ Filter] [Clear]`\n\nOr integrate into existing filter UI as first option in the filter menu.","acceptance_criteria":"- Favorites dropdown visible in filter toolbar\n- \"Not Closed\" applied by default on panel load\n- Selecting preset updates filter chips\n- Clear button resets to \"All\"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-26T23:34:31.948083-08:00","updated_at":"2025-11-26T23:36:12.283982-08:00","closed_at":"2025-11-26T23:36:12.283982-08:00"} +{"id":"vsbeads-385","title":"Table should stretch to fill container width","description":"After fixing column resize (table-layout: fixed + colgroup), the table no longer stretches to fill the panel width. There's a visible gap between the right edge of the table and the panel splitter.\n\nExpected: Table fills available width, with columns resizable within that space.\nActual: Table width is sum of column widths, leaving empty space on right.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-01T15:29:34.045547-08:00","updated_at":"2025-12-01T15:56:32.38194-08:00","closed_at":"2025-12-01T15:56:32.38194-08:00","labels":["ui"]} +{"id":"vsbeads-3cn","title":"Agent-Driven VS Code Extension Development","description":"Enable Claude to effectively develop and debug VS Code extensions through browser automation and MCP integration.\n\nGoals:\n- Run VS Code in a browser (code-server or VS Code Web) with locally-built extensions\n- Control VS Code via MCP (Browser MCP, Chrome DevTools MCP, or Playwright)\n- Access debugging tools: screenshots, logs, inspector, terminal output\n- Enable human participation via VNC/X11 for guidance and review\n\nSuccess criteria:\n- Claude can start/stop VS Code, reload extensions, run commands\n- Claude can see UI state, logs, and errors programmatically\n- Jason can observe and guide Claude's actions in real-time","status":"open","priority":2,"issue_type":"epic","estimated_minutes":1800,"created_at":"2025-11-27T13:28:48.987495-08:00","updated_at":"2025-12-04T11:58:55.337807-08:00","labels":["dx"],"comments":[{"id":2,"issue_id":"vsbeads-3cn","author":"jason","text":"Context is a problem...","created_at":"2025-11-28T03:11:56Z"},{"id":21,"issue_id":"vsbeads-3cn","author":"jason","text":"a very big problem","created_at":"2025-11-28T04:53:09Z"},{"id":22,"issue_id":"vsbeads-3cn","author":"jason","text":"Initial design, we moved on to some real exploration on wonderland/platform to test with mobile-mcp. Will follow up here after more work is done there.","created_at":"2025-12-01T02:09:06Z"}]} +{"id":"vsbeads-3ly3","title":"Hierarchical IDs create implicit parent-child not exposed by daemon API","notes":"## Summary\nHierarchical bead IDs (`\u003cparent-id\u003e.\u003cN\u003e`) create an **implicit** parent-child relationship based on ID naming convention. This implicit relationship:\n1. Is NOT exposed through the daemon API\n2. Blocks adding explicit `parent-child` dependencies\n3. Results in \"orphaned\" parent-child relationships invisible to vscode-beads\n\n## Reproduction\n```bash\n# Create parent\nbd create --title=\"Parent\" --type=epic\n# Output: vsbeads-515e\n\n# Create child with --parent (works correctly - adds BOTH hierarchical ID AND explicit dep)\nbd create --title=\"Child\" --type=task --parent=vsbeads-515e\n# Output: vsbeads-515e.1 (hierarchical ID)\n# Also adds explicit parent-child dependency record\n\n# Try to manually add parent-child dep (BLOCKED)\nbd dep add vsbeads-515e.1 vsbeads-515e --type=parent-child\n# Error: cannot add dependency: vsbeads-515e.1 is already a child of vsbeads-515e.\n# Children inherit dependency on parent completion via hierarchy.\n# Adding an explicit dependency would create a deadlock\n```\n\n## Root Cause\nThe `isChildOf()` function checks if an ID follows hierarchical pattern (`parent.N`):\n- If true, blocks adding explicit `parent-child` dependency (bd-nim5 fix)\n- But daemon API doesn't synthesize this implicit relationship in dependency queries\n- vscode-beads only sees explicit dependencies from daemon\n\n## Upstream Code References\n| File | Line | Function | Purpose |\n|------|------|----------|---------|\n| `cmd/bd/dep.go` | 30 | `isChildOf()` | Checks if ID follows hierarchical pattern |\n| `cmd/bd/dep.go` | 142-146 | dep add | Blocks child→parent deps with deadlock error |\n| `internal/rpc/server_labels_deps_comments.go` | 15-24 | `isChildOf()` | Same check in daemon RPC |\n| `internal/rpc/server_labels_deps_comments.go` | 35-42 | `DepAdd()` | Daemon-side blocking |\n| `internal/storage/sqlite/ids.go` | 44-64 | `IsHierarchicalID()` | Parses hierarchical IDs |\n| `internal/storage/sqlite/ids.go` | 70-91 | `ParseHierarchicalID()` | Extracts parent ID and child number |\n\n## Impact\n- Issues imported with hierarchical IDs (e.g., from Linear) may lack explicit dependencies\n- Parent-child relationships invisible in vscode-beads UI\n- Cannot manually fix by adding dependency (blocked)\n- Dependency display shows \"-\" for parent/children columns\n\n## Possible Solutions\n1. **Upstream fix**: Daemon API should synthesize implicit parent-child from hierarchical IDs\n2. **vscode-beads workaround**: Parse hierarchical IDs client-side to infer relationships\n3. **Data migration**: Script to add missing explicit deps for existing hierarchical IDs\n\n## Related\n- bd-nim5: Original fix that added the blocking behavior\n- GH#728: Child counter updates for explicit child IDs\n- `bd doctor --fix-child-parent`: Opt-in fix for child→parent deps","status":"closed","priority":0,"issue_type":"bug","assignee":"jdillon","created_at":"2025-12-27T20:50:53.075865-08:00","updated_at":"2025-12-29T11:36:24.070757-08:00","closed_at":"2025-12-29T11:36:24.070757-08:00","close_reason":"Testing shows mechanism works correctly. Will file new issue if reproduction steps found in other project.","labels":["backend","daemon","upstream"],"dependencies":[{"issue_id":"vsbeads-3ly3","depends_on_id":"vsbeads-yhok","type":"related","created_at":"2025-12-27T21:03:11.869224-08:00","created_by":"daemon"},{"issue_id":"vsbeads-3ly3","depends_on_id":"vsbeads-yhok.2","type":"related","created_at":"2025-12-27T21:03:11.911184-08:00","created_by":"daemon"},{"issue_id":"vsbeads-3ly3","depends_on_id":"vsbeads-90cp","type":"related","created_at":"2025-12-27T21:03:11.951047-08:00","created_by":"daemon"}],"comments":[{"id":38,"issue_id":"vsbeads-3ly3","author":"jason","text":"## Testing Findings (2025-12-27)\n\nTested both parent-child creation methods - both work correctly:\n\n### Test 1: Using --parent flag\n```bash\nbd create --title=\"Test Epic\" --type=epic # → vsbeads-yhok\nbd create --title=\"Child task\" --type=task --parent=vsbeads-yhok # → vsbeads-yhok.2\n```\n**Result**: ✓ Hierarchical ID created, explicit `parent-child` dep added, shows in daemon API\n\n### Test 2: Manual association\n```bash\nbd create --title=\"Standalone task\" --type=task # → vsbeads-90cp\nbd dep add vsbeads-90cp vsbeads-yhok --type=parent-child\n```\n**Result**: ✓ Regular ID, manual dep works, shows in daemon API\n\n### Revised Hypothesis\nThe bug may be triggered by:\n1. **Imported hierarchical IDs** without explicit dep records\n2. **Misuse of ID format** (manually setting `.N` suffix without using `--parent`)\n3. **Data migration edge cases** from older beads versions\n\nThe `isChildOf()` blocking logic assumes hierarchical IDs always have implicit relationships, but if the explicit dep record is missing, the relationship becomes invisible yet unfixable.\n\n### Test Issues\n- vsbeads-yhok (epic)\n- vsbeads-yhok.2 (child via --parent)\n- vsbeads-90cp (child via manual dep add)\n\nAll showing correct parent-child relationships in daemon API.","created_at":"2025-12-28T05:03:05Z"}]} +{"id":"vsbeads-3rk","title":"Test issue with multiple labels","description":"Testing labels overflow indicator","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-01T14:55:15.765599-08:00","updated_at":"2025-12-01T15:12:56.122436-08:00","closed_at":"2025-12-01T15:12:56.122436-08:00","labels":["a","b","c","d","dx","e","ui"]} +{"id":"vsbeads-3zm","title":"Filter menu UX improvements: submenu indicators and click-away dismiss","description":"Two issues with the filter menu:\n\n1. **Submenu indicators missing**: When clicking the filter menu, it's not clear that the first menu item leads to submenus. There should be visual treatment (arrow/chevron) to indicate there's another menu before a selection is made.\n\n2. **Dismiss behavior**: The filter button requires multiple clicks to dismiss if you were just looking. Should dismiss as soon as the user clicks away from the menu (standard click-outside-to-close behavior).","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-11-27T13:31:46.108524-08:00","updated_at":"2025-11-30T17:32:31.489179-08:00","closed_at":"2025-11-30T17:32:31.489179-08:00","labels":["ui"]} +{"id":"vsbeads-44c","title":"Add \"me\" option to assignee filter for saved filters support","description":"The assignee filter dropdown should include a special \"me\" option that resolves to the current user. This enables saved filters like \"not closed and assigned to me\" that work across different users/machines.","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-11T02:15:28.470012-08:00","updated_at":"2025-12-11T02:15:28.470012-08:00","labels":["filters","ui"],"dependencies":[{"issue_id":"vsbeads-44c","depends_on_id":"vsbeads-gr5","type":"related","created_at":"2025-12-11T02:15:47.790211-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-49u","title":"Investigate: estimated_minutes field not settable via bd CLI","description":"The `estimated_minutes` field exists in the beads schema (per daemon API docs) but `bd update` doesn't have an `--estimate` flag to set it.\n\nQuestions:\n1. Is this field supported at all in current beads?\n2. Is there a different way to set it (create only? direct JSONL edit?)\n3. Should we file upstream issue to add `--estimate` flag?\n\nWithout ability to set estimates, the Estimate column in vscode-beads is useless.","notes":"---\n\n**2025-12-04 Update**: ✅ **FIXED in v0.29.0!** The `--estimate` / `-e` flag is now properly implemented:\n- `bd create --estimate \u003cminutes\u003e`\n- `bd update \u003cid\u003e --estimate \u003cminutes\u003e`\n- Protocol structs have `EstimatedMinutes` field\n\nVerified in local clone at `~/ws/reference/beads`. vscode-beads Estimate column is now usable once users upgrade to beads v0.29.0+.","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-12-01T16:03:02.12189-08:00","updated_at":"2025-12-04T11:47:04.526243-08:00","closed_at":"2025-12-04T11:47:04.526243-08:00","labels":["dx"]} +{"id":"vsbeads-4e7","title":"E2E Testing Infrastructure with Playwright","description":"Establish automated end-to-end testing for the VS Code extension using Playwright with code-server.\n\n**Goal:** Prevent regressions when making UI/feature changes (like the TanStack Table migration).\n\n**Strategy:**\n- Playwright for browser automation (Microsoft-recommended, excellent iframe/webview support)\n- code-server as the test target (VS Code in browser)\n- Nightly runs on GitHub Actions (not blocking PRs, but catches regressions)\n- Manual trigger option for PR testing when needed\n\n**Success criteria:**\n- Tests cover core user flows: view issues, select issue, see details\n- Tests run reliably in CI (no flakiness)\n- Failures produce actionable artifacts (screenshots, traces)\n- Test suite runs in \u003c 5 minutes","status":"open","priority":1,"issue_type":"epic","created_at":"2025-12-05T00:22:22.058747-08:00","updated_at":"2025-12-10T00:18:15.564344-08:00","labels":["ci","dx","testing"]} +{"id":"vsbeads-4f0","title":"Investigate i18n options for VS Code extension","description":"Research internationalization (i18n) options for VS Code extensions. Determine what's needed to support multiple languages for UI strings, commands, settings, etc.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-11T01:38:58.666866-08:00","updated_at":"2025-12-11T01:38:58.666866-08:00","labels":["dx","research"]} +{"id":"vsbeads-4fw","title":"Persist sort order across plugin reloads","description":"Currently the Issues list sort order resets to 'updated' on plugin reload. Should persist the user's chosen sort column and direction.\n\n**Options:**\n- Store in VS Code workspace state (per-workspace)\n- Store in extension settings (global)\n- Store in localStorage via webview (per-webview)\n\nWorkspace state is probably best - different projects may warrant different sort preferences.","status":"closed","priority":2,"issue_type":"feature","estimated_minutes":60,"created_at":"2025-12-04T15:22:27.538401-08:00","updated_at":"2025-12-04T17:47:22.880535-08:00","closed_at":"2025-12-04T17:47:22.880535-08:00","labels":["ui","ux"]} +{"id":"vsbeads-4m5i","title":"Periodic upstream beads sync check","description":"Periodically check steveyegge/beads for changes that affect vscode-beads:\n\n**What to check:**\n- Daemon API changes (internal/rpc/protocol.go, internal/types/types.go)\n- New bead types (issue_type values)\n- CLI command/flag changes\n\n**How to check:**\n```bash\ncd ~/ws/reference/beads \u0026\u0026 git fetch \u0026\u0026 git pull\ngit log --oneline -20 # See recent commits\ngit diff \u003clast-checked-commit\u003e..HEAD -- internal/types/ internal/rpc/\n```\n\n**What to update:**\n- BeadsDaemonClient.ts types\n- docs/reference/beads-daemon-api.md\n- src/webview/types.ts (BeadType, colors, icons)\n\nThis is a recurring maintenance task, not a one-time fix.","status":"closed","priority":4,"issue_type":"chore","assignee":"jdillon","created_at":"2025-12-25T17:01:12.311585-08:00","updated_at":"2025-12-29T13:40:32.810063-08:00","closed_at":"2025-12-29T13:40:32.810063-08:00","close_reason":"Created /upstream-sync command with process guide, docs/upstream-sync/ for reports, and reference doc tracking","labels":["maintenance"],"dependencies":[{"issue_id":"vsbeads-4m5i","depends_on_id":"vsbeads-un3l","type":"blocks","created_at":"2025-12-29T11:45:27.253083-08:00","created_by":"daemon"}]} +{"id":"vsbeads-4n2","title":"Improve Details panel UX - consider inline expansion vs separate panel","description":"VS Code WebviewView API has show() but no collapse/hide method. Current behavior: Details panel auto-expands when bead selected but can't auto-collapse when cleared.\n\nOptions to explore:\n- Inline expansion in the Issues list (like a details row)\n- Editor panel instead of sidebar panel\n- TreeView with expandable items\n- Accept limitation with compact empty state (current)","status":"open","priority":3,"issue_type":"feature","estimated_minutes":300,"created_at":"2025-11-26T16:33:59.306123-08:00","updated_at":"2025-12-04T12:00:11.87706-08:00","labels":["ui"]} +{"id":"vsbeads-4rj","title":"Retry button doesn't reload details panel","description":"When clicking Retry after daemon reconnects, the Issues panel reloads but the Details panel does not refresh. Both panels should refresh on retry.","status":"open","priority":3,"issue_type":"bug","estimated_minutes":60,"created_at":"2025-11-29T15:04:48.965543-08:00","updated_at":"2025-12-04T11:59:27.840917-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-4rj","depends_on_id":"vsbeads-5nm","type":"discovered-from","created_at":"2025-11-29T15:04:54.883404-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-4uw","title":"Evaluate TanStack Table for Issues list","description":"Consider using TanStack Table (headless) for the Issues table instead of custom resize/sort/filter logic. Would give us battle-tested implementations without UI opinions.\n\nTrade-offs to evaluate:\n- Bundle size impact\n- API learning curve\n- Migration effort from current custom implementation\n- VS Code webview compatibility","status":"closed","priority":3,"issue_type":"task","estimated_minutes":180,"created_at":"2025-12-01T15:29:33.996813-08:00","updated_at":"2025-12-04T15:56:42.646284-08:00","closed_at":"2025-12-04T15:56:42.646284-08:00","labels":["dx","ui"]} +{"id":"vsbeads-4v9","title":"Show helpful message when no project is open instead of \"Loading...\"","description":"When VS Code has no folder opened, the Issues panel shows \"Loading...\" indefinitely. Should show a helpful message like \"Open a folder to view issues\" instead.","status":"open","priority":3,"issue_type":"bug","created_at":"2025-12-16T12:05:33.472472-08:00","updated_at":"2025-12-16T12:05:33.472472-08:00","labels":["ui","ux"]} +{"id":"vsbeads-515e","title":"Test parent for hierarchy","status":"tombstone","priority":3,"issue_type":"epic","created_at":"2025-12-27T20:45:41.415098-08:00","updated_at":"2025-12-27T20:46:34.953177-08:00","deleted_at":"2025-12-27T20:46:34.953177-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"epic"} +{"id":"vsbeads-515e.1","title":"Test child using --parent","status":"tombstone","priority":3,"issue_type":"task","created_at":"2025-12-27T20:45:47.180329-08:00","updated_at":"2025-12-27T20:46:34.905009-08:00","dependencies":[{"issue_id":"vsbeads-515e.1","depends_on_id":"vsbeads-515e","type":"parent-child","created_at":"2025-12-27T20:45:47.190475-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T20:46:34.905009-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"} +{"id":"vsbeads-56z","title":"Add transient toast feedback for copy/refresh actions","description":"No visual feedback when:\n- Clicking bead ID/title to copy to clipboard\n- Clicking refresh button\n\nNeed transient toast/popup near the action location.","design":"Implement a simple toast component:\n- Positioned near the triggering element\n- Auto-dismisses after 1.5s\n- Small, non-intrusive\n- Use for: copy actions, refresh complete","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-27T00:07:42.824348-08:00","updated_at":"2025-11-27T00:57:29.115178-08:00","closed_at":"2025-11-27T00:57:29.115178-08:00","comments":[{"id":1,"issue_id":"vsbeads-56z","author":"jason","text":"Toast positioning still being refined","created_at":"2025-11-27T08:56:05Z"}]} +{"id":"vsbeads-57m","title":"Search should show filtered-out matches or offer to clear filters","description":"When searching by bead ID or text, results may be hidden by active filters (status, type, priority). This is confusing - you search for \"vsbeads-abc\" and see nothing because it's closed.\n\nOptions to consider:\n1. **Bypass filters when searching** - Global search ignores column filters\n2. **Show \"hidden by filter\" indicator** - \"3 matches hidden by filters\" with option to clear\n3. **Show filtered matches differently** - Grayed out rows at bottom showing filtered-out matches\n4. **Auto-clear filters on exact ID match** - If search matches a bead ID exactly, clear filters and select it","status":"open","priority":3,"issue_type":"feature","estimated_minutes":120,"created_at":"2025-12-04T16:58:53.89163-08:00","updated_at":"2025-12-05T12:01:16.828888-08:00","labels":["ui","ux"],"dependencies":[{"issue_id":"vsbeads-57m","depends_on_id":"vsbeads-wgr","type":"parent-child","created_at":"2025-12-17T16:53:56.291691-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-5bz","title":"Timestamps may not handle timezone differences correctly","description":"When collaborating across timezones, beads created by peers in different timezones may appear with incorrect relative times or sort incorrectly.\n\nExample: Peer 3 hours ahead creates a bead - it shows up with a timestamp that appears to be \"in the future\" for users in earlier timezones.\n\nNeed to investigate:\n1. How timestamps are stored in beads DB (UTC vs local?)\n2. How timestamps are transmitted via daemon RPC\n3. How the extension displays/sorts timestamps\n4. Whether bd CLI handles timezone conversion","acceptance_criteria":"- Timestamps stored in UTC in database\n- Extension converts to user's local timezone for display\n- Sorting uses UTC-normalized timestamps\n- Relative time display (\"2 hours ago\") is accurate across timezones","notes":"Fixed timestamp sorting in IssuesView.tsx by adding custom `sortingFn` to `updatedAt` and `createdAt` columns. The fix converts ISO 8601 timestamps to UTC milliseconds before comparison, which handles cross-timezone sorting correctly.\n\nDisplay was already correct - `new Date(timestamp).toLocaleDateString()` converts to user's local timezone automatically.\n\n---\n2025-12-08: Refactored to use shared `Timestamp` component and `timestampSortingFn` helper:\n- Created `src/webview/common/Timestamp.tsx` with:\n - `Timestamp` component (formats: date, datetime, relative; tooltip shows full datetime)\n - `compareTimestamps()` utility for UTC-based comparison\n - `timestampSortingFn()` for TanStack Table columns\n- Updated `IssuesView.tsx` to use component + sort function\n- Updated `DetailsView.tsx` to use component for comments and metadata footer\n- Related: vsbeads-izh for width-adaptive date+time display","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-07T16:07:25.992032-08:00","updated_at":"2025-12-09T21:55:01.782623-08:00","closed_at":"2025-12-09T21:55:01.782623-08:00","labels":["backend","sync"],"dependencies":[{"issue_id":"vsbeads-5bz","depends_on_id":"vsbeads-izh","type":"related","created_at":"2025-12-08T22:05:16.785348-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-5c0","title":"Sub-agent browser automation to reduce context bloat","description":"Use sub-agents with isolated context windows to handle Chrome DevTools MCP operations, preventing context bloat in main conversation.\n\n**Problem:** Chrome DevTools MCP returns ~400 lines (full a11y tree) after every action, burning context fast.\n\n**Solution:** Delegate browser operations to short-lived sub-agents that:\n- Have their own context window (bloat stays there)\n- Return only minimal summaries to main agent\n- Batch multiple operations per invocation\n\n**Approach:**\n1. Create `browser-task` sub-agent with only Chrome DevTools MCP tools\n2. Focused instructions: execute task, return minimal summary\n3. Use for: reload window, click sequences, verify UI state","status":"open","priority":2,"issue_type":"epic","estimated_minutes":600,"created_at":"2025-11-28T21:52:14.860652-08:00","updated_at":"2025-12-04T11:58:51.219932-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-28T21:52:42.200798-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-n64","type":"related","created_at":"2025-11-28T21:52:42.256772-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-5jd","title":"Extract generic Playwright testsuite strategy doc from vsbeads-4e7","description":"Create a reusable testsuite strategy document based on the vscode-beads Playwright setup (vsbeads-4e7 and children), but generalized for:\n\n- **Generic web app testing** (not VS Code extension specific)\n- **GitLab CI** instead of GitHub Actions\n- **Portable structure** that can seed beads in other projects\n\n**Source material:**\n- `sandbox/e2e-testing-strategy.md` - current strategy doc\n- vsbeads-4e7 epic and child tasks (ur9, dxo, jfa, tom, w2x, 7xr, dhe, eby)\n\n**Output:**\n- `sandbox/playwright-testsuite-template.md` or similar\n- Replace code-server/extension specifics with generic webapp patterns\n- Replace GitHub Actions with GitLab CI equivalents\n- Keep the Playwright terminology TLDR (useful for any project)\n- Include a \"Beads to create\" section listing suggested tasks for bootstrapping testsuite in a new project\n\n**Use case:** Jason the Great wants to reuse this thinking for other projects, using the doc as input to create project-specific beads.","status":"closed","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-06T12:36:59.75489-08:00","updated_at":"2025-12-06T12:38:37.01485-08:00","closed_at":"2025-12-06T12:38:37.01485-08:00","labels":["docs","dx","testing"]} +{"id":"vsbeads-5nm","title":"Mutation watch spams errors when daemon dies","description":"When the beads daemon is killed, the extension spams error output repeatedly:\n\n```\n[ProjectManager] Mutation watch error: Socket error: connect ENOENT /Users/jason/ws/jdillon/vscode-beads/.beads/bd.sock\n[ProjectManager] Mutation watch error: Cannot read properties of null (reading 'filter')\n```\n\nThe \"filter\" error repeats continuously.","design":"## Root Cause\n\n1. **Error spam** (`BeadsDaemonClient.ts:490-510`): `startMutationWatch` used `setInterval` polling every 1s. When daemon dies, every poll failed with socket error - interval kept running forever.\n\n2. **Null filter error** (`BeadsDaemonClient.ts:495`): `mutations.filter()` called but `getMutations` could return null if daemon returned `{success: true}` without data.\n\n3. **No status feedback**: When daemon died, `daemonStatus` never updated.\n\n## Fix Implemented\n\n**BeadsDaemonClient.ts:**\n- Null guards on all array-returning methods (`list`, `ready`, `listComments`, `getMutations`)\n- Replaced `setInterval` with `setTimeout` + exponential backoff (1s -\u003e 2s -\u003e 4s -\u003e ... -\u003e 30s max)\n- Added `disconnected` and `reconnected` events (emit only on state change)\n- Track connection state to avoid duplicate events\n\n**BeadsProjectManager.ts:**\n- Listen for `disconnected`/`reconnected` events instead of generic `error`\n- Update `project.daemonStatus` on disconnect/reconnect\n- Fire `onActiveProjectChanged` to update UI","acceptance_criteria":"- [x] Null guards prevent \"Cannot read properties of null (reading 'filter')\" error\n- [x] Exponential backoff prevents error spam (1s -\u003e 30s max)\n- [x] Single \"Daemon disconnected\" message on disconnect\n- [x] Single \"Daemon reconnected\" message on reconnect\n- [x] daemonStatus updates to \"stopped\"/\"running\" appropriately\n- [ ] Status bar icon changes color on disconnect (UI needs to consume daemonStatus)","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-29T14:17:08.714282-08:00","updated_at":"2025-11-29T15:14:07.810064-08:00","closed_at":"2025-11-29T15:14:07.810064-08:00","dependencies":[{"issue_id":"vsbeads-5nm","depends_on_id":"vsbeads-ba5","type":"related","created_at":"2025-11-29T14:22:06.235038-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-65h","title":"Add label filter option to issues list","description":"Allow filtering issues by label in the issues list view. Could be a dropdown/chip selector similar to existing status filters.","status":"closed","priority":2,"issue_type":"feature","estimated_minutes":150,"created_at":"2025-11-28T17:39:51.904712-08:00","updated_at":"2025-12-11T02:50:55.109663-08:00","closed_at":"2025-12-11T02:50:55.109663-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-65h","depends_on_id":"vsbeads-7cp","type":"parent-child","created_at":"2025-12-10T02:09:57.407679-08:00","created_by":"daemon","metadata":"{}"}],"comments":[{"id":31,"issue_id":"vsbeads-65h","author":"jason","text":"needs to be able to add more than one label.","created_at":"2025-12-11T10:12:22Z"}]} +{"id":"vsbeads-661","title":"Contribute new beads icon artwork to upstream JaneDouglass","description":"The new simplified stroke-based icon (art/Beads.svg) works well at small sizes. Consider contributing this back to https://github.com/JaneDouglass for potential use in other beads projects.","status":"closed","priority":4,"issue_type":"task","created_at":"2025-12-16T12:24:05.497199-08:00","updated_at":"2025-12-17T02:02:55.438418-08:00","closed_at":"2025-12-17T02:02:55.438418-08:00","close_reason":"Artwork contributed in PR #39 with Co-Authored-By attribution to JaneDouglass","labels":["community","upstream"],"dependencies":[{"issue_id":"vsbeads-661","depends_on_id":"vsbeads-94s","type":"related","created_at":"2025-12-17T02:02:22.969746-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-677","title":"Move labels display near type/status/priority in Details panel","description":"Labels are currently displayed after description and other content in the Details panel. They should be positioned near the type/status/priority badges at the top for better visibility and quick scanning.\n\n**Current:** Labels appear lower in the panel after description/design/notes\n**Expected:** Labels appear next to or directly below the type/status/priority row","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-09T21:45:30.935934-08:00","updated_at":"2025-12-10T00:32:22.65165-08:00","closed_at":"2025-12-10T00:32:22.65165-08:00","labels":["ui"]} +{"id":"vsbeads-6d1","title":"Add type sort order for epic-first display","description":"Add TYPE_SORT_ORDER constant to control display order of bead types. Order: epic (0), feature (1), bug (2), task (3), chore (4), merge-request (5), molecule (6). Unknown types sort last (99).","status":"closed","priority":2,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-21T16:48:02.922617-08:00","updated_at":"2025-12-22T15:43:04.622095-08:00","closed_at":"2025-12-22T15:43:04.622095-08:00","close_reason":"Fixed in PR #46 - added TYPE_SORT_ORDER for epic-first display in filter menus and table columns","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-6d1","depends_on_id":"vsbeads-duu","type":"discovered-from","created_at":"2025-12-21T16:48:11.086284-08:00","created_by":"daemon"},{"issue_id":"vsbeads-6d1","depends_on_id":"vsbeads-rt9j","type":"related","created_at":"2025-12-21T16:48:16.634189-08:00","created_by":"daemon"},{"issue_id":"vsbeads-6d1","depends_on_id":"vsbeads-madg","type":"related","created_at":"2025-12-21T16:48:16.745306-08:00","created_by":"daemon"}]} +{"id":"vsbeads-6mx","title":"Support file attachments via beads-attachments directory","description":"Consider supporting file attachments (screenshots, docs) by:\n\n1. Store files in a `beads-attachments/` directory in repo (or on beads-metadata branch)\n2. Extension provides \"Attach file\" action that:\n - Copies/moves file to `beads-attachments/\u003cissue-id\u003e/filename.png`\n - Adds markdown link/embed to issue body or as a comment\n3. Render inline in Details panel when markdown contains `![](beads-attachments/...)`\n\nUse cases:\n- \"Look at this screenshot\" during bug reports\n- Design mockups attached to feature issues\n- Reference docs for complex tasks\n\nQuestions:\n- Store on main branch or beads-metadata branch?\n- Naming convention: `beads-attachments/\u003cissue-id\u003e/` or flat with prefixes?\n- Auto-cleanup when issue is compacted/deleted?","status":"open","priority":4,"issue_type":"feature","estimated_minutes":480,"created_at":"2025-11-30T01:18:31.564585-08:00","updated_at":"2025-12-04T12:00:13.942853-08:00","labels":["ui"]} +{"id":"vsbeads-6qz","title":"Bump minor version on release from main, reset patch to 0","description":"Current bump strategy increments patch version. For main branch releases, should bump minor version (0.x.0 → 0.y.0) and reset patch to 0. This better reflects semantic versioning where main releases are feature releases.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-28T17:04:40.688149-08:00","updated_at":"2025-11-28T21:39:01.557158-08:00","closed_at":"2025-11-28T21:39:01.557158-08:00","labels":["infra"]} +{"id":"vsbeads-79pr","title":"Tooltip content shows raw markdown instead of rendered","notes":"## Problem\nTooltip content displays raw markdown syntax instead of rendered HTML.\n\nExample: Shows `**bold**` and `- list item` instead of rendered **bold** and bullet points.\n\n## Expected\nMarkdown in tooltip content should be rendered as formatted HTML.\n\n## Fix\nUse a markdown renderer (e.g., `marked`, `react-markdown`) to convert markdown to HTML before displaying in tooltips.","status":"closed","priority":2,"issue_type":"bug","assignee":"jdillon","created_at":"2025-12-28T02:15:56.691005-08:00","updated_at":"2025-12-29T12:51:26.56702-08:00","closed_at":"2025-12-29T12:51:26.56702-08:00","close_reason":"Closed","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-79pr","depends_on_id":"vsbeads-un3l","type":"parent-child","created_at":"2025-12-29T11:39:53.265742-08:00","created_by":"daemon"}]} +{"id":"vsbeads-7ba","title":"Revisit UX for external ref and estimate fields","description":"The current external ref and estimate fields in the Details view need UX improvement. Review and redesign for better usability.","notes":"## Progress (2025-12-17)\n\n**Completed:**\n- External ref renders as clickable link when URL (with external-link icon from Font Awesome)\n- External ref and Estimate moved to separate sections (not crammed row)\n- Only show sections when data exists (cleaner UI)\n\n**Remaining exploration:**\n- Consider \"Other\" or \"Metadata\" section with key-value tabular layout (dl/dt/dd) for grouping auxiliary fields\n- Possibly add edit support back for these fields in edit mode\n\nBranch: `feat/external-ref-ux`","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-10T00:24:16.881928-08:00","updated_at":"2025-12-17T01:58:28.99454-08:00","closed_at":"2025-12-17T01:58:28.99454-08:00","close_reason":"Implemented in PR #40 - external ref as clickable link, separate sections","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-7ba","depends_on_id":"vsbeads-nin","type":"parent-child","created_at":"2025-12-11T14:52:12.538271-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-7ba","depends_on_id":"vsbeads-24b","type":"related","created_at":"2025-12-17T01:37:45.446635-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-7cp","title":"UX polish: visual indicators and metadata display","description":"Group of UX improvements for better visual indicators and metadata display in the Issues view.","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-12-10T02:01:46.928179-08:00","updated_at":"2025-12-11T14:52:17.848884-08:00","closed_at":"2025-12-11T14:52:17.848884-08:00","labels":["ui"]} +{"id":"vsbeads-7e9","title":"Docking, undocking, and editor tab support","description":"Support for opening beads views in editor tabs, undocking panels, and flexible window arrangements.","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-10T02:08:17.588144-08:00","updated_at":"2025-12-10T02:08:17.588144-08:00","labels":["ui"]} +{"id":"vsbeads-7eg","title":"Dynamic updates from daemon events are broken","description":"Extension does not automatically refresh when beads are modified via CLI. Changes made with bd update (e.g., adding labels, updating estimates) don't trigger UI refresh until manual reload.\n\n**Observed:**\n- Added 'test' label to vsbeads-7jw via CLI\n- Extension UI did not update automatically\n- Details panel still shows old labels\n\n**Expected:**\n- Daemon should emit change events\n- Extension should subscribe and refresh affected views\n\n**Impact:** Critical for workflow - users expect real-time updates when CLI and extension are used together.","notes":"**Root Cause:**\n`setupMutationWatching()` (called after daemon auto-start) only called `startMutationWatch()` but never registered the `mutation`, `disconnected`, and `reconnected` event listeners. The polling ran but events went unhandled.\n\n**Fix:**\n1. Moved event listener registration into `setupMutationWatching()`\n2. Refactored `setActiveProject()` to use `setupMutationWatching()` instead of duplicating code\n\n**Files changed:**\n- `src/backend/BeadsProjectManager.ts`","status":"closed","priority":1,"issue_type":"bug","estimated_minutes":60,"created_at":"2025-12-04T12:03:29.191873-08:00","updated_at":"2025-12-04T12:13:41.742744-08:00","closed_at":"2025-12-04T12:13:41.742744-08:00","labels":["backend","daemon"]} +{"id":"vsbeads-7g6","title":"Edit mode: removing labels via X button doesn't persist on save","description":"In Details panel edit mode, clicking X on a label badge and then clicking Save doesn't actually remove the label. The change is lost.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-01T14:56:40.573858-08:00","updated_at":"2025-12-01T15:56:32.557872-08:00","closed_at":"2025-12-01T15:56:32.557872-08:00","labels":["ui"]} +{"id":"vsbeads-7jw","title":"Setup dedicated test workspace for UI testing","description":"Create a separate workspace/project with beads initialized for testing the extension UI, so we don't pollute vscode-beads with test beads.\n\nPossible approaches:\n- Create `test-workspace/` directory with `.beads/` initialized\n- Or use a separate repo entirely\n- Should have sample beads with various states, labels, priorities, dependencies for testing edge cases","status":"open","priority":1,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-01T15:45:24.063029-08:00","updated_at":"2025-12-04T11:58:41.463335-08:00","labels":["dx"]} +{"id":"vsbeads-7ny","title":"Rename \"Beads Dashboard\" references to \"Beads\"","description":"Extension was renamed to \"Beads\" but there are leftover \"Beads Dashboard\" references. Output channel still shows \"Beads Dashboard\" in selector.","design":"Search and replace:\n- Output channel name in extension.ts\n- Any other \"Beads Dashboard\" strings in code/comments\n- Keep historical references in git commits as-is","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-11-26T18:43:02.79866-08:00","updated_at":"2025-11-27T01:18:57.016161-08:00","closed_at":"2025-11-27T01:18:57.016161-08:00"} +{"id":"vsbeads-7r2","title":"Edit view does not allow updating estimate field","description":"The Details panel edit mode is missing input for the estimate field. Users cannot set or modify time estimates through the UI.","status":"closed","priority":2,"issue_type":"bug","assignee":"jdillon","created_at":"2025-12-17T15:05:23.467365-08:00","updated_at":"2025-12-17T16:28:06.296055-08:00","closed_at":"2025-12-17T16:28:06.296055-08:00","close_reason":"PR #43 merged - estimate field now editable","labels":["details-panel","ui"],"dependencies":[{"issue_id":"vsbeads-7r2","depends_on_id":"vsbeads-nin","type":"parent-child","created_at":"2025-12-17T15:06:04.592244-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-7r2","depends_on_id":"vsbeads-7ba","type":"related","created_at":"2025-12-17T15:15:55.589415-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-7ue","title":"Show connection status indicator instead of full error view on disconnect","description":"When daemon disconnects, the entire panel shows an error view with Retry button. Better UX would be a status indicator (green→red) that shows connection state without replacing the panel content.","status":"open","priority":2,"issue_type":"feature","estimated_minutes":210,"created_at":"2025-11-29T15:04:49.017327-08:00","updated_at":"2025-12-04T11:58:48.492907-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-7ue","depends_on_id":"vsbeads-5nm","type":"discovered-from","created_at":"2025-11-29T15:04:54.924745-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-7xr","title":"Write E2E test: Issue selection shows details","description":"Test the core interaction flow: selecting an issue shows its details.\n\n**Test scenario:**\n1. Load Issues panel with seed data\n2. Click on an issue row\n3. Verify Details panel updates with selected issue\n4. Verify title, description, status display correctly\n\n**This proves:**\n- webview ↔ extension message passing works\n- Details panel receives selection events\n- UI updates reactively","acceptance_criteria":"- Test passes locally\n- Uses stable selectors (data-testid preferred)\n- Documents the interaction pattern","status":"open","priority":2,"issue_type":"task","estimated_minutes":60,"created_at":"2025-12-05T00:23:04.002552-08:00","updated_at":"2025-12-05T01:14:47.777369-08:00","labels":["testing"],"dependencies":[{"issue_id":"vsbeads-7xr","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.454114-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-7xr","depends_on_id":"vsbeads-w2x","type":"blocks","created_at":"2025-12-05T00:23:31.129272-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-7yz","title":"Finalize TanStack Table migration","description":"Complete the TanStack Table adoption for IssuesView:\n- Remove original IssuesView.tsx\n- Rename IssuesViewTanStack.tsx → IssuesView.tsx\n- Update App.tsx import (remove SPIKE comment)\n- Clean up any dead code\n\nDepends on PR #27 merge.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-04T15:54:09.941727-08:00","updated_at":"2025-12-04T15:56:42.596248-08:00","closed_at":"2025-12-04T15:56:42.596248-08:00","labels":["refactor","ui"],"dependencies":[{"issue_id":"vsbeads-7yz","depends_on_id":"vsbeads-4uw","type":"blocks","created_at":"2025-12-04T15:54:23.179714-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-868","title":"Ensure all critical daemon operations are logged to output","description":"Hard to debug daemon auto-start because logging may be missing or unclear. Need to verify that all critical operations (daemon start/stop, connection state changes, errors) are logged to the Beads output channel with clear context.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-29T15:11:28.197113-08:00","updated_at":"2025-12-02T23:51:38.589224-08:00","closed_at":"2025-12-02T23:51:38.589224-08:00","labels":["daemon","dx"],"dependencies":[{"issue_id":"vsbeads-868","depends_on_id":"vsbeads-5nm","type":"discovered-from","created_at":"2025-11-29T15:11:33.979743-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-8et","title":"Labels column: inconsistent overflow indicators (... vs +N)","description":"In the Issues list Labels column, overflow is shown inconsistently:\n- Sometimes shows `...` after labels\n- Sometimes shows `+1` or `+N` after labels\n\nShould pick one pattern and use it consistently. `+N` is clearer as it tells you how many more labels exist.","notes":"Current state: Changed from 2-label limit + +N to show all labels with CSS ellipsis overflow. However, can't verify the fix because column resize is broken (vsbeads-oqb) - can't make column smaller to test overflow behavior.\n\nBlocked by: vsbeads-oqb (column resize)\n\nChanges made:\n- IssuesView.tsx: Removed slice(0,2) limit, now renders all labels \n- styles.css: Restored text-overflow: ellipsis on .labels-cell","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-30T01:12:05.180628-08:00","updated_at":"2025-12-01T15:56:32.33104-08:00","closed_at":"2025-12-01T15:56:32.33104-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-8et","depends_on_id":"vsbeads-oqb","type":"blocks","created_at":"2025-12-01T15:12:55.315222-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-8oc","title":"Add right-click context menu for type/status/priority in Issues list","description":"Add context menu actions to the Issues list so users can right-click on type/status/priority badges to change them inline.\n\nSimilar to the inline editing in Details view (vsbeads-fwp), but using right-click instead of click since the list rows already have click-to-select behavior.\n\n## Requirements\n- Right-click on type badge → dropdown menu to change type\n- Right-click on status badge → dropdown menu to change status \n- Right-click on priority badge → dropdown menu to change priority\n- Changes auto-save (no confirmation needed)\n- Use same ColoredSelect dropdown component from Details view\n\n## Notes\n- Click on row = select issue (existing behavior)\n- Right-click on badge = edit that field (new behavior)","status":"open","priority":3,"issue_type":"feature","estimated_minutes":210,"created_at":"2025-12-01T00:39:43.583441-08:00","updated_at":"2025-12-04T11:59:24.877438-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-8oc","depends_on_id":"vsbeads-wgr","type":"parent-child","created_at":"2025-12-17T16:53:56.326584-08:00","created_by":"daemon","metadata":"{}"}],"comments":[{"id":24,"issue_id":"vsbeads-8oc","author":"jason","text":"**Estimate: Medium (~1-2 hours)**\n\nWhat's needed:\n1. Add `onContextMenu` handlers to type/status/priority badge cells in IssuesView\n2. Render a positioned dropdown menu on right-click (similar to column menu)\n3. Wire up the change to call `onUpdateBead` (already exists but unused in IssuesView)\n4. Reuse `ColoredSelect` or create a context menu variant\n\nComplexity factors:\n- We already have dropdown/menu patterns (column menu, preset dropdown)\n- We already have `ColoredSelect` component from DetailsView\n- Main work is positioning the context menu at click coordinates\n- Need to handle click-outside dismiss (pattern already exists)\n\nThe patterns exist, it's mostly wiring them together in a new context.","created_at":"2025-12-02T00:41:30Z"}]} +{"id":"vsbeads-8p0","title":"Detect uninitialized beads projects and show helpful message","description":"When a project has `.beads/` directory but no database (not initialized), the daemon start fails with \"no database path configured\".\n\nCurrent behavior: Shows generic \"Daemon failed to start\" error.\n\nDesired behavior:\n1. Detect uninitialized state (has .beads/ but no beads.db)\n2. Show specific message: \"Beads not initialized. Run `bd init` in this directory.\"\n3. Future: Could offer to auto-initialize or show a dialog with \"Initialize\" button\n\nRelated error: `Error: no database path configured (run 'bd init' or set BEADS_DB)`","status":"closed","priority":2,"issue_type":"feature","estimated_minutes":120,"created_at":"2025-12-02T23:16:32.248375-08:00","updated_at":"2025-12-04T15:13:55.889024-08:00","closed_at":"2025-12-04T15:13:55.889024-08:00","labels":["daemon","ui","ux"]} +{"id":"vsbeads-8pl","title":"Reduce Dashboard view minimum height","description":"Dashboard stats section takes too much vertical space, partially cutting off the Issues panel below. Need more compact layout for the stat boxes.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-27T01:01:36.914842-08:00","updated_at":"2025-11-27T01:05:05.154318-08:00","closed_at":"2025-11-27T01:05:05.154318-08:00"} +{"id":"vsbeads-8wo","title":"Support patch version bumps for release branches","description":"When releasing from a release branch (e.g., release-0.2.x), should increment patch version (0.2.0 → 0.2.1) for bugfix releases. Complements the minor bump strategy for main branch releases.","status":"closed","priority":4,"issue_type":"task","created_at":"2025-11-28T17:04:40.744218-08:00","updated_at":"2025-12-01T16:38:38.472019-08:00","closed_at":"2025-12-01T16:38:38.472019-08:00","labels":["infra"]} +{"id":"vsbeads-8xt","title":"Publish to Open VSX for Cursor/VSCodium compatibility","description":"Cursor and VSCodium use Open VSX Registry by default, not the Microsoft VS Code Marketplace. Users of these editors cannot discover/install the extension from their built-in marketplace.\n\nNeed to:\n1. Create account on open-vsx.org\n2. Add `ovsx` publish step to release workflow\n3. Document in README that extension is available on both marketplaces","design":"See `sandbox/open-vsx-publishing.md` for detailed implementation plan.","acceptance_criteria":"- [ ] Open VSX account created\n- [ ] `OVSX_PAT` secret added to GitHub repo\n- [ ] Release workflow updated with `ovsx publish` step\n- [ ] Extension visible on open-vsx.org after next release\n- [ ] Cursor user can find/install extension from marketplace","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-10T15:27:00.907564-08:00","updated_at":"2025-12-11T14:52:17.888504-08:00","closed_at":"2025-12-11T14:52:17.888504-08:00","labels":["dx","release"]} +{"id":"vsbeads-90cp","title":"Standalone task to associate with epic","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-27T20:54:31.509608-08:00","updated_at":"2025-12-29T11:36:43.341811-08:00","dependencies":[{"issue_id":"vsbeads-90cp","depends_on_id":"vsbeads-yhok","type":"parent-child","created_at":"2025-12-27T20:54:36.25191-08:00","created_by":"daemon"}],"deleted_at":"2025-12-29T11:36:43.341811-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"} +{"id":"vsbeads-92t","title":"Implement BeadsDaemonClient with Unix socket RPC","description":"Replace CLI-spawning BeadsBackend with direct daemon socket connection using JSON-RPC protocol. Support real-time mutations via get_mutations.","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-26T15:59:20.209079-08:00","updated_at":"2025-11-26T23:11:39.603475-08:00","closed_at":"2025-11-26T16:03:59.684447-08:00"} +{"id":"vsbeads-93b","title":"Release workflow: local slash command with changelog validation","description":"Replace `workflow_dispatch` with tag-triggered workflow. Add `/release` slash command for local release management.\n\n## Current problems\n- Must go to GitHub to trigger release\n- Version auto-calculated after publish → can't finalize changelog first\n- Post-release version bump creates chicken/egg with changelog\n\n## Solution\n\n### `/release` slash command\n1. **Compute default version** based on branch:\n - `main` → bump minor (0.1.3 → 0.2.0)\n - `release-v*` → bump patch (0.2.0 → 0.2.1)\n - Present as default, allow override\n\n2. **Audit changelog** for missing entries:\n - Parse git log since last tag\n - Compare to changelog entries\n - Flag potential gaps (feat/fix commits not in changelog)\n - Skip: docs, chore, refactor, ci commits\n - If gaps → ask user to update first\n\n3. **Validate \u0026 execute**:\n - Verify `[Unreleased]` has content\n - Move `[Unreleased]` → `[X.Y.Z] - YYYY-MM-DD`\n - Update `package.json` version\n - Commit: `chore: release vX.Y.Z`\n - Tag: `vX.Y.Z`\n - Push branch + tag\n\n### GitHub workflow changes\n- Trigger: `on: push: tags: 'v*'`\n- Remove: version calculation, post-publish bump\n- Keep: build, lint, package, publish, create release","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-28T17:28:03.814546-08:00","updated_at":"2025-11-29T17:35:03.199437-08:00","closed_at":"2025-11-29T17:35:03.199437-08:00","labels":["infra"]} +{"id":"vsbeads-94s","title":"Change to a better icon for Beads in the side panel","description":"The current icon in the VS Code activity bar/side panel could be improved. Find or create a more distinctive icon that better represents Beads.","notes":"Attempted to use beads-logo-mono.svg but it's too detailed for 24x24 activity bar icon. Need to create a simplified version of the logo that works at small sizes. The detailed logo works fine for the extension icon (icon.png) in the details panel.\n\n---\n\n2025-12-04: Applied the beads logo - it's better than the old 3-circle icon but not ideal at small sizes. Needs designer help to create an optimized small-size version of the beads logo.","status":"closed","priority":3,"issue_type":"task","assignee":"jason","estimated_minutes":90,"created_at":"2025-11-27T02:15:50.331234-08:00","updated_at":"2025-12-16T12:07:36.432074-08:00","closed_at":"2025-12-16T12:07:36.432074-08:00","labels":["ui"],"comments":[{"id":27,"issue_id":"vsbeads-94s","author":"jason","text":"see art/beads-logo-mono.svg for updated icoin","created_at":"2025-12-05T00:02:26Z"}]} +{"id":"vsbeads-96o","title":"Edit view does not allow updating external_ref field","description":"The Details panel edit mode is missing input for the external_ref field. Users cannot add or modify external references (e.g., GitHub issue links) through the UI.","status":"closed","priority":2,"issue_type":"bug","assignee":"jdillon","created_at":"2025-12-17T15:05:23.417351-08:00","updated_at":"2025-12-17T16:28:06.247278-08:00","closed_at":"2025-12-17T16:28:06.247278-08:00","close_reason":"PR #43 merged - external_ref field now editable","labels":["details-panel","ui"],"dependencies":[{"issue_id":"vsbeads-96o","depends_on_id":"vsbeads-nin","type":"parent-child","created_at":"2025-12-17T15:06:04.562762-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-96o","depends_on_id":"vsbeads-7ba","type":"related","created_at":"2025-12-17T15:15:55.556065-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-9cp","title":"Configurable columns: reorder, type icons, user preferences","description":"Add configuration and customization options for the Issues table columns:\n\n**Column Configuration:**\n- Reorder columns via drag-and-drop or settings\n- Show/hide specific columns\n- User preferences persisted\n\n**Type Icons:**\n- Add icons for issue types (bug, feature, task, epic, chore)\n- Use in type column and dependency badges (Depends On / Blocks sections)\n- Color badges by type in dependency lists\n\n**Reference:** See vsbeads-jue for where type-based coloring is needed in dep badges.","design":"Options:\n- Drag-and-drop column reordering (complex)\n- Settings-based column order array (simpler)\n- Type icons: bug=🐛, feature=✨, task=☑️, epic=🎯, chore=🔧 (or codicons)","status":"closed","priority":3,"issue_type":"feature","estimated_minutes":480,"created_at":"2025-11-27T01:39:27.294846-08:00","updated_at":"2025-12-10T02:06:42.526411-08:00","closed_at":"2025-12-10T02:06:42.526411-08:00","labels":["ui"]} +{"id":"vsbeads-9r1","title":"\"Active\" filter includes blocked issues - should it?","description":"## Problem\n\nThe \"Active\" filter currently includes issues with `status=blocked`. This pollutes the list with items that can't be worked on.\n\n## Intent of \"Active\"\n\n\"Active\" was created to fill the gap between:\n- `bd ready` = open + no blockers (things to pick up)\n- `bd list --status=in_progress` = things currently being worked\n\nNeither shows both. \"Active\" should be: **ready + in_progress** = everything I can touch today.\n\n## Current Behavior\n\n`bd list --status=active` returns:\n- `open` (all, not just unblocked)\n- `in_progress`\n- `blocked` ← shouldn't be here\n\n## Expected Behavior\n\n\"Active\" should return:\n- `open` with no blockers (i.e., ready)\n- `in_progress`\n\nExcludes:\n- `blocked` (stalled, can't work on)\n- `open` with unresolved blockers (also can't work on)\n\n## Fix\n\nChange \"Active\" filter logic to: `(status=open AND no_blockers) OR status=in_progress`","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-17T02:14:50.439131-08:00","updated_at":"2025-12-17T02:14:50.439131-08:00","labels":["filter","ux"]} +{"id":"vsbeads-adc","title":"Extract DependencySection component","description":"Extract dependency rendering from DetailsView:\n- Grouped display (depends on / blocks)\n- Sorting logic (blocked first, closed last)\n- Add/remove in edit mode\n- Click to navigate\n\nSaves ~200 LOC from DetailsView. Creates src/webview/common/DependencySection.tsx","status":"open","priority":3,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-04T15:54:11.232894-08:00","updated_at":"2025-12-05T12:01:16.905522-08:00","labels":["refactor","ui"]} +{"id":"vsbeads-amb","title":"Update README with current features and screenshots","description":"README is out of date - missing recent features like label filter, assignee support, FontAwesome icons, etc. Needs refresh to match current extension capabilities.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-11T15:50:17.088801-08:00","updated_at":"2025-12-11T16:08:29.227406-08:00","closed_at":"2025-12-11T16:08:29.227406-08:00","labels":["docs"]} +{"id":"vsbeads-ava","title":"Allow undocking Issues panel to editor tab or new window","description":"With many columns visible, the Issues panel gets quite wide and the sidebar becomes cramped. Should be able to undock/pop-out the Issues view to:\n- An editor tab (more horizontal space)\n- A new window (for multi-monitor setups)\n\nSimilar to how VS Code allows undocking panels to the editor area.","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-09T21:53:30.742241-08:00","updated_at":"2025-12-09T21:53:30.742241-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-ava","depends_on_id":"vsbeads-cqi","type":"related","created_at":"2025-12-09T21:53:35.746342-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-ava","depends_on_id":"vsbeads-7e9","type":"parent-child","created_at":"2025-12-10T02:08:25.039573-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-ba5","title":"Extension should auto-start daemon when not running","description":"Extension failed to connect with error: \"Socket error: connect ENOENT /Users/jason/ws/jdillon/vscode-beads/.beads/bd.sock\"\n\nThe daemon wasn't running and the extension didn't auto-start it. Need to investigate why the auto-start mechanism failed.","design":"## Investigation Areas\n\n1. **Why didn't auto-start work?**\n - Check if startDaemon is being called on connection failure\n - Verify the retry/backoff logic in BeadsBackend\n - Check if there's a race condition or timeout issue\n\n2. **Potential improvements**\n - Add daemon status indicator to UI (statusbar or panel)\n - Add \"Restart Daemon\" command to command palette\n - Show daemon connection status per-project in multi-root workspaces\n - Better error messaging when daemon fails to start\n\n3. **Diagnostics needed**\n - View current daemon connections across all projects\n - Force restart capability\n - Daemon health/metrics visibility in extension","status":"open","priority":3,"issue_type":"bug","estimated_minutes":180,"created_at":"2025-11-29T02:34:16.15086-08:00","updated_at":"2025-12-04T11:59:29.224036-08:00","labels":["daemon"]} +{"id":"vsbeads-bci","title":"Fix confusing dependency type handling and parent-child usage","description":"Dependency handling is confusing in multiple ways:\n\n**Problem 1: Directional confusion**\n- `blocks` relationship is the same whether viewed as \"depends on\" or \"blocks\"\n- UI shows \"Depends On\" and \"Blocks\" sections but both use `blocks` type\n- Not clear to users that these are the same underlying relationship\n\n**Problem 2: Not using parent-child for epics**\n- We have epics (e.g., vsbeads-5c0) with child tasks\n- But agent creates them with `blocks` dependencies, not `parent-child`\n- Should epics use `parent-child` type? What's the semantic difference?\n\n**Problem 3: Unclear when to use each type**\n- `blocks` - hard blocker, affects ready queue\n- `related` - soft link, context only\n- `parent-child` - epic/subtask hierarchy\n- `discovered-from` - work found during other work\n\nWhen should agent use parent-child vs blocks vs discovered-from?\n\n**Potential fixes:**\n1. Add dependency graph visualization showing relationships clearly\n2. Update CLAUDE.md/agent instructions on when to use each type\n3. Clarify UI labels (maybe show relationship type, not just direction)\n4. Consider migrating existing epic→task relationships to parent-child","design":"## Correct Usage (from beads docs)\n\n**`blocks`** - Hard blocker between independent issues\n- \"Task A blocks Task B\" = B can't start until A is done\n- Both directions affect ready queue\n\n**`parent-child`** - Epic/subtask hierarchy\n- `bd dep add EPIC_ID TASK_ID --type parent-child`\n- Epic is parent, tasks are children\n- Special behaviors:\n - `bd epic status` shows progress/completion %\n - `bd epic close-eligible` auto-closes complete epics\n - Children blocked if parent is blocked\n- **We should use this for epics, not `blocks`!**\n\n**`related`** - Soft link for context\n- Doesn't affect ready queue\n- Just for reference/navigation\n\n**`discovered-from`** - Work discovered during other work\n- Tracks \"yak shaving\" chains\n- `bd dep tree --reverse` shows discovery tree\n\n## Current Problem\n\nAgent creates epic relationships with `blocks` but should use `parent-child`:\n```bash\n# Wrong (what we do now):\nbd dep add vsbeads-5c0 vsbeads-yjr --type blocks\n\n# Right (what we should do):\nbd dep add vsbeads-5c0 vsbeads-yjr --type parent-child\n```\n\n## Fixes Needed\n\n1. Update CLAUDE.md with dependency type guidance\n2. Fix vscode-beads MCP tools to support `--type` parameter\n3. Consider graph view showing relationship types with different edge styles","notes":"## Upstream Bug: `bd show` mislabels dependency types\n\nFrom `sandbox/bd-show-display-bug.md`:\n\n**Bug:** `bd show` displays ALL dependencies under \"Blocks\" header, regardless of actual type.\n\n```\n$ bd show platform-wue\n\nBlocks (10): # WRONG - these are parent-child!\n ← platform-1pi: ...\n```\n\n**Actual data in beads.jsonl:**\n```json\n{\"issue_id\":\"platform-1pi\",\"depends_on_id\":\"platform-wue\",\"type\":\"parent-child\",...}\n```\n\n**Expected:**\n```\nChildren (10):\n ← platform-1pi: ...\n```\n\n## Impact on vscode-beads\n\nThe `--json` output should include `dependency_type` field. We can:\n1. Use `dependency_type` from JSON to display correctly in UI\n2. Group by type: \"Children\", \"Blocks\", \"Related\", \"Discovered From\"\n3. Different visual styling per type (icons, colors)\n\n## Action Items\n\n1. **Upstream:** File bug/PR for `bd show` to respect dependency type in display\n2. **vscode-beads:** Use `dependency_type` from daemon API to display correctly\n3. **vscode-beads:** Show relationship type in UI (badge, icon, or section header)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-29T02:42:42.366247-08:00","updated_at":"2025-11-29T13:07:18.994989-08:00","closed_at":"2025-11-29T13:07:18.994989-08:00","labels":["dx","ui"]} +{"id":"vsbeads-bcu","title":"Test bead for labels overflow","description":"Testing label display and overflow behaviordfsfs","status":"open","priority":3,"issue_type":"task","estimated_minutes":0,"created_at":"2025-12-01T15:32:16.718649-08:00","updated_at":"2025-12-04T11:59:22.270468-08:00","labels":["E","a","b","c","d"]} +{"id":"vsbeads-btf","title":"Scroll to latest comment when adding a comment in Details view","description":"When adding a comment in the Details panel, the view should auto-scroll to show the newly added comment at the bottom. Initial implementation attempts didn't work due to webview scroll container complexity.","status":"open","priority":4,"issue_type":"feature","estimated_minutes":45,"created_at":"2025-11-27T20:45:35.746701-08:00","updated_at":"2025-12-04T12:00:18.508148-08:00","labels":["ui"],"comments":[{"id":23,"issue_id":"vsbeads-btf","author":"jason","text":"turns out this is kinda hard, or was for claude to get correct.","created_at":"2025-12-02T00:38:50Z"}]} +{"id":"vsbeads-bxnb","title":"Research tree view / hierarchy display for issues list","description":"Explore options for optional tree/hierarchy view in issues list:\n\n**Inspiration**: IntelliJ IDEA project view has multiple view modes (flat list vs tree hierarchy)\n\n**Options to research**:\n1. Tree column in existing table (expandable rows)\n2. Separate tree view panel\n3. Toggle between list/tree modes\n4. TanStack Table tree data support\n\n**Questions**:\n- How to represent epic → task → subtask hierarchy?\n- How to handle dependencies vs parent-child?\n- What does TanStack Table support for tree data?\n- UX for expand/collapse in table vs dedicated tree view?","notes":"---\n2025-12-25: Draft PR #54 opened. Tree view basic functionality works but UI needs refinement - icons and visual hierarchy indicators need design review. TanStack Query added for data caching.","status":"blocked","priority":3,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-23T00:21:40.100896-08:00","updated_at":"2025-12-26T00:58:17.539117-08:00","labels":["research","ui"],"comments":[{"id":37,"issue_id":"vsbeads-bxnb","author":"jason","text":"Need to find some examples to show the agent what to build.","created_at":"2025-12-26T08:58:27Z"}]} +{"id":"vsbeads-c46","title":"Bug: Unable to add comment to issue (or comment doesn't show up)","description":"Adding a comment via the Details panel doesn't work or the comment doesn't appear after adding.\n\nNeed to investigate:\n- Is the message being sent to extension?\n- Is the bd CLI being called correctly?\n- Is the view refreshing after add?\n\nLocation: `src/webview/views/DetailsView.tsx` (add comment UI) and `src/providers/BeadDetailsViewProvider.ts` (handler)","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-27T19:12:55.728488-08:00","updated_at":"2025-11-27T20:44:36.179784-08:00","closed_at":"2025-11-27T20:44:36.179784-08:00","comments":[{"id":8,"issue_id":"vsbeads-c46","author":"jason","text":"test","created_at":"2025-11-28T03:50:08Z"}]} +{"id":"vsbeads-cct","title":"Extract useClickOutside hook","description":"Create reusable hook for click-outside detection. Currently duplicated in:\n- Dropdown.tsx\n- IssuesView.tsx (filter menu)\n- IssuesView.tsx (column menu)\n\nCreates src/webview/hooks/useClickOutside.ts","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-04T15:54:10.260142-08:00","updated_at":"2025-12-04T18:25:19.420012-08:00","closed_at":"2025-12-04T18:25:19.420012-08:00","labels":["dx","refactor","ui"]} +{"id":"vsbeads-cf6","title":"Normalize control heights across panels (dropdowns, inputs, badges)","description":"Controls in the Details panel appear smaller than equivalent controls in the Issues panel filter bar. All dropdowns, inputs, badges, and buttons should be consistent height across panels unless intentionally different (e.g., table cells where space is tight).\n\n**Observed:**\n- Issues panel filter chips: appear taller\n- Details panel ColoredSelect badges (Type, Status, Priority): appear shorter\n- Both use `size=\"small\"` badges but visual weight differs\n\n**Investigation needed:**\n- Check if parent container height constraints are squashing controls\n- Check if different wrapper padding/margins cause visual difference\n- May need to audit all control heights and standardize\n\n**Goal:** A dropdown in the filter bar should look identical to a dropdown in the details panel.","status":"closed","priority":2,"issue_type":"bug","assignee":"jdillon","created_at":"2025-12-11T02:49:36.773229-08:00","updated_at":"2025-12-17T16:28:06.202671-08:00","closed_at":"2025-12-17T16:28:06.202671-08:00","close_reason":"PR #42 merged - control heights normalized to 20px","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-cf6","depends_on_id":"vsbeads-nin","type":"parent-child","created_at":"2025-12-11T14:52:12.387877-08:00","created_by":"daemon","metadata":"{}"}],"comments":[{"id":33,"issue_id":"vsbeads-cf6","author":"jason","text":"Reopened - need to branch, commit, and push before closing","created_at":"2025-12-17T23:06:11Z"}]} +{"id":"vsbeads-cp3","title":"Replace native select menu in saved filter selector with styled dropdown","description":"The saved filter preset selector in the Issues panel uses a native `\u003cselect\u003e` element which renders with the OS native menu. This is inconsistent with the styled ColoredSelect dropdowns used elsewhere.\n\nShould use ColoredSelect or a similar custom dropdown component for visual consistency.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-30T13:49:12.24872-08:00","updated_at":"2025-12-01T16:11:51.517045-08:00","closed_at":"2025-12-01T16:11:51.517045-08:00","labels":["ui"]} +{"id":"vsbeads-cqi","title":"Redesign UI: sidebar for navigation, editor panels for views","description":"Move Kanban, Dependency Graph, and Details to WebviewPanel (editor tabs). Keep project selector and issue list in sidebar.","status":"open","priority":2,"issue_type":"feature","estimated_minutes":960,"created_at":"2025-11-26T15:59:20.263974-08:00","updated_at":"2025-12-04T11:58:59.107775-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-cqi","depends_on_id":"vsbeads-92t","type":"blocks","created_at":"2025-11-26T15:59:26.155171-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-cy5","title":"Setup GitHub Action for PR CI (lint, test, build)","description":"Add GitHub Action workflow to run on PRs to main branch. Should run lint, tests (once we have them), and verify build succeeds.","design":"`.github/workflows/ci.yml`\n- Trigger: pull_request to main\n- Steps: checkout, setup bun, install, lint, test, compile\n- Note: No tests exist yet - add placeholder or skip until tests added","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-26T18:39:27.003903-08:00","updated_at":"2025-11-27T20:56:11.148364-08:00","closed_at":"2025-11-27T20:56:11.148364-08:00"} +{"id":"vsbeads-d8u","title":"Replace native project dropdown with custom menu showing daemon status","description":"The project selector currently uses a native `\u003cselect\u003e` element, which limits styling.\n\nReplace with a custom dropdown menu that:\n1. Shows daemon status icon (●/○) next to each project in the dropdown list\n2. Allows consistent styling with the rest of the UI\n3. Can show additional project info (path tooltip, etc.)\n\nCurrent: Native select with status dot shown separately\nDesired: Custom dropdown with status icon integrated per-project option","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-12-02T23:20:13.569524-08:00","updated_at":"2025-12-02T23:43:37.764288-08:00","closed_at":"2025-12-02T23:43:37.764288-08:00","labels":["ui","ux"]} +{"id":"vsbeads-det","title":"Investigate external_ref persistence bug","description":"User reports potential bug in how external_ref field persists. Need to verify:\n1. Setting external_ref via `bd update \u003cid\u003e --external-ref=...`\n2. Check if value persists correctly in database\n3. Verify value displays correctly in UI after reload","notes":"## Investigation Results (2025-12-16)\n\n**Finding**: The bug is in the beads MCP plugin, not in `bd` CLI.\n\n- `bd update --external-ref=\"...\"` works correctly (value persists)\n- MCP `create` tool ignores `external_ref` parameter (returns null)\n\n**Root cause**: The local beads MCP plugin likely doesn't support `external_ref` on create, or we're using an older version.\n\n---\n\n## Resolution (2025-12-17)\n\nFixed VS Code extension to properly support external_ref:\n\n1. Added `external_ref` to `CreateArgs` and `UpdateArgs` in `BeadsDaemonClient.ts`\n2. Added camelCase→snake_case mapping in `BeadDetailsViewProvider.ts` for `externalRef`, `acceptanceCriteria`, `estimatedMinutes`\n3. External ref now renders as clickable link when URL-like (with external-link icon)\n4. Moved to dedicated section (not crammed row with estimate)\n\nRelated: vsbeads-7ba (UX improvements)","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-13T13:30:38.559002-08:00","updated_at":"2025-12-17T01:52:21.464653-08:00","closed_at":"2025-12-17T01:52:21.464653-08:00","close_reason":"Fixed external_ref support in VS Code extension","labels":["backend","investigation"],"dependencies":[{"issue_id":"vsbeads-det","depends_on_id":"vsbeads-7ba","type":"related","created_at":"2025-12-13T13:30:43.204739-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-dhe","title":"Set up GitHub Actions workflow for nightly E2E tests","description":"Create GitHub Actions workflow that runs integration tests on a schedule.\n\n**Requirements:**\n- Run nightly (not on every commit - too slow/resource intensive)\n- Manual trigger option (`workflow_dispatch`)\n- Use ubuntu-latest runner\n- Install code-server, bd CLI, Playwright browsers\n- Upload test artifacts on failure (screenshots, traces, HTML report)\n\n**Pattern:**\n```yaml\non:\n schedule:\n - cron: '0 6 * * *' # 6am UTC daily\n workflow_dispatch:\n```","acceptance_criteria":"- Workflow file in `.github/workflows/integration-tests.yml`\n- Manual trigger works from Actions tab\n- Artifacts available on failure\n- Sends notification on failure (optional/later)","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-05T00:23:04.64811-08:00","updated_at":"2025-12-05T01:14:48.401601-08:00","labels":["ci","testing"],"dependencies":[{"issue_id":"vsbeads-dhe","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.83836-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-dhe","depends_on_id":"vsbeads-w2x","type":"blocks","created_at":"2025-12-05T00:23:31.666861-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-drg","title":"Document branch naming convention in CLAUDE.md","description":"Add branch naming strategy to CLAUDE.md:\n\nFormat: `beads/\u003cbead-id\u003e-\u003cterse-description\u003e`\n\nExamples:\n- `beads/vsbeads-93b-release-workflow`\n- `beads/vsbeads-xyz-fix-daemon-polling`\n\nThis ties branches to tracked work and makes it easy to find related issues.","status":"open","priority":4,"issue_type":"task","estimated_minutes":30,"created_at":"2025-11-29T16:47:10.870444-08:00","updated_at":"2025-12-04T12:00:16.819609-08:00","labels":["dx"],"comments":[{"id":28,"issue_id":"vsbeads-drg","author":"jason","text":"this is good, but we often work on a few beads a time. Might want to noramlize some other branch name strategy instead.","created_at":"2025-12-06T20:31:29Z"}]} +{"id":"vsbeads-dso","title":"Setup VS Code Marketplace publisher account","description":"Create Azure DevOps org, get PAT, create planet57 publisher, configure for publishing. See sandbox/PUBLISHING.md for steps.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-26T18:39:27.189685-08:00","updated_at":"2025-11-27T20:56:48.666442-08:00","closed_at":"2025-11-27T20:56:48.666442-08:00"} +{"id":"vsbeads-duu","title":"Research new bead types and update type sort order","notes":"## Research Findings (2025-12-21)\n\n### Current Extension Types\nExtension supports: `bug`, `feature`, `task`, `epic`, `chore`\n\n### Upstream CLI Types (bd v0.30.x)\nCLI now supports: `bug | feature | task | epic | chore | merge-request | molecule`\n\n**New types added:**\n\n1. **`merge-request`** - Added Dec 18, 2025\n - Commit: https://github.com/steveyegge/beads/commit/3c04b763\n - Purpose: Track merge queue entries for \"Gas Town\" refinery\n - Stores metadata: branch, target, source_issue, worker, rig\n\n2. **`molecule`** - Added Dec 19, 2025\n - PR: https://github.com/steveyegge/beads/pull/658\n - Purpose: Template molecules for workflow instantiation\n - Used by Gas Town for multi-step process templates (bootstrap, engineer-in-box)\n - Stored in molecules.jsonl with is_template=true\n\n### Notes\n- No `story` type exists; Linear integration maps story → feature\n- Types are hardcoded enum in Go, not extensible\n- Priority in daemon protocol uses `*int` (pointer) - can be nil/omitted\n\n### Tasks Identified\n1. Add new types (`merge-request`, `molecule`) with icons/colors\n2. Add type sort order (epic first, then feature, bug, task, chore, new types)\n3. Add fallback handling for unknown future types (icon + color)","status":"closed","priority":2,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-20T16:32:23.018749-08:00","updated_at":"2025-12-22T01:18:38.342582-08:00","closed_at":"2025-12-22T01:18:38.342582-08:00","close_reason":"Research complete, spawned implementation beads","labels":["research","ui"]} +{"id":"vsbeads-dxo","title":"Create code-server test fixture","description":"Create Playwright fixture that manages code-server lifecycle for tests.\n\n**Requirements:**\n- Start code-server before test suite (global setup)\n- Stop code-server after tests complete (global teardown)\n- Handle port allocation (avoid conflicts)\n- Wait for code-server to be ready before tests start\n- Symlink extension into code-server extensions directory\n\n**Considerations:**\n- Use `child_process` spawn for code-server\n- Health check endpoint or port availability\n- Cleanup on test failure/interrupt","acceptance_criteria":"- Fixture starts code-server automatically\n- Tests can navigate to code-server URL\n- Clean shutdown on test completion\n- Works on macOS and Linux (CI)","status":"open","priority":2,"issue_type":"task","estimated_minutes":120,"created_at":"2025-12-05T00:23:01.414273-08:00","updated_at":"2025-12-05T01:14:42.779394-08:00","labels":["testing"],"dependencies":[{"issue_id":"vsbeads-dxo","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.266027-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-dxo","depends_on_id":"vsbeads-ur9","type":"blocks","created_at":"2025-12-05T00:23:29.976788-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-e36","title":"Add icons to view contributions","description":"VS Code warns about missing `icon` property on view contributions in package.json.\n\nIcons are used when views are dragged to Activity Bar or title can't be shown.\n\nViews needing icons:\n- beadsDashboard\n- beadsPanel (Issues)\n- beadsDetails\n\nOptions:\n- Use same beads-icon.svg for all (quick fix)\n- Create distinct icons per view (better UX)\n\nDecide on iconography style before implementing.","status":"open","priority":4,"issue_type":"task","estimated_minutes":60,"created_at":"2025-11-29T17:41:35.403094-08:00","updated_at":"2025-12-04T12:00:15.568122-08:00","labels":["ui"]} +{"id":"vsbeads-ebs","title":"Add comment count column to Issues list","description":"Add a synthetic column showing comment count per bead, hidden by default.\n\nUse case: Sort/filter by activity level - beads with more comments often indicate complexity or ongoing discussion.\n\nImplementation notes:\n- Column disabled by default (like Assignee/Estimate)\n- Would need comment count in list data (currently only fetched in Details view)\n- Consider if daemon API supports count without fetching full comments","status":"open","priority":4,"issue_type":"feature","estimated_minutes":90,"created_at":"2025-12-01T17:18:34.567726-08:00","updated_at":"2025-12-04T12:00:13.1052-08:00","labels":["ui"],"comments":[{"id":30,"issue_id":"vsbeads-ebs","author":"jason","text":"not sure how useful this really is... doesn't seem like agents use comments to append data, its more for humans.","created_at":"2025-12-10T10:09:01Z"}]} +{"id":"vsbeads-eby","title":"Add data-testid attributes to UI components","description":"Add stable `data-testid` attributes to key UI elements for reliable test selectors.\n\n**Target elements:**\n- Issues table rows (`data-testid=\"issue-row-{id}\"`)\n- Status badges (`data-testid=\"status-badge\"`)\n- Priority indicators (`data-testid=\"priority-badge\"`)\n- Details panel sections (`data-testid=\"details-title\"`, etc.)\n- Filter controls\n\n**Why:**\n- CSS class selectors are fragile (change with styling)\n- Text selectors break with i18n\n- data-testid is E2E testing best practice","acceptance_criteria":"- Key interactive elements have data-testid\n- Tests use these selectors instead of classes\n- No visual impact to UI","status":"open","priority":3,"issue_type":"task","estimated_minutes":45,"created_at":"2025-12-05T00:23:05.294226-08:00","updated_at":"2025-12-05T01:14:41.917251-08:00","labels":["testing","ui"],"dependencies":[{"issue_id":"vsbeads-eby","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:17.386975-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-eeg","title":"Filter count overlay not fixed to bottom-right of issues list","description":"The \"42 of 75\" filter count overlay in the Issues list should be fixed to the bottom-right corner of the table container, but currently it only appears in the correct position when scrollbars are at their starting positions.\n\nWhen scrolling horizontally or vertically, the overlay moves with the content instead of staying pinned to the viewport corner of the container.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-30T14:04:28.644697-08:00","updated_at":"2025-11-30T14:07:31.186018-08:00","closed_at":"2025-11-30T14:07:31.186018-08:00","labels":["ui"]} +{"id":"vsbeads-efp","title":"Normalize typography across dropdown menus","description":"Font sizes and weights appear slightly inconsistent across different dropdown menus (preset dropdown, filter menu, column menu). Should audit and normalize typography to be consistent.","status":"closed","priority":3,"issue_type":"bug","estimated_minutes":90,"created_at":"2025-12-01T16:11:51.469647-08:00","updated_at":"2025-12-11T01:35:38.66259-08:00","closed_at":"2025-12-11T01:35:38.66259-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-efp","depends_on_id":"vsbeads-7cp","type":"parent-child","created_at":"2025-12-10T02:10:41.929249-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-ejn","title":"Research: Better beads workflow to avoid PR/branch conflicts","description":"Beads conflates PR/branch workflows with issue tracker changes, causing beads created in feature branches to be auto-deleted when PRs merge.\n\n**Problem:**\n- Beads created in feature branch get committed with code\n- PR merges bring beads into main via git\n- `bd sync --from-main` runs and treats these as \"foreign\" entries\n- git-history-backfill incorrectly deletes them as \"pruned from manifest\"\n\n**Analysis:** See `tmp/beads-deletion-analysis.md`\n**Full discussion:** See `tmp/session-subagent-discussion.jsonl`\n\n**Potential Solutions to Research:**\n\n1. **Protected branch support** - beads has this feature, unclear if it helps\n - Does it prevent sync from touching certain branches?\n - Can it isolate beads changes from code changes?\n\n2. **Dedicated beads branch** - worktree with separate branch just for .beads/\n - Code stays on feature branches\n - Beads always committed to a single branch (e.g., `beads-main`)\n - Avoids merge conflicts between code PRs and beads state\n\n3. **Gitignore .beads/ in feature branches**\n - Only commit beads on main\n - Feature branches inherit but don't modify\n - Sync happens only on main\n\n4. **Submodule approach** - .beads/ as separate git repo\n - Complete isolation of issue tracker from code\n - More complex setup\n\n\u003e submodule is probably not great sub modules tie to revisions and the revision of this will be constantly changing.\n\n**Goal:** Find a workflow where:\n- Beads can be created/updated during feature work\n- PRs don't bring stale/conflicting beads state\n- No accidental deletions via sync","design":"## Research Findings\n\n### Question: Is it by design that all branches carry beads changes?\n\n**Answer: NO - this is incidental and problematic, not by design.**\n\n### Evidence from GitHub Issues\n\n1. **Issue #207 (Using beads with PRs)** - Steve Yegge (Nov 4): \"We're taking a serious look at offering a multi-repo solution, where beads uses separate repos\"\n\n2. **Issue #195 (.beads as worktree on orphan branch)** - Steve Yegge (Nov 4): Rejected worktree approach as \"too git-centric\", pursuing separate repository option instead for:\n - Clean separation of issue tracking from code history\n - Platform-agnostic approach (VCS-independent)\n - Better monorepo/multi-project support\n\n3. **Issue #158 (Merge conflicts)** - Extensive discussion about multi-agent conflicts, led to improved 3-way merging in v0.24.1+\n\n### Currently Supported Solutions\n\n1. **Protected Branch Workflow** (`bd init --branch beads-metadata`):\n - Beads commits to separate branch via git worktrees\n - Code stays on feature branches\n - Periodically merge beads-metadata → main via PR\n - See: docs/PROTECTED_BRANCHES.md\n\n2. **Contributor Workflow** (`bd init --contributor`):\n - For OSS contributors\n - Issues stored in `~/.beads-planning` (separate local repo)\n - Never pollutes upstream PRs\n\n### Our Specific Bug\n\nThe `git-history-backfill` deleting beads from PRs appears to be a **bug**, not intended behavior:\n- Expected: Beads in git history should be **recovered** (added to local DB)\n- Actual: Beads are **deleted** as \"pruned from manifest\"\n\n### Recommendation\n\nTry protected branch workflow:\n```bash\nbd config set sync.branch beads-metadata\nbd daemon restart\n```\n\nConsider filing bug report for git-history-backfill behavior.","notes":"## Decision (2025-11-28)\n\n**Strategy:** Try protected branch workflow now, wait for upstream multi-repo solution.\n\n## Experiment on forge (2025-11-28)\n\nTested `bd config set sync.branch beads-metadata` with `--auto-commit --auto-push`:\n\n**What works:**\n- ✅ Beads commits go to `beads-metadata` branch (via worktree)\n- ✅ Auto-push to `origin/beads-metadata` works\n- ✅ `main` branch stays untouched (no new commits)\n\n**Issues found:**\n- ❌ Working tree still shows `.beads/beads.jsonl` modified (tracked on main)\n - Fix: untrack from main with `git rm --cached`\n- ❌ `beads-metadata` is NOT an orphan branch - it's a snapshot of main at config time\n - Contains full code tree + history\n - Designed for merge workflow, not true isolation\n - For \"never merge\" approach, this is wasteful/messy\n\n**Branch structure:**\n```\nmain ─────────────────────────────────► (gets beads.jsonl changes in working tree)\n \\\n └─ beads-metadata ──────────► (beads commits here, has full code copy)\n```\n\n**What we'd want (orphan):**\n```\nmain ──────────────────► (code only)\nbeads-metadata (orphan) ──────────────► (beads only, no shared history)\n```\n\nIssue #195 proposed orphan approach but Steve rejected as \"too git-centric\" - pursuing separate repo instead.\n\n**Status:** Experiment complete, need to decide:\n1. Live with non-orphan branch (functional but messy)\n2. DIY orphan branch (unsupported)\n3. Wait for upstream multi-repo\n\n## Implementation (2025-11-29)\n\nSuccessfully migrated vscode-beads to protected branch workflow:\n- Untracked beads.jsonl/deletions.jsonl from main\n- Set sync.branch = beads-metadata\n- Daemon runs with --auto-commit --auto-push\n- Updated docs/development.md with setup instructions\n\n## Known Issue: beads.jsonl vs issues.jsonl confusion\n\nThere's upstream inconsistency about whether the JSONL file should be named `beads.jsonl` or `issues.jsonl`. Got conflicting answers from maintainers. Leaving as-is until upstream clarifies the canonical naming.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-28T22:03:57.82966-08:00","updated_at":"2025-11-29T14:14:15.314712-08:00","closed_at":"2025-11-29T14:14:15.314712-08:00","labels":["infra"],"dependencies":[{"issue_id":"vsbeads-ejn","depends_on_id":"vsbeads-hw7","type":"related","created_at":"2025-11-28T22:04:03.147893-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-el1i","title":"Sync daemon client types with upstream beads 0.37.0","description":"Keep BeadsDaemonClient types aligned with upstream beads daemon API.\n\nNew fields to add:\n- `CreateArgs.id_prefix` - custom ID prefix (mol, wisp, etc.)\n- `ListArgs.wisp` - filter by wisp status (boolean)\n- `Issue.source_formula` - steam engine tracing\n- `Issue.source_location` - steam engine tracing\n\nReference: beads commits d3245d26..6bb11c42\n\nEven if we don't use these features, our types should match the daemon for forward compatibility.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-25T16:53:02.796309-08:00","updated_at":"2025-12-29T14:01:59.183309-08:00","closed_at":"2025-12-29T14:01:59.183309-08:00","close_reason":"Upstream sync completed v0.37.0 → v0.40.0","labels":["backend"],"dependencies":[{"issue_id":"vsbeads-el1i","depends_on_id":"vsbeads-4m5i","type":"related","created_at":"2025-12-25T17:01:21.930664-08:00","created_by":"daemon"},{"issue_id":"vsbeads-el1i","depends_on_id":"vsbeads-un3l","type":"parent-child","created_at":"2025-12-29T13:43:31.681844-08:00","created_by":"daemon"}]} +{"id":"vsbeads-f7ng","title":"Create shared StatusPriorityPill component","description":"Dependency list uses custom inline badges (.dep-status, .dep-priority) with inconsistent spacing. Create a shared component that combines status and priority as a joined pill for consistent rendering.","status":"closed","priority":2,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-22T16:40:53.607923-08:00","updated_at":"2025-12-25T14:09:42.10426-08:00","closed_at":"2025-12-25T14:09:42.10426-08:00","close_reason":"Completed in PR #48 - StatusPriorityPill component added","labels":["ui"],"comments":[{"id":36,"issue_id":"vsbeads-f7ng","author":"jason","text":"Gap between status and priority badges is still inconsistent despite CSS gap: 2px being set. Some rows show different spacing than others - visible especially on P? badges. Possible causes to investigate:\n- Line height inconsistency\n- Font rendering differences\n- Badge height/alignment issues\n- Something overriding the flexbox gap\n- Parent container constraints","created_at":"2025-12-23T10:16:25Z"}]} +{"id":"vsbeads-fpp1","title":"vscode-server skill: open browser in incognito mode","description":"**Goal:** Open code-server in incognito window to avoid cache issues during development.\n\n**What we tried:**\n- Using Chrome CLI directly: `/Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome --incognito \"http://127.0.0.1:{PORT}/\"`\n- This opens in existing browser session but chrome-devtools MCP can't see/select the new page\n\n**Problem:**\n- chrome-devtools MCP launches its own Chrome instance with `--remote-debugging-pipe`\n- Incognito windows opened via CLI go to the user's regular Chrome, not the MCP-controlled Chrome\n- MCP's `list_pages` gets stuck when previously selected page is closed\n\n**Possible solutions:**\n1. Find a way to open incognito in MCP-controlled Chrome (if possible via DevTools protocol)\n2. Configure MCP to launch Chrome with `--incognito` flag from the start\n3. Use `--disk-cache-size=0` or similar cache-busting flags instead of incognito\n4. Just rely on hard reload (`ignoreCache: true`) which we already do","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-25T17:30:36.272116-08:00","updated_at":"2025-12-25T17:30:36.272116-08:00","labels":["dx"]} +{"id":"vsbeads-fwp","title":"Improvement: Colored dropdowns in edit mode for type/status/priority","description":"In DetailsView edit mode, the type/status/priority dropdowns are plain text. They should show colored versions matching how they appear elsewhere.\n\n## Requirements\n\n### Part 1: Colored dropdowns in edit mode\nApply filter-chip style (colored left border) to the select elements in edit mode. This matches the existing pattern used in the Issues list filter bar.\n\nCurrent location: `src/webview/views/DetailsView.tsx` lines 246-286\n\n### Part 2: Inline editing from view mode\nAdd ability to edit type/status/priority directly from the view page without entering full edit mode:\n- Option A: Click on badge to open dropdown menu\n- Option B: Right-click context menu on badge\n- Option C: Click badge → transforms to select → auto-saves\n\nDecision pending after Part 1 implementation.\n\n## Implementation Notes\n- Filter chips use: `border-left: 3px solid var(--chip-accent-color)` \n- Status colors: `STATUS_COLORS` in `types.ts`\n- Priority colors: `PRIORITY_COLORS` in `types.ts`\n- Type colors: CSS classes `.type-bug`, `.type-feature`, etc.\n\n## Testing\nUse code-server + Chrome DevTools MCP for testing (see `docs/code-server-testing.md`).","design":"## Part 1: Colored dropdowns in edit mode\n- Add `TYPE_COLORS` and `TYPE_TEXT_COLORS` constants to `types.ts` (extract from CSS)\n- Apply filter-chip style (colored left border) to select elements\n- Use inline style with CSS variable for color\n\n## Part 2: Inline editing from view mode\n- **Auto-save**: Yes, changes save immediately (no confirmation)\n- **Visual affordance**: None initially (test without hover effects)\n- **Scope**: type/status/priority only (labels/assignee later)\n- **Interaction**: Click badge → dropdown menu → select → auto-save\n\n## Prep for vsbeads-wk9\nNormalize all color constants (STATUS_COLORS, PRIORITY_COLORS, TYPE_COLORS) to same structure for future configurability.","notes":"## Progress\n\n### Part 1: Colored dropdowns in edit mode ✅\n- PR #21 opened\n- Added `ColoredSelect` component\n- Added `TYPE_COLORS`, `TYPE_TEXT_COLORS`, `TYPE_LABELS` to types.ts\n- Trigger uses filter-chip style (colored left border)\n- Dropdown menu shows full colored badges\n\n### Part 2: Inline editing from view mode\n- Next up: click badge in view mode → dropdown → auto-save","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-27T19:01:47.152941-08:00","updated_at":"2025-11-30T17:32:31.442482-08:00","closed_at":"2025-11-30T17:32:31.442482-08:00","labels":["ui"]} +{"id":"vsbeads-fyn","title":"Add copy ID action to issues list rows","description":"Currently copying a bead ID requires clicking a row to open details, then clicking the ID badge. Add a way to copy the ID directly from the list without navigating away.\n\nOptions:\n- Click on ID column copies to clipboard\n- Right-click context menu with \"Copy ID\"\n- Small copy icon on hover","design":"Click on ID span in issues list row copies to clipboard. Row selection still happens (no propagation stop). Add cursor pointer and title tooltip on ID span. Show brief visual feedback on copy.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-27T01:36:42.479739-08:00","updated_at":"2025-11-28T16:53:09.00156-08:00","closed_at":"2025-11-28T16:53:09.00156-08:00"} +{"id":"vsbeads-g09","title":"Setup planet57.com and verify publisher domains","description":"Set up planet57.com website and use it to verify publisher identity on both marketplaces.\n\nTasks:\n1. Set up planet57.com (landing page or redirect to GitHub)\n2. Add DNS TXT record for VS Code Marketplace verification\n3. Complete domain verification on VS Code Marketplace\n4. (Open VSX uses namespace ownership claim instead of domain verification - already filed)","notes":"VS Code Marketplace requires the domain to be live (responding at https://planet57.com) before showing the verify button. Need to set up the site first, then verify.\n\nOpen VSX uses namespace ownership claim (GitHub issue) instead of domain verification - already filed at https://github.com/EclipseFdn/open-vsx.org/issues/6642\n\n---\n\n**GitHub Pages setup plan:**\n1. Create repo `jdillon/planet57.github.io` (or use any repo with Pages enabled)\n2. Add a `CNAME` file with `planet57.com`\n3. Point DNS: `A` record to GitHub's IPs or `CNAME` to `jdillon.github.io`\n4. Enable HTTPS in repo settings\n5. Simple landing page or redirect to GitHub profile","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-10T22:19:40.356092-08:00","updated_at":"2025-12-10T22:24:48.97242-08:00","labels":["dx","release"]} +{"id":"vsbeads-gr5","title":"Filter presets/favorites system for Issues panel","description":"Currently filtering requires manually adding multiple filters (e.g., Open + In Progress + Blocked to exclude Closed). Need a better UX for common filter combinations.","design":"**Options considered:**\n\n1. **Preset filters** - Built-in presets like \"Not Closed\", \"Active Work\"\n - Simple UX, covers common cases\n - Limited flexibility\n\n2. **Negated filters** - Click to toggle +/- on any filter\n - Full flexibility\n - More complex UX, needs visual indicator\n\n3. **Default filter** - Start with a filter applied (e.g., \"Not Closed\")\n - Good for most common use case\n - User can clear if needed\n\n**Recommended approach:**\nCombination of 1 + 3: Filter \"favorites\" dropdown that preconfigures filter sets.\n- Start with static built-in favorites: \"Not Closed\", \"Active\" (in_progress + blocked), \"All\"\n- Future: Allow saving custom filter sets as favorites\n- Default to \"Not Closed\" on load","status":"open","priority":3,"issue_type":"feature","estimated_minutes":300,"created_at":"2025-11-26T23:34:31.877133-08:00","updated_at":"2025-12-04T11:59:38.532327-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-gr5","depends_on_id":"vsbeads-34v","type":"parent-child","created_at":"2025-11-26T23:34:39.784152-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-gsb","title":"Support secondary sort in issues table","description":"Add multi-column sorting to the issues table.\n\nPossible approaches:\n- Shift+click for secondary sort (common pattern)\n- Always use a default secondary sort (e.g., Updated as tiebreaker)\n- Configurable sort order via settings","status":"closed","priority":3,"issue_type":"feature","estimated_minutes":150,"created_at":"2025-11-27T13:04:59.70662-08:00","updated_at":"2025-12-04T17:47:22.82744-08:00","closed_at":"2025-12-04T17:47:22.82744-08:00","labels":["ui"]} +{"id":"vsbeads-hgm","title":"Test sub-agent context isolation","description":"After creating browser-task agent, test that:\n\n1. MCP response bloat stays in sub-agent context\n2. Only summary returns to main agent\n3. Measure context savings vs direct MCP calls\n\n**Test workflow:**\n- Invoke browser-task to reload code-server window\n- Check main context size before/after\n- Compare to doing reload directly with MCP","status":"open","priority":1,"issue_type":"task","estimated_minutes":90,"created_at":"2025-11-28T21:52:30.146368-08:00","updated_at":"2025-12-04T11:58:43.57841-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-hgm","depends_on_id":"vsbeads-yjr","type":"blocks","created_at":"2025-11-28T21:52:30.148724-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-hgm","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:42.044495-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-hjx","title":"Filter toggle button feels broken when filters are active","description":"When the filter panel is open and filters are active (icon is green), clicking the filter toggle button doesn't do anything. This feels broken.\n\nPossible solutions:\n- Toggle could hide/show the panel without clearing filters\n- Some other UX pattern\n\nNeed to determine the right behavior.","status":"open","priority":4,"issue_type":"bug","estimated_minutes":90,"created_at":"2025-11-27T02:27:29.005135-08:00","updated_at":"2025-12-04T12:00:20.708765-08:00","labels":["ui"]} +{"id":"vsbeads-hw6t","title":"Add dependency type support when editing beads","description":"When adding or editing dependencies on a bead, allow specifying and changing the relationship type (blocks, parent-child, related, discovered-from).","notes":"## UX Options for Change Dependency Type (deferred)\n\n**Option A: Inline dropdown on dep item**\n```\nvsbeads-xyz Title here [blocks ▾] [Open][P2] ×\n```\n- Small dropdown shows current type, click to change\n\n**Option B: Click type label to cycle/dropdown**\n- Section header becomes interactive in edit mode\n\n**Option C: Context menu on hover**\n- Right-click or ⋮ menu on dep item\n- \"Change type → blocks | parent-child | related | discovered-from\"\n\nRecommendation: Option A (inline dropdown) - most discoverable","status":"closed","priority":2,"issue_type":"feature","assignee":"jdillon","created_at":"2025-12-22T17:39:17.110727-08:00","updated_at":"2025-12-26T01:00:32.345008-08:00","closed_at":"2025-12-26T01:00:32.345008-08:00","close_reason":"PR #52 merged","labels":["editing","ui"]} +{"id":"vsbeads-hw7","title":"Investigate: beads auto-deleted via git-history-backfill","description":"Several beads created on 2025-11-28 were automatically deleted at 23:54:29 via `git-history-backfill` with reason \"recovered from git history (pruned from manifest)\".\n\n**Affected beads:**\n- vsbeads-ded (epic)\n- vsbeads-b80, vsbeads-csu, vsbeads-8q3, vsbeads-jpc (tasks)\n- vsbeads-b0e, vsbeads-xtn, vsbeads-cau, vsbeads-c04, vsbeads-e4j, vsbeads-92s\n\n**Investigation needed:**\n1. What triggered git-history-backfill?\n2. Was there a git checkout/reset/merge that reverted .beads files?\n3. Check git reflog for what happened around that time\n4. Review bd sync behavior - should it delete beads not in git history?\n\n**Session file for reference:** `tmp/session-subagent-discussion.jsonl`","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-28T21:51:58.272122-08:00","updated_at":"2025-12-01T16:25:56.160078-08:00","closed_at":"2025-12-01T16:25:56.160078-08:00","labels":["infra"]} +{"id":"vsbeads-i32l","title":"Make type sort order configurable","description":"Allow users to customize the display order of bead types. Could be a VS Code setting or .beads config.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-12-22T01:18:39.209631-08:00","updated_at":"2025-12-22T01:18:39.209631-08:00","labels":["config","ui"],"dependencies":[{"issue_id":"vsbeads-i32l","depends_on_id":"vsbeads-6d1","type":"related","created_at":"2025-12-22T01:18:46.775997-08:00","created_by":"daemon"}]} +{"id":"vsbeads-i41","title":"Split styles.css into component modules","description":"Break up monolithic styles.css (~1000 lines) into logical modules:\n- base.css (variables, resets)\n- badges.css\n- dropdowns.css\n- table.css\n- details.css\n- dashboard.css\n\nImport all in index.tsx or use CSS modules.","status":"open","priority":4,"issue_type":"chore","estimated_minutes":90,"created_at":"2025-12-04T15:54:11.880134-08:00","updated_at":"2025-12-05T12:01:16.978282-08:00","labels":["dx","refactor"],"dependencies":[{"issue_id":"vsbeads-i41","depends_on_id":"vsbeads-prs","type":"blocks","created_at":"2025-12-04T15:54:23.363098-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-ifcn","title":"Reorder dependency display: parent first, then children","description":"Current order shows 'blocked' first which is confusing. Reorder to:\n1. Parent (epic)\n2. Children\n3. Then remaining dependency types (blocked by, blocks, related, etc.)\n\nThis matches natural mental model of hierarchy before relationships.","status":"closed","priority":2,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-24T23:26:39.560403-08:00","updated_at":"2025-12-25T16:55:18.302593-08:00","closed_at":"2025-12-25T16:55:18.302593-08:00","close_reason":"Merged in PR #51","labels":["ui"]} +{"id":"vsbeads-ipb","title":"Show time in addition to date for timestamps in Details view","description":"Created/Updated/Closed timestamps in Details view currently only show date (toLocaleDateString). Should also show time for better context.\n\nLocation: `src/webview/views/DetailsView.tsx` (details-meta section)","status":"closed","priority":4,"issue_type":"feature","estimated_minutes":45,"created_at":"2025-11-27T20:49:34.095573-08:00","updated_at":"2025-12-11T01:34:51.948747-08:00","closed_at":"2025-12-11T01:34:51.948747-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-ipb","depends_on_id":"vsbeads-7cp","type":"parent-child","created_at":"2025-12-10T02:08:34.211682-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-iur","title":"Show labels in Details panel child bead references","description":"Child bead references in the Details panel dependencies section should display labels (like they do in the Issues list).","notes":"2025-12-11: Investigated - BeadDependency type doesn't include labels. Would need to update: 1) bd CLI to include labels in dependency responses, 2) DaemonBeadDependency type, 3) normalization logic, 4) BeadDependency type. Not a quick win - deferred.","status":"open","priority":3,"issue_type":"feature","estimated_minutes":60,"created_at":"2025-11-30T00:34:09.763359-08:00","updated_at":"2025-12-11T01:36:03.346378-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-iur","depends_on_id":"vsbeads-wgr","type":"parent-child","created_at":"2025-12-17T16:53:56.364942-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-iyn","title":"Daemons management view","description":"Add a dedicated daemons view panel showing all workspace daemons with detailed status and management options.\n\n**Potential features:**\n- List all beads projects with daemon status\n- Start/Stop/Restart buttons per daemon\n- Health indicators (DB status, uptime, last activity)\n- Log viewer integration\n- Auto-refresh status\n\nLower priority since status bar + quick pick menu covers basic needs.","status":"open","priority":3,"issue_type":"feature","estimated_minutes":420,"created_at":"2025-12-03T00:13:55.94898-08:00","updated_at":"2025-12-04T11:59:01.921198-08:00","labels":["daemon","ui"]} +{"id":"vsbeads-izh","title":"Show date+time in Updated/Created columns when wide enough","description":"Currently Updated/Created columns always show date only (e.g., \"12/1/2025\"). When the column is resized wider, should show date + time (e.g., \"12/1/2025 4:15 PM\").\n\nImplementation:\n- Check column width from state\n- If width \u003e threshold (e.g., 120px), use `toLocaleString()` instead of `toLocaleDateString()`\n- Could also show relative time (\"2h ago\") for very narrow columns","status":"closed","priority":3,"issue_type":"feature","estimated_minutes":60,"created_at":"2025-12-01T16:16:37.968279-08:00","updated_at":"2025-12-09T21:55:01.827745-08:00","closed_at":"2025-12-09T21:55:01.827745-08:00","labels":["ui"]} +{"id":"vsbeads-jb7","title":"Allow opening issue detail in editor panel","description":"Add option to open an issue's full detail view in an editor panel (tab) instead of just the sidebar Details panel. This allows viewing/editing while keeping sidebar free, and the view doesn't change when selecting different issues in the list.","design":"- Double-click or context menu \"Open in Editor\" on issue row\n- Opens `vscode.window.createWebviewPanel()` in editor area\n- Panel is independent - doesn't sync with sidebar selection\n- Can have multiple issue tabs open\n- Full editing support\n- Title shows issue ID","status":"open","priority":2,"issue_type":"feature","estimated_minutes":300,"created_at":"2025-11-26T18:39:34.504524-08:00","updated_at":"2025-12-04T11:58:56.508839-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-jb7","depends_on_id":"vsbeads-7e9","type":"parent-child","created_at":"2025-12-10T02:08:25.013461-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-jfa","title":"Create test beads project fixture","description":"Create fixture that provides isolated beads test data for each test.\n\n**Requirements:**\n- Create temp directory with `.beads/` initialized\n- Seed with known test issues (various statuses, priorities, types)\n- Clean up after test completes\n- Option to customize seed data per test\n\n**Approach:**\n- Use `bd init` to create fresh beads db\n- Use `bd create` or direct JSON import for seed data\n- Store seed data templates in `e2e/fixtures/seed-data/`","acceptance_criteria":"- Each test gets isolated beads project\n- Seed data is consistent and predictable\n- No cross-test data pollution\n- Cleanup happens even on test failure","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-05T00:23:02.061916-08:00","updated_at":"2025-12-05T01:14:43.946258-08:00","labels":["testing"],"dependencies":[{"issue_id":"vsbeads-jfa","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.309365-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-jfa","depends_on_id":"vsbeads-ur9","type":"blocks","created_at":"2025-12-05T00:23:30.023879-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-jru","title":"Add copy ID button to Details panel title bar","description":"Added copy button to Details panel VS Code title bar. Also normalized all copy feedback to use VS Code status bar messages (2s auto-dismiss) instead of yellow toast popups.\n\n**Changes:**\n- `package.json`: Added `beads.copyBeadId` command with conditional visibility (`when` clause)\n- `extension.ts`: Command handler using `setStatusBarMessage`\n- `BeadDetailsViewProvider.ts`: `getCurrentBeadId()` getter, context key management, `copyBeadId` message handler\n- `DetailsView.tsx`: Added `onCopyId` prop, uses message passing instead of toast\n- `types.ts`: Added `copyBeadId` message type\n\nButton only shows when a bead is selected.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-27T18:31:28.983608-08:00","updated_at":"2025-11-27T18:43:41.736313-08:00","closed_at":"2025-11-27T18:43:41.736313-08:00"} +{"id":"vsbeads-jue","title":"Show dependents in BeadDetails view","description":"BeadDetails only shows \"Depends On\" (issues this bead depends on). Need to also show \"Dependents\" (issues that depend on this bead) to see the full relationship graph.\n\nCurrently the MCP show command returns both `dependencies` and `dependents`, but only dependencies are displayed in the UI.","design":"1. Update `Bead` type in types.ts to include `dependents?: string[]`\n2. Ensure backend passes through dependents from bd show\n3. Add \"Dependents\" section to BeadDetails.tsx (similar to \"Depends On\")\n4. Make dependent badges clickable to navigate to that issue","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-27T01:00:57.071592-08:00","updated_at":"2025-11-27T19:15:58.191577-08:00","closed_at":"2025-11-27T19:15:58.191577-08:00","dependencies":[{"issue_id":"vsbeads-jue","depends_on_id":"vsbeads-gr5","type":"related","created_at":"2025-11-27T01:01:56.807728-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-k3d","title":"test","description":"test","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-11-27T19:00:03.991806-08:00","updated_at":"2025-11-27T20:44:36.231963-08:00","closed_at":"2025-11-27T20:44:36.231963-08:00","comments":[{"id":3,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T03:27:34Z"},{"id":4,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T03:27:47Z"},{"id":7,"issue_id":"vsbeads-k3d","author":"jason","text":"Test comment from bug investigation","created_at":"2025-11-28T03:46:44Z"},{"id":9,"issue_id":"vsbeads-k3d","author":"jason","text":"tst","created_at":"2025-11-28T03:51:07Z"},{"id":10,"issue_id":"vsbeads-k3d","author":"jason","text":"foo bar baz","created_at":"2025-11-28T03:52:00Z"},{"id":11,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T04:10:12Z"},{"id":12,"issue_id":"vsbeads-k3d","author":"jason","text":"Testing auto-scroll feature","created_at":"2025-11-28T04:15:27Z"},{"id":13,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T04:22:02Z"},{"id":14,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T04:22:27Z"},{"id":15,"issue_id":"vsbeads-k3d","author":"jason","text":"5es","created_at":"2025-11-28T04:24:20Z"},{"id":16,"issue_id":"vsbeads-k3d","author":"jason","text":"dfs","created_at":"2025-11-28T04:24:45Z"},{"id":17,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T04:26:07Z"},{"id":18,"issue_id":"vsbeads-k3d","author":"jason","text":"maybe?","created_at":"2025-11-28T04:33:19Z"},{"id":19,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T04:35:03Z"}]} +{"id":"vsbeads-kog","title":"Separate VS Code Marketplace content from README","description":"Currently README.md serves both as repo documentation and marketplace listing. Consider creating separate content for the marketplace (e.g., MARKETPLACE.md) to allow:\n- Marketplace-focused content for end users\n- README with development/contribution info for developers\n\nResearch vsce options for custom readme paths.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-29T14:07:09.085539-08:00","updated_at":"2025-11-29T15:49:25.780981-08:00","closed_at":"2025-11-29T15:49:25.780981-08:00","labels":["dx"]} +{"id":"vsbeads-kz0","title":"Add more optional columns to Issues list (assignee, estimate, etc.)","description":"Users may want to see/sort by additional fields not currently exposed as columns:\n- Assignee\n- Estimate (if beads supports this)\n- External ref\n- Dependency count (blocked by / blocks)\n\nThese should be optional columns available via the column visibility menu (⋮).","notes":"Added Assignee and Estimate columns. Estimate column will show '-' for all beads since bd CLI doesn't expose --estimate flag for update. Field exists in schema (estimated_minutes) but not settable via current CLI.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-12-01T15:55:30.048853-08:00","updated_at":"2025-12-01T16:03:02.172879-08:00","closed_at":"2025-12-01T16:03:02.172879-08:00","labels":["ui"]} +{"id":"vsbeads-l1j","title":"Research: Obsidian plugin for beads with shared daemon client","description":"Explore building an Obsidian plugin for beads, potentially sharing implementation with vscode-beads.\n\n**Context:** Jason the Great is using Claude and beads in a git-enabled Obsidian vault and wants to view/manage beads directly in Obsidian.\n\n**Sharing strategy to evaluate:**\n\n1. **Extract `BeadsDaemonClient` to standalone package**\n - Pure TypeScript, no VS Code dependencies\n - Socket connection + JSON-RPC\n - Could be shared npm package or monorepo\n\n2. **Share type definitions**\n - `Bead`, `BeadStatus`, `BeadPriority`, etc.\n - Extract from `src/backend/types.ts`\n\n3. **UI is platform-specific**\n - Obsidian: their component system (or Svelte)\n - VS Code: React webviews\n\n**Questions to answer:**\n- Can Obsidian plugins access Unix sockets? (Node.js `net` in Electron renderer)\n- What's Obsidian's plugin architecture? Views, sidebars, modals?\n- Should we use daemon socket or just shell out to `bd` CLI?\n- Monorepo vs separate repos with shared npm package?\n\n**Reference:**\n- Obsidian plugin docs: https://docs.obsidian.md/Plugins\n- vscode-beads daemon client: `src/backend/BeadsDaemonClient.ts`\n\n**Deliverable:** Decision doc on architecture + feasibility assessment","status":"open","priority":2,"issue_type":"task","estimated_minutes":120,"created_at":"2025-12-06T16:47:13.708368-08:00","updated_at":"2025-12-06T16:47:18.624578-08:00","labels":["dx","obsidian","research"]} +{"id":"vsbeads-l27","title":"Markdown rendering has excessive spacing around lists","description":"UL elements have too much padding/margin around them, and there appears to be forced spacing between LI elements despite CSS rules attempting to remove it. The markdown rendering should be more compact - simple lists should look similar to plain text with proper bullet formatting.","notes":"2025-12-17: Fixed using `font-size: 0` technique on UL/OL elements to eliminate whitespace between HTML elements creating anonymous line boxes. Font size restored to 12px on LI elements. PR #44.","status":"closed","priority":3,"issue_type":"bug","assignee":"jdillon","estimated_minutes":60,"created_at":"2025-11-26T17:55:40.606838-08:00","updated_at":"2025-12-17T16:41:11.045869-08:00","closed_at":"2025-12-17T16:41:11.045869-08:00","close_reason":"Fixed via PR #44 - used font-size:0 technique to eliminate whitespace line boxes","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-l27","depends_on_id":"vsbeads-nin","type":"parent-child","created_at":"2025-12-11T14:52:12.752807-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-ly2","title":"Improve daemon status management and zombie daemon detection","description":"Comprehensive daemon status management improvements:\n\n**Issues Fixed:**\n1. Stale dropdown status after connect/disconnect\n2. No visual feedback when daemon disconnects\n3. Zombie daemon handling (process running but socket missing/unresponsive)\n4. No way to restart daemon from UI\n\n**Features Added:**\n- **Status bar item**: Shows daemon status (green=running, yellow=stopped, red=zombie)\n- **Click menu**: Start/Stop/Restart options, Show Logs\n- **Detailed status check**: Detects edge cases (no DB, stale PID, zombie state)\n- **Commands**: `beads.restartDaemon`, `beads.checkDaemonStatus`, `beads.showDaemonMenu`\n\n**Technical Changes:**\n- `getDaemonStatus()` - comprehensive status with DB/socket/PID/process/health checks\n- `restartDaemon()` - stop + start with cleanup pause\n- `startDaemonProcess()` - refactored, detects \"already running\" error\n- Status bar with ThemeColor backgrounds for visibility\n- Quick pick menu with context-aware options","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-03T00:03:06.507996-08:00","updated_at":"2025-12-03T00:18:16.246048-08:00","closed_at":"2025-12-03T00:18:16.246048-08:00","labels":["daemon","ui"]} +{"id":"vsbeads-lzx6","title":"Test merge-request type display","description":"Testing how merge-request type looks in the UI","status":"closed","priority":3,"issue_type":"merge-request","created_at":"2025-12-25T17:03:46.351472-08:00","updated_at":"2025-12-25T17:04:36.353914-08:00","closed_at":"2025-12-25T17:04:36.353914-08:00","close_reason":"Test complete - UI looks good","labels":["test"]} +{"id":"vsbeads-m0t","title":"Agent VS Code dev: next steps after research","description":"## Context\nResearch complete in `sandbox/agent-vscode-dev-research.md`. Ready to test and implement.\n\n## Immediate Next Step\n1. **Test Chrome DevTools MCP** (vsbeads-1k7)\n - Install: `claude mcp add chrome-devtools -- npx -y chrome-devtools-mcp@latest`\n - Restart Claude Code\n - Run test plan: navigate, click, snapshot, screenshot, console, evaluate_script\n - Key goal: verify console access works (painpoint for debugging)\n\n## If Chrome DevTools MCP works\n2. Create implementation beads from roadmap Phase 1:\n - Install code-server locally\n - Configure Chrome DevTools MCP for code-server\n - Test: open code-server, navigate, see console/errors\n - Install vscode-beads VSIX\n\n## If Chrome DevTools MCP fails\n- Fallback to Playwright MCP\n- May lose console access, need workaround\n\n## Reference\n- Research doc: `sandbox/agent-vscode-dev-research.md`\n- Epic: vsbeads-3cn\n- Research task: vsbeads-q6r","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-27T17:17:51.470823-08:00","updated_at":"2025-11-27T19:17:07.693297-08:00","closed_at":"2025-11-27T19:17:07.693297-08:00","dependencies":[{"issue_id":"vsbeads-m0t","depends_on_id":"vsbeads-1k7","type":"blocks","created_at":"2025-11-27T17:17:55.445037-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-m0t","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.250208-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-m98","title":"sql: database is closed errors after bd upgrade","description":"After upgrading to recent beads (v0.30+), the extension frequently fails with \"sql: database is closed\" errors. This breaks all views - Issues, Details, Dashboard.\n\nSymptoms:\n- \"Error: failed to list issues: failed to search issues: sql: database is closed\"\n- \"Error: failed to get issue: failed to get issue: sql: database is closed\" \n- \"Error: failed to list comments: failed to query comments: sql: database is closed\"\n- Happens intermittently, sometimes recovers with \"Reconnected to daemon\"\n- Retry button doesn't always fix it","design":"Possible causes:\n1. Daemon connection drops/reconnects but client doesn't handle it\n2. bd daemon sqlite connection pool issue\n3. Race condition on daemon restart\n4. Version mismatch between extension expectations and bd daemon protocol\n\nInvestigation needed:\n- Check daemon logs when this happens\n- Check if bd daemon is crashing/restarting\n- Review recent bd changelog for breaking changes\n- Test with direct mode (--no-daemon) to isolate","notes":"---\n2025-12-17: Added client-side retry mitigation in BeadsDaemonClient.ts\n\n- `execute()` now retries up to 2 times for transient errors\n- Transient patterns: \"database is closed\", \"database is locked\", \"connection reset\"\n- Increasing delay between retries (100ms, 200ms)\n- This should mask the race condition on the daemon side\n\nUpstream issue: GH#607","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-17T01:55:16.333492-08:00","updated_at":"2025-12-17T12:26:22.326517-08:00","closed_at":"2025-12-17T12:26:22.326517-08:00","close_reason":"Fixed with client-side retry mitigation. Upstream issue GH#607 filed.","external_ref":"https://github.com/steveyegge/beads/issues/607","labels":["backend","critical","daemon"]} +{"id":"vsbeads-madg","title":"Add fallback handling for unknown bead types","description":"Handle future unknown bead types gracefully. Show question mark icon with gray color. Prevents UI errors when upstream adds new types before extension is updated.","status":"closed","priority":2,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-21T16:48:04.859414-08:00","updated_at":"2025-12-22T17:34:49.227304-08:00","closed_at":"2025-12-22T17:34:49.227304-08:00","close_reason":"PR #49 merged - notdef icon for unknown types","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-madg","depends_on_id":"vsbeads-duu","type":"discovered-from","created_at":"2025-12-21T16:48:11.310971-08:00","created_by":"daemon"}]} +{"id":"vsbeads-mbo","title":"Fix bd sync prefix mismatch (vscode-beads- vs vscode-)","description":"bd sync fails with: \"prefix mismatch detected: database uses 'vscode-beads-' but found issues with prefixes: [vscode- (16 issues)]\". This prevents syncing beads to git.","design":"Error suggests using --rename-on-import flag. May need to:\n1. Run bd sync --rename-on-import\n2. Or fix the prefix in config.yaml\n3. Or re-export with correct prefix","notes":"**Root Cause:** Bug in `internal/utils/issue_id.go:ExtractIssuePrefix` - used `strings.Index` (first hyphen) instead of `strings.LastIndex` (last hyphen). For `vscode-beads-4n2`, it extracted prefix as `vscode` instead of `vscode-beads`.\n\n**Fix:** Already in beads main (commit 6294ef0c). New bd built at `/tmp/bd-new`.\n\n**Workaround Applied:** Renamed prefix from `vscode-beads` to `vsbeads`.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-26T18:52:04.449107-08:00","updated_at":"2025-11-26T23:13:56.591814-08:00","closed_at":"2025-11-26T23:13:56.591814-08:00"} +{"id":"vsbeads-mkvi","title":"Add autocomplete for dependency input","description":"When adding a dependency, provide autocomplete suggestions as the user types. Should match on:\n- Bead ID (e.g., vsbeads-xxx)\n- Title text\n\nThis makes it easier to find the correct bead without needing to remember exact IDs.\n\nCould also validate that the entered ID exists before submitting.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-12-25T14:54:32.085931-08:00","updated_at":"2025-12-25T14:54:32.085931-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-mkvi","depends_on_id":"vsbeads-hw6t","type":"discovered-from","created_at":"2025-12-25T14:54:39.284219-08:00","created_by":"daemon"}]} +{"id":"vsbeads-mwic","title":"Re-sync upstream from v0.37.0 covering el1i and u5xh context","description":"Re-run /upstream-sync starting from v0.37.0 instead of v0.38.0 to capture context from:\n\n- vsbeads-el1i: Daemon client types (id_prefix, wisp, source_formula, source_location)\n- vsbeads-u5xh: Children list vanishing bug (may be race condition like vsbeads-re92)\n\nAfter re-review, close vsbeads-el1i and vsbeads-u5xh if covered.\n\nUpdate docs/upstream-sync/README.md sync point to v0.37.0 before running.","status":"closed","priority":2,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-29T13:43:34.073673-08:00","created_by":"jason","updated_at":"2025-12-29T14:01:59.180523-08:00","closed_at":"2025-12-29T14:01:59.180523-08:00","close_reason":"Upstream sync completed v0.37.0 → v0.40.0","labels":["backend","ui"],"dependencies":[{"issue_id":"vsbeads-mwic","depends_on_id":"vsbeads-un3l","type":"parent-child","created_at":"2025-12-29T13:43:44.225598-08:00","created_by":"daemon"}]} +{"id":"vsbeads-mwr","title":"Details view: ref beads missing priority badge when priority is null/undefined","description":"Some beads in the Details view dependency list are missing their priority badge. Likely caused by null/undefined priority values not being handled gracefully in the UI.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-21T14:27:26.393975-08:00","updated_at":"2025-12-22T15:42:32.139387-08:00","closed_at":"2025-12-22T15:42:32.139387-08:00","close_reason":"Fixed in PR #45 - shows P? badge with gray background for undefined priority, colors extracted to constants","labels":["ui"]} +{"id":"vsbeads-n64","title":"Build optimized agent automation for VS Code/code-server (reduce context bloat)","description":"Chrome DevTools MCP returns ~400 lines (full a11y tree) after EVERY action. This burns through context extremely fast. Need to build custom tooling.\n\n**Problem observed:**\n- `press_key` → 401 lines returned\n- `click` → full snapshot returned \n- Simple reload workflow = ~120KB context\n- Playwright MCP has same issue (also uses a11y snapshots)\n\n**Direction:**\nBuild custom tooling for optimized agent-driven VS Code/code-server automation:\n1. Helper extension that exposes simple commands (reload, focus panel, etc.) callable via API\n2. Custom MCP that returns minimal/filtered responses instead of full tree\n3. Script-based helpers agent can invoke without snapshot overhead\n4. Same pattern needed for Figma later\n\n**Current workaround:**\n- Use Chrome DevTools MCP sparingly for single feature verification\n- Leave window reload to human to avoid context burn\n- Hybrid: agent codes, human clicks to verify","status":"open","priority":2,"issue_type":"task","estimated_minutes":720,"created_at":"2025-11-27T18:31:28.924977-08:00","updated_at":"2025-12-04T11:58:54.423038-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-n64","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.275699-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-nin","title":"UX polish phase 2: filters, context menus, and refinements","description":"Continuation of UX improvements from vsbeads-7cp. Focus on search/filter behavior, context menus, and visual refinements.","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-12-11T14:52:06.290596-08:00","updated_at":"2025-12-17T16:42:59.190417-08:00","closed_at":"2025-12-17T16:42:59.190417-08:00","close_reason":"Completed simpler items; remaining complex UI work moved to vsbeads-wgr","labels":["ui"]} +{"id":"vsbeads-onk","title":"Consider dev/snapshot version suffix after release","description":"After tagging a release, main stays at the released version (e.g., 0.2.0). This could be confusing when building from main after additional commits - same version but different code.\n\nOptions to consider:\n- Bump to `X.Y+1.0-dev` after release\n- Bump to `X.Y.Z-SNAPSHOT` pattern\n- Leave as-is (simpler, beads project does this)\n\nIf implementing, update `/project-release` to bump version after pushing tag.","status":"open","priority":3,"issue_type":"task","estimated_minutes":45,"created_at":"2025-11-29T17:34:58.801913-08:00","updated_at":"2025-12-04T11:59:26.955052-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-onk","depends_on_id":"vsbeads-93b","type":"related","created_at":"2025-11-29T17:35:03.165667-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-ops","title":"Redesign Dashboard for compactness and usefulness","description":"Current dashboard has redundant/space-wasting sections. The status bar chart duplicates the summary cards above. Need a more compact, meaningful layout.","design":"**Keep:**\n- Summary cards (Total, Ready, In Progress, Blocked) - useful at a glance\n- In Progress list - very useful\n\n**Remove/Replace:**\n- Status breakdown bars (redundant with cards)\n- Priority breakdown bars (takes too much space)\n\n**Options for compact redesign:**\n\n**Option A: Type + Priority chips**\n```\n[Summary Cards Row]\n\nBY TYPE BY PRIORITY\nbug: 3 P1: 1 P2: 4 P3: 3\nfeature: 4\ntask: 1\n\nIN PROGRESS BLOCKED (if any)\n- issue... - issue...\n```\n\n**Option B: Single stats row**\n```\n[Summary Cards Row]\n\nTypes: 🐛3 ✨4 📋1 Priority: P1:1 P2:4 P3:3\n\nIN PROGRESS READY (top 3)\n- issue... - issue...\n```\n\n**Option C: Kanban-lite summary**\n```\n[Summary Cards Row]\n\nREADY (3) IN PROGRESS (2) BLOCKED (0)\n- issue... - issue... (none)\n- issue... - issue...\n```\n\nRecommendation: Option C - shows actionable items, no redundancy","status":"open","priority":2,"issue_type":"feature","estimated_minutes":300,"created_at":"2025-11-26T18:20:49.922324-08:00","updated_at":"2025-12-04T11:58:57.526016-08:00","labels":["ui"]} +{"id":"vsbeads-oqb","title":"Fix column resize in Issues list","description":"Column resize handles are visible and highlight on hover, but dragging doesn't properly resize columns. Title column can be made bigger but not smaller despite minWidth being reduced. The resize logic and CSS need debugging.","design":"Current implementation:\n- Resize handle on right edge of each th\n- onMouseDown captures startX and startWidth\n- mousemove calculates delta and updates column width in state\n- width applied via inline style\n\nIssues to investigate:\n- Is the state actually updating?\n- Is the width being applied correctly?\n- Is something else overriding the width?\n- Table layout behavior with/without table-layout: fixed","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-26T18:25:55.633017-08:00","updated_at":"2025-12-01T15:56:32.434936-08:00","closed_at":"2025-12-01T15:56:32.434936-08:00","labels":["ui"]} +{"id":"vsbeads-otf","title":"Explore ways to better comprehend large bead lists","description":"As the number of beads grows, it becomes hard to keep track of what's there. Need to brainstorm UX improvements for navigating/understanding large backlogs.\n\n**Ideas to explore:**\n\n1. **Grouping/categorization**\n - Group by label (ui, dx, refactor, etc.)\n - Group by epic/parent\n - Collapsible sections\n\n2. **Summary views**\n - \"What's hot\" - recently updated, high priority\n - \"Stale\" - open items not touched in X days\n - Tag cloud of labels with counts\n\n3. **Search enhancements**\n - Fuzzy search across title + description\n - Saved searches/filters\n - Quick filters: \"my stuff\", \"blockers\", \"quick wins\"\n\n4. **Visual aids**\n - Mini roadmap view (epics + children)\n - Priority heatmap\n - Dependency graph (already exists but could be improved)\n\n5. **AI-assisted**\n - \"Summarize my backlog\" - Claude generates overview\n - \"What should I work on?\" - smart prioritization\n - \"Find duplicates\" - detect similar issues","status":"open","priority":3,"issue_type":"task","estimated_minutes":60,"created_at":"2025-12-05T00:17:41.069543-08:00","updated_at":"2025-12-05T12:01:16.791294-08:00","labels":["research","ux"]} +{"id":"vsbeads-p78","title":"Add autocomplete menu for label input with existing labels","description":"When adding labels to an issue, show a dropdown menu with matching existing labels as the user types. Should support both selecting an existing label and creating a new label that doesn't exist yet.","notes":"2025-12-11: Attempted implementation using AutocompleteInput component (created for vsbeads-65h label filter). \n\nApproaches tried:\n1. Inline input with AutocompleteInput - dropdown clipped by overflow:hidden on parent containers\n2. Added useFixedPositioning prop to calculate fixed position via getBoundingClientRect - didn't solve clipping\n3. Wrapped in Dropdown component with AutocompleteInput inside - layout breaks, dropdown menu positioning issues\n\nCore problem: The details-badges area has multiple nested containers with overflow constraints. The autocomplete dropdown gets clipped no matter which approach.\n\nPossible solutions to explore:\n- Portal-based dropdown that renders at document root\n- Completely different UX (modal/popover for adding labels)\n- Fix overflow constraints on parent containers (may break other things)\n\nAutocompleteInput component itself works fine in filter bar context (vsbeads-65h).\n\n---\n\n2025-12-11: Stashed WIP for later: `stash@{0}: On feature/ux-polish: WIP: label autocomplete (vsbeads-p78, vsbeads-65h)`","status":"blocked","priority":3,"issue_type":"feature","created_at":"2025-12-11T02:04:29.914692-08:00","updated_at":"2025-12-11T13:09:45.969264-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-p78","depends_on_id":"vsbeads-wgr","type":"parent-child","created_at":"2025-12-17T16:53:56.399661-08:00","created_by":"daemon","metadata":"{}"}],"comments":[{"id":32,"issue_id":"vsbeads-p78","author":"jason","text":"Testing comment functionality from Claude","created_at":"2025-12-11T21:10:33Z"}]} +{"id":"vsbeads-pqx","title":"Extract FilterBar component","description":"Extract filter bar UI from IssuesView into reusable component:\n- Filter presets dropdown\n- Active filter chips\n- Add filter menu (status/priority/type)\n- Clear button\n- Optional faceted counts support\n\nSaves ~150 LOC from IssuesView. Creates src/webview/common/FilterBar.tsx","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-04T15:54:10.593422-08:00","updated_at":"2025-12-05T12:01:16.754411-08:00","labels":["refactor","ui"],"dependencies":[{"issue_id":"vsbeads-pqx","depends_on_id":"vsbeads-cct","type":"blocks","created_at":"2025-12-04T15:54:23.222703-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-prs","title":"Reorganize webview component directory structure","description":"Group components by function:\n- common/badges/ (StatusBadge, PriorityBadge, TypeBadge, LabelBadge)\n- common/dropdowns/ (Dropdown, ColoredSelect, ProjectDropdown)\n- common/filters/ (FilterBar, FilterChip)\n- common/feedback/ (Toast, Loading, ErrorMessage)\n- hooks/ (useClickOutside, useColumnState)\n\nUpdate all imports.","status":"open","priority":3,"issue_type":"chore","estimated_minutes":60,"created_at":"2025-12-04T15:54:11.547522-08:00","updated_at":"2025-12-05T12:01:16.866291-08:00","labels":["dx","refactor"],"dependencies":[{"issue_id":"vsbeads-prs","depends_on_id":"vsbeads-pqx","type":"blocks","created_at":"2025-12-04T15:54:23.266227-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-prs","depends_on_id":"vsbeads-cct","type":"blocks","created_at":"2025-12-04T15:54:23.313481-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-q29","title":"Setup GitHub Action to build VSIX on push to main","description":"Add GitHub Action workflow to build extension VSIX archive on push to main. Upload as artifact for manual download/testing.","design":"`.github/workflows/build.yml`\n- Trigger: push to main\n- Steps: checkout, setup bun, install, compile, vsce package\n- Upload VSIX as artifact\n- Could also publish to marketplace on tag (see PUBLISHING.md)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-26T18:39:27.093552-08:00","updated_at":"2025-11-27T20:56:11.086242-08:00","closed_at":"2025-11-27T20:56:11.086242-08:00"} +{"id":"vsbeads-q6r","title":"Research: Agent-based VS Code extension development options","description":"Research and document the best approaches for enabling agent-driven VS Code extension development.\n\n## Areas to investigate\n\n### VS Code in Browser\n- code-server (https://github.com/coder/code-server)\n- VS Code Web / vscode.dev\n- Custom builds with local extension support\n\n### Browser Automation/MCP\n- Browser MCP (https://browsermcp.io/)\n- Chrome DevTools MCP (https://github.com/ChromeDevTools/chrome-devtools-mcp)\n- Playwright (https://playwright.dev/)\n- Other automation options\n\n### Required Capabilities\n- Start/stop VS Code, reload extensions\n- Take screenshots, see logs, debug inspector\n- Terminal/output panel access\n- Problem panel (type errors)\n- Command palette execution\n- Webview inspection\n- Test runner integration\n\n### Human Participation\n- VNC access for headless environments\n- X11 forwarding options\n- Screen sharing alternatives\n\n## Deliverable\nResearch document in sandbox/ with findings, trade-offs, and recommendations.","notes":"## Research Findings\n\n### Winning Stack\n```\nChrome DevTools MCP + code-server\n```\n\n### VS Code in Browser - DECIDED ✅\n| Option | Verdict |\n|--------|---------|\n| **code-server** | ✅ WINNER - native macOS, bd socket works |\n| OpenVSCode Server | ⚠️ Docker only, socket blocked |\n| vscode.dev | ❌ No local extension support |\n\n### Browser Automation - DECIDED ✅\n| Option | Verdict |\n|--------|---------|\n| **Chrome DevTools MCP** | ✅ WINNER - headed, console access, evaluate_script |\n| Browser MCP | ❌ Less capable |\n| Playwright MCP | Fallback if needed |\n\n### Capabilities Verified ✅\n- Start/stop VS Code: CLI `code-server` command\n- Reload extensions: DevTools \"Developer: Reload Window\"\n- Screenshots: `take_screenshot`\n- Console access: `list_console_messages`\n- Command palette: `press_key` Meta+Shift+P\n- Webview inspection: `take_snapshot` sees iframe content\n- Extension install: `code-server --install-extension`\n\n### Still to Verify\n- Terminal/output panel access\n- Problem panel (type errors via getDiagnostics?)\n- Test runner integration\n\n### Human Participation - SOLVED\nHeaded browser = human watches directly. No VNC/X11 needed.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-27T13:28:56.851044-08:00","updated_at":"2025-11-27T18:36:56.350768-08:00","closed_at":"2025-11-27T18:36:56.350768-08:00","dependencies":[{"issue_id":"vsbeads-q6r","depends_on_id":"vsbeads-3cn","type":"blocks","created_at":"2025-11-27T13:28:56.85284-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-q92","title":"Investigate real-time mutation updates not working","description":"Issues panel doesn't update when beads are created via CLI/MCP. The mutation watching infrastructure exists but may not be working correctly.","design":"Debug checklist:\n- Check \"Beads Dashboard\" output channel for mutation logs\n- Verify daemon is connected and mutation watch started\n- Check if getMutations RPC is returning data\n- Verify mutation timestamp filtering isn't too aggressive\n- Test with manual refresh to confirm data is available","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-26T18:41:19.755338-08:00","updated_at":"2025-11-26T23:44:58.678746-08:00","closed_at":"2025-11-26T23:44:58.678746-08:00"} +{"id":"vsbeads-qcb","title":"Research beads skill vs MCP vs plugin architecture","description":"Understand the relationship between beads skill, MCP server, and Claude Code plugin:\n\n**Questions to answer:**\n1. What is the beads \"skill\" and how does it differ from the MCP server?\n2. Why isn't the skill bundled in the plugin?\n3. What functionality does each provide?\n4. When should users use skill vs MCP vs plugin slash commands?\n\n**Reference docs in upstream repo (`~/ws/reference/beads`):**\n- `docs/PLUGIN.md` - Plugin documentation\n- `.claude-plugin/plugin.json` - Plugin manifest\n- `.claude-plugin/agents/task-agent.md` - Task agent definition\n\n**Deliverables:**\n- Document the architectural relationship\n- Clarify the design rationale\n- Recommend if skill should be added to plugin (or why not)","acceptance_criteria":"- Clear explanation of skill vs MCP vs plugin\n- Design rationale documented\n- Recommendation with trade-offs","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-05T01:18:24.504312-08:00","updated_at":"2025-12-05T01:18:29.272041-08:00","labels":["dx","research","upstream"]} +{"id":"vsbeads-qd8","title":"Investigate automated E2E testing with Playwright and code-server","description":"Research and prototype automated end-to-end testing for the VS Code extension using Playwright with code-server.\n\n**Why Playwright:**\n- Microsoft recommends Playwright for VS Code extension testing\n- Headless browser automation with excellent TypeScript support\n- Can interact with webviews, which is critical for our React-based UI\n- Built-in waiting/retry mechanisms\n\n**Areas to investigate:**\n\n1. **Test setup architecture**\n - How to start/stop code-server programmatically in tests\n - Extension installation/symlink setup in CI\n - Fixture management for test beads data\n\n2. **Webview testing**\n - Accessing webview iframes in Playwright\n - Testing React components through the webview boundary\n - Handling postMessage communication\n\n3. **Integration patterns**\n - Testing daemon start/stop/status flows\n - Mock vs real `bd` CLI for tests\n - Snapshot testing for UI states\n\n4. **CI integration**\n - GitHub Actions setup for headless Playwright\n - Test parallelization strategies\n - Artifact capture (screenshots, traces) on failure\n\n**Alternatives to evaluate:**\n- @vscode/test-electron (official but less webview support)\n- Selenium (older, less recommended)\n- Puppeteer (similar to Playwright but less features)\n\n**Resources:**\n- https://playwright.dev/docs/intro\n- https://code.visualstudio.com/api/working-with-extensions/testing-extension\n- Chrome DevTools MCP could potentially be used for manual testing augmentation","notes":"## Research Findings (2025-12-05)\n\n### Playwright + code-server Strategy Validated\n\nThis approach is viable and aligns with Microsoft's recommendations for testing VS Code extensions that use webviews.\n\n**Key findings:**\n1. **Playwright handles iframes well** - Critical for webview testing. Use `page.frameLocator()` or `page.frame({ url })` to access webview content\n2. **Bun support exists** - `bun create playwright` or manual setup with `@playwright/test`\n3. **GitHub Actions recommended pattern** - Use `npx playwright install --with-deps`, NOT the deprecated GitHub Action\n4. **code-server compatibility** - Similar to OpenVSCode Server; both expose VS Code in browser which Playwright can automate\n\n### Test Architecture Recommendations\n\n```\ne2e/\n├── playwright.config.ts # Config: baseURL, projects, timeouts\n├── fixtures/\n│ ├── code-server.ts # Custom fixture: start/stop code-server\n│ └── beads-project.ts # Fixture: scaffold test .beads directory\n├── helpers/\n│ ├── webview.ts # Helper: locate webview frames\n│ └── selectors.ts # Shared selectors for UI elements\n└── tests/\n ├── issues-view.spec.ts # Issues panel tests\n ├── details-view.spec.ts # Details panel tests\n └── daemon.spec.ts # Daemon start/stop tests\n```\n\n### Key Challenges to Address\n\n1. **Webview frame access** - VS Code embeds webviews in iframes; need to reliably locate them\n2. **Test data isolation** - Each test needs clean beads project state\n3. **code-server lifecycle** - Start before tests, stop after\n4. **CI timing** - code-server startup takes time; need proper wait strategies\n\n### Sources\n\n- [Playwright Installation](https://playwright.dev/docs/intro)\n- [Playwright Frame Handling](https://playwright.dev/docs/frames)\n- [Playwright CI Setup](https://playwright.dev/docs/ci)\n- [Playwright + Bun Template](https://github.com/fabianmolinab/playwright-bun-template)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-04T17:07:47.844099-08:00","updated_at":"2025-12-05T00:23:42.118147-08:00","closed_at":"2025-12-05T00:23:42.118147-08:00","labels":["ci","dx","testing"],"dependencies":[{"issue_id":"vsbeads-qd8","depends_on_id":"vsbeads-4e7","type":"related","created_at":"2025-12-05T00:23:37.111577-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-qgo","title":"Clicking bead ID copies to clipboard but doesn't select row or update details panel","description":"When clicking the bead ID in the title column of the Issues list:\n- ✅ Copies ID to clipboard (working)\n- ❌ Should also select the row and update the Details panel (not working)\n\nCurrently clicking the ID only copies - it doesn't trigger row selection. User has to click elsewhere on the row to select it.\n\n**Expected:** Single click on bead ID copies AND selects the row.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-09T21:43:26.399261-08:00","updated_at":"2025-12-10T00:27:04.114208-08:00","closed_at":"2025-12-10T00:27:04.114208-08:00","labels":["ui"],"comments":[{"id":29,"issue_id":"vsbeads-qgo","author":"jason","text":"Fix: Remove e.stopPropagation() or also call onSelectBead(info.row.original.id) after copying in IssuesView.tsx:176-180","created_at":"2025-12-10T05:45:11Z"}]} +{"id":"vsbeads-qi0","title":"Add icons for bead issue types","description":"Add SVG icons to visually distinguish issue types (bug, feature, task, epic, chore) in the UI.","notes":"2025-12-11: Implemented icons inside type badges, but user feedback indicated this wasn't the right approach. Reverted. User wants a separate icon column before Type instead - needs design discussion.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-10T02:06:34.421593-08:00","updated_at":"2025-12-11T01:34:51.815779-08:00","closed_at":"2025-12-11T01:34:51.815779-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-qi0","depends_on_id":"vsbeads-7cp","type":"parent-child","created_at":"2025-12-10T02:06:42.562858-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-qlp","title":"Add tag/label icon to labels display","description":"Labels displayed in the UI need a visual indicator (SVG icon) to distinguish them as tags/labels, similar to how we added a person icon for assignees.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-10T02:01:06.93022-08:00","updated_at":"2025-12-11T01:34:51.862509-08:00","closed_at":"2025-12-11T01:34:51.862509-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-qlp","depends_on_id":"vsbeads-7cp","type":"parent-child","created_at":"2025-12-10T02:02:05.83127-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-qtl","title":"Sort labels alphabetically in display","description":"Labels are displayed in whatever order they're stored. Should sort alphabetically for consistent display across issues.","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-12-01T16:16:04.313747-08:00","updated_at":"2025-12-01T16:31:26.682726-08:00","closed_at":"2025-12-01T16:31:26.682726-08:00","labels":["ui"]} +{"id":"vsbeads-rbp","title":"Bug: Edit mode status selector shows \"Unknown\"","description":"In DetailsView edit mode, the status dropdown shows \"Unknown\" as an option. This shouldn't be selectable - it's only for display when status can't be parsed.\n\nLocation: `src/webview/views/DetailsView.tsx` lines 201-212","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-27T19:01:47.079665-08:00","updated_at":"2025-11-27T19:19:24.818633-08:00","closed_at":"2025-11-27T19:19:24.818633-08:00"} +{"id":"vsbeads-re92","title":"Labels column empty on fresh VS Code startup","notes":"## Symptoms\n- Labels column shows \"-\" for all beads on fresh VS Code startup\n- Labels appear correctly after:\n - Switching to another project and back\n - Reloading the VS Code window\n\n## Likely Cause\nTiming/initialization issue - label data may not be fetched or populated during initial extension activation.\n\n## Investigation Needed\n- Check BeadsBackend initialization order\n- Verify when label data is requested vs when webview is ready\n- Look for race condition between project selection and data fetch","status":"closed","priority":2,"issue_type":"bug","assignee":"jdillon","created_at":"2025-12-26T15:53:57.445613-08:00","updated_at":"2025-12-29T14:43:30.209454-08:00","closed_at":"2025-12-29T14:43:30.209454-08:00","close_reason":"Fixed in Cycle 2 - race condition in webview initialization","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-re92","depends_on_id":"vsbeads-un3l","type":"parent-child","created_at":"2025-12-29T11:39:53.227766-08:00","created_by":"daemon"}],"comments":[{"id":39,"issue_id":"vsbeads-re92","author":"jason","text":"### Investigation \u0026 Fix\n\n**Root cause identified**: Race condition in `BaseViewProvider.resolveWebviewView()`\n\nThe issue was that `initializeView()` was called immediately after setting the webview HTML, but the React app hadn't loaded yet to receive messages. This caused the initial data (including labels) to be lost.\n\n**Fix applied**: Removed the premature `initializeView()` call. Now we wait for the \"ready\" message from the webview, which indicates React is loaded and listening for messages.\n\n**File changed**: `src/providers/BaseViewProvider.ts`\n\n**Note**: Original bug was intermittent and couldn't be reproduced during testing, but the race condition was clearly present in the code. Fix verified working in code-server.","created_at":"2025-12-29T20:13:14Z"}]} +{"id":"vsbeads-rru","title":"Implement Dependency Graph as editor panel","description":"Reimplement the dependency graph view as an editor panel (like Settings) instead of sidebar webview. More space for visualization, better UX.","design":"Use `vscode.window.createWebviewPanel()` to open in editor area.\n- Register command to open graph\n- Panel shows in editor tabs like Settings/Keyboard Shortcuts\n- Can have full width for node visualization\n- Consider using a proper graph library (d3, cytoscape, etc)","status":"open","priority":3,"issue_type":"feature","estimated_minutes":480,"created_at":"2025-11-26T18:39:29.324895-08:00","updated_at":"2025-12-04T11:59:40.971443-08:00","labels":["ui"]} +{"id":"vsbeads-rt9j","title":"Add merge-request and molecule bead types","description":"Add support for new upstream bead types: merge-request and molecule. Includes icons (code-merge, flask from Font Awesome), colors (sky blue, teal), and type labels.","status":"closed","priority":2,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-21T16:48:04.049552-08:00","updated_at":"2025-12-26T01:01:09.536557-08:00","closed_at":"2025-12-26T01:01:09.536557-08:00","close_reason":"PR #53 merged","external_ref":"https://github.com/steveyegge/beads/blob/dd9fcd9e361be3d606e99681ca75162a127b1ad4/docs/ARCHITECTURE.md#wisps-and-molecules","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-rt9j","depends_on_id":"vsbeads-duu","type":"discovered-from","created_at":"2025-12-21T16:48:11.198978-08:00","created_by":"daemon"},{"issue_id":"vsbeads-rt9j","depends_on_id":"vsbeads-madg","type":"related","created_at":"2025-12-21T16:48:16.862371-08:00","created_by":"daemon"}],"comments":[{"id":34,"issue_id":"vsbeads-rt9j","author":"jason","text":"icon for merge-request: https://fontawesome.com/icons/code-merge?f=classic\u0026s=solid","created_at":"2025-12-23T01:00:09Z"},{"id":35,"issue_id":"vsbeads-rt9j","author":"jason","text":"icon for molecule: https://fontawesome.com/icons/hexagon-nodes?f=classic\u0026s=solid ? ... is this a product's logo?","created_at":"2025-12-23T01:05:40Z"}]} +{"id":"vsbeads-rtk","title":"Render comments with markdown support","description":"Comments in the Details view are rendered as plain text. Should render with markdown support for code blocks, links, formatting, etc.\n\n**Current behavior:**\n- Comments display as raw text\n- Code snippets, links, bold/italic not rendered\n\n**Expected:**\n- Markdown formatting rendered in comment display\n- Code blocks with syntax highlighting\n- Links clickable\n- Lists, headers, etc. supported\n\n**Location:** `src/webview/views/DetailsView.tsx` (comment display section)","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-29T12:10:26.143399-08:00","updated_at":"2025-12-01T17:17:27.957323-08:00","closed_at":"2025-12-01T17:17:27.957323-08:00","labels":["ui"],"comments":[{"id":25,"issue_id":"vsbeads-rtk","author":"jason","text":"**Estimate: Easy-Medium (~1-1.5 hours)**\n\nWhat's needed:\n1. Add a markdown library (e.g., `marked`, `react-markdown`, or `micromark`)\n2. Replace plain text comment rendering with markdown-rendered output\n3. Add CSS for markdown elements (code blocks, links, lists)\n4. Sanitize HTML output for security\n\nComplexity factors:\n- No markdown lib currently installed - need to add one\n- VS Code webviews have restrictions on external resources\n- Syntax highlighting would add complexity (optional)\n- Need to handle CSS styling for markdown elements\n\n~1 hour for basic markdown, +30min if syntax highlighting wanted.","created_at":"2025-12-02T00:42:01Z"},{"id":26,"issue_id":"vsbeads-rtk","author":"jason","text":"# HERE\n\n**THERE**","created_at":"2025-12-02T01:16:57Z"}]} +{"id":"vsbeads-rz9","title":"Test: code-server vs OpenVSCode Server for local dev","description":"Compare the two VS Code in browser options for our use case.\n\n## Test Plan\n\n### OpenVSCode Server (Gitpod) - Test First\n```bash\ndocker run -p 3000:3000 gitpod/openvscode-server\n```\n- Open in Chrome DevTools MCP\n- Install vscode-beads VSIX\n- Verify extension loads, webviews work\n- Check console access for errors\n\n### code-server (Coder) - Compare\n```bash\nbrew install code-server\ncode-server --bind-addr localhost:8080\n```\n- Same tests as above\n- Compare: auth, settings persistence, extension compat\n\n## Decision Criteria\n- Extension installation ease\n- Webview support (critical for vscode-beads)\n- Console/error visibility\n- Closer to desktop VS Code behavior","notes":"## Final Verdict\n\n**Winner: code-server** for vscode-beads development on macOS.\n\n---\n\n## OpenVSCode Server (Docker) - PARTIAL ⚠️\n\n### Setup\n```bash\ndocker run -p 3000:3000 -v $(pwd):/home/workspace:cached gitpod/openvscode-server\n```\n\n### Results\n- ✅ Extension installs and loads\n- ✅ Webviews render correctly\n- ❌ **bd daemon socket blocked** by Docker isolation\n - Error: `connect ECONNREFUSED /home/workspace/.beads/bd.sock`\n\n### CLI Install\n```bash\ndocker exec \u003ccontainer-id\u003e /home/.openvscode-server/bin/openvscode-server \\\n --install-extension /home/workspace/vscode-beads-0.1.0.vsix\n```\n\n**Verdict**: Good for UI testing only, not full extension functionality.\n\n---\n\n## code-server (Native) - SUCCESS ✅\n\n### Setup\n```bash\nbrew install code-server\ncode-server --bind-addr localhost:8080 --auth none /path/to/project\n```\n\n### Results\n- ✅ Extension installs via CLI\n- ✅ Webviews render correctly\n- ✅ **bd daemon socket works** (native macOS access)\n- ✅ Full functionality - issues list, filters, everything\n\n### CLI Install\n```bash\ncode-server --install-extension /path/to/extension.vsix\n```\n\n**Verdict**: Full functionality, recommended for vscode-beads development.\n\n---\n\n## Comparison Table\n\n| Feature | code-server | OpenVSCode Server |\n|---------|-------------|-------------------|\n| Install | `brew install` | Docker only (macOS) |\n| bd socket | ✅ Works | ❌ Blocked |\n| CLI install | ✅ | ✅ |\n| Webviews | ✅ | ✅ |\n| Dev workflow | Full | UI testing only |","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-27T17:38:55.41521-08:00","updated_at":"2025-11-27T18:00:01.424195-08:00","closed_at":"2025-11-27T18:00:01.424195-08:00","dependencies":[{"issue_id":"vsbeads-rz9","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.1978-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-s2c","title":"Add assignee column and filter to Issues view","description":"Add full assignee support to the Issues view:\n\n**Issues list:**\n- Add assignee column (already exists but hidden by default)\n- Add assignee filter option using known assignee values (not free-form)\n- Filter dropdown should show list of assignees extracted from current beads\n- Include \"Unassigned\" as a filter option\n\n**Details panel:**\n- Display assignee in view mode\n- Edit assignee in edit mode with quick actions:\n - \"Assign to me\" button\n - \"Unassign\" button\n - Dropdown of known assignees (extracted from beads)\n\n**User identity configuration:**\n- Need to know current user's ID for \"Assign to me\" feature\n- Research how beads handles this (check `--actor` flag, `$BD_ACTOR`, `$USER`)\n- Default to `$USER` environment variable\n- Allow user to configure their ID in VS Code settings (e.g., `beads.userId`)\n\n**Implementation notes:**\n- Extract unique assignees from beads data for filter/edit dropdowns\n- Extension needs to pass user ID to webview\n- Check upstream beads for how actor/assignee is determined","design":"**Research needed:**\n1. How does `bd` CLI determine the actor? (check `--actor` flag usage)\n2. Is there a beads config for default user?\n3. What format should user IDs be in? (username, email, etc.)\n\n**VS Code settings to add:**\n```json\n{\n \"beads.userId\": {\n \"type\": \"string\",\n \"default\": \"\",\n \"description\": \"Your user ID for 'Assign to me'. Defaults to $USER if not set.\"\n }\n}\n```\n\n**Webview changes:**\n1. IssuesView - add assignee filter (faceted like status/priority/type)\n2. DetailsView - replace text input with:\n - Quick action buttons: [Assign to me] [Unassign]\n - Dropdown for selecting other known assignees\n\n**Extension changes:**\n1. Read `beads.userId` setting (fallback to process.env.USER)\n2. Pass userId to webview via postMessage or initial state\n3. Extract unique assignees from beads list to send to webview","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-09T23:51:03.090964-08:00","updated_at":"2025-12-10T00:46:57.879127-08:00","closed_at":"2025-12-10T00:46:57.879127-08:00","labels":["ui"]} +{"id":"vsbeads-s4i","title":"Refresh project list when workspace folders change","description":"When adding or removing folders from VS Code workspace, the beads project list doesn't update. Removed folders still appear in the project dropdown.\n\n**Expected behavior:**\n- Adding a folder with `.beads/` should add it to the project list\n- Removing a folder should remove it from the project list\n- If the active project is removed, switch to another available project\n\n**Fix:**\nListen to `vscode.workspace.onDidChangeWorkspaceFolders` event and call `projectManager.discoverProjects()` to refresh.","status":"closed","priority":2,"issue_type":"bug","estimated_minutes":120,"created_at":"2025-12-03T00:26:43.500466-08:00","updated_at":"2025-12-04T15:05:32.566081-08:00","closed_at":"2025-12-04T15:05:32.566081-08:00","labels":["backend","ux"]} +{"id":"vsbeads-t5e","title":"Research external issue tracker sync (GitHub/GitLab/Jira)","description":"While beads is great for managing context and agent work, teams often need a subset of beads to sync with external trackers (GitHub Issues, GitLab, Jira, etc.).\n\nResearch questions:\n1. What upstream beads features exist for external sync? (check `external_ref` field usage)\n2. Are there examples or docs for bi-directional sync?\n3. What's the recommended workflow - manual link via `external_ref` or automated sync?\n4. Any plugins or integrations available?\n\nGoal: Understand what's possible today and what gaps exist for team workflows.","status":"open","priority":3,"issue_type":"task","estimated_minutes":180,"created_at":"2025-12-01T16:40:03.527205-08:00","updated_at":"2025-12-04T11:59:04.481436-08:00","labels":["dx","research"]} +{"id":"vsbeads-tbq","title":"Click-outside handler doesn't detect clicks outside the webview panel","description":"The `useClickOutside` hook only detects clicks within the same webview panel. Clicking on other parts of VS Code (including the Details panel, editor, sidebar, etc.) does not trigger the handler, leaving menus/dropdowns open.\n\n**Current behavior:** Menu stays open when clicking outside the webview\n**Expected behavior:** Menu closes when focus leaves the webview\n\n**Possible solutions:**\n1. Listen for `blur` event on the webview/window\n2. Use VS Code's `onDidChangeWindowState` or focus events\n3. Close menus on any navigation/selection change","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-09T23:45:41.296028-08:00","updated_at":"2025-12-10T00:31:02.976024-08:00","closed_at":"2025-12-10T00:31:02.976024-08:00","labels":["ui"]} +{"id":"vsbeads-tom","title":"Create webview frame helper utilities","description":"Build helper utilities for accessing VS Code webview content in Playwright.\n\n**Challenges:**\n- Webviews render in nested iframes\n- Frame URLs/names may not be predictable\n- Need to wait for webview to fully render\n\n**Approach:**\n- Create `getWebviewFrame(page, viewId)` helper\n- Use `frameLocator()` with VS Code webview patterns\n- Add retry/wait logic for frame availability\n- Document the iframe structure for future reference","acceptance_criteria":"- Helper reliably locates Issues panel webview\n- Helper reliably locates Details panel webview\n- Works across code-server reloads\n- Clear error messages when webview not found","status":"open","priority":2,"issue_type":"task","estimated_minutes":120,"created_at":"2025-12-05T00:23:02.709382-08:00","updated_at":"2025-12-05T01:14:44.700141-08:00","labels":["testing"],"dependencies":[{"issue_id":"vsbeads-tom","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.357135-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-tom","depends_on_id":"vsbeads-ur9","type":"blocks","created_at":"2025-12-05T00:23:30.07375-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-toz","title":"Architecture review: extension and React component design","description":"Review the vscode-beads extension architecture from an expert perspective.\n\nAreas to evaluate:\n1. **Component duplication** - Where are we duplicating code that should be extracted?\n2. **Common components** - Are shared components in `common/` well-designed and reusable?\n3. **Hacks/workarounds** - Identify technical debt and quick fixes that need proper solutions\n4. **State management** - Is the webview↔extension messaging pattern clean?\n5. **View structure** - Are views (IssuesView, DetailsView, etc.) well-organized?\n6. **CSS organization** - Is `styles.css` maintainable or becoming a dumping ground?\n7. **Type safety** - Are types properly shared between extension and webview?\n\nDeliverable: Report with findings, recommendations, and priority for improvements.","status":"open","priority":2,"issue_type":"task","estimated_minutes":300,"created_at":"2025-12-01T17:23:41.507236-08:00","updated_at":"2025-12-04T11:58:47.201579-08:00","labels":["dx","research"]} +{"id":"vsbeads-tty","title":"Improve dependency/dependent display in Details view - show type + title","description":"The \"Depends On\" and \"Blocks\" sections in Details view currently only show issue IDs as badges. Hard to understand what issues are without navigating back and forth.\n\nMinimum: Show type + title alongside ID\nIdeal: Mini issues list with type, title, status, priority columns\n\nLocation: `src/webview/views/DetailsView.tsx` (deps-list sections)","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-27T20:47:54.611811-08:00","updated_at":"2025-11-28T00:24:25.518796-08:00","closed_at":"2025-11-28T00:24:25.518796-08:00"} +{"id":"vsbeads-u0wk","title":"Implicit parent-child from hierarchical IDs not reflected in daemon/UI","notes":"## Problem\nHierarchical bead IDs (e.g., `bd-abc.1`, `bd-abc.2`) create an **implicit** parent-child relationship based purely on the ID naming convention. This implicit relationship:\n\n1. **Blocks adding explicit dependencies** - Trying to add a parent-child dependency returns: \"cannot add dependency: X is already a child of Y. Children inherit dependency via hierarchy.\"\n2. **May not be reflected in daemon/UI** - The implicit relationship from ID naming may not be exposed through the daemon API, so vscode-beads can't display it\n\n## How Hierarchical IDs Work (upstream beads)\n- When creating with `--parent`, `bd create` does TWO things:\n 1. Generates hierarchical ID: `parent-id.N` (e.g., `vsbeads-515e.1`)\n 2. Adds explicit `parent-child` type dependency\n- The `isChildOf()` function in `dep.go` and `server_labels_deps_comments.go` checks if an ID follows the hierarchical pattern\n- Fix bd-nim5 added validation to prevent \"deadlock\" from explicit deps on implicit relationships\n\n## Key Code Locations (upstream)\n- `cmd/bd/dep.go:30` - `isChildOf()` function\n- `cmd/bd/dep.go:142-146` - Check that blocks child→parent deps\n- `internal/rpc/server_labels_deps_comments.go:15-24` - Same check in daemon\n- `internal/storage/sqlite/ids.go:44-64` - `IsHierarchicalID()` parsing\n\n## Impact on vscode-beads\nIf issues have hierarchical IDs but the daemon doesn't expose the implicit parent-child relationship:\n- Parent/child won't show in dependency display\n- Can't manually add the relationship (blocked)\n- Possible data inconsistency\n\n## Investigation Needed\n- Check if daemon returns implicit hierarchy in dependency queries\n- Verify how Linear imports or other sources create hierarchical IDs\n- Determine if this is an upstream beads issue or vscode-beads display issue","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-27T20:46:41.636091-08:00","updated_at":"2025-12-27T20:51:17.967887-08:00","closed_at":"2025-12-27T20:51:17.967887-08:00","close_reason":"Superseded by vsbeads-3ly3 (P0 with full details)","labels":["backend","daemon"]} +{"id":"vsbeads-u5xh","title":"Details panel children list vanishes when bead is updated","description":"When viewing a bead in the details panel, if that bead gets updated, the children list disappears from the panel. The list should remain visible and update with the new data.","notes":"---\n2025-12-29: Identified root cause - race condition in loadData()\n\n**Problem:** Multiple refresh() calls result in concurrent loadData() executions.\nResponses can complete out of order, with stale data overwriting newer data.\n\n**Fix:** Added request sequencing in BeadDetailsViewProvider:\n- loadSequence counter increments on each loadData() call\n- Before applying response, check if thisRequest === loadSequence\n- Discard stale responses (older requests that completed late)\n\n**Files changed:**\n- src/providers/BeadDetailsViewProvider.ts\n\nNeeds testing to verify fix.","status":"closed","priority":0,"issue_type":"bug","assignee":"jdillon","created_at":"2025-12-23T17:54:44.777683-08:00","updated_at":"2025-12-29T14:43:18.70786-08:00","closed_at":"2025-12-29T14:43:18.70786-08:00","close_reason":"Fixed race condition with request sequencing in loadData()","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-u5xh","depends_on_id":"vsbeads-un3l","type":"parent-child","created_at":"2025-12-29T13:43:32.923121-08:00","created_by":"daemon"}]} +{"id":"vsbeads-ua2","title":"Research: code execution skill as MCP replacement","description":"Future work: Build skill with TypeScript utilities as eventual MCP replacement.\n\n**Approach:**\n- `.claude/skills/vscode-dev/SKILL.md` + supporting files\n- Functions: `reloadWindow()`, `clickElement()`, `getElementContent()`\n- Execute via Bash, return minimal output\n- Eventually deprecate Chrome DevTools MCP dependency\n\n**Note:** Skills share parent context (no isolation), but if output is minimal, that's fine.","status":"open","priority":3,"issue_type":"task","estimated_minutes":180,"created_at":"2025-11-28T21:52:30.285657-08:00","updated_at":"2025-12-04T11:59:31.525211-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-ua2","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:42.143962-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-uak","title":"Research: macOS window screenshot for full Chrome capture","description":"Browser MCP tools only capture page viewport, not full Chrome window (including DevTools).\n\nResearch how to capture full window via macOS:\n- `screencapture -l \u003cwindowid\u003e` requires finding window ID\n- AppleScript can list windows but may need permissions\n- Useful for showing agent what's visible in DevTools panel\n\nLow priority - programmatic console/network access works for most cases.","status":"open","priority":3,"issue_type":"task","estimated_minutes":90,"created_at":"2025-11-27T17:34:17.25294-08:00","updated_at":"2025-12-04T11:59:34.100523-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-uak","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.301246-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-ugm","title":"Stale daemon socket not auto-recovered after reboot","description":"After system reboot, stale socket files remain but daemon is not running. Extension detects socket, tries to connect, gets ECONNREFUSED, but doesn't auto-start because auto-start only triggered when socket file was missing.\n\nUser sees error notification with only \"Show Output\" option - no way to recover without manual intervention.","acceptance_criteria":"- Auto-start triggers when socket exists but connection fails (stale socket)\n- Error notification includes \"Restart Daemon\" action button\n- Stale socket is cleaned up and daemon restarted automatically","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-07T14:17:24.578166-08:00","updated_at":"2025-12-08T17:17:27.661828-08:00","closed_at":"2025-12-08T17:17:27.661828-08:00","labels":["daemon","ux"]} +{"id":"vsbeads-un3l","title":"UI Improvements Sprint 2025-12-29","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-12-29T11:39:29.634057-08:00","created_by":"jason","updated_at":"2025-12-30T01:46:19.212774-08:00","closed_at":"2025-12-30T01:46:19.21278-08:00","labels":["ui"]} +{"id":"vsbeads-ur9","title":"Set up Playwright with Bun and TypeScript","description":"Initialize Playwright in the project with proper TypeScript and Bun configuration.\n\n**Tasks:**\n- Install `@playwright/test` as dev dependency\n- Create `playwright.config.ts` with sensible defaults\n- Set up `testsuite/` directory structure\n- Add npm scripts: `test:integration`, `test:integration:headed`, `test:integration:ui`\n- Configure for Chromium-only (code-server target)\n- Document local test running workflow","acceptance_criteria":"- `bun run test:integration` runs successfully (even with empty test file)\n- TypeScript types work in test files\n- Config includes proper timeouts for code-server startup","status":"open","priority":2,"issue_type":"task","estimated_minutes":60,"created_at":"2025-12-05T00:23:00.768062-08:00","updated_at":"2025-12-05T01:14:41.119755-08:00","labels":["dx","testing"],"dependencies":[{"issue_id":"vsbeads-ur9","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.221581-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-vlk","title":"viewContainer/title buttons not showing in BEADS header","description":"Configured beads.switchProject and beads.refresh commands in viewContainer/title menu with `when: viewContainer == beads`, but no buttons appear in the BEADS header. Only the [...] overflow menu shows.","design":"VS Code does not support extension-contributed inline buttons in viewContainer title bars. The `viewContainer/title` menu contribution point only adds items to the overflow/context menu.\n\nThis is confirmed by microsoft/vscode#74221 which was closed as out-of-scope.","notes":"**Finding:** This is a VS Code platform limitation, not a bug in our extension.\n\nPer [microsoft/vscode#74221](https://github.com/microsoft/vscode/issues/74221):\n- Built-in view containers (Run and Debug, Search) can have title bar buttons\n- Extension view containers can ONLY add to overflow menu (...)\n- Feature request was rejected as \"out-of-scope\"\n\n**Current workaround:** Use `view/title` to add buttons to individual view headers (e.g., Issues panel title bar) instead of the container title bar.\n\n**Status:** Won't fix - VS Code limitation","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-26T18:30:18.437949-08:00","updated_at":"2025-11-27T00:26:50.564762-08:00","closed_at":"2025-11-27T00:26:50.564762-08:00"} +{"id":"vsbeads-vp1","title":"Implement Kanban board as editor panel","description":"Reimplement Kanban board as an editor panel instead of sidebar webview. Sidebar is too narrow for a useful Kanban view.","design":"Use `vscode.window.createWebviewPanel()` to open in editor area.\n- Register command to open Kanban\n- Full-width columns for drag-and-drop\n- Cards show status, priority, assignee\n- Drag between columns to change status","status":"open","priority":3,"issue_type":"feature","estimated_minutes":600,"created_at":"2025-11-26T18:39:31.95544-08:00","updated_at":"2025-12-04T11:59:40.103462-08:00","labels":["ui"]} +{"id":"vsbeads-vq3","title":"Improve created/updated timestamp display in Details panel footer","description":"The created/updated/closed timestamps at the bottom of the Details panel need a better layout. Current display is basic and doesn't make good use of space.\n\n**Consider:**\n- Better visual treatment (less prominent, more metadata-like)\n- Relative time display (\"2 hours ago\") with full datetime on hover\n- Maybe move to a collapsible metadata section\n- Use the Timestamp component with appropriate format","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-12-09T23:54:12.801467-08:00","updated_at":"2025-12-11T01:34:51.905093-08:00","closed_at":"2025-12-11T01:34:51.905093-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-vq3","depends_on_id":"vsbeads-7cp","type":"parent-child","created_at":"2025-12-10T02:03:50.042388-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-w2x","title":"Write first E2E test: Issues panel loads and displays data","description":"Write the first real E2E test that validates the Issues panel works.\n\n**Test scenario:**\n1. Open code-server with test beads project\n2. Navigate to Beads sidebar\n3. Verify Issues panel webview loads\n4. Verify issues from seed data appear in table\n5. Verify status badges display correctly\n\n**This proves:**\n- End-to-end data flow works (bd CLI → backend → webview)\n- Webview helper utilities work\n- Test fixtures work together","acceptance_criteria":"- Test passes locally with `bun run test:integration`\n- Test is readable and documents the user flow\n- Test uses shared selectors (not fragile locators)","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-05T00:23:03.354187-08:00","updated_at":"2025-12-05T01:14:47.066522-08:00","labels":["testing"],"dependencies":[{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.404077-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-dxo","type":"blocks","created_at":"2025-12-05T00:23:30.127404-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-jfa","type":"blocks","created_at":"2025-12-05T00:23:30.189514-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-tom","type":"blocks","created_at":"2025-12-05T00:23:30.579435-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-eby","type":"blocks","created_at":"2025-12-05T00:23:32.194889-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-wgr","title":"UX polish phase 3: complex UI interactions","description":"Continuation of UX improvements from vsbeads-nin. Remaining work involves more complex UI changes:\n\n- Search/filter interaction improvements (vsbeads-57m)\n- Right-click context menus for inline editing (vsbeads-8oc) \n- Labels in dependency references (vsbeads-iur)\n- Label autocomplete with portal-based dropdown (vsbeads-p78, blocked)\n\nThese require more architectural consideration (portals, context menus, search UX design).","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-17T16:42:52.180108-08:00","updated_at":"2025-12-17T16:54:23.622708-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-wgr","depends_on_id":"vsbeads-nin","type":"discovered-from","created_at":"2025-12-17T16:42:59.157847-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-wk9","title":"Make badge colors configurable via settings","description":"Expose status, priority, and type badge colors as VS Code settings so users can customize them. Should support both background and text colors for each value, with consideration for light/dark themes.","design":"Settings structure could be:\n- `beads.colors.priority.P0`: { bg, text }\n- `beads.colors.priority.P1`: { bg, text }\n- `beads.colors.status.open`: { bg, text }\n- `beads.colors.type.bug`: { bg, text }\n\nOr a single object per category. Consider theme-aware defaults.","status":"open","priority":3,"issue_type":"feature","estimated_minutes":120,"created_at":"2025-11-26T17:57:59.132401-08:00","updated_at":"2025-12-04T12:00:09.336584-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-wk9","depends_on_id":"vsbeads-1le","type":"parent-child","created_at":"2025-12-10T02:09:42.69549-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-xbq","title":"UI blocked when daemon not running - no project switching possible","description":"When daemon connection fails (ENOENT socket error), the entire UI is blocked by ErrorMessage component. User cannot switch to a different project that might have a working daemon.\n\nRoot causes:\n1. App.tsx renders only ErrorMessage when there's an error - no project selector\n2. DashboardView has no project selector at all (IssuesView does)\n3. Need \"Start Daemon\" button for socket errors","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-02T22:57:17.513308-08:00","updated_at":"2025-12-02T23:43:37.817589-08:00","closed_at":"2025-12-02T23:43:37.817589-08:00","labels":["daemon","ui","ux"]} +{"id":"vsbeads-xd5","title":"Test protected branch workflow","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-29T13:45:16.869968-08:00","updated_at":"2025-11-29T13:45:35.922513-08:00","closed_at":"2025-11-29T13:45:35.922513-08:00"} +{"id":"vsbeads-xgn","title":"Refine browser-task agent instructions","description":"Based on testing results, refine:\n\n- System prompt for optimal response format\n- Standard task patterns (reload, click sequence, verify)\n- What to include/exclude in summaries\n- Error reporting format","status":"open","priority":2,"issue_type":"task","estimated_minutes":120,"created_at":"2025-11-28T21:52:30.218145-08:00","updated_at":"2025-12-04T11:58:49.641387-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-xgn","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:42.094448-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-xgn","depends_on_id":"vsbeads-hgm","type":"blocks","created_at":"2025-11-28T21:52:49.395613-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-xkk","title":"Improve Add Dependency UX - support all dependency types","description":"Current \"Add Dependency\" input only creates \"blocks\" type dependencies. Should support all dependency types:\n- blocks (hard blocker)\n- related (soft link)\n- parent-child (epic/subtask)\n- discovered-from (found during work)\n\nOptions:\n1. Dropdown to select type before adding\n2. Syntax like `issue-id:parent-child` or `issue-id --type related`\n3. Separate \"Add as child\" / \"Add related\" buttons\n\nAlso clarify the direction - currently adds a \"blocked by\" relationship (this issue depends on the entered ID).","status":"closed","priority":3,"issue_type":"feature","estimated_minutes":210,"created_at":"2025-12-01T15:51:31.66003-08:00","updated_at":"2025-12-11T02:11:23.39242-08:00","closed_at":"2025-12-11T02:11:23.39242-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-xkk","depends_on_id":"vsbeads-7cp","type":"parent-child","created_at":"2025-12-10T02:11:15.575936-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-xvm","title":"Test external_ref persistence behavior","description":"Test issue to verify external_ref persistence works correctly:\n1. Set via bd update --external-ref\n2. Verify it persists after reload\n3. Verify it displays in UI\n4. Test clearing (empty string vs null)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-16T12:50:13.28358-08:00","updated_at":"2025-12-16T12:51:04.9754-08:00","closed_at":"2025-12-16T12:51:04.9754-08:00","external_ref":"test-cli-ref","labels":["testing"],"dependencies":[{"issue_id":"vsbeads-xvm","depends_on_id":"vsbeads-det","type":"discovered-from","created_at":"2025-12-16T12:51:04.942642-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-xxl","title":"Investigate API parity gaps between bd CLI, daemon, and MCP","description":"Analyze the three beads interfaces to identify coverage gaps and inconsistencies:\n\n1. **bd CLI** - Full-featured command-line interface\n2. **Beads Daemon** - Socket-based API for real-time integration\n3. **Beads MCP** - Model Context Protocol server for AI agents\n\n**Goal:** Document gaps and file upstream issues to encourage API parity across all three interfaces.\n\n**Analysis approach:**\n1. Review latest upstream repo (`~/ws/reference/beads`)\n2. Catalog all operations available in each interface\n3. Create comparison matrix showing coverage\n4. Identify missing operations in daemon/MCP that exist in CLI\n5. Note any behavioral differences for same operations\n6. File issues upstream with specific recommendations\n\n**Expected deliverables:**\n- Comparison matrix (CLI vs Daemon vs MCP)\n- List of gaps with severity/impact\n- Upstream issues filed (or PR if straightforward)","acceptance_criteria":"- Comparison matrix complete for all major operations\n- Gaps documented with use-case impact\n- At least one upstream issue filed for significant gaps","status":"open","priority":2,"issue_type":"task","estimated_minutes":180,"created_at":"2025-12-05T01:17:15.838445-08:00","updated_at":"2025-12-05T01:17:20.028981-08:00","labels":["dx","research","upstream"]} +{"id":"vsbeads-ycx","title":"Show error notification when bd commands fail","description":"When any bd command fails (via BeadsDaemonClient or CLI), show an error notification to the user with an option to open the Output console for details.\n\n**Current behavior:**\n- Errors logged to Beads output channel\n- User doesn't see them unless they open Output panel\n\n**Desired behavior:**\n- Show vscode.window.showErrorMessage with error summary\n- Include 'Show Output' button to open Beads output channel\n- Keep detailed error in output channel for debugging","status":"closed","priority":1,"issue_type":"feature","estimated_minutes":60,"created_at":"2025-12-04T15:15:29.880095-08:00","updated_at":"2025-12-04T15:18:05.101147-08:00","closed_at":"2025-12-04T15:18:05.101147-08:00","labels":["backend","ux"]} +{"id":"vsbeads-yhok","title":"Test Epic for hierarchy demo","status":"tombstone","priority":2,"issue_type":"epic","created_at":"2025-12-27T20:52:48.814844-08:00","updated_at":"2025-12-29T11:36:43.338738-08:00","deleted_at":"2025-12-29T11:36:43.338738-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"epic"} +{"id":"vsbeads-yhok.2","title":"Child task of epic","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-27T20:53:03.840173-08:00","updated_at":"2025-12-29T11:36:43.340845-08:00","dependencies":[{"issue_id":"vsbeads-yhok.2","depends_on_id":"vsbeads-yhok","type":"parent-child","created_at":"2025-12-27T20:53:03.846123-08:00","created_by":"daemon"}],"deleted_at":"2025-12-29T11:36:43.340845-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"} +{"id":"vsbeads-yjr","title":"Create browser-task sub-agent configuration","description":"Create `.claude/agents/browser-task.md` with:\n\n```markdown\n---\nname: browser-task\ndescription: Execute multi-step browser automation tasks in VS Code/code-server\ntools: mcp__chrome-devtools__*\nmodel: haiku\n---\n\nExecute browser automation tasks and return minimal summaries.\nDo not return full DOM snapshots. Summarize results concisely.\nIf errors occur, return specific error details.\n```\n\n**Questions to verify:**\n- Can we use glob `mcp__chrome-devtools__*` or must list each tool?\n- Should model be haiku (fast) or sonnet (better instruction following)?","status":"open","priority":1,"issue_type":"task","estimated_minutes":60,"created_at":"2025-11-28T21:52:14.912814-08:00","updated_at":"2025-12-04T11:58:45.105085-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-yjr","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:41.99215-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-zbt","title":"Test: OpenVSCode Server native (non-Docker) for bd socket access","description":"Test running OpenVSCode Server directly on macOS (not in Docker) to get native bd daemon socket access.\n\n## Motivation\nDocker isolation blocks access to `bd.sock` Unix socket. Native run should have full socket access.\n\n## Test Plan\n1. Install openvscode-server via npm or download release\n2. Run on localhost:8080 (different port from Docker instance)\n3. Install vscode-beads VSIX\n4. Verify Beads panel connects to daemon successfully\n5. Compare dev experience with Docker version\n\n## Success Criteria\n- Extension loads\n- Webviews work\n- bd daemon socket connects (no ECONNREFUSED)\n- Issues display in panel","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-27T17:53:52.58167-08:00","updated_at":"2025-11-27T17:57:42.340387-08:00","closed_at":"2025-11-27T17:57:42.340387-08:00","dependencies":[{"issue_id":"vsbeads-zbt","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.172572-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-zkc","title":"Test: code-server for native macOS dev with bd socket access","description":"Test code-server (Coder) running natively on macOS for vscode-beads development.\n\n## Motivation\n- openvscode-server only available via Docker on macOS\n- Docker isolation blocks bd daemon socket access\n- code-server runs natively, should have full socket access\n\n## Setup\n```bash\nbrew install code-server\ncode-server --bind-addr localhost:8080\n```\n\n## Test Plan\n1. Install code-server via brew\n2. Start on localhost:8080\n3. Install vscode-beads VSIX\n4. Verify Beads panel connects to bd daemon\n5. Test Chrome DevTools MCP integration\n6. Document CLI options for extension management\n\n## Success Criteria\n- Extension loads\n- Webviews work \n- bd daemon socket connects (no ECONNREFUSED)\n- Issues display in panel","notes":"## Results - SUCCESS ✅\n\n### Setup\n```bash\nbrew install code-server\ncode-server --bind-addr localhost:8080 --auth none /path/to/project\n```\n\n### CLI Extension Management\n```bash\ncode-server --install-extension /path/to/extension.vsix\ncode-server --list-extensions\n```\n\n### Test Results\n- ✅ VS Code loads in browser at localhost:8080\n- ✅ Extension installs via CLI\n- ✅ Extension loads after reload + trust folder\n- ✅ Beads tab appears in activity bar\n- ✅ Webviews render correctly\n- ✅ **bd daemon socket connects** (no ECONNREFUSED!)\n- ✅ Issues list displays all 26 issues\n- ✅ Filter controls, project selector work\n\n### Why It Works\ncode-server runs natively on macOS, so it has direct access to the Unix socket at `.beads/bd.sock`. No Docker isolation.\n\n### Dev Workflow\n1. `bun run watch` (local rebuild)\n2. `bun run package` (create VSIX)\n3. `code-server --install-extension vscode-beads-*.vsix`\n4. DevTools MCP: \"Developer: Reload Window\"\n5. Test extension in browser\n\n### Comparison vs OpenVSCode Server (Docker)\n| Feature | code-server | OpenVSCode Server |\n|---------|-------------|-------------------|\n| Install | `brew install` | Docker only on macOS |\n| bd socket | ✅ Works | ❌ Docker isolation |\n| CLI install | ✅ | ✅ |\n| Webviews | ✅ | ✅ |\n\n**Winner: code-server** for vscode-beads development on macOS.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-27T17:57:42.397471-08:00","updated_at":"2025-11-27T17:59:55.75636-08:00","closed_at":"2025-11-27T17:59:55.75636-08:00","dependencies":[{"issue_id":"vsbeads-zkc","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.146686-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-zsy","title":"Add press/click feedback to buttons in webview","description":"Buttons in the webview (like \"Start Daemon\", \"Retry\") don't have clear press feedback. When clicked, there's no visual indication the button was pressed, making it feel unresponsive even when the action is triggered.\n\nAdd `:active` styles or a brief visual state change on click to provide clear feedback.","status":"closed","priority":3,"issue_type":"bug","estimated_minutes":30,"created_at":"2025-12-02T23:18:16.910844-08:00","updated_at":"2025-12-04T15:24:34.601865-08:00","closed_at":"2025-12-04T15:24:34.601865-08:00","labels":["ui","ux"]} +{"id":"vsbeads-zvs","title":"Disable browser context menu on Issues table","description":"The default browser context menu (copy/cut/paste) appears when right-clicking on the Issues table rows. This is meaningless for this use case.\n\nDisable the default context menu. We may add custom context menu items later (see vsbeads-8oc).","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-12-04T16:00:56.015479-08:00","updated_at":"2025-12-04T16:01:29.12802-08:00","closed_at":"2025-12-04T16:01:29.12802-08:00","labels":["ui"]} From 470ff76ab61e171cff758bb33acd803869644b22 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sun, 11 Jan 2026 00:46:09 -0800 Subject: [PATCH 15/49] bd daemon sync: 2026-01-11 00:46:09 --- .beads/issues.jsonl | 1 + 1 file changed, 1 insertion(+) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 5842e2d..735e025 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -54,6 +54,7 @@ {"id":"vsbeads-7ue","title":"Show connection status indicator instead of full error view on disconnect","description":"When daemon disconnects, the entire panel shows an error view with Retry button. Better UX would be a status indicator (green→red) that shows connection state without replacing the panel content.","status":"open","priority":2,"issue_type":"feature","estimated_minutes":210,"created_at":"2025-11-29T15:04:49.017327-08:00","updated_at":"2025-12-04T11:58:48.492907-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-7ue","depends_on_id":"vsbeads-5nm","type":"discovered-from","created_at":"2025-11-29T15:04:54.924745-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-7xr","title":"Write E2E test: Issue selection shows details","description":"Test the core interaction flow: selecting an issue shows its details.\n\n**Test scenario:**\n1. Load Issues panel with seed data\n2. Click on an issue row\n3. Verify Details panel updates with selected issue\n4. Verify title, description, status display correctly\n\n**This proves:**\n- webview ↔ extension message passing works\n- Details panel receives selection events\n- UI updates reactively","acceptance_criteria":"- Test passes locally\n- Uses stable selectors (data-testid preferred)\n- Documents the interaction pattern","status":"open","priority":2,"issue_type":"task","estimated_minutes":60,"created_at":"2025-12-05T00:23:04.002552-08:00","updated_at":"2025-12-05T01:14:47.777369-08:00","labels":["testing"],"dependencies":[{"issue_id":"vsbeads-7xr","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.454114-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-7xr","depends_on_id":"vsbeads-w2x","type":"blocks","created_at":"2025-12-05T00:23:31.129272-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-7yz","title":"Finalize TanStack Table migration","description":"Complete the TanStack Table adoption for IssuesView:\n- Remove original IssuesView.tsx\n- Rename IssuesViewTanStack.tsx → IssuesView.tsx\n- Update App.tsx import (remove SPIKE comment)\n- Clean up any dead code\n\nDepends on PR #27 merge.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-04T15:54:09.941727-08:00","updated_at":"2025-12-04T15:56:42.596248-08:00","closed_at":"2025-12-04T15:56:42.596248-08:00","labels":["refactor","ui"],"dependencies":[{"issue_id":"vsbeads-7yz","depends_on_id":"vsbeads-4uw","type":"blocks","created_at":"2025-12-04T15:54:23.179714-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-804l","title":"Fix markdown list bullet rendering","description":"Markdown syntax is not rendering list bullets sanely in the webview","status":"open","priority":1,"issue_type":"task","created_at":"2026-01-11T00:46:08.429779-08:00","created_by":"jason","updated_at":"2026-01-11T00:46:08.429779-08:00","labels":["bug","ui"]} {"id":"vsbeads-868","title":"Ensure all critical daemon operations are logged to output","description":"Hard to debug daemon auto-start because logging may be missing or unclear. Need to verify that all critical operations (daemon start/stop, connection state changes, errors) are logged to the Beads output channel with clear context.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-29T15:11:28.197113-08:00","updated_at":"2025-12-02T23:51:38.589224-08:00","closed_at":"2025-12-02T23:51:38.589224-08:00","labels":["daemon","dx"],"dependencies":[{"issue_id":"vsbeads-868","depends_on_id":"vsbeads-5nm","type":"discovered-from","created_at":"2025-11-29T15:11:33.979743-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-8et","title":"Labels column: inconsistent overflow indicators (... vs +N)","description":"In the Issues list Labels column, overflow is shown inconsistently:\n- Sometimes shows `...` after labels\n- Sometimes shows `+1` or `+N` after labels\n\nShould pick one pattern and use it consistently. `+N` is clearer as it tells you how many more labels exist.","notes":"Current state: Changed from 2-label limit + +N to show all labels with CSS ellipsis overflow. However, can't verify the fix because column resize is broken (vsbeads-oqb) - can't make column smaller to test overflow behavior.\n\nBlocked by: vsbeads-oqb (column resize)\n\nChanges made:\n- IssuesView.tsx: Removed slice(0,2) limit, now renders all labels \n- styles.css: Restored text-overflow: ellipsis on .labels-cell","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-30T01:12:05.180628-08:00","updated_at":"2025-12-01T15:56:32.33104-08:00","closed_at":"2025-12-01T15:56:32.33104-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-8et","depends_on_id":"vsbeads-oqb","type":"blocks","created_at":"2025-12-01T15:12:55.315222-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-8oc","title":"Add right-click context menu for type/status/priority in Issues list","description":"Add context menu actions to the Issues list so users can right-click on type/status/priority badges to change them inline.\n\nSimilar to the inline editing in Details view (vsbeads-fwp), but using right-click instead of click since the list rows already have click-to-select behavior.\n\n## Requirements\n- Right-click on type badge → dropdown menu to change type\n- Right-click on status badge → dropdown menu to change status \n- Right-click on priority badge → dropdown menu to change priority\n- Changes auto-save (no confirmation needed)\n- Use same ColoredSelect dropdown component from Details view\n\n## Notes\n- Click on row = select issue (existing behavior)\n- Right-click on badge = edit that field (new behavior)","status":"open","priority":3,"issue_type":"feature","estimated_minutes":210,"created_at":"2025-12-01T00:39:43.583441-08:00","updated_at":"2025-12-04T11:59:24.877438-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-8oc","depends_on_id":"vsbeads-wgr","type":"parent-child","created_at":"2025-12-17T16:53:56.326584-08:00","created_by":"daemon","metadata":"{}"}],"comments":[{"id":24,"issue_id":"vsbeads-8oc","author":"jason","text":"**Estimate: Medium (~1-2 hours)**\n\nWhat's needed:\n1. Add `onContextMenu` handlers to type/status/priority badge cells in IssuesView\n2. Render a positioned dropdown menu on right-click (similar to column menu)\n3. Wire up the change to call `onUpdateBead` (already exists but unused in IssuesView)\n4. Reuse `ColoredSelect` or create a context menu variant\n\nComplexity factors:\n- We already have dropdown/menu patterns (column menu, preset dropdown)\n- We already have `ColoredSelect` component from DetailsView\n- Main work is positioning the context menu at click coordinates\n- Need to handle click-outside dismiss (pattern already exists)\n\nThe patterns exist, it's mostly wiring them together in a new context.","created_at":"2025-12-02T00:41:30Z"}]} From 683bf9e821662664de6dd7a2fe4478cd88209891 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 24 Jan 2026 22:55:39 -0800 Subject: [PATCH 16/49] bd daemon sync: 2026-01-24 22:55:39 --- .beads/issues.jsonl | 1 + 1 file changed, 1 insertion(+) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 735e025..ef170c8 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -111,6 +111,7 @@ {"id":"vsbeads-i32l","title":"Make type sort order configurable","description":"Allow users to customize the display order of bead types. Could be a VS Code setting or .beads config.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-12-22T01:18:39.209631-08:00","updated_at":"2025-12-22T01:18:39.209631-08:00","labels":["config","ui"],"dependencies":[{"issue_id":"vsbeads-i32l","depends_on_id":"vsbeads-6d1","type":"related","created_at":"2025-12-22T01:18:46.775997-08:00","created_by":"daemon"}]} {"id":"vsbeads-i41","title":"Split styles.css into component modules","description":"Break up monolithic styles.css (~1000 lines) into logical modules:\n- base.css (variables, resets)\n- badges.css\n- dropdowns.css\n- table.css\n- details.css\n- dashboard.css\n\nImport all in index.tsx or use CSS modules.","status":"open","priority":4,"issue_type":"chore","estimated_minutes":90,"created_at":"2025-12-04T15:54:11.880134-08:00","updated_at":"2025-12-05T12:01:16.978282-08:00","labels":["dx","refactor"],"dependencies":[{"issue_id":"vsbeads-i41","depends_on_id":"vsbeads-prs","type":"blocks","created_at":"2025-12-04T15:54:23.363098-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-ifcn","title":"Reorder dependency display: parent first, then children","description":"Current order shows 'blocked' first which is confusing. Reorder to:\n1. Parent (epic)\n2. Children\n3. Then remaining dependency types (blocked by, blocks, related, etc.)\n\nThis matches natural mental model of hierarchy before relationships.","status":"closed","priority":2,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-24T23:26:39.560403-08:00","updated_at":"2025-12-25T16:55:18.302593-08:00","closed_at":"2025-12-25T16:55:18.302593-08:00","close_reason":"Merged in PR #51","labels":["ui"]} +{"id":"vsbeads-im0d","title":"Make tooltip hover delay configurable with disable option","description":"The bead description tooltip appears too quickly (currently 400ms). Add VS Code settings to:\n- Configure the hover delay (default: 1000ms)\n- Disable tooltips entirely\n- Reset to default option\n\nLocations:\n- Delay is set in src/webview/views/IssuesView.tsx:195","status":"open","priority":2,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-24T22:55:38.931254-08:00","created_by":"Jason Dillon","updated_at":"2026-01-24T22:55:38.931254-08:00","labels":["ui"]} {"id":"vsbeads-ipb","title":"Show time in addition to date for timestamps in Details view","description":"Created/Updated/Closed timestamps in Details view currently only show date (toLocaleDateString). Should also show time for better context.\n\nLocation: `src/webview/views/DetailsView.tsx` (details-meta section)","status":"closed","priority":4,"issue_type":"feature","estimated_minutes":45,"created_at":"2025-11-27T20:49:34.095573-08:00","updated_at":"2025-12-11T01:34:51.948747-08:00","closed_at":"2025-12-11T01:34:51.948747-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-ipb","depends_on_id":"vsbeads-7cp","type":"parent-child","created_at":"2025-12-10T02:08:34.211682-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-iur","title":"Show labels in Details panel child bead references","description":"Child bead references in the Details panel dependencies section should display labels (like they do in the Issues list).","notes":"2025-12-11: Investigated - BeadDependency type doesn't include labels. Would need to update: 1) bd CLI to include labels in dependency responses, 2) DaemonBeadDependency type, 3) normalization logic, 4) BeadDependency type. Not a quick win - deferred.","status":"open","priority":3,"issue_type":"feature","estimated_minutes":60,"created_at":"2025-11-30T00:34:09.763359-08:00","updated_at":"2025-12-11T01:36:03.346378-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-iur","depends_on_id":"vsbeads-wgr","type":"parent-child","created_at":"2025-12-17T16:53:56.364942-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-iyn","title":"Daemons management view","description":"Add a dedicated daemons view panel showing all workspace daemons with detailed status and management options.\n\n**Potential features:**\n- List all beads projects with daemon status\n- Start/Stop/Restart buttons per daemon\n- Health indicators (DB status, uptime, last activity)\n- Log viewer integration\n- Auto-refresh status\n\nLower priority since status bar + quick pick menu covers basic needs.","status":"open","priority":3,"issue_type":"feature","estimated_minutes":420,"created_at":"2025-12-03T00:13:55.94898-08:00","updated_at":"2025-12-04T11:59:01.921198-08:00","labels":["daemon","ui"]} From da90deffca30a879e8e7d6e78e37604eb0ff2f02 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 24 Jan 2026 22:55:44 -0800 Subject: [PATCH 17/49] bd daemon sync: 2026-01-24 22:55:44 --- .beads/issues.jsonl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index ef170c8..7a73512 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -111,7 +111,7 @@ {"id":"vsbeads-i32l","title":"Make type sort order configurable","description":"Allow users to customize the display order of bead types. Could be a VS Code setting or .beads config.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-12-22T01:18:39.209631-08:00","updated_at":"2025-12-22T01:18:39.209631-08:00","labels":["config","ui"],"dependencies":[{"issue_id":"vsbeads-i32l","depends_on_id":"vsbeads-6d1","type":"related","created_at":"2025-12-22T01:18:46.775997-08:00","created_by":"daemon"}]} {"id":"vsbeads-i41","title":"Split styles.css into component modules","description":"Break up monolithic styles.css (~1000 lines) into logical modules:\n- base.css (variables, resets)\n- badges.css\n- dropdowns.css\n- table.css\n- details.css\n- dashboard.css\n\nImport all in index.tsx or use CSS modules.","status":"open","priority":4,"issue_type":"chore","estimated_minutes":90,"created_at":"2025-12-04T15:54:11.880134-08:00","updated_at":"2025-12-05T12:01:16.978282-08:00","labels":["dx","refactor"],"dependencies":[{"issue_id":"vsbeads-i41","depends_on_id":"vsbeads-prs","type":"blocks","created_at":"2025-12-04T15:54:23.363098-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-ifcn","title":"Reorder dependency display: parent first, then children","description":"Current order shows 'blocked' first which is confusing. Reorder to:\n1. Parent (epic)\n2. Children\n3. Then remaining dependency types (blocked by, blocks, related, etc.)\n\nThis matches natural mental model of hierarchy before relationships.","status":"closed","priority":2,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-24T23:26:39.560403-08:00","updated_at":"2025-12-25T16:55:18.302593-08:00","closed_at":"2025-12-25T16:55:18.302593-08:00","close_reason":"Merged in PR #51","labels":["ui"]} -{"id":"vsbeads-im0d","title":"Make tooltip hover delay configurable with disable option","description":"The bead description tooltip appears too quickly (currently 400ms). Add VS Code settings to:\n- Configure the hover delay (default: 1000ms)\n- Disable tooltips entirely\n- Reset to default option\n\nLocations:\n- Delay is set in src/webview/views/IssuesView.tsx:195","status":"open","priority":2,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-24T22:55:38.931254-08:00","created_by":"Jason Dillon","updated_at":"2026-01-24T22:55:38.931254-08:00","labels":["ui"]} +{"id":"vsbeads-im0d","title":"Make tooltip hover delay configurable with disable option","description":"The bead description tooltip appears too quickly (currently 400ms). Add VS Code settings to:\n- Configure the hover delay (default: 1000ms)\n- Disable tooltips entirely\n- Reset to default option\n\nLocations:\n- Delay is set in src/webview/views/IssuesView.tsx:195","status":"in_progress","priority":2,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-24T22:55:38.931254-08:00","created_by":"Jason Dillon","updated_at":"2026-01-24T22:55:44.267525-08:00","labels":["ui"]} {"id":"vsbeads-ipb","title":"Show time in addition to date for timestamps in Details view","description":"Created/Updated/Closed timestamps in Details view currently only show date (toLocaleDateString). Should also show time for better context.\n\nLocation: `src/webview/views/DetailsView.tsx` (details-meta section)","status":"closed","priority":4,"issue_type":"feature","estimated_minutes":45,"created_at":"2025-11-27T20:49:34.095573-08:00","updated_at":"2025-12-11T01:34:51.948747-08:00","closed_at":"2025-12-11T01:34:51.948747-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-ipb","depends_on_id":"vsbeads-7cp","type":"parent-child","created_at":"2025-12-10T02:08:34.211682-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-iur","title":"Show labels in Details panel child bead references","description":"Child bead references in the Details panel dependencies section should display labels (like they do in the Issues list).","notes":"2025-12-11: Investigated - BeadDependency type doesn't include labels. Would need to update: 1) bd CLI to include labels in dependency responses, 2) DaemonBeadDependency type, 3) normalization logic, 4) BeadDependency type. Not a quick win - deferred.","status":"open","priority":3,"issue_type":"feature","estimated_minutes":60,"created_at":"2025-11-30T00:34:09.763359-08:00","updated_at":"2025-12-11T01:36:03.346378-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-iur","depends_on_id":"vsbeads-wgr","type":"parent-child","created_at":"2025-12-17T16:53:56.364942-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-iyn","title":"Daemons management view","description":"Add a dedicated daemons view panel showing all workspace daemons with detailed status and management options.\n\n**Potential features:**\n- List all beads projects with daemon status\n- Start/Stop/Restart buttons per daemon\n- Health indicators (DB status, uptime, last activity)\n- Log viewer integration\n- Auto-refresh status\n\nLower priority since status bar + quick pick menu covers basic needs.","status":"open","priority":3,"issue_type":"feature","estimated_minutes":420,"created_at":"2025-12-03T00:13:55.94898-08:00","updated_at":"2025-12-04T11:59:01.921198-08:00","labels":["daemon","ui"]} From a007d807dd5e61d884b9358471ca727d47bd7241 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Mon, 26 Jan 2026 01:14:27 -0800 Subject: [PATCH 18/49] bd daemon sync: 2026-01-26 01:14:27 --- .beads/issues.jsonl | 127 ++++---------------------------------------- 1 file changed, 10 insertions(+), 117 deletions(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 7a73512..901f398 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -1,194 +1,87 @@ -{"id":"vsbeads-02bf","title":"Test molecule type display","description":"Testing how molecule type looks in the UI","status":"closed","priority":3,"issue_type":"molecule","created_at":"2025-12-25T17:03:47.421651-08:00","updated_at":"2025-12-25T17:04:36.356328-08:00","closed_at":"2025-12-25T17:04:36.356328-08:00","close_reason":"Test complete - UI looks good","labels":["test"]} {"id":"vsbeads-09ad","title":"Details view: dependency list doesn't refresh when dependent status changes","description":"When a dependent bead's status changes (e.g., open → in_progress), the dependency list in Details view doesn't update until user navigates away and back. Likely missing refresh trigger when bead data updates.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-22T01:20:55.37934-08:00","updated_at":"2025-12-22T01:20:55.37934-08:00","labels":["ui"]} {"id":"vsbeads-0e0","title":"Hook flag mismatch: --no-git-history passed to bd import","description":"## Problem\n\nThe post-checkout hook calls:\n```bash\nbd sync --import-only --no-git-history\n```\n\nThis fails because when `--import-only` is used, `bd sync` internally calls `bd import` and passes `--no-git-history` to it. But `bd import` doesn't have that flag.\n\n## Error\n```\nError importing: import failed: exit status 1\nError: unknown flag: --no-git-history\nUsage:\n bd import [flags]\n```\n\n## Expected\n`bd sync --import-only --no-git-history` should work, or the hook should use different flags.\n\n## Workaround\nThe warning is harmless - `bd sync` works fine when called manually.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-17T02:18:27.830006-08:00","updated_at":"2025-12-17T02:18:27.830006-08:00","labels":["beads","hooks"]} {"id":"vsbeads-0l0","title":"Details panel sometimes delays updating when selecting issue","description":"When clicking on an issue in the Issues list, the Details panel sometimes doesn't update immediately. There's a noticeable delay (few seconds) where the old issue remains displayed, making it appear broken.\n\n**Observed behavior:**\n- Click issue in Issues list\n- Details panel shows previous issue (or loading state)\n- After a few seconds, the correct issue appears\n\n**Expected behavior:**\n- Details panel should update immediately on selection, or show a clear loading indicator\n\n**Possible causes:**\n- Internal data reload triggered by selection\n- Race condition between selection event and data fetch\n- Daemon polling interfering with UI updates\n- Multiple re-renders during state transitions\n\n**Investigation needed:**\n- Check if `selectedBeadId` change triggers unnecessary data refetch\n- Look at timing of `postMessage` flow between webview and extension\n- Check if daemon mutation events are causing intermediate states","status":"open","priority":2,"issue_type":"bug","estimated_minutes":120,"created_at":"2025-12-04T17:09:05.568882-08:00","updated_at":"2025-12-05T12:01:16.715451-08:00","labels":["bug","ui","ux"]} -{"id":"vsbeads-0s0","title":"Extract useColumnState hook","description":"Extract column persistence logic from IssuesView:\n- Load from vscode.getState()\n- Merge with defaults for new columns\n- Save on change\n\nCreates src/webview/hooks/useColumnState.ts","status":"closed","priority":3,"issue_type":"task","estimated_minutes":45,"created_at":"2025-12-04T15:54:10.909895-08:00","updated_at":"2025-12-10T00:30:35.081364-08:00","closed_at":"2025-12-10T00:30:35.081364-08:00","labels":["dx","refactor","ui"]} -{"id":"vsbeads-1k7","title":"Test Chrome DevTools MCP for agent browser automation","description":"Quick spike to verify Chrome DevTools MCP works for our use case.\n\n## Install\n```bash\nclaude mcp add chrome-devtools -- npx -y chrome-devtools-mcp@latest\n```\n\n## Test Plan\n\n1. **Navigate** - Open a webpage (e.g., https://example.com)\n2. **Click** - Click on a link/element\n3. **Inspect DOM** - Use `take_snapshot` to see page structure\n4. **Screenshot** - Use `take_screenshot` to capture visual state\n5. **Console access** - Use `list_console_messages` to read dev console output\n6. **Script execution** - Use `evaluate_script` to run `document.title` or `getComputedStyle()`\n\n## Success Criteria\n- Headed browser window opens (Jason can watch)\n- All 6 capabilities work\n- Console messages are accessible (key painpoint)\n\n## Fallback\nIf this doesn't work well, try Playwright MCP instead.","notes":"## Test Results - ALL PASSED\n\n| Capability | Tool | Status |\n|------------|------|--------|\n| Navigate | `navigate_page` | ✅ |\n| Click | `click` | ✅ |\n| DOM Snapshot | `take_snapshot` | ✅ |\n| Screenshot | `take_screenshot` | ✅ (viewport only) |\n| Console access | `list_console_messages` | ✅ |\n| Script execution | `evaluate_script` | ✅ |\n| Computed styles | `evaluate_script` + JS | ✅ |\n\n## Decision\n**Chrome DevTools MCP is the winner** for agent browser automation:\n- Headed mode by default (human can watch)\n- Full console access (key painpoint solved)\n- Script execution for computed styles\n- Network/performance tools available\n\n## Not needed for now\n- Playwright MCP: fallback if chrome-devtools issues arise\n- Browser MCP: less capable, no evaluate_script\n- chrome-inspector-mcp: requires extension, evaluate_script suffices\n\n## Limitations noted\n- Screenshots capture page viewport only, not Chrome UI/DevTools\n- See vsbeads-uak for macOS window capture research","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-27T17:17:05.174573-08:00","updated_at":"2025-11-27T17:39:10.636615-08:00","closed_at":"2025-11-27T17:39:10.636615-08:00","dependencies":[{"issue_id":"vsbeads-1k7","depends_on_id":"vsbeads-q6r","type":"discovered-from","created_at":"2025-11-27T17:17:09.142776-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-1k7","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.223845-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-1le","title":"User customization and preferences","description":"Settings, preferences, and customization options for personalizing the extension experience.","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-10T02:09:38.170459-08:00","updated_at":"2025-12-10T02:09:38.170459-08:00","labels":["ui"]} -{"id":"vsbeads-1nq","title":"Column menu doesn't close when clicking outside","description":"In the Issues list, the column visibility menu (⋮ button) stays open when clicking outside of it. Should close on click-away like other menus.","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-12-01T15:08:03.146209-08:00","updated_at":"2025-12-01T15:56:32.500857-08:00","closed_at":"2025-12-01T15:56:32.500857-08:00","labels":["ui"]} {"id":"vsbeads-1vr","title":"Extract Daemon* API types to separate file","description":"Refactor daemon API types out of types.ts into a dedicated file (e.g., daemon-types.ts).\n\nCurrent inline types to extract:\n- `DaemonBeadDependency` (already defined)\n- `DaemonComment` (inline in issueToWebviewBead signature)\n- Full daemon issue structure (the large inline type in issueToWebviewBead)\n\nBenefits:\n- Clear separation between daemon API types and internal/webview types\n- Easier to update when daemon API changes\n- Better documentation of the daemon contract","status":"open","priority":3,"issue_type":"chore","estimated_minutes":90,"created_at":"2025-11-28T15:55:07.524718-08:00","updated_at":"2025-12-04T11:59:33.211027-08:00","labels":["backend"]} -{"id":"vsbeads-1za","title":"Fix Issues view: sticky header and remove excess padding","description":"Two issues with the Issues view:\n1. Table header scrolls off screen - should be sticky/fixed at top\n2. Unnecessary padding around the list taking up space","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-27T01:37:30.569797-08:00","updated_at":"2025-11-27T02:10:19.754932-08:00","closed_at":"2025-11-27T02:10:19.754932-08:00"} -{"id":"vsbeads-24b","title":"Test external ref","status":"closed","priority":2,"issue_type":"task","estimated_minutes":69,"created_at":"2025-12-17T00:43:08.51775-08:00","updated_at":"2025-12-17T16:24:17.709896-08:00","closed_at":"2025-12-17T01:52:21.51488-08:00","close_reason":"Test issue - verified external_ref and estimate display correctly","external_ref":"https://github.com/steveyegge/beads/issues/123"} {"id":"vsbeads-2byn","title":"Markdown links to relative files should open in VS Code editor","notes":"## Problem\nMarkdown links to relative files (e.g., `[config](./src/config.ts)`) in bead content don't do anything when clicked.\n\n## Expected\nClicking a relative file link should open the file in VS Code editor.\n\n## Implementation\n1. Intercept link clicks in markdown renderer\n2. Detect relative file paths (starts with `./`, `../`, or no protocol)\n3. Resolve path relative to workspace root\n4. Use VS Code API: `vscode.commands.executeCommand('vscode.open', vscode.Uri.file(resolvedPath))`\n\n## Considerations\n- Handle missing files gracefully (show error toast)\n- Support line number anchors? e.g., `./file.ts#L42`\n- External URLs should still open in browser","status":"closed","priority":2,"issue_type":"feature","assignee":"jdillon","created_at":"2025-12-29T00:49:31.625156-08:00","created_by":"jason","updated_at":"2025-12-29T13:46:41.907893-08:00","closed_at":"2025-12-29T13:46:41.907903-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-2byn","depends_on_id":"vsbeads-un3l","type":"parent-child","created_at":"2025-12-29T11:39:53.301409-08:00","created_by":"daemon"}]} {"id":"vsbeads-2t7n","title":"Add BeadsStore with caching and on-demand loading","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-25T17:42:12.08201-08:00","updated_at":"2025-12-25T17:42:12.08201-08:00","labels":["architecture","backend"]} -{"id":"vsbeads-33u","title":"Add search clear button to Issues panel","description":"Add a clear (×) button inside the search input field to quickly clear the search text.\n\nStandard UX pattern - shows when there's text in the search field.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-27T19:08:09.666845-08:00","updated_at":"2025-11-27T19:42:30.460018-08:00","closed_at":"2025-11-27T19:42:30.460018-08:00","comments":[{"id":5,"issue_id":"vsbeads-33u","author":"jason","text":"Closed prematurely - need user verification","created_at":"2025-11-28T03:37:32Z"}]} -{"id":"vsbeads-34v","title":"Add static filter favorites with \"Not Closed\" default","description":"Initial implementation of filter favorites. Add a dropdown with static preset filter combinations, defaulting to \"Not Closed\".","design":"**Implementation:**\n1. Add favorites dropdown next to \"+ Filter\" button\n2. Static presets:\n - \"All\" - no filters\n - \"Not Closed\" - status: open, in_progress, blocked (default)\n - \"Active\" - status: in_progress, blocked\n3. On load, apply \"Not Closed\" preset\n4. Selecting a preset replaces current filters\n5. Manual filter changes clear the preset selection (show as \"Custom\")\n\n**UI placement:**\n`[Favorites ▾] [+ Filter] [Clear]`\n\nOr integrate into existing filter UI as first option in the filter menu.","acceptance_criteria":"- Favorites dropdown visible in filter toolbar\n- \"Not Closed\" applied by default on panel load\n- Selecting preset updates filter chips\n- Clear button resets to \"All\"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-26T23:34:31.948083-08:00","updated_at":"2025-11-26T23:36:12.283982-08:00","closed_at":"2025-11-26T23:36:12.283982-08:00"} -{"id":"vsbeads-385","title":"Table should stretch to fill container width","description":"After fixing column resize (table-layout: fixed + colgroup), the table no longer stretches to fill the panel width. There's a visible gap between the right edge of the table and the panel splitter.\n\nExpected: Table fills available width, with columns resizable within that space.\nActual: Table width is sum of column widths, leaving empty space on right.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-01T15:29:34.045547-08:00","updated_at":"2025-12-01T15:56:32.38194-08:00","closed_at":"2025-12-01T15:56:32.38194-08:00","labels":["ui"]} {"id":"vsbeads-3cn","title":"Agent-Driven VS Code Extension Development","description":"Enable Claude to effectively develop and debug VS Code extensions through browser automation and MCP integration.\n\nGoals:\n- Run VS Code in a browser (code-server or VS Code Web) with locally-built extensions\n- Control VS Code via MCP (Browser MCP, Chrome DevTools MCP, or Playwright)\n- Access debugging tools: screenshots, logs, inspector, terminal output\n- Enable human participation via VNC/X11 for guidance and review\n\nSuccess criteria:\n- Claude can start/stop VS Code, reload extensions, run commands\n- Claude can see UI state, logs, and errors programmatically\n- Jason can observe and guide Claude's actions in real-time","status":"open","priority":2,"issue_type":"epic","estimated_minutes":1800,"created_at":"2025-11-27T13:28:48.987495-08:00","updated_at":"2025-12-04T11:58:55.337807-08:00","labels":["dx"],"comments":[{"id":2,"issue_id":"vsbeads-3cn","author":"jason","text":"Context is a problem...","created_at":"2025-11-28T03:11:56Z"},{"id":21,"issue_id":"vsbeads-3cn","author":"jason","text":"a very big problem","created_at":"2025-11-28T04:53:09Z"},{"id":22,"issue_id":"vsbeads-3cn","author":"jason","text":"Initial design, we moved on to some real exploration on wonderland/platform to test with mobile-mcp. Will follow up here after more work is done there.","created_at":"2025-12-01T02:09:06Z"}]} {"id":"vsbeads-3ly3","title":"Hierarchical IDs create implicit parent-child not exposed by daemon API","notes":"## Summary\nHierarchical bead IDs (`\u003cparent-id\u003e.\u003cN\u003e`) create an **implicit** parent-child relationship based on ID naming convention. This implicit relationship:\n1. Is NOT exposed through the daemon API\n2. Blocks adding explicit `parent-child` dependencies\n3. Results in \"orphaned\" parent-child relationships invisible to vscode-beads\n\n## Reproduction\n```bash\n# Create parent\nbd create --title=\"Parent\" --type=epic\n# Output: vsbeads-515e\n\n# Create child with --parent (works correctly - adds BOTH hierarchical ID AND explicit dep)\nbd create --title=\"Child\" --type=task --parent=vsbeads-515e\n# Output: vsbeads-515e.1 (hierarchical ID)\n# Also adds explicit parent-child dependency record\n\n# Try to manually add parent-child dep (BLOCKED)\nbd dep add vsbeads-515e.1 vsbeads-515e --type=parent-child\n# Error: cannot add dependency: vsbeads-515e.1 is already a child of vsbeads-515e.\n# Children inherit dependency on parent completion via hierarchy.\n# Adding an explicit dependency would create a deadlock\n```\n\n## Root Cause\nThe `isChildOf()` function checks if an ID follows hierarchical pattern (`parent.N`):\n- If true, blocks adding explicit `parent-child` dependency (bd-nim5 fix)\n- But daemon API doesn't synthesize this implicit relationship in dependency queries\n- vscode-beads only sees explicit dependencies from daemon\n\n## Upstream Code References\n| File | Line | Function | Purpose |\n|------|------|----------|---------|\n| `cmd/bd/dep.go` | 30 | `isChildOf()` | Checks if ID follows hierarchical pattern |\n| `cmd/bd/dep.go` | 142-146 | dep add | Blocks child→parent deps with deadlock error |\n| `internal/rpc/server_labels_deps_comments.go` | 15-24 | `isChildOf()` | Same check in daemon RPC |\n| `internal/rpc/server_labels_deps_comments.go` | 35-42 | `DepAdd()` | Daemon-side blocking |\n| `internal/storage/sqlite/ids.go` | 44-64 | `IsHierarchicalID()` | Parses hierarchical IDs |\n| `internal/storage/sqlite/ids.go` | 70-91 | `ParseHierarchicalID()` | Extracts parent ID and child number |\n\n## Impact\n- Issues imported with hierarchical IDs (e.g., from Linear) may lack explicit dependencies\n- Parent-child relationships invisible in vscode-beads UI\n- Cannot manually fix by adding dependency (blocked)\n- Dependency display shows \"-\" for parent/children columns\n\n## Possible Solutions\n1. **Upstream fix**: Daemon API should synthesize implicit parent-child from hierarchical IDs\n2. **vscode-beads workaround**: Parse hierarchical IDs client-side to infer relationships\n3. **Data migration**: Script to add missing explicit deps for existing hierarchical IDs\n\n## Related\n- bd-nim5: Original fix that added the blocking behavior\n- GH#728: Child counter updates for explicit child IDs\n- `bd doctor --fix-child-parent`: Opt-in fix for child→parent deps","status":"closed","priority":0,"issue_type":"bug","assignee":"jdillon","created_at":"2025-12-27T20:50:53.075865-08:00","updated_at":"2025-12-29T11:36:24.070757-08:00","closed_at":"2025-12-29T11:36:24.070757-08:00","close_reason":"Testing shows mechanism works correctly. Will file new issue if reproduction steps found in other project.","labels":["backend","daemon","upstream"],"dependencies":[{"issue_id":"vsbeads-3ly3","depends_on_id":"vsbeads-yhok","type":"related","created_at":"2025-12-27T21:03:11.869224-08:00","created_by":"daemon"},{"issue_id":"vsbeads-3ly3","depends_on_id":"vsbeads-yhok.2","type":"related","created_at":"2025-12-27T21:03:11.911184-08:00","created_by":"daemon"},{"issue_id":"vsbeads-3ly3","depends_on_id":"vsbeads-90cp","type":"related","created_at":"2025-12-27T21:03:11.951047-08:00","created_by":"daemon"}],"comments":[{"id":38,"issue_id":"vsbeads-3ly3","author":"jason","text":"## Testing Findings (2025-12-27)\n\nTested both parent-child creation methods - both work correctly:\n\n### Test 1: Using --parent flag\n```bash\nbd create --title=\"Test Epic\" --type=epic # → vsbeads-yhok\nbd create --title=\"Child task\" --type=task --parent=vsbeads-yhok # → vsbeads-yhok.2\n```\n**Result**: ✓ Hierarchical ID created, explicit `parent-child` dep added, shows in daemon API\n\n### Test 2: Manual association\n```bash\nbd create --title=\"Standalone task\" --type=task # → vsbeads-90cp\nbd dep add vsbeads-90cp vsbeads-yhok --type=parent-child\n```\n**Result**: ✓ Regular ID, manual dep works, shows in daemon API\n\n### Revised Hypothesis\nThe bug may be triggered by:\n1. **Imported hierarchical IDs** without explicit dep records\n2. **Misuse of ID format** (manually setting `.N` suffix without using `--parent`)\n3. **Data migration edge cases** from older beads versions\n\nThe `isChildOf()` blocking logic assumes hierarchical IDs always have implicit relationships, but if the explicit dep record is missing, the relationship becomes invisible yet unfixable.\n\n### Test Issues\n- vsbeads-yhok (epic)\n- vsbeads-yhok.2 (child via --parent)\n- vsbeads-90cp (child via manual dep add)\n\nAll showing correct parent-child relationships in daemon API.","created_at":"2025-12-28T05:03:05Z"}]} -{"id":"vsbeads-3rk","title":"Test issue with multiple labels","description":"Testing labels overflow indicator","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-01T14:55:15.765599-08:00","updated_at":"2025-12-01T15:12:56.122436-08:00","closed_at":"2025-12-01T15:12:56.122436-08:00","labels":["a","b","c","d","dx","e","ui"]} -{"id":"vsbeads-3zm","title":"Filter menu UX improvements: submenu indicators and click-away dismiss","description":"Two issues with the filter menu:\n\n1. **Submenu indicators missing**: When clicking the filter menu, it's not clear that the first menu item leads to submenus. There should be visual treatment (arrow/chevron) to indicate there's another menu before a selection is made.\n\n2. **Dismiss behavior**: The filter button requires multiple clicks to dismiss if you were just looking. Should dismiss as soon as the user clicks away from the menu (standard click-outside-to-close behavior).","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-11-27T13:31:46.108524-08:00","updated_at":"2025-11-30T17:32:31.489179-08:00","closed_at":"2025-11-30T17:32:31.489179-08:00","labels":["ui"]} {"id":"vsbeads-44c","title":"Add \"me\" option to assignee filter for saved filters support","description":"The assignee filter dropdown should include a special \"me\" option that resolves to the current user. This enables saved filters like \"not closed and assigned to me\" that work across different users/machines.","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-11T02:15:28.470012-08:00","updated_at":"2025-12-11T02:15:28.470012-08:00","labels":["filters","ui"],"dependencies":[{"issue_id":"vsbeads-44c","depends_on_id":"vsbeads-gr5","type":"related","created_at":"2025-12-11T02:15:47.790211-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-49u","title":"Investigate: estimated_minutes field not settable via bd CLI","description":"The `estimated_minutes` field exists in the beads schema (per daemon API docs) but `bd update` doesn't have an `--estimate` flag to set it.\n\nQuestions:\n1. Is this field supported at all in current beads?\n2. Is there a different way to set it (create only? direct JSONL edit?)\n3. Should we file upstream issue to add `--estimate` flag?\n\nWithout ability to set estimates, the Estimate column in vscode-beads is useless.","notes":"---\n\n**2025-12-04 Update**: ✅ **FIXED in v0.29.0!** The `--estimate` / `-e` flag is now properly implemented:\n- `bd create --estimate \u003cminutes\u003e`\n- `bd update \u003cid\u003e --estimate \u003cminutes\u003e`\n- Protocol structs have `EstimatedMinutes` field\n\nVerified in local clone at `~/ws/reference/beads`. vscode-beads Estimate column is now usable once users upgrade to beads v0.29.0+.","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-12-01T16:03:02.12189-08:00","updated_at":"2025-12-04T11:47:04.526243-08:00","closed_at":"2025-12-04T11:47:04.526243-08:00","labels":["dx"]} {"id":"vsbeads-4e7","title":"E2E Testing Infrastructure with Playwright","description":"Establish automated end-to-end testing for the VS Code extension using Playwright with code-server.\n\n**Goal:** Prevent regressions when making UI/feature changes (like the TanStack Table migration).\n\n**Strategy:**\n- Playwright for browser automation (Microsoft-recommended, excellent iframe/webview support)\n- code-server as the test target (VS Code in browser)\n- Nightly runs on GitHub Actions (not blocking PRs, but catches regressions)\n- Manual trigger option for PR testing when needed\n\n**Success criteria:**\n- Tests cover core user flows: view issues, select issue, see details\n- Tests run reliably in CI (no flakiness)\n- Failures produce actionable artifacts (screenshots, traces)\n- Test suite runs in \u003c 5 minutes","status":"open","priority":1,"issue_type":"epic","created_at":"2025-12-05T00:22:22.058747-08:00","updated_at":"2025-12-10T00:18:15.564344-08:00","labels":["ci","dx","testing"]} {"id":"vsbeads-4f0","title":"Investigate i18n options for VS Code extension","description":"Research internationalization (i18n) options for VS Code extensions. Determine what's needed to support multiple languages for UI strings, commands, settings, etc.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-11T01:38:58.666866-08:00","updated_at":"2025-12-11T01:38:58.666866-08:00","labels":["dx","research"]} -{"id":"vsbeads-4fw","title":"Persist sort order across plugin reloads","description":"Currently the Issues list sort order resets to 'updated' on plugin reload. Should persist the user's chosen sort column and direction.\n\n**Options:**\n- Store in VS Code workspace state (per-workspace)\n- Store in extension settings (global)\n- Store in localStorage via webview (per-webview)\n\nWorkspace state is probably best - different projects may warrant different sort preferences.","status":"closed","priority":2,"issue_type":"feature","estimated_minutes":60,"created_at":"2025-12-04T15:22:27.538401-08:00","updated_at":"2025-12-04T17:47:22.880535-08:00","closed_at":"2025-12-04T17:47:22.880535-08:00","labels":["ui","ux"]} {"id":"vsbeads-4m5i","title":"Periodic upstream beads sync check","description":"Periodically check steveyegge/beads for changes that affect vscode-beads:\n\n**What to check:**\n- Daemon API changes (internal/rpc/protocol.go, internal/types/types.go)\n- New bead types (issue_type values)\n- CLI command/flag changes\n\n**How to check:**\n```bash\ncd ~/ws/reference/beads \u0026\u0026 git fetch \u0026\u0026 git pull\ngit log --oneline -20 # See recent commits\ngit diff \u003clast-checked-commit\u003e..HEAD -- internal/types/ internal/rpc/\n```\n\n**What to update:**\n- BeadsDaemonClient.ts types\n- docs/reference/beads-daemon-api.md\n- src/webview/types.ts (BeadType, colors, icons)\n\nThis is a recurring maintenance task, not a one-time fix.","status":"closed","priority":4,"issue_type":"chore","assignee":"jdillon","created_at":"2025-12-25T17:01:12.311585-08:00","updated_at":"2025-12-29T13:40:32.810063-08:00","closed_at":"2025-12-29T13:40:32.810063-08:00","close_reason":"Created /upstream-sync command with process guide, docs/upstream-sync/ for reports, and reference doc tracking","labels":["maintenance"],"dependencies":[{"issue_id":"vsbeads-4m5i","depends_on_id":"vsbeads-un3l","type":"blocks","created_at":"2025-12-29T11:45:27.253083-08:00","created_by":"daemon"}]} {"id":"vsbeads-4n2","title":"Improve Details panel UX - consider inline expansion vs separate panel","description":"VS Code WebviewView API has show() but no collapse/hide method. Current behavior: Details panel auto-expands when bead selected but can't auto-collapse when cleared.\n\nOptions to explore:\n- Inline expansion in the Issues list (like a details row)\n- Editor panel instead of sidebar panel\n- TreeView with expandable items\n- Accept limitation with compact empty state (current)","status":"open","priority":3,"issue_type":"feature","estimated_minutes":300,"created_at":"2025-11-26T16:33:59.306123-08:00","updated_at":"2025-12-04T12:00:11.87706-08:00","labels":["ui"]} -{"id":"vsbeads-4rj","title":"Retry button doesn't reload details panel","description":"When clicking Retry after daemon reconnects, the Issues panel reloads but the Details panel does not refresh. Both panels should refresh on retry.","status":"open","priority":3,"issue_type":"bug","estimated_minutes":60,"created_at":"2025-11-29T15:04:48.965543-08:00","updated_at":"2025-12-04T11:59:27.840917-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-4rj","depends_on_id":"vsbeads-5nm","type":"discovered-from","created_at":"2025-11-29T15:04:54.883404-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-4uw","title":"Evaluate TanStack Table for Issues list","description":"Consider using TanStack Table (headless) for the Issues table instead of custom resize/sort/filter logic. Would give us battle-tested implementations without UI opinions.\n\nTrade-offs to evaluate:\n- Bundle size impact\n- API learning curve\n- Migration effort from current custom implementation\n- VS Code webview compatibility","status":"closed","priority":3,"issue_type":"task","estimated_minutes":180,"created_at":"2025-12-01T15:29:33.996813-08:00","updated_at":"2025-12-04T15:56:42.646284-08:00","closed_at":"2025-12-04T15:56:42.646284-08:00","labels":["dx","ui"]} +{"id":"vsbeads-4rj","title":"Retry button doesn't reload details panel","description":"When clicking Retry after daemon reconnects, the Issues panel reloads but the Details panel does not refresh. Both panels should refresh on retry.","status":"open","priority":3,"issue_type":"bug","estimated_minutes":60,"created_at":"2025-11-29T15:04:48.965543-08:00","updated_at":"2025-12-04T11:59:27.840917-08:00","labels":["ui"]} {"id":"vsbeads-4v9","title":"Show helpful message when no project is open instead of \"Loading...\"","description":"When VS Code has no folder opened, the Issues panel shows \"Loading...\" indefinitely. Should show a helpful message like \"Open a folder to view issues\" instead.","status":"open","priority":3,"issue_type":"bug","created_at":"2025-12-16T12:05:33.472472-08:00","updated_at":"2025-12-16T12:05:33.472472-08:00","labels":["ui","ux"]} {"id":"vsbeads-515e","title":"Test parent for hierarchy","status":"tombstone","priority":3,"issue_type":"epic","created_at":"2025-12-27T20:45:41.415098-08:00","updated_at":"2025-12-27T20:46:34.953177-08:00","deleted_at":"2025-12-27T20:46:34.953177-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"epic"} {"id":"vsbeads-515e.1","title":"Test child using --parent","status":"tombstone","priority":3,"issue_type":"task","created_at":"2025-12-27T20:45:47.180329-08:00","updated_at":"2025-12-27T20:46:34.905009-08:00","dependencies":[{"issue_id":"vsbeads-515e.1","depends_on_id":"vsbeads-515e","type":"parent-child","created_at":"2025-12-27T20:45:47.190475-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T20:46:34.905009-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"} -{"id":"vsbeads-56z","title":"Add transient toast feedback for copy/refresh actions","description":"No visual feedback when:\n- Clicking bead ID/title to copy to clipboard\n- Clicking refresh button\n\nNeed transient toast/popup near the action location.","design":"Implement a simple toast component:\n- Positioned near the triggering element\n- Auto-dismisses after 1.5s\n- Small, non-intrusive\n- Use for: copy actions, refresh complete","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-27T00:07:42.824348-08:00","updated_at":"2025-11-27T00:57:29.115178-08:00","closed_at":"2025-11-27T00:57:29.115178-08:00","comments":[{"id":1,"issue_id":"vsbeads-56z","author":"jason","text":"Toast positioning still being refined","created_at":"2025-11-27T08:56:05Z"}]} {"id":"vsbeads-57m","title":"Search should show filtered-out matches or offer to clear filters","description":"When searching by bead ID or text, results may be hidden by active filters (status, type, priority). This is confusing - you search for \"vsbeads-abc\" and see nothing because it's closed.\n\nOptions to consider:\n1. **Bypass filters when searching** - Global search ignores column filters\n2. **Show \"hidden by filter\" indicator** - \"3 matches hidden by filters\" with option to clear\n3. **Show filtered matches differently** - Grayed out rows at bottom showing filtered-out matches\n4. **Auto-clear filters on exact ID match** - If search matches a bead ID exactly, clear filters and select it","status":"open","priority":3,"issue_type":"feature","estimated_minutes":120,"created_at":"2025-12-04T16:58:53.89163-08:00","updated_at":"2025-12-05T12:01:16.828888-08:00","labels":["ui","ux"],"dependencies":[{"issue_id":"vsbeads-57m","depends_on_id":"vsbeads-wgr","type":"parent-child","created_at":"2025-12-17T16:53:56.291691-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-5bz","title":"Timestamps may not handle timezone differences correctly","description":"When collaborating across timezones, beads created by peers in different timezones may appear with incorrect relative times or sort incorrectly.\n\nExample: Peer 3 hours ahead creates a bead - it shows up with a timestamp that appears to be \"in the future\" for users in earlier timezones.\n\nNeed to investigate:\n1. How timestamps are stored in beads DB (UTC vs local?)\n2. How timestamps are transmitted via daemon RPC\n3. How the extension displays/sorts timestamps\n4. Whether bd CLI handles timezone conversion","acceptance_criteria":"- Timestamps stored in UTC in database\n- Extension converts to user's local timezone for display\n- Sorting uses UTC-normalized timestamps\n- Relative time display (\"2 hours ago\") is accurate across timezones","notes":"Fixed timestamp sorting in IssuesView.tsx by adding custom `sortingFn` to `updatedAt` and `createdAt` columns. The fix converts ISO 8601 timestamps to UTC milliseconds before comparison, which handles cross-timezone sorting correctly.\n\nDisplay was already correct - `new Date(timestamp).toLocaleDateString()` converts to user's local timezone automatically.\n\n---\n2025-12-08: Refactored to use shared `Timestamp` component and `timestampSortingFn` helper:\n- Created `src/webview/common/Timestamp.tsx` with:\n - `Timestamp` component (formats: date, datetime, relative; tooltip shows full datetime)\n - `compareTimestamps()` utility for UTC-based comparison\n - `timestampSortingFn()` for TanStack Table columns\n- Updated `IssuesView.tsx` to use component + sort function\n- Updated `DetailsView.tsx` to use component for comments and metadata footer\n- Related: vsbeads-izh for width-adaptive date+time display","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-07T16:07:25.992032-08:00","updated_at":"2025-12-09T21:55:01.782623-08:00","closed_at":"2025-12-09T21:55:01.782623-08:00","labels":["backend","sync"],"dependencies":[{"issue_id":"vsbeads-5bz","depends_on_id":"vsbeads-izh","type":"related","created_at":"2025-12-08T22:05:16.785348-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-5c0","title":"Sub-agent browser automation to reduce context bloat","description":"Use sub-agents with isolated context windows to handle Chrome DevTools MCP operations, preventing context bloat in main conversation.\n\n**Problem:** Chrome DevTools MCP returns ~400 lines (full a11y tree) after every action, burning context fast.\n\n**Solution:** Delegate browser operations to short-lived sub-agents that:\n- Have their own context window (bloat stays there)\n- Return only minimal summaries to main agent\n- Batch multiple operations per invocation\n\n**Approach:**\n1. Create `browser-task` sub-agent with only Chrome DevTools MCP tools\n2. Focused instructions: execute task, return minimal summary\n3. Use for: reload window, click sequences, verify UI state","status":"open","priority":2,"issue_type":"epic","estimated_minutes":600,"created_at":"2025-11-28T21:52:14.860652-08:00","updated_at":"2025-12-04T11:58:51.219932-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-28T21:52:42.200798-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-n64","type":"related","created_at":"2025-11-28T21:52:42.256772-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-5jd","title":"Extract generic Playwright testsuite strategy doc from vsbeads-4e7","description":"Create a reusable testsuite strategy document based on the vscode-beads Playwright setup (vsbeads-4e7 and children), but generalized for:\n\n- **Generic web app testing** (not VS Code extension specific)\n- **GitLab CI** instead of GitHub Actions\n- **Portable structure** that can seed beads in other projects\n\n**Source material:**\n- `sandbox/e2e-testing-strategy.md` - current strategy doc\n- vsbeads-4e7 epic and child tasks (ur9, dxo, jfa, tom, w2x, 7xr, dhe, eby)\n\n**Output:**\n- `sandbox/playwright-testsuite-template.md` or similar\n- Replace code-server/extension specifics with generic webapp patterns\n- Replace GitHub Actions with GitLab CI equivalents\n- Keep the Playwright terminology TLDR (useful for any project)\n- Include a \"Beads to create\" section listing suggested tasks for bootstrapping testsuite in a new project\n\n**Use case:** Jason the Great wants to reuse this thinking for other projects, using the doc as input to create project-specific beads.","status":"closed","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-06T12:36:59.75489-08:00","updated_at":"2025-12-06T12:38:37.01485-08:00","closed_at":"2025-12-06T12:38:37.01485-08:00","labels":["docs","dx","testing"]} -{"id":"vsbeads-5nm","title":"Mutation watch spams errors when daemon dies","description":"When the beads daemon is killed, the extension spams error output repeatedly:\n\n```\n[ProjectManager] Mutation watch error: Socket error: connect ENOENT /Users/jason/ws/jdillon/vscode-beads/.beads/bd.sock\n[ProjectManager] Mutation watch error: Cannot read properties of null (reading 'filter')\n```\n\nThe \"filter\" error repeats continuously.","design":"## Root Cause\n\n1. **Error spam** (`BeadsDaemonClient.ts:490-510`): `startMutationWatch` used `setInterval` polling every 1s. When daemon dies, every poll failed with socket error - interval kept running forever.\n\n2. **Null filter error** (`BeadsDaemonClient.ts:495`): `mutations.filter()` called but `getMutations` could return null if daemon returned `{success: true}` without data.\n\n3. **No status feedback**: When daemon died, `daemonStatus` never updated.\n\n## Fix Implemented\n\n**BeadsDaemonClient.ts:**\n- Null guards on all array-returning methods (`list`, `ready`, `listComments`, `getMutations`)\n- Replaced `setInterval` with `setTimeout` + exponential backoff (1s -\u003e 2s -\u003e 4s -\u003e ... -\u003e 30s max)\n- Added `disconnected` and `reconnected` events (emit only on state change)\n- Track connection state to avoid duplicate events\n\n**BeadsProjectManager.ts:**\n- Listen for `disconnected`/`reconnected` events instead of generic `error`\n- Update `project.daemonStatus` on disconnect/reconnect\n- Fire `onActiveProjectChanged` to update UI","acceptance_criteria":"- [x] Null guards prevent \"Cannot read properties of null (reading 'filter')\" error\n- [x] Exponential backoff prevents error spam (1s -\u003e 30s max)\n- [x] Single \"Daemon disconnected\" message on disconnect\n- [x] Single \"Daemon reconnected\" message on reconnect\n- [x] daemonStatus updates to \"stopped\"/\"running\" appropriately\n- [ ] Status bar icon changes color on disconnect (UI needs to consume daemonStatus)","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-29T14:17:08.714282-08:00","updated_at":"2025-11-29T15:14:07.810064-08:00","closed_at":"2025-11-29T15:14:07.810064-08:00","dependencies":[{"issue_id":"vsbeads-5nm","depends_on_id":"vsbeads-ba5","type":"related","created_at":"2025-11-29T14:22:06.235038-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-65h","title":"Add label filter option to issues list","description":"Allow filtering issues by label in the issues list view. Could be a dropdown/chip selector similar to existing status filters.","status":"closed","priority":2,"issue_type":"feature","estimated_minutes":150,"created_at":"2025-11-28T17:39:51.904712-08:00","updated_at":"2025-12-11T02:50:55.109663-08:00","closed_at":"2025-12-11T02:50:55.109663-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-65h","depends_on_id":"vsbeads-7cp","type":"parent-child","created_at":"2025-12-10T02:09:57.407679-08:00","created_by":"daemon","metadata":"{}"}],"comments":[{"id":31,"issue_id":"vsbeads-65h","author":"jason","text":"needs to be able to add more than one label.","created_at":"2025-12-11T10:12:22Z"}]} -{"id":"vsbeads-661","title":"Contribute new beads icon artwork to upstream JaneDouglass","description":"The new simplified stroke-based icon (art/Beads.svg) works well at small sizes. Consider contributing this back to https://github.com/JaneDouglass for potential use in other beads projects.","status":"closed","priority":4,"issue_type":"task","created_at":"2025-12-16T12:24:05.497199-08:00","updated_at":"2025-12-17T02:02:55.438418-08:00","closed_at":"2025-12-17T02:02:55.438418-08:00","close_reason":"Artwork contributed in PR #39 with Co-Authored-By attribution to JaneDouglass","labels":["community","upstream"],"dependencies":[{"issue_id":"vsbeads-661","depends_on_id":"vsbeads-94s","type":"related","created_at":"2025-12-17T02:02:22.969746-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-677","title":"Move labels display near type/status/priority in Details panel","description":"Labels are currently displayed after description and other content in the Details panel. They should be positioned near the type/status/priority badges at the top for better visibility and quick scanning.\n\n**Current:** Labels appear lower in the panel after description/design/notes\n**Expected:** Labels appear next to or directly below the type/status/priority row","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-09T21:45:30.935934-08:00","updated_at":"2025-12-10T00:32:22.65165-08:00","closed_at":"2025-12-10T00:32:22.65165-08:00","labels":["ui"]} -{"id":"vsbeads-6d1","title":"Add type sort order for epic-first display","description":"Add TYPE_SORT_ORDER constant to control display order of bead types. Order: epic (0), feature (1), bug (2), task (3), chore (4), merge-request (5), molecule (6). Unknown types sort last (99).","status":"closed","priority":2,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-21T16:48:02.922617-08:00","updated_at":"2025-12-22T15:43:04.622095-08:00","closed_at":"2025-12-22T15:43:04.622095-08:00","close_reason":"Fixed in PR #46 - added TYPE_SORT_ORDER for epic-first display in filter menus and table columns","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-6d1","depends_on_id":"vsbeads-duu","type":"discovered-from","created_at":"2025-12-21T16:48:11.086284-08:00","created_by":"daemon"},{"issue_id":"vsbeads-6d1","depends_on_id":"vsbeads-rt9j","type":"related","created_at":"2025-12-21T16:48:16.634189-08:00","created_by":"daemon"},{"issue_id":"vsbeads-6d1","depends_on_id":"vsbeads-madg","type":"related","created_at":"2025-12-21T16:48:16.745306-08:00","created_by":"daemon"}]} {"id":"vsbeads-6mx","title":"Support file attachments via beads-attachments directory","description":"Consider supporting file attachments (screenshots, docs) by:\n\n1. Store files in a `beads-attachments/` directory in repo (or on beads-metadata branch)\n2. Extension provides \"Attach file\" action that:\n - Copies/moves file to `beads-attachments/\u003cissue-id\u003e/filename.png`\n - Adds markdown link/embed to issue body or as a comment\n3. Render inline in Details panel when markdown contains `![](beads-attachments/...)`\n\nUse cases:\n- \"Look at this screenshot\" during bug reports\n- Design mockups attached to feature issues\n- Reference docs for complex tasks\n\nQuestions:\n- Store on main branch or beads-metadata branch?\n- Naming convention: `beads-attachments/\u003cissue-id\u003e/` or flat with prefixes?\n- Auto-cleanup when issue is compacted/deleted?","status":"open","priority":4,"issue_type":"feature","estimated_minutes":480,"created_at":"2025-11-30T01:18:31.564585-08:00","updated_at":"2025-12-04T12:00:13.942853-08:00","labels":["ui"]} -{"id":"vsbeads-6qz","title":"Bump minor version on release from main, reset patch to 0","description":"Current bump strategy increments patch version. For main branch releases, should bump minor version (0.x.0 → 0.y.0) and reset patch to 0. This better reflects semantic versioning where main releases are feature releases.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-28T17:04:40.688149-08:00","updated_at":"2025-11-28T21:39:01.557158-08:00","closed_at":"2025-11-28T21:39:01.557158-08:00","labels":["infra"]} {"id":"vsbeads-79pr","title":"Tooltip content shows raw markdown instead of rendered","notes":"## Problem\nTooltip content displays raw markdown syntax instead of rendered HTML.\n\nExample: Shows `**bold**` and `- list item` instead of rendered **bold** and bullet points.\n\n## Expected\nMarkdown in tooltip content should be rendered as formatted HTML.\n\n## Fix\nUse a markdown renderer (e.g., `marked`, `react-markdown`) to convert markdown to HTML before displaying in tooltips.","status":"closed","priority":2,"issue_type":"bug","assignee":"jdillon","created_at":"2025-12-28T02:15:56.691005-08:00","updated_at":"2025-12-29T12:51:26.56702-08:00","closed_at":"2025-12-29T12:51:26.56702-08:00","close_reason":"Closed","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-79pr","depends_on_id":"vsbeads-un3l","type":"parent-child","created_at":"2025-12-29T11:39:53.265742-08:00","created_by":"daemon"}]} -{"id":"vsbeads-7ba","title":"Revisit UX for external ref and estimate fields","description":"The current external ref and estimate fields in the Details view need UX improvement. Review and redesign for better usability.","notes":"## Progress (2025-12-17)\n\n**Completed:**\n- External ref renders as clickable link when URL (with external-link icon from Font Awesome)\n- External ref and Estimate moved to separate sections (not crammed row)\n- Only show sections when data exists (cleaner UI)\n\n**Remaining exploration:**\n- Consider \"Other\" or \"Metadata\" section with key-value tabular layout (dl/dt/dd) for grouping auxiliary fields\n- Possibly add edit support back for these fields in edit mode\n\nBranch: `feat/external-ref-ux`","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-10T00:24:16.881928-08:00","updated_at":"2025-12-17T01:58:28.99454-08:00","closed_at":"2025-12-17T01:58:28.99454-08:00","close_reason":"Implemented in PR #40 - external ref as clickable link, separate sections","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-7ba","depends_on_id":"vsbeads-nin","type":"parent-child","created_at":"2025-12-11T14:52:12.538271-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-7ba","depends_on_id":"vsbeads-24b","type":"related","created_at":"2025-12-17T01:37:45.446635-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-7cp","title":"UX polish: visual indicators and metadata display","description":"Group of UX improvements for better visual indicators and metadata display in the Issues view.","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-12-10T02:01:46.928179-08:00","updated_at":"2025-12-11T14:52:17.848884-08:00","closed_at":"2025-12-11T14:52:17.848884-08:00","labels":["ui"]} {"id":"vsbeads-7e9","title":"Docking, undocking, and editor tab support","description":"Support for opening beads views in editor tabs, undocking panels, and flexible window arrangements.","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-10T02:08:17.588144-08:00","updated_at":"2025-12-10T02:08:17.588144-08:00","labels":["ui"]} -{"id":"vsbeads-7eg","title":"Dynamic updates from daemon events are broken","description":"Extension does not automatically refresh when beads are modified via CLI. Changes made with bd update (e.g., adding labels, updating estimates) don't trigger UI refresh until manual reload.\n\n**Observed:**\n- Added 'test' label to vsbeads-7jw via CLI\n- Extension UI did not update automatically\n- Details panel still shows old labels\n\n**Expected:**\n- Daemon should emit change events\n- Extension should subscribe and refresh affected views\n\n**Impact:** Critical for workflow - users expect real-time updates when CLI and extension are used together.","notes":"**Root Cause:**\n`setupMutationWatching()` (called after daemon auto-start) only called `startMutationWatch()` but never registered the `mutation`, `disconnected`, and `reconnected` event listeners. The polling ran but events went unhandled.\n\n**Fix:**\n1. Moved event listener registration into `setupMutationWatching()`\n2. Refactored `setActiveProject()` to use `setupMutationWatching()` instead of duplicating code\n\n**Files changed:**\n- `src/backend/BeadsProjectManager.ts`","status":"closed","priority":1,"issue_type":"bug","estimated_minutes":60,"created_at":"2025-12-04T12:03:29.191873-08:00","updated_at":"2025-12-04T12:13:41.742744-08:00","closed_at":"2025-12-04T12:13:41.742744-08:00","labels":["backend","daemon"]} -{"id":"vsbeads-7g6","title":"Edit mode: removing labels via X button doesn't persist on save","description":"In Details panel edit mode, clicking X on a label badge and then clicking Save doesn't actually remove the label. The change is lost.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-01T14:56:40.573858-08:00","updated_at":"2025-12-01T15:56:32.557872-08:00","closed_at":"2025-12-01T15:56:32.557872-08:00","labels":["ui"]} {"id":"vsbeads-7jw","title":"Setup dedicated test workspace for UI testing","description":"Create a separate workspace/project with beads initialized for testing the extension UI, so we don't pollute vscode-beads with test beads.\n\nPossible approaches:\n- Create `test-workspace/` directory with `.beads/` initialized\n- Or use a separate repo entirely\n- Should have sample beads with various states, labels, priorities, dependencies for testing edge cases","status":"open","priority":1,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-01T15:45:24.063029-08:00","updated_at":"2025-12-04T11:58:41.463335-08:00","labels":["dx"]} -{"id":"vsbeads-7ny","title":"Rename \"Beads Dashboard\" references to \"Beads\"","description":"Extension was renamed to \"Beads\" but there are leftover \"Beads Dashboard\" references. Output channel still shows \"Beads Dashboard\" in selector.","design":"Search and replace:\n- Output channel name in extension.ts\n- Any other \"Beads Dashboard\" strings in code/comments\n- Keep historical references in git commits as-is","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-11-26T18:43:02.79866-08:00","updated_at":"2025-11-27T01:18:57.016161-08:00","closed_at":"2025-11-27T01:18:57.016161-08:00"} -{"id":"vsbeads-7r2","title":"Edit view does not allow updating estimate field","description":"The Details panel edit mode is missing input for the estimate field. Users cannot set or modify time estimates through the UI.","status":"closed","priority":2,"issue_type":"bug","assignee":"jdillon","created_at":"2025-12-17T15:05:23.467365-08:00","updated_at":"2025-12-17T16:28:06.296055-08:00","closed_at":"2025-12-17T16:28:06.296055-08:00","close_reason":"PR #43 merged - estimate field now editable","labels":["details-panel","ui"],"dependencies":[{"issue_id":"vsbeads-7r2","depends_on_id":"vsbeads-nin","type":"parent-child","created_at":"2025-12-17T15:06:04.592244-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-7r2","depends_on_id":"vsbeads-7ba","type":"related","created_at":"2025-12-17T15:15:55.589415-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-7ue","title":"Show connection status indicator instead of full error view on disconnect","description":"When daemon disconnects, the entire panel shows an error view with Retry button. Better UX would be a status indicator (green→red) that shows connection state without replacing the panel content.","status":"open","priority":2,"issue_type":"feature","estimated_minutes":210,"created_at":"2025-11-29T15:04:49.017327-08:00","updated_at":"2025-12-04T11:58:48.492907-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-7ue","depends_on_id":"vsbeads-5nm","type":"discovered-from","created_at":"2025-11-29T15:04:54.924745-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-7ue","title":"Show connection status indicator instead of full error view on disconnect","description":"When daemon disconnects, the entire panel shows an error view with Retry button. Better UX would be a status indicator (green→red) that shows connection state without replacing the panel content.","status":"open","priority":2,"issue_type":"feature","estimated_minutes":210,"created_at":"2025-11-29T15:04:49.017327-08:00","updated_at":"2025-12-04T11:58:48.492907-08:00","labels":["ui"]} {"id":"vsbeads-7xr","title":"Write E2E test: Issue selection shows details","description":"Test the core interaction flow: selecting an issue shows its details.\n\n**Test scenario:**\n1. Load Issues panel with seed data\n2. Click on an issue row\n3. Verify Details panel updates with selected issue\n4. Verify title, description, status display correctly\n\n**This proves:**\n- webview ↔ extension message passing works\n- Details panel receives selection events\n- UI updates reactively","acceptance_criteria":"- Test passes locally\n- Uses stable selectors (data-testid preferred)\n- Documents the interaction pattern","status":"open","priority":2,"issue_type":"task","estimated_minutes":60,"created_at":"2025-12-05T00:23:04.002552-08:00","updated_at":"2025-12-05T01:14:47.777369-08:00","labels":["testing"],"dependencies":[{"issue_id":"vsbeads-7xr","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.454114-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-7xr","depends_on_id":"vsbeads-w2x","type":"blocks","created_at":"2025-12-05T00:23:31.129272-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-7yz","title":"Finalize TanStack Table migration","description":"Complete the TanStack Table adoption for IssuesView:\n- Remove original IssuesView.tsx\n- Rename IssuesViewTanStack.tsx → IssuesView.tsx\n- Update App.tsx import (remove SPIKE comment)\n- Clean up any dead code\n\nDepends on PR #27 merge.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-04T15:54:09.941727-08:00","updated_at":"2025-12-04T15:56:42.596248-08:00","closed_at":"2025-12-04T15:56:42.596248-08:00","labels":["refactor","ui"],"dependencies":[{"issue_id":"vsbeads-7yz","depends_on_id":"vsbeads-4uw","type":"blocks","created_at":"2025-12-04T15:54:23.179714-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-804l","title":"Fix markdown list bullet rendering","description":"Markdown syntax is not rendering list bullets sanely in the webview","status":"open","priority":1,"issue_type":"task","created_at":"2026-01-11T00:46:08.429779-08:00","created_by":"jason","updated_at":"2026-01-11T00:46:08.429779-08:00","labels":["bug","ui"]} -{"id":"vsbeads-868","title":"Ensure all critical daemon operations are logged to output","description":"Hard to debug daemon auto-start because logging may be missing or unclear. Need to verify that all critical operations (daemon start/stop, connection state changes, errors) are logged to the Beads output channel with clear context.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-29T15:11:28.197113-08:00","updated_at":"2025-12-02T23:51:38.589224-08:00","closed_at":"2025-12-02T23:51:38.589224-08:00","labels":["daemon","dx"],"dependencies":[{"issue_id":"vsbeads-868","depends_on_id":"vsbeads-5nm","type":"discovered-from","created_at":"2025-11-29T15:11:33.979743-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-8et","title":"Labels column: inconsistent overflow indicators (... vs +N)","description":"In the Issues list Labels column, overflow is shown inconsistently:\n- Sometimes shows `...` after labels\n- Sometimes shows `+1` or `+N` after labels\n\nShould pick one pattern and use it consistently. `+N` is clearer as it tells you how many more labels exist.","notes":"Current state: Changed from 2-label limit + +N to show all labels with CSS ellipsis overflow. However, can't verify the fix because column resize is broken (vsbeads-oqb) - can't make column smaller to test overflow behavior.\n\nBlocked by: vsbeads-oqb (column resize)\n\nChanges made:\n- IssuesView.tsx: Removed slice(0,2) limit, now renders all labels \n- styles.css: Restored text-overflow: ellipsis on .labels-cell","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-30T01:12:05.180628-08:00","updated_at":"2025-12-01T15:56:32.33104-08:00","closed_at":"2025-12-01T15:56:32.33104-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-8et","depends_on_id":"vsbeads-oqb","type":"blocks","created_at":"2025-12-01T15:12:55.315222-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-8oc","title":"Add right-click context menu for type/status/priority in Issues list","description":"Add context menu actions to the Issues list so users can right-click on type/status/priority badges to change them inline.\n\nSimilar to the inline editing in Details view (vsbeads-fwp), but using right-click instead of click since the list rows already have click-to-select behavior.\n\n## Requirements\n- Right-click on type badge → dropdown menu to change type\n- Right-click on status badge → dropdown menu to change status \n- Right-click on priority badge → dropdown menu to change priority\n- Changes auto-save (no confirmation needed)\n- Use same ColoredSelect dropdown component from Details view\n\n## Notes\n- Click on row = select issue (existing behavior)\n- Right-click on badge = edit that field (new behavior)","status":"open","priority":3,"issue_type":"feature","estimated_minutes":210,"created_at":"2025-12-01T00:39:43.583441-08:00","updated_at":"2025-12-04T11:59:24.877438-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-8oc","depends_on_id":"vsbeads-wgr","type":"parent-child","created_at":"2025-12-17T16:53:56.326584-08:00","created_by":"daemon","metadata":"{}"}],"comments":[{"id":24,"issue_id":"vsbeads-8oc","author":"jason","text":"**Estimate: Medium (~1-2 hours)**\n\nWhat's needed:\n1. Add `onContextMenu` handlers to type/status/priority badge cells in IssuesView\n2. Render a positioned dropdown menu on right-click (similar to column menu)\n3. Wire up the change to call `onUpdateBead` (already exists but unused in IssuesView)\n4. Reuse `ColoredSelect` or create a context menu variant\n\nComplexity factors:\n- We already have dropdown/menu patterns (column menu, preset dropdown)\n- We already have `ColoredSelect` component from DetailsView\n- Main work is positioning the context menu at click coordinates\n- Need to handle click-outside dismiss (pattern already exists)\n\nThe patterns exist, it's mostly wiring them together in a new context.","created_at":"2025-12-02T00:41:30Z"}]} -{"id":"vsbeads-8p0","title":"Detect uninitialized beads projects and show helpful message","description":"When a project has `.beads/` directory but no database (not initialized), the daemon start fails with \"no database path configured\".\n\nCurrent behavior: Shows generic \"Daemon failed to start\" error.\n\nDesired behavior:\n1. Detect uninitialized state (has .beads/ but no beads.db)\n2. Show specific message: \"Beads not initialized. Run `bd init` in this directory.\"\n3. Future: Could offer to auto-initialize or show a dialog with \"Initialize\" button\n\nRelated error: `Error: no database path configured (run 'bd init' or set BEADS_DB)`","status":"closed","priority":2,"issue_type":"feature","estimated_minutes":120,"created_at":"2025-12-02T23:16:32.248375-08:00","updated_at":"2025-12-04T15:13:55.889024-08:00","closed_at":"2025-12-04T15:13:55.889024-08:00","labels":["daemon","ui","ux"]} -{"id":"vsbeads-8pl","title":"Reduce Dashboard view minimum height","description":"Dashboard stats section takes too much vertical space, partially cutting off the Issues panel below. Need more compact layout for the stat boxes.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-27T01:01:36.914842-08:00","updated_at":"2025-11-27T01:05:05.154318-08:00","closed_at":"2025-11-27T01:05:05.154318-08:00"} -{"id":"vsbeads-8wo","title":"Support patch version bumps for release branches","description":"When releasing from a release branch (e.g., release-0.2.x), should increment patch version (0.2.0 → 0.2.1) for bugfix releases. Complements the minor bump strategy for main branch releases.","status":"closed","priority":4,"issue_type":"task","created_at":"2025-11-28T17:04:40.744218-08:00","updated_at":"2025-12-01T16:38:38.472019-08:00","closed_at":"2025-12-01T16:38:38.472019-08:00","labels":["infra"]} -{"id":"vsbeads-8xt","title":"Publish to Open VSX for Cursor/VSCodium compatibility","description":"Cursor and VSCodium use Open VSX Registry by default, not the Microsoft VS Code Marketplace. Users of these editors cannot discover/install the extension from their built-in marketplace.\n\nNeed to:\n1. Create account on open-vsx.org\n2. Add `ovsx` publish step to release workflow\n3. Document in README that extension is available on both marketplaces","design":"See `sandbox/open-vsx-publishing.md` for detailed implementation plan.","acceptance_criteria":"- [ ] Open VSX account created\n- [ ] `OVSX_PAT` secret added to GitHub repo\n- [ ] Release workflow updated with `ovsx publish` step\n- [ ] Extension visible on open-vsx.org after next release\n- [ ] Cursor user can find/install extension from marketplace","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-10T15:27:00.907564-08:00","updated_at":"2025-12-11T14:52:17.888504-08:00","closed_at":"2025-12-11T14:52:17.888504-08:00","labels":["dx","release"]} {"id":"vsbeads-90cp","title":"Standalone task to associate with epic","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-27T20:54:31.509608-08:00","updated_at":"2025-12-29T11:36:43.341811-08:00","dependencies":[{"issue_id":"vsbeads-90cp","depends_on_id":"vsbeads-yhok","type":"parent-child","created_at":"2025-12-27T20:54:36.25191-08:00","created_by":"daemon"}],"deleted_at":"2025-12-29T11:36:43.341811-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"} -{"id":"vsbeads-92t","title":"Implement BeadsDaemonClient with Unix socket RPC","description":"Replace CLI-spawning BeadsBackend with direct daemon socket connection using JSON-RPC protocol. Support real-time mutations via get_mutations.","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-26T15:59:20.209079-08:00","updated_at":"2025-11-26T23:11:39.603475-08:00","closed_at":"2025-11-26T16:03:59.684447-08:00"} -{"id":"vsbeads-93b","title":"Release workflow: local slash command with changelog validation","description":"Replace `workflow_dispatch` with tag-triggered workflow. Add `/release` slash command for local release management.\n\n## Current problems\n- Must go to GitHub to trigger release\n- Version auto-calculated after publish → can't finalize changelog first\n- Post-release version bump creates chicken/egg with changelog\n\n## Solution\n\n### `/release` slash command\n1. **Compute default version** based on branch:\n - `main` → bump minor (0.1.3 → 0.2.0)\n - `release-v*` → bump patch (0.2.0 → 0.2.1)\n - Present as default, allow override\n\n2. **Audit changelog** for missing entries:\n - Parse git log since last tag\n - Compare to changelog entries\n - Flag potential gaps (feat/fix commits not in changelog)\n - Skip: docs, chore, refactor, ci commits\n - If gaps → ask user to update first\n\n3. **Validate \u0026 execute**:\n - Verify `[Unreleased]` has content\n - Move `[Unreleased]` → `[X.Y.Z] - YYYY-MM-DD`\n - Update `package.json` version\n - Commit: `chore: release vX.Y.Z`\n - Tag: `vX.Y.Z`\n - Push branch + tag\n\n### GitHub workflow changes\n- Trigger: `on: push: tags: 'v*'`\n- Remove: version calculation, post-publish bump\n- Keep: build, lint, package, publish, create release","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-28T17:28:03.814546-08:00","updated_at":"2025-11-29T17:35:03.199437-08:00","closed_at":"2025-11-29T17:35:03.199437-08:00","labels":["infra"]} -{"id":"vsbeads-94s","title":"Change to a better icon for Beads in the side panel","description":"The current icon in the VS Code activity bar/side panel could be improved. Find or create a more distinctive icon that better represents Beads.","notes":"Attempted to use beads-logo-mono.svg but it's too detailed for 24x24 activity bar icon. Need to create a simplified version of the logo that works at small sizes. The detailed logo works fine for the extension icon (icon.png) in the details panel.\n\n---\n\n2025-12-04: Applied the beads logo - it's better than the old 3-circle icon but not ideal at small sizes. Needs designer help to create an optimized small-size version of the beads logo.","status":"closed","priority":3,"issue_type":"task","assignee":"jason","estimated_minutes":90,"created_at":"2025-11-27T02:15:50.331234-08:00","updated_at":"2025-12-16T12:07:36.432074-08:00","closed_at":"2025-12-16T12:07:36.432074-08:00","labels":["ui"],"comments":[{"id":27,"issue_id":"vsbeads-94s","author":"jason","text":"see art/beads-logo-mono.svg for updated icoin","created_at":"2025-12-05T00:02:26Z"}]} -{"id":"vsbeads-96o","title":"Edit view does not allow updating external_ref field","description":"The Details panel edit mode is missing input for the external_ref field. Users cannot add or modify external references (e.g., GitHub issue links) through the UI.","status":"closed","priority":2,"issue_type":"bug","assignee":"jdillon","created_at":"2025-12-17T15:05:23.417351-08:00","updated_at":"2025-12-17T16:28:06.247278-08:00","closed_at":"2025-12-17T16:28:06.247278-08:00","close_reason":"PR #43 merged - external_ref field now editable","labels":["details-panel","ui"],"dependencies":[{"issue_id":"vsbeads-96o","depends_on_id":"vsbeads-nin","type":"parent-child","created_at":"2025-12-17T15:06:04.562762-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-96o","depends_on_id":"vsbeads-7ba","type":"related","created_at":"2025-12-17T15:15:55.556065-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-9cp","title":"Configurable columns: reorder, type icons, user preferences","description":"Add configuration and customization options for the Issues table columns:\n\n**Column Configuration:**\n- Reorder columns via drag-and-drop or settings\n- Show/hide specific columns\n- User preferences persisted\n\n**Type Icons:**\n- Add icons for issue types (bug, feature, task, epic, chore)\n- Use in type column and dependency badges (Depends On / Blocks sections)\n- Color badges by type in dependency lists\n\n**Reference:** See vsbeads-jue for where type-based coloring is needed in dep badges.","design":"Options:\n- Drag-and-drop column reordering (complex)\n- Settings-based column order array (simpler)\n- Type icons: bug=🐛, feature=✨, task=☑️, epic=🎯, chore=🔧 (or codicons)","status":"closed","priority":3,"issue_type":"feature","estimated_minutes":480,"created_at":"2025-11-27T01:39:27.294846-08:00","updated_at":"2025-12-10T02:06:42.526411-08:00","closed_at":"2025-12-10T02:06:42.526411-08:00","labels":["ui"]} {"id":"vsbeads-9r1","title":"\"Active\" filter includes blocked issues - should it?","description":"## Problem\n\nThe \"Active\" filter currently includes issues with `status=blocked`. This pollutes the list with items that can't be worked on.\n\n## Intent of \"Active\"\n\n\"Active\" was created to fill the gap between:\n- `bd ready` = open + no blockers (things to pick up)\n- `bd list --status=in_progress` = things currently being worked\n\nNeither shows both. \"Active\" should be: **ready + in_progress** = everything I can touch today.\n\n## Current Behavior\n\n`bd list --status=active` returns:\n- `open` (all, not just unblocked)\n- `in_progress`\n- `blocked` ← shouldn't be here\n\n## Expected Behavior\n\n\"Active\" should return:\n- `open` with no blockers (i.e., ready)\n- `in_progress`\n\nExcludes:\n- `blocked` (stalled, can't work on)\n- `open` with unresolved blockers (also can't work on)\n\n## Fix\n\nChange \"Active\" filter logic to: `(status=open AND no_blockers) OR status=in_progress`","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-17T02:14:50.439131-08:00","updated_at":"2025-12-17T02:14:50.439131-08:00","labels":["filter","ux"]} {"id":"vsbeads-adc","title":"Extract DependencySection component","description":"Extract dependency rendering from DetailsView:\n- Grouped display (depends on / blocks)\n- Sorting logic (blocked first, closed last)\n- Add/remove in edit mode\n- Click to navigate\n\nSaves ~200 LOC from DetailsView. Creates src/webview/common/DependencySection.tsx","status":"open","priority":3,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-04T15:54:11.232894-08:00","updated_at":"2025-12-05T12:01:16.905522-08:00","labels":["refactor","ui"]} -{"id":"vsbeads-amb","title":"Update README with current features and screenshots","description":"README is out of date - missing recent features like label filter, assignee support, FontAwesome icons, etc. Needs refresh to match current extension capabilities.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-11T15:50:17.088801-08:00","updated_at":"2025-12-11T16:08:29.227406-08:00","closed_at":"2025-12-11T16:08:29.227406-08:00","labels":["docs"]} {"id":"vsbeads-ava","title":"Allow undocking Issues panel to editor tab or new window","description":"With many columns visible, the Issues panel gets quite wide and the sidebar becomes cramped. Should be able to undock/pop-out the Issues view to:\n- An editor tab (more horizontal space)\n- A new window (for multi-monitor setups)\n\nSimilar to how VS Code allows undocking panels to the editor area.","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-09T21:53:30.742241-08:00","updated_at":"2025-12-09T21:53:30.742241-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-ava","depends_on_id":"vsbeads-cqi","type":"related","created_at":"2025-12-09T21:53:35.746342-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-ava","depends_on_id":"vsbeads-7e9","type":"parent-child","created_at":"2025-12-10T02:08:25.039573-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-ba5","title":"Extension should auto-start daemon when not running","description":"Extension failed to connect with error: \"Socket error: connect ENOENT /Users/jason/ws/jdillon/vscode-beads/.beads/bd.sock\"\n\nThe daemon wasn't running and the extension didn't auto-start it. Need to investigate why the auto-start mechanism failed.","design":"## Investigation Areas\n\n1. **Why didn't auto-start work?**\n - Check if startDaemon is being called on connection failure\n - Verify the retry/backoff logic in BeadsBackend\n - Check if there's a race condition or timeout issue\n\n2. **Potential improvements**\n - Add daemon status indicator to UI (statusbar or panel)\n - Add \"Restart Daemon\" command to command palette\n - Show daemon connection status per-project in multi-root workspaces\n - Better error messaging when daemon fails to start\n\n3. **Diagnostics needed**\n - View current daemon connections across all projects\n - Force restart capability\n - Daemon health/metrics visibility in extension","status":"open","priority":3,"issue_type":"bug","estimated_minutes":180,"created_at":"2025-11-29T02:34:16.15086-08:00","updated_at":"2025-12-04T11:59:29.224036-08:00","labels":["daemon"]} -{"id":"vsbeads-bci","title":"Fix confusing dependency type handling and parent-child usage","description":"Dependency handling is confusing in multiple ways:\n\n**Problem 1: Directional confusion**\n- `blocks` relationship is the same whether viewed as \"depends on\" or \"blocks\"\n- UI shows \"Depends On\" and \"Blocks\" sections but both use `blocks` type\n- Not clear to users that these are the same underlying relationship\n\n**Problem 2: Not using parent-child for epics**\n- We have epics (e.g., vsbeads-5c0) with child tasks\n- But agent creates them with `blocks` dependencies, not `parent-child`\n- Should epics use `parent-child` type? What's the semantic difference?\n\n**Problem 3: Unclear when to use each type**\n- `blocks` - hard blocker, affects ready queue\n- `related` - soft link, context only\n- `parent-child` - epic/subtask hierarchy\n- `discovered-from` - work found during other work\n\nWhen should agent use parent-child vs blocks vs discovered-from?\n\n**Potential fixes:**\n1. Add dependency graph visualization showing relationships clearly\n2. Update CLAUDE.md/agent instructions on when to use each type\n3. Clarify UI labels (maybe show relationship type, not just direction)\n4. Consider migrating existing epic→task relationships to parent-child","design":"## Correct Usage (from beads docs)\n\n**`blocks`** - Hard blocker between independent issues\n- \"Task A blocks Task B\" = B can't start until A is done\n- Both directions affect ready queue\n\n**`parent-child`** - Epic/subtask hierarchy\n- `bd dep add EPIC_ID TASK_ID --type parent-child`\n- Epic is parent, tasks are children\n- Special behaviors:\n - `bd epic status` shows progress/completion %\n - `bd epic close-eligible` auto-closes complete epics\n - Children blocked if parent is blocked\n- **We should use this for epics, not `blocks`!**\n\n**`related`** - Soft link for context\n- Doesn't affect ready queue\n- Just for reference/navigation\n\n**`discovered-from`** - Work discovered during other work\n- Tracks \"yak shaving\" chains\n- `bd dep tree --reverse` shows discovery tree\n\n## Current Problem\n\nAgent creates epic relationships with `blocks` but should use `parent-child`:\n```bash\n# Wrong (what we do now):\nbd dep add vsbeads-5c0 vsbeads-yjr --type blocks\n\n# Right (what we should do):\nbd dep add vsbeads-5c0 vsbeads-yjr --type parent-child\n```\n\n## Fixes Needed\n\n1. Update CLAUDE.md with dependency type guidance\n2. Fix vscode-beads MCP tools to support `--type` parameter\n3. Consider graph view showing relationship types with different edge styles","notes":"## Upstream Bug: `bd show` mislabels dependency types\n\nFrom `sandbox/bd-show-display-bug.md`:\n\n**Bug:** `bd show` displays ALL dependencies under \"Blocks\" header, regardless of actual type.\n\n```\n$ bd show platform-wue\n\nBlocks (10): # WRONG - these are parent-child!\n ← platform-1pi: ...\n```\n\n**Actual data in beads.jsonl:**\n```json\n{\"issue_id\":\"platform-1pi\",\"depends_on_id\":\"platform-wue\",\"type\":\"parent-child\",...}\n```\n\n**Expected:**\n```\nChildren (10):\n ← platform-1pi: ...\n```\n\n## Impact on vscode-beads\n\nThe `--json` output should include `dependency_type` field. We can:\n1. Use `dependency_type` from JSON to display correctly in UI\n2. Group by type: \"Children\", \"Blocks\", \"Related\", \"Discovered From\"\n3. Different visual styling per type (icons, colors)\n\n## Action Items\n\n1. **Upstream:** File bug/PR for `bd show` to respect dependency type in display\n2. **vscode-beads:** Use `dependency_type` from daemon API to display correctly\n3. **vscode-beads:** Show relationship type in UI (badge, icon, or section header)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-29T02:42:42.366247-08:00","updated_at":"2025-11-29T13:07:18.994989-08:00","closed_at":"2025-11-29T13:07:18.994989-08:00","labels":["dx","ui"]} {"id":"vsbeads-bcu","title":"Test bead for labels overflow","description":"Testing label display and overflow behaviordfsfs","status":"open","priority":3,"issue_type":"task","estimated_minutes":0,"created_at":"2025-12-01T15:32:16.718649-08:00","updated_at":"2025-12-04T11:59:22.270468-08:00","labels":["E","a","b","c","d"]} {"id":"vsbeads-btf","title":"Scroll to latest comment when adding a comment in Details view","description":"When adding a comment in the Details panel, the view should auto-scroll to show the newly added comment at the bottom. Initial implementation attempts didn't work due to webview scroll container complexity.","status":"open","priority":4,"issue_type":"feature","estimated_minutes":45,"created_at":"2025-11-27T20:45:35.746701-08:00","updated_at":"2025-12-04T12:00:18.508148-08:00","labels":["ui"],"comments":[{"id":23,"issue_id":"vsbeads-btf","author":"jason","text":"turns out this is kinda hard, or was for claude to get correct.","created_at":"2025-12-02T00:38:50Z"}]} {"id":"vsbeads-bxnb","title":"Research tree view / hierarchy display for issues list","description":"Explore options for optional tree/hierarchy view in issues list:\n\n**Inspiration**: IntelliJ IDEA project view has multiple view modes (flat list vs tree hierarchy)\n\n**Options to research**:\n1. Tree column in existing table (expandable rows)\n2. Separate tree view panel\n3. Toggle between list/tree modes\n4. TanStack Table tree data support\n\n**Questions**:\n- How to represent epic → task → subtask hierarchy?\n- How to handle dependencies vs parent-child?\n- What does TanStack Table support for tree data?\n- UX for expand/collapse in table vs dedicated tree view?","notes":"---\n2025-12-25: Draft PR #54 opened. Tree view basic functionality works but UI needs refinement - icons and visual hierarchy indicators need design review. TanStack Query added for data caching.","status":"blocked","priority":3,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-23T00:21:40.100896-08:00","updated_at":"2025-12-26T00:58:17.539117-08:00","labels":["research","ui"],"comments":[{"id":37,"issue_id":"vsbeads-bxnb","author":"jason","text":"Need to find some examples to show the agent what to build.","created_at":"2025-12-26T08:58:27Z"}]} -{"id":"vsbeads-c46","title":"Bug: Unable to add comment to issue (or comment doesn't show up)","description":"Adding a comment via the Details panel doesn't work or the comment doesn't appear after adding.\n\nNeed to investigate:\n- Is the message being sent to extension?\n- Is the bd CLI being called correctly?\n- Is the view refreshing after add?\n\nLocation: `src/webview/views/DetailsView.tsx` (add comment UI) and `src/providers/BeadDetailsViewProvider.ts` (handler)","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-27T19:12:55.728488-08:00","updated_at":"2025-11-27T20:44:36.179784-08:00","closed_at":"2025-11-27T20:44:36.179784-08:00","comments":[{"id":8,"issue_id":"vsbeads-c46","author":"jason","text":"test","created_at":"2025-11-28T03:50:08Z"}]} -{"id":"vsbeads-cct","title":"Extract useClickOutside hook","description":"Create reusable hook for click-outside detection. Currently duplicated in:\n- Dropdown.tsx\n- IssuesView.tsx (filter menu)\n- IssuesView.tsx (column menu)\n\nCreates src/webview/hooks/useClickOutside.ts","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-04T15:54:10.260142-08:00","updated_at":"2025-12-04T18:25:19.420012-08:00","closed_at":"2025-12-04T18:25:19.420012-08:00","labels":["dx","refactor","ui"]} -{"id":"vsbeads-cf6","title":"Normalize control heights across panels (dropdowns, inputs, badges)","description":"Controls in the Details panel appear smaller than equivalent controls in the Issues panel filter bar. All dropdowns, inputs, badges, and buttons should be consistent height across panels unless intentionally different (e.g., table cells where space is tight).\n\n**Observed:**\n- Issues panel filter chips: appear taller\n- Details panel ColoredSelect badges (Type, Status, Priority): appear shorter\n- Both use `size=\"small\"` badges but visual weight differs\n\n**Investigation needed:**\n- Check if parent container height constraints are squashing controls\n- Check if different wrapper padding/margins cause visual difference\n- May need to audit all control heights and standardize\n\n**Goal:** A dropdown in the filter bar should look identical to a dropdown in the details panel.","status":"closed","priority":2,"issue_type":"bug","assignee":"jdillon","created_at":"2025-12-11T02:49:36.773229-08:00","updated_at":"2025-12-17T16:28:06.202671-08:00","closed_at":"2025-12-17T16:28:06.202671-08:00","close_reason":"PR #42 merged - control heights normalized to 20px","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-cf6","depends_on_id":"vsbeads-nin","type":"parent-child","created_at":"2025-12-11T14:52:12.387877-08:00","created_by":"daemon","metadata":"{}"}],"comments":[{"id":33,"issue_id":"vsbeads-cf6","author":"jason","text":"Reopened - need to branch, commit, and push before closing","created_at":"2025-12-17T23:06:11Z"}]} -{"id":"vsbeads-cp3","title":"Replace native select menu in saved filter selector with styled dropdown","description":"The saved filter preset selector in the Issues panel uses a native `\u003cselect\u003e` element which renders with the OS native menu. This is inconsistent with the styled ColoredSelect dropdowns used elsewhere.\n\nShould use ColoredSelect or a similar custom dropdown component for visual consistency.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-30T13:49:12.24872-08:00","updated_at":"2025-12-01T16:11:51.517045-08:00","closed_at":"2025-12-01T16:11:51.517045-08:00","labels":["ui"]} -{"id":"vsbeads-cqi","title":"Redesign UI: sidebar for navigation, editor panels for views","description":"Move Kanban, Dependency Graph, and Details to WebviewPanel (editor tabs). Keep project selector and issue list in sidebar.","status":"open","priority":2,"issue_type":"feature","estimated_minutes":960,"created_at":"2025-11-26T15:59:20.263974-08:00","updated_at":"2025-12-04T11:58:59.107775-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-cqi","depends_on_id":"vsbeads-92t","type":"blocks","created_at":"2025-11-26T15:59:26.155171-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-cy5","title":"Setup GitHub Action for PR CI (lint, test, build)","description":"Add GitHub Action workflow to run on PRs to main branch. Should run lint, tests (once we have them), and verify build succeeds.","design":"`.github/workflows/ci.yml`\n- Trigger: pull_request to main\n- Steps: checkout, setup bun, install, lint, test, compile\n- Note: No tests exist yet - add placeholder or skip until tests added","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-26T18:39:27.003903-08:00","updated_at":"2025-11-27T20:56:11.148364-08:00","closed_at":"2025-11-27T20:56:11.148364-08:00"} -{"id":"vsbeads-d8u","title":"Replace native project dropdown with custom menu showing daemon status","description":"The project selector currently uses a native `\u003cselect\u003e` element, which limits styling.\n\nReplace with a custom dropdown menu that:\n1. Shows daemon status icon (●/○) next to each project in the dropdown list\n2. Allows consistent styling with the rest of the UI\n3. Can show additional project info (path tooltip, etc.)\n\nCurrent: Native select with status dot shown separately\nDesired: Custom dropdown with status icon integrated per-project option","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-12-02T23:20:13.569524-08:00","updated_at":"2025-12-02T23:43:37.764288-08:00","closed_at":"2025-12-02T23:43:37.764288-08:00","labels":["ui","ux"]} -{"id":"vsbeads-det","title":"Investigate external_ref persistence bug","description":"User reports potential bug in how external_ref field persists. Need to verify:\n1. Setting external_ref via `bd update \u003cid\u003e --external-ref=...`\n2. Check if value persists correctly in database\n3. Verify value displays correctly in UI after reload","notes":"## Investigation Results (2025-12-16)\n\n**Finding**: The bug is in the beads MCP plugin, not in `bd` CLI.\n\n- `bd update --external-ref=\"...\"` works correctly (value persists)\n- MCP `create` tool ignores `external_ref` parameter (returns null)\n\n**Root cause**: The local beads MCP plugin likely doesn't support `external_ref` on create, or we're using an older version.\n\n---\n\n## Resolution (2025-12-17)\n\nFixed VS Code extension to properly support external_ref:\n\n1. Added `external_ref` to `CreateArgs` and `UpdateArgs` in `BeadsDaemonClient.ts`\n2. Added camelCase→snake_case mapping in `BeadDetailsViewProvider.ts` for `externalRef`, `acceptanceCriteria`, `estimatedMinutes`\n3. External ref now renders as clickable link when URL-like (with external-link icon)\n4. Moved to dedicated section (not crammed row with estimate)\n\nRelated: vsbeads-7ba (UX improvements)","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-13T13:30:38.559002-08:00","updated_at":"2025-12-17T01:52:21.464653-08:00","closed_at":"2025-12-17T01:52:21.464653-08:00","close_reason":"Fixed external_ref support in VS Code extension","labels":["backend","investigation"],"dependencies":[{"issue_id":"vsbeads-det","depends_on_id":"vsbeads-7ba","type":"related","created_at":"2025-12-13T13:30:43.204739-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-cqi","title":"Redesign UI: sidebar for navigation, editor panels for views","description":"Move Kanban, Dependency Graph, and Details to WebviewPanel (editor tabs). Keep project selector and issue list in sidebar.","status":"open","priority":2,"issue_type":"feature","estimated_minutes":960,"created_at":"2025-11-26T15:59:20.263974-08:00","updated_at":"2025-12-04T11:58:59.107775-08:00","labels":["ui"]} {"id":"vsbeads-dhe","title":"Set up GitHub Actions workflow for nightly E2E tests","description":"Create GitHub Actions workflow that runs integration tests on a schedule.\n\n**Requirements:**\n- Run nightly (not on every commit - too slow/resource intensive)\n- Manual trigger option (`workflow_dispatch`)\n- Use ubuntu-latest runner\n- Install code-server, bd CLI, Playwright browsers\n- Upload test artifacts on failure (screenshots, traces, HTML report)\n\n**Pattern:**\n```yaml\non:\n schedule:\n - cron: '0 6 * * *' # 6am UTC daily\n workflow_dispatch:\n```","acceptance_criteria":"- Workflow file in `.github/workflows/integration-tests.yml`\n- Manual trigger works from Actions tab\n- Artifacts available on failure\n- Sends notification on failure (optional/later)","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-05T00:23:04.64811-08:00","updated_at":"2025-12-05T01:14:48.401601-08:00","labels":["ci","testing"],"dependencies":[{"issue_id":"vsbeads-dhe","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.83836-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-dhe","depends_on_id":"vsbeads-w2x","type":"blocks","created_at":"2025-12-05T00:23:31.666861-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-drg","title":"Document branch naming convention in CLAUDE.md","description":"Add branch naming strategy to CLAUDE.md:\n\nFormat: `beads/\u003cbead-id\u003e-\u003cterse-description\u003e`\n\nExamples:\n- `beads/vsbeads-93b-release-workflow`\n- `beads/vsbeads-xyz-fix-daemon-polling`\n\nThis ties branches to tracked work and makes it easy to find related issues.","status":"open","priority":4,"issue_type":"task","estimated_minutes":30,"created_at":"2025-11-29T16:47:10.870444-08:00","updated_at":"2025-12-04T12:00:16.819609-08:00","labels":["dx"],"comments":[{"id":28,"issue_id":"vsbeads-drg","author":"jason","text":"this is good, but we often work on a few beads a time. Might want to noramlize some other branch name strategy instead.","created_at":"2025-12-06T20:31:29Z"}]} -{"id":"vsbeads-dso","title":"Setup VS Code Marketplace publisher account","description":"Create Azure DevOps org, get PAT, create planet57 publisher, configure for publishing. See sandbox/PUBLISHING.md for steps.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-26T18:39:27.189685-08:00","updated_at":"2025-11-27T20:56:48.666442-08:00","closed_at":"2025-11-27T20:56:48.666442-08:00"} -{"id":"vsbeads-duu","title":"Research new bead types and update type sort order","notes":"## Research Findings (2025-12-21)\n\n### Current Extension Types\nExtension supports: `bug`, `feature`, `task`, `epic`, `chore`\n\n### Upstream CLI Types (bd v0.30.x)\nCLI now supports: `bug | feature | task | epic | chore | merge-request | molecule`\n\n**New types added:**\n\n1. **`merge-request`** - Added Dec 18, 2025\n - Commit: https://github.com/steveyegge/beads/commit/3c04b763\n - Purpose: Track merge queue entries for \"Gas Town\" refinery\n - Stores metadata: branch, target, source_issue, worker, rig\n\n2. **`molecule`** - Added Dec 19, 2025\n - PR: https://github.com/steveyegge/beads/pull/658\n - Purpose: Template molecules for workflow instantiation\n - Used by Gas Town for multi-step process templates (bootstrap, engineer-in-box)\n - Stored in molecules.jsonl with is_template=true\n\n### Notes\n- No `story` type exists; Linear integration maps story → feature\n- Types are hardcoded enum in Go, not extensible\n- Priority in daemon protocol uses `*int` (pointer) - can be nil/omitted\n\n### Tasks Identified\n1. Add new types (`merge-request`, `molecule`) with icons/colors\n2. Add type sort order (epic first, then feature, bug, task, chore, new types)\n3. Add fallback handling for unknown future types (icon + color)","status":"closed","priority":2,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-20T16:32:23.018749-08:00","updated_at":"2025-12-22T01:18:38.342582-08:00","closed_at":"2025-12-22T01:18:38.342582-08:00","close_reason":"Research complete, spawned implementation beads","labels":["research","ui"]} {"id":"vsbeads-dxo","title":"Create code-server test fixture","description":"Create Playwright fixture that manages code-server lifecycle for tests.\n\n**Requirements:**\n- Start code-server before test suite (global setup)\n- Stop code-server after tests complete (global teardown)\n- Handle port allocation (avoid conflicts)\n- Wait for code-server to be ready before tests start\n- Symlink extension into code-server extensions directory\n\n**Considerations:**\n- Use `child_process` spawn for code-server\n- Health check endpoint or port availability\n- Cleanup on test failure/interrupt","acceptance_criteria":"- Fixture starts code-server automatically\n- Tests can navigate to code-server URL\n- Clean shutdown on test completion\n- Works on macOS and Linux (CI)","status":"open","priority":2,"issue_type":"task","estimated_minutes":120,"created_at":"2025-12-05T00:23:01.414273-08:00","updated_at":"2025-12-05T01:14:42.779394-08:00","labels":["testing"],"dependencies":[{"issue_id":"vsbeads-dxo","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.266027-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-dxo","depends_on_id":"vsbeads-ur9","type":"blocks","created_at":"2025-12-05T00:23:29.976788-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-e36","title":"Add icons to view contributions","description":"VS Code warns about missing `icon` property on view contributions in package.json.\n\nIcons are used when views are dragged to Activity Bar or title can't be shown.\n\nViews needing icons:\n- beadsDashboard\n- beadsPanel (Issues)\n- beadsDetails\n\nOptions:\n- Use same beads-icon.svg for all (quick fix)\n- Create distinct icons per view (better UX)\n\nDecide on iconography style before implementing.","status":"open","priority":4,"issue_type":"task","estimated_minutes":60,"created_at":"2025-11-29T17:41:35.403094-08:00","updated_at":"2025-12-04T12:00:15.568122-08:00","labels":["ui"]} {"id":"vsbeads-ebs","title":"Add comment count column to Issues list","description":"Add a synthetic column showing comment count per bead, hidden by default.\n\nUse case: Sort/filter by activity level - beads with more comments often indicate complexity or ongoing discussion.\n\nImplementation notes:\n- Column disabled by default (like Assignee/Estimate)\n- Would need comment count in list data (currently only fetched in Details view)\n- Consider if daemon API supports count without fetching full comments","status":"open","priority":4,"issue_type":"feature","estimated_minutes":90,"created_at":"2025-12-01T17:18:34.567726-08:00","updated_at":"2025-12-04T12:00:13.1052-08:00","labels":["ui"],"comments":[{"id":30,"issue_id":"vsbeads-ebs","author":"jason","text":"not sure how useful this really is... doesn't seem like agents use comments to append data, its more for humans.","created_at":"2025-12-10T10:09:01Z"}]} {"id":"vsbeads-eby","title":"Add data-testid attributes to UI components","description":"Add stable `data-testid` attributes to key UI elements for reliable test selectors.\n\n**Target elements:**\n- Issues table rows (`data-testid=\"issue-row-{id}\"`)\n- Status badges (`data-testid=\"status-badge\"`)\n- Priority indicators (`data-testid=\"priority-badge\"`)\n- Details panel sections (`data-testid=\"details-title\"`, etc.)\n- Filter controls\n\n**Why:**\n- CSS class selectors are fragile (change with styling)\n- Text selectors break with i18n\n- data-testid is E2E testing best practice","acceptance_criteria":"- Key interactive elements have data-testid\n- Tests use these selectors instead of classes\n- No visual impact to UI","status":"open","priority":3,"issue_type":"task","estimated_minutes":45,"created_at":"2025-12-05T00:23:05.294226-08:00","updated_at":"2025-12-05T01:14:41.917251-08:00","labels":["testing","ui"],"dependencies":[{"issue_id":"vsbeads-eby","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:17.386975-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-eeg","title":"Filter count overlay not fixed to bottom-right of issues list","description":"The \"42 of 75\" filter count overlay in the Issues list should be fixed to the bottom-right corner of the table container, but currently it only appears in the correct position when scrollbars are at their starting positions.\n\nWhen scrolling horizontally or vertically, the overlay moves with the content instead of staying pinned to the viewport corner of the container.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-30T14:04:28.644697-08:00","updated_at":"2025-11-30T14:07:31.186018-08:00","closed_at":"2025-11-30T14:07:31.186018-08:00","labels":["ui"]} -{"id":"vsbeads-efp","title":"Normalize typography across dropdown menus","description":"Font sizes and weights appear slightly inconsistent across different dropdown menus (preset dropdown, filter menu, column menu). Should audit and normalize typography to be consistent.","status":"closed","priority":3,"issue_type":"bug","estimated_minutes":90,"created_at":"2025-12-01T16:11:51.469647-08:00","updated_at":"2025-12-11T01:35:38.66259-08:00","closed_at":"2025-12-11T01:35:38.66259-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-efp","depends_on_id":"vsbeads-7cp","type":"parent-child","created_at":"2025-12-10T02:10:41.929249-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-ejn","title":"Research: Better beads workflow to avoid PR/branch conflicts","description":"Beads conflates PR/branch workflows with issue tracker changes, causing beads created in feature branches to be auto-deleted when PRs merge.\n\n**Problem:**\n- Beads created in feature branch get committed with code\n- PR merges bring beads into main via git\n- `bd sync --from-main` runs and treats these as \"foreign\" entries\n- git-history-backfill incorrectly deletes them as \"pruned from manifest\"\n\n**Analysis:** See `tmp/beads-deletion-analysis.md`\n**Full discussion:** See `tmp/session-subagent-discussion.jsonl`\n\n**Potential Solutions to Research:**\n\n1. **Protected branch support** - beads has this feature, unclear if it helps\n - Does it prevent sync from touching certain branches?\n - Can it isolate beads changes from code changes?\n\n2. **Dedicated beads branch** - worktree with separate branch just for .beads/\n - Code stays on feature branches\n - Beads always committed to a single branch (e.g., `beads-main`)\n - Avoids merge conflicts between code PRs and beads state\n\n3. **Gitignore .beads/ in feature branches**\n - Only commit beads on main\n - Feature branches inherit but don't modify\n - Sync happens only on main\n\n4. **Submodule approach** - .beads/ as separate git repo\n - Complete isolation of issue tracker from code\n - More complex setup\n\n\u003e submodule is probably not great sub modules tie to revisions and the revision of this will be constantly changing.\n\n**Goal:** Find a workflow where:\n- Beads can be created/updated during feature work\n- PRs don't bring stale/conflicting beads state\n- No accidental deletions via sync","design":"## Research Findings\n\n### Question: Is it by design that all branches carry beads changes?\n\n**Answer: NO - this is incidental and problematic, not by design.**\n\n### Evidence from GitHub Issues\n\n1. **Issue #207 (Using beads with PRs)** - Steve Yegge (Nov 4): \"We're taking a serious look at offering a multi-repo solution, where beads uses separate repos\"\n\n2. **Issue #195 (.beads as worktree on orphan branch)** - Steve Yegge (Nov 4): Rejected worktree approach as \"too git-centric\", pursuing separate repository option instead for:\n - Clean separation of issue tracking from code history\n - Platform-agnostic approach (VCS-independent)\n - Better monorepo/multi-project support\n\n3. **Issue #158 (Merge conflicts)** - Extensive discussion about multi-agent conflicts, led to improved 3-way merging in v0.24.1+\n\n### Currently Supported Solutions\n\n1. **Protected Branch Workflow** (`bd init --branch beads-metadata`):\n - Beads commits to separate branch via git worktrees\n - Code stays on feature branches\n - Periodically merge beads-metadata → main via PR\n - See: docs/PROTECTED_BRANCHES.md\n\n2. **Contributor Workflow** (`bd init --contributor`):\n - For OSS contributors\n - Issues stored in `~/.beads-planning` (separate local repo)\n - Never pollutes upstream PRs\n\n### Our Specific Bug\n\nThe `git-history-backfill` deleting beads from PRs appears to be a **bug**, not intended behavior:\n- Expected: Beads in git history should be **recovered** (added to local DB)\n- Actual: Beads are **deleted** as \"pruned from manifest\"\n\n### Recommendation\n\nTry protected branch workflow:\n```bash\nbd config set sync.branch beads-metadata\nbd daemon restart\n```\n\nConsider filing bug report for git-history-backfill behavior.","notes":"## Decision (2025-11-28)\n\n**Strategy:** Try protected branch workflow now, wait for upstream multi-repo solution.\n\n## Experiment on forge (2025-11-28)\n\nTested `bd config set sync.branch beads-metadata` with `--auto-commit --auto-push`:\n\n**What works:**\n- ✅ Beads commits go to `beads-metadata` branch (via worktree)\n- ✅ Auto-push to `origin/beads-metadata` works\n- ✅ `main` branch stays untouched (no new commits)\n\n**Issues found:**\n- ❌ Working tree still shows `.beads/beads.jsonl` modified (tracked on main)\n - Fix: untrack from main with `git rm --cached`\n- ❌ `beads-metadata` is NOT an orphan branch - it's a snapshot of main at config time\n - Contains full code tree + history\n - Designed for merge workflow, not true isolation\n - For \"never merge\" approach, this is wasteful/messy\n\n**Branch structure:**\n```\nmain ─────────────────────────────────► (gets beads.jsonl changes in working tree)\n \\\n └─ beads-metadata ──────────► (beads commits here, has full code copy)\n```\n\n**What we'd want (orphan):**\n```\nmain ──────────────────► (code only)\nbeads-metadata (orphan) ──────────────► (beads only, no shared history)\n```\n\nIssue #195 proposed orphan approach but Steve rejected as \"too git-centric\" - pursuing separate repo instead.\n\n**Status:** Experiment complete, need to decide:\n1. Live with non-orphan branch (functional but messy)\n2. DIY orphan branch (unsupported)\n3. Wait for upstream multi-repo\n\n## Implementation (2025-11-29)\n\nSuccessfully migrated vscode-beads to protected branch workflow:\n- Untracked beads.jsonl/deletions.jsonl from main\n- Set sync.branch = beads-metadata\n- Daemon runs with --auto-commit --auto-push\n- Updated docs/development.md with setup instructions\n\n## Known Issue: beads.jsonl vs issues.jsonl confusion\n\nThere's upstream inconsistency about whether the JSONL file should be named `beads.jsonl` or `issues.jsonl`. Got conflicting answers from maintainers. Leaving as-is until upstream clarifies the canonical naming.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-28T22:03:57.82966-08:00","updated_at":"2025-11-29T14:14:15.314712-08:00","closed_at":"2025-11-29T14:14:15.314712-08:00","labels":["infra"],"dependencies":[{"issue_id":"vsbeads-ejn","depends_on_id":"vsbeads-hw7","type":"related","created_at":"2025-11-28T22:04:03.147893-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-el1i","title":"Sync daemon client types with upstream beads 0.37.0","description":"Keep BeadsDaemonClient types aligned with upstream beads daemon API.\n\nNew fields to add:\n- `CreateArgs.id_prefix` - custom ID prefix (mol, wisp, etc.)\n- `ListArgs.wisp` - filter by wisp status (boolean)\n- `Issue.source_formula` - steam engine tracing\n- `Issue.source_location` - steam engine tracing\n\nReference: beads commits d3245d26..6bb11c42\n\nEven if we don't use these features, our types should match the daemon for forward compatibility.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-25T16:53:02.796309-08:00","updated_at":"2025-12-29T14:01:59.183309-08:00","closed_at":"2025-12-29T14:01:59.183309-08:00","close_reason":"Upstream sync completed v0.37.0 → v0.40.0","labels":["backend"],"dependencies":[{"issue_id":"vsbeads-el1i","depends_on_id":"vsbeads-4m5i","type":"related","created_at":"2025-12-25T17:01:21.930664-08:00","created_by":"daemon"},{"issue_id":"vsbeads-el1i","depends_on_id":"vsbeads-un3l","type":"parent-child","created_at":"2025-12-29T13:43:31.681844-08:00","created_by":"daemon"}]} -{"id":"vsbeads-f7ng","title":"Create shared StatusPriorityPill component","description":"Dependency list uses custom inline badges (.dep-status, .dep-priority) with inconsistent spacing. Create a shared component that combines status and priority as a joined pill for consistent rendering.","status":"closed","priority":2,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-22T16:40:53.607923-08:00","updated_at":"2025-12-25T14:09:42.10426-08:00","closed_at":"2025-12-25T14:09:42.10426-08:00","close_reason":"Completed in PR #48 - StatusPriorityPill component added","labels":["ui"],"comments":[{"id":36,"issue_id":"vsbeads-f7ng","author":"jason","text":"Gap between status and priority badges is still inconsistent despite CSS gap: 2px being set. Some rows show different spacing than others - visible especially on P? badges. Possible causes to investigate:\n- Line height inconsistency\n- Font rendering differences\n- Badge height/alignment issues\n- Something overriding the flexbox gap\n- Parent container constraints","created_at":"2025-12-23T10:16:25Z"}]} {"id":"vsbeads-fpp1","title":"vscode-server skill: open browser in incognito mode","description":"**Goal:** Open code-server in incognito window to avoid cache issues during development.\n\n**What we tried:**\n- Using Chrome CLI directly: `/Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome --incognito \"http://127.0.0.1:{PORT}/\"`\n- This opens in existing browser session but chrome-devtools MCP can't see/select the new page\n\n**Problem:**\n- chrome-devtools MCP launches its own Chrome instance with `--remote-debugging-pipe`\n- Incognito windows opened via CLI go to the user's regular Chrome, not the MCP-controlled Chrome\n- MCP's `list_pages` gets stuck when previously selected page is closed\n\n**Possible solutions:**\n1. Find a way to open incognito in MCP-controlled Chrome (if possible via DevTools protocol)\n2. Configure MCP to launch Chrome with `--incognito` flag from the start\n3. Use `--disk-cache-size=0` or similar cache-busting flags instead of incognito\n4. Just rely on hard reload (`ignoreCache: true`) which we already do","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-25T17:30:36.272116-08:00","updated_at":"2025-12-25T17:30:36.272116-08:00","labels":["dx"]} -{"id":"vsbeads-fwp","title":"Improvement: Colored dropdowns in edit mode for type/status/priority","description":"In DetailsView edit mode, the type/status/priority dropdowns are plain text. They should show colored versions matching how they appear elsewhere.\n\n## Requirements\n\n### Part 1: Colored dropdowns in edit mode\nApply filter-chip style (colored left border) to the select elements in edit mode. This matches the existing pattern used in the Issues list filter bar.\n\nCurrent location: `src/webview/views/DetailsView.tsx` lines 246-286\n\n### Part 2: Inline editing from view mode\nAdd ability to edit type/status/priority directly from the view page without entering full edit mode:\n- Option A: Click on badge to open dropdown menu\n- Option B: Right-click context menu on badge\n- Option C: Click badge → transforms to select → auto-saves\n\nDecision pending after Part 1 implementation.\n\n## Implementation Notes\n- Filter chips use: `border-left: 3px solid var(--chip-accent-color)` \n- Status colors: `STATUS_COLORS` in `types.ts`\n- Priority colors: `PRIORITY_COLORS` in `types.ts`\n- Type colors: CSS classes `.type-bug`, `.type-feature`, etc.\n\n## Testing\nUse code-server + Chrome DevTools MCP for testing (see `docs/code-server-testing.md`).","design":"## Part 1: Colored dropdowns in edit mode\n- Add `TYPE_COLORS` and `TYPE_TEXT_COLORS` constants to `types.ts` (extract from CSS)\n- Apply filter-chip style (colored left border) to select elements\n- Use inline style with CSS variable for color\n\n## Part 2: Inline editing from view mode\n- **Auto-save**: Yes, changes save immediately (no confirmation)\n- **Visual affordance**: None initially (test without hover effects)\n- **Scope**: type/status/priority only (labels/assignee later)\n- **Interaction**: Click badge → dropdown menu → select → auto-save\n\n## Prep for vsbeads-wk9\nNormalize all color constants (STATUS_COLORS, PRIORITY_COLORS, TYPE_COLORS) to same structure for future configurability.","notes":"## Progress\n\n### Part 1: Colored dropdowns in edit mode ✅\n- PR #21 opened\n- Added `ColoredSelect` component\n- Added `TYPE_COLORS`, `TYPE_TEXT_COLORS`, `TYPE_LABELS` to types.ts\n- Trigger uses filter-chip style (colored left border)\n- Dropdown menu shows full colored badges\n\n### Part 2: Inline editing from view mode\n- Next up: click badge in view mode → dropdown → auto-save","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-27T19:01:47.152941-08:00","updated_at":"2025-11-30T17:32:31.442482-08:00","closed_at":"2025-11-30T17:32:31.442482-08:00","labels":["ui"]} -{"id":"vsbeads-fyn","title":"Add copy ID action to issues list rows","description":"Currently copying a bead ID requires clicking a row to open details, then clicking the ID badge. Add a way to copy the ID directly from the list without navigating away.\n\nOptions:\n- Click on ID column copies to clipboard\n- Right-click context menu with \"Copy ID\"\n- Small copy icon on hover","design":"Click on ID span in issues list row copies to clipboard. Row selection still happens (no propagation stop). Add cursor pointer and title tooltip on ID span. Show brief visual feedback on copy.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-27T01:36:42.479739-08:00","updated_at":"2025-11-28T16:53:09.00156-08:00","closed_at":"2025-11-28T16:53:09.00156-08:00"} {"id":"vsbeads-g09","title":"Setup planet57.com and verify publisher domains","description":"Set up planet57.com website and use it to verify publisher identity on both marketplaces.\n\nTasks:\n1. Set up planet57.com (landing page or redirect to GitHub)\n2. Add DNS TXT record for VS Code Marketplace verification\n3. Complete domain verification on VS Code Marketplace\n4. (Open VSX uses namespace ownership claim instead of domain verification - already filed)","notes":"VS Code Marketplace requires the domain to be live (responding at https://planet57.com) before showing the verify button. Need to set up the site first, then verify.\n\nOpen VSX uses namespace ownership claim (GitHub issue) instead of domain verification - already filed at https://github.com/EclipseFdn/open-vsx.org/issues/6642\n\n---\n\n**GitHub Pages setup plan:**\n1. Create repo `jdillon/planet57.github.io` (or use any repo with Pages enabled)\n2. Add a `CNAME` file with `planet57.com`\n3. Point DNS: `A` record to GitHub's IPs or `CNAME` to `jdillon.github.io`\n4. Enable HTTPS in repo settings\n5. Simple landing page or redirect to GitHub profile","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-10T22:19:40.356092-08:00","updated_at":"2025-12-10T22:24:48.97242-08:00","labels":["dx","release"]} -{"id":"vsbeads-gr5","title":"Filter presets/favorites system for Issues panel","description":"Currently filtering requires manually adding multiple filters (e.g., Open + In Progress + Blocked to exclude Closed). Need a better UX for common filter combinations.","design":"**Options considered:**\n\n1. **Preset filters** - Built-in presets like \"Not Closed\", \"Active Work\"\n - Simple UX, covers common cases\n - Limited flexibility\n\n2. **Negated filters** - Click to toggle +/- on any filter\n - Full flexibility\n - More complex UX, needs visual indicator\n\n3. **Default filter** - Start with a filter applied (e.g., \"Not Closed\")\n - Good for most common use case\n - User can clear if needed\n\n**Recommended approach:**\nCombination of 1 + 3: Filter \"favorites\" dropdown that preconfigures filter sets.\n- Start with static built-in favorites: \"Not Closed\", \"Active\" (in_progress + blocked), \"All\"\n- Future: Allow saving custom filter sets as favorites\n- Default to \"Not Closed\" on load","status":"open","priority":3,"issue_type":"feature","estimated_minutes":300,"created_at":"2025-11-26T23:34:31.877133-08:00","updated_at":"2025-12-04T11:59:38.532327-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-gr5","depends_on_id":"vsbeads-34v","type":"parent-child","created_at":"2025-11-26T23:34:39.784152-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-gsb","title":"Support secondary sort in issues table","description":"Add multi-column sorting to the issues table.\n\nPossible approaches:\n- Shift+click for secondary sort (common pattern)\n- Always use a default secondary sort (e.g., Updated as tiebreaker)\n- Configurable sort order via settings","status":"closed","priority":3,"issue_type":"feature","estimated_minutes":150,"created_at":"2025-11-27T13:04:59.70662-08:00","updated_at":"2025-12-04T17:47:22.82744-08:00","closed_at":"2025-12-04T17:47:22.82744-08:00","labels":["ui"]} +{"id":"vsbeads-gr5","title":"Filter presets/favorites system for Issues panel","description":"Currently filtering requires manually adding multiple filters (e.g., Open + In Progress + Blocked to exclude Closed). Need a better UX for common filter combinations.","design":"**Options considered:**\n\n1. **Preset filters** - Built-in presets like \"Not Closed\", \"Active Work\"\n - Simple UX, covers common cases\n - Limited flexibility\n\n2. **Negated filters** - Click to toggle +/- on any filter\n - Full flexibility\n - More complex UX, needs visual indicator\n\n3. **Default filter** - Start with a filter applied (e.g., \"Not Closed\")\n - Good for most common use case\n - User can clear if needed\n\n**Recommended approach:**\nCombination of 1 + 3: Filter \"favorites\" dropdown that preconfigures filter sets.\n- Start with static built-in favorites: \"Not Closed\", \"Active\" (in_progress + blocked), \"All\"\n- Future: Allow saving custom filter sets as favorites\n- Default to \"Not Closed\" on load","status":"open","priority":3,"issue_type":"feature","estimated_minutes":300,"created_at":"2025-11-26T23:34:31.877133-08:00","updated_at":"2025-12-04T11:59:38.532327-08:00","labels":["ui"]} {"id":"vsbeads-hgm","title":"Test sub-agent context isolation","description":"After creating browser-task agent, test that:\n\n1. MCP response bloat stays in sub-agent context\n2. Only summary returns to main agent\n3. Measure context savings vs direct MCP calls\n\n**Test workflow:**\n- Invoke browser-task to reload code-server window\n- Check main context size before/after\n- Compare to doing reload directly with MCP","status":"open","priority":1,"issue_type":"task","estimated_minutes":90,"created_at":"2025-11-28T21:52:30.146368-08:00","updated_at":"2025-12-04T11:58:43.57841-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-hgm","depends_on_id":"vsbeads-yjr","type":"blocks","created_at":"2025-11-28T21:52:30.148724-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-hgm","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:42.044495-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-hjx","title":"Filter toggle button feels broken when filters are active","description":"When the filter panel is open and filters are active (icon is green), clicking the filter toggle button doesn't do anything. This feels broken.\n\nPossible solutions:\n- Toggle could hide/show the panel without clearing filters\n- Some other UX pattern\n\nNeed to determine the right behavior.","status":"open","priority":4,"issue_type":"bug","estimated_minutes":90,"created_at":"2025-11-27T02:27:29.005135-08:00","updated_at":"2025-12-04T12:00:20.708765-08:00","labels":["ui"]} -{"id":"vsbeads-hw6t","title":"Add dependency type support when editing beads","description":"When adding or editing dependencies on a bead, allow specifying and changing the relationship type (blocks, parent-child, related, discovered-from).","notes":"## UX Options for Change Dependency Type (deferred)\n\n**Option A: Inline dropdown on dep item**\n```\nvsbeads-xyz Title here [blocks ▾] [Open][P2] ×\n```\n- Small dropdown shows current type, click to change\n\n**Option B: Click type label to cycle/dropdown**\n- Section header becomes interactive in edit mode\n\n**Option C: Context menu on hover**\n- Right-click or ⋮ menu on dep item\n- \"Change type → blocks | parent-child | related | discovered-from\"\n\nRecommendation: Option A (inline dropdown) - most discoverable","status":"closed","priority":2,"issue_type":"feature","assignee":"jdillon","created_at":"2025-12-22T17:39:17.110727-08:00","updated_at":"2025-12-26T01:00:32.345008-08:00","closed_at":"2025-12-26T01:00:32.345008-08:00","close_reason":"PR #52 merged","labels":["editing","ui"]} -{"id":"vsbeads-hw7","title":"Investigate: beads auto-deleted via git-history-backfill","description":"Several beads created on 2025-11-28 were automatically deleted at 23:54:29 via `git-history-backfill` with reason \"recovered from git history (pruned from manifest)\".\n\n**Affected beads:**\n- vsbeads-ded (epic)\n- vsbeads-b80, vsbeads-csu, vsbeads-8q3, vsbeads-jpc (tasks)\n- vsbeads-b0e, vsbeads-xtn, vsbeads-cau, vsbeads-c04, vsbeads-e4j, vsbeads-92s\n\n**Investigation needed:**\n1. What triggered git-history-backfill?\n2. Was there a git checkout/reset/merge that reverted .beads files?\n3. Check git reflog for what happened around that time\n4. Review bd sync behavior - should it delete beads not in git history?\n\n**Session file for reference:** `tmp/session-subagent-discussion.jsonl`","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-28T21:51:58.272122-08:00","updated_at":"2025-12-01T16:25:56.160078-08:00","closed_at":"2025-12-01T16:25:56.160078-08:00","labels":["infra"]} -{"id":"vsbeads-i32l","title":"Make type sort order configurable","description":"Allow users to customize the display order of bead types. Could be a VS Code setting or .beads config.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-12-22T01:18:39.209631-08:00","updated_at":"2025-12-22T01:18:39.209631-08:00","labels":["config","ui"],"dependencies":[{"issue_id":"vsbeads-i32l","depends_on_id":"vsbeads-6d1","type":"related","created_at":"2025-12-22T01:18:46.775997-08:00","created_by":"daemon"}]} +{"id":"vsbeads-i32l","title":"Make type sort order configurable","description":"Allow users to customize the display order of bead types. Could be a VS Code setting or .beads config.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-12-22T01:18:39.209631-08:00","updated_at":"2025-12-22T01:18:39.209631-08:00","labels":["config","ui"]} {"id":"vsbeads-i41","title":"Split styles.css into component modules","description":"Break up monolithic styles.css (~1000 lines) into logical modules:\n- base.css (variables, resets)\n- badges.css\n- dropdowns.css\n- table.css\n- details.css\n- dashboard.css\n\nImport all in index.tsx or use CSS modules.","status":"open","priority":4,"issue_type":"chore","estimated_minutes":90,"created_at":"2025-12-04T15:54:11.880134-08:00","updated_at":"2025-12-05T12:01:16.978282-08:00","labels":["dx","refactor"],"dependencies":[{"issue_id":"vsbeads-i41","depends_on_id":"vsbeads-prs","type":"blocks","created_at":"2025-12-04T15:54:23.363098-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-ifcn","title":"Reorder dependency display: parent first, then children","description":"Current order shows 'blocked' first which is confusing. Reorder to:\n1. Parent (epic)\n2. Children\n3. Then remaining dependency types (blocked by, blocks, related, etc.)\n\nThis matches natural mental model of hierarchy before relationships.","status":"closed","priority":2,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-24T23:26:39.560403-08:00","updated_at":"2025-12-25T16:55:18.302593-08:00","closed_at":"2025-12-25T16:55:18.302593-08:00","close_reason":"Merged in PR #51","labels":["ui"]} {"id":"vsbeads-im0d","title":"Make tooltip hover delay configurable with disable option","description":"The bead description tooltip appears too quickly (currently 400ms). Add VS Code settings to:\n- Configure the hover delay (default: 1000ms)\n- Disable tooltips entirely\n- Reset to default option\n\nLocations:\n- Delay is set in src/webview/views/IssuesView.tsx:195","status":"in_progress","priority":2,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-24T22:55:38.931254-08:00","created_by":"Jason Dillon","updated_at":"2026-01-24T22:55:44.267525-08:00","labels":["ui"]} -{"id":"vsbeads-ipb","title":"Show time in addition to date for timestamps in Details view","description":"Created/Updated/Closed timestamps in Details view currently only show date (toLocaleDateString). Should also show time for better context.\n\nLocation: `src/webview/views/DetailsView.tsx` (details-meta section)","status":"closed","priority":4,"issue_type":"feature","estimated_minutes":45,"created_at":"2025-11-27T20:49:34.095573-08:00","updated_at":"2025-12-11T01:34:51.948747-08:00","closed_at":"2025-12-11T01:34:51.948747-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-ipb","depends_on_id":"vsbeads-7cp","type":"parent-child","created_at":"2025-12-10T02:08:34.211682-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-iur","title":"Show labels in Details panel child bead references","description":"Child bead references in the Details panel dependencies section should display labels (like they do in the Issues list).","notes":"2025-12-11: Investigated - BeadDependency type doesn't include labels. Would need to update: 1) bd CLI to include labels in dependency responses, 2) DaemonBeadDependency type, 3) normalization logic, 4) BeadDependency type. Not a quick win - deferred.","status":"open","priority":3,"issue_type":"feature","estimated_minutes":60,"created_at":"2025-11-30T00:34:09.763359-08:00","updated_at":"2025-12-11T01:36:03.346378-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-iur","depends_on_id":"vsbeads-wgr","type":"parent-child","created_at":"2025-12-17T16:53:56.364942-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-iyn","title":"Daemons management view","description":"Add a dedicated daemons view panel showing all workspace daemons with detailed status and management options.\n\n**Potential features:**\n- List all beads projects with daemon status\n- Start/Stop/Restart buttons per daemon\n- Health indicators (DB status, uptime, last activity)\n- Log viewer integration\n- Auto-refresh status\n\nLower priority since status bar + quick pick menu covers basic needs.","status":"open","priority":3,"issue_type":"feature","estimated_minutes":420,"created_at":"2025-12-03T00:13:55.94898-08:00","updated_at":"2025-12-04T11:59:01.921198-08:00","labels":["daemon","ui"]} -{"id":"vsbeads-izh","title":"Show date+time in Updated/Created columns when wide enough","description":"Currently Updated/Created columns always show date only (e.g., \"12/1/2025\"). When the column is resized wider, should show date + time (e.g., \"12/1/2025 4:15 PM\").\n\nImplementation:\n- Check column width from state\n- If width \u003e threshold (e.g., 120px), use `toLocaleString()` instead of `toLocaleDateString()`\n- Could also show relative time (\"2h ago\") for very narrow columns","status":"closed","priority":3,"issue_type":"feature","estimated_minutes":60,"created_at":"2025-12-01T16:16:37.968279-08:00","updated_at":"2025-12-09T21:55:01.827745-08:00","closed_at":"2025-12-09T21:55:01.827745-08:00","labels":["ui"]} {"id":"vsbeads-jb7","title":"Allow opening issue detail in editor panel","description":"Add option to open an issue's full detail view in an editor panel (tab) instead of just the sidebar Details panel. This allows viewing/editing while keeping sidebar free, and the view doesn't change when selecting different issues in the list.","design":"- Double-click or context menu \"Open in Editor\" on issue row\n- Opens `vscode.window.createWebviewPanel()` in editor area\n- Panel is independent - doesn't sync with sidebar selection\n- Can have multiple issue tabs open\n- Full editing support\n- Title shows issue ID","status":"open","priority":2,"issue_type":"feature","estimated_minutes":300,"created_at":"2025-11-26T18:39:34.504524-08:00","updated_at":"2025-12-04T11:58:56.508839-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-jb7","depends_on_id":"vsbeads-7e9","type":"parent-child","created_at":"2025-12-10T02:08:25.013461-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-jfa","title":"Create test beads project fixture","description":"Create fixture that provides isolated beads test data for each test.\n\n**Requirements:**\n- Create temp directory with `.beads/` initialized\n- Seed with known test issues (various statuses, priorities, types)\n- Clean up after test completes\n- Option to customize seed data per test\n\n**Approach:**\n- Use `bd init` to create fresh beads db\n- Use `bd create` or direct JSON import for seed data\n- Store seed data templates in `e2e/fixtures/seed-data/`","acceptance_criteria":"- Each test gets isolated beads project\n- Seed data is consistent and predictable\n- No cross-test data pollution\n- Cleanup happens even on test failure","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-05T00:23:02.061916-08:00","updated_at":"2025-12-05T01:14:43.946258-08:00","labels":["testing"],"dependencies":[{"issue_id":"vsbeads-jfa","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.309365-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-jfa","depends_on_id":"vsbeads-ur9","type":"blocks","created_at":"2025-12-05T00:23:30.023879-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-jru","title":"Add copy ID button to Details panel title bar","description":"Added copy button to Details panel VS Code title bar. Also normalized all copy feedback to use VS Code status bar messages (2s auto-dismiss) instead of yellow toast popups.\n\n**Changes:**\n- `package.json`: Added `beads.copyBeadId` command with conditional visibility (`when` clause)\n- `extension.ts`: Command handler using `setStatusBarMessage`\n- `BeadDetailsViewProvider.ts`: `getCurrentBeadId()` getter, context key management, `copyBeadId` message handler\n- `DetailsView.tsx`: Added `onCopyId` prop, uses message passing instead of toast\n- `types.ts`: Added `copyBeadId` message type\n\nButton only shows when a bead is selected.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-27T18:31:28.983608-08:00","updated_at":"2025-11-27T18:43:41.736313-08:00","closed_at":"2025-11-27T18:43:41.736313-08:00"} -{"id":"vsbeads-jue","title":"Show dependents in BeadDetails view","description":"BeadDetails only shows \"Depends On\" (issues this bead depends on). Need to also show \"Dependents\" (issues that depend on this bead) to see the full relationship graph.\n\nCurrently the MCP show command returns both `dependencies` and `dependents`, but only dependencies are displayed in the UI.","design":"1. Update `Bead` type in types.ts to include `dependents?: string[]`\n2. Ensure backend passes through dependents from bd show\n3. Add \"Dependents\" section to BeadDetails.tsx (similar to \"Depends On\")\n4. Make dependent badges clickable to navigate to that issue","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-27T01:00:57.071592-08:00","updated_at":"2025-11-27T19:15:58.191577-08:00","closed_at":"2025-11-27T19:15:58.191577-08:00","dependencies":[{"issue_id":"vsbeads-jue","depends_on_id":"vsbeads-gr5","type":"related","created_at":"2025-11-27T01:01:56.807728-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-k3d","title":"test","description":"test","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-11-27T19:00:03.991806-08:00","updated_at":"2025-11-27T20:44:36.231963-08:00","closed_at":"2025-11-27T20:44:36.231963-08:00","comments":[{"id":3,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T03:27:34Z"},{"id":4,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T03:27:47Z"},{"id":7,"issue_id":"vsbeads-k3d","author":"jason","text":"Test comment from bug investigation","created_at":"2025-11-28T03:46:44Z"},{"id":9,"issue_id":"vsbeads-k3d","author":"jason","text":"tst","created_at":"2025-11-28T03:51:07Z"},{"id":10,"issue_id":"vsbeads-k3d","author":"jason","text":"foo bar baz","created_at":"2025-11-28T03:52:00Z"},{"id":11,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T04:10:12Z"},{"id":12,"issue_id":"vsbeads-k3d","author":"jason","text":"Testing auto-scroll feature","created_at":"2025-11-28T04:15:27Z"},{"id":13,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T04:22:02Z"},{"id":14,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T04:22:27Z"},{"id":15,"issue_id":"vsbeads-k3d","author":"jason","text":"5es","created_at":"2025-11-28T04:24:20Z"},{"id":16,"issue_id":"vsbeads-k3d","author":"jason","text":"dfs","created_at":"2025-11-28T04:24:45Z"},{"id":17,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T04:26:07Z"},{"id":18,"issue_id":"vsbeads-k3d","author":"jason","text":"maybe?","created_at":"2025-11-28T04:33:19Z"},{"id":19,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T04:35:03Z"}]} -{"id":"vsbeads-kog","title":"Separate VS Code Marketplace content from README","description":"Currently README.md serves both as repo documentation and marketplace listing. Consider creating separate content for the marketplace (e.g., MARKETPLACE.md) to allow:\n- Marketplace-focused content for end users\n- README with development/contribution info for developers\n\nResearch vsce options for custom readme paths.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-29T14:07:09.085539-08:00","updated_at":"2025-11-29T15:49:25.780981-08:00","closed_at":"2025-11-29T15:49:25.780981-08:00","labels":["dx"]} -{"id":"vsbeads-kz0","title":"Add more optional columns to Issues list (assignee, estimate, etc.)","description":"Users may want to see/sort by additional fields not currently exposed as columns:\n- Assignee\n- Estimate (if beads supports this)\n- External ref\n- Dependency count (blocked by / blocks)\n\nThese should be optional columns available via the column visibility menu (⋮).","notes":"Added Assignee and Estimate columns. Estimate column will show '-' for all beads since bd CLI doesn't expose --estimate flag for update. Field exists in schema (estimated_minutes) but not settable via current CLI.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-12-01T15:55:30.048853-08:00","updated_at":"2025-12-01T16:03:02.172879-08:00","closed_at":"2025-12-01T16:03:02.172879-08:00","labels":["ui"]} {"id":"vsbeads-l1j","title":"Research: Obsidian plugin for beads with shared daemon client","description":"Explore building an Obsidian plugin for beads, potentially sharing implementation with vscode-beads.\n\n**Context:** Jason the Great is using Claude and beads in a git-enabled Obsidian vault and wants to view/manage beads directly in Obsidian.\n\n**Sharing strategy to evaluate:**\n\n1. **Extract `BeadsDaemonClient` to standalone package**\n - Pure TypeScript, no VS Code dependencies\n - Socket connection + JSON-RPC\n - Could be shared npm package or monorepo\n\n2. **Share type definitions**\n - `Bead`, `BeadStatus`, `BeadPriority`, etc.\n - Extract from `src/backend/types.ts`\n\n3. **UI is platform-specific**\n - Obsidian: their component system (or Svelte)\n - VS Code: React webviews\n\n**Questions to answer:**\n- Can Obsidian plugins access Unix sockets? (Node.js `net` in Electron renderer)\n- What's Obsidian's plugin architecture? Views, sidebars, modals?\n- Should we use daemon socket or just shell out to `bd` CLI?\n- Monorepo vs separate repos with shared npm package?\n\n**Reference:**\n- Obsidian plugin docs: https://docs.obsidian.md/Plugins\n- vscode-beads daemon client: `src/backend/BeadsDaemonClient.ts`\n\n**Deliverable:** Decision doc on architecture + feasibility assessment","status":"open","priority":2,"issue_type":"task","estimated_minutes":120,"created_at":"2025-12-06T16:47:13.708368-08:00","updated_at":"2025-12-06T16:47:18.624578-08:00","labels":["dx","obsidian","research"]} -{"id":"vsbeads-l27","title":"Markdown rendering has excessive spacing around lists","description":"UL elements have too much padding/margin around them, and there appears to be forced spacing between LI elements despite CSS rules attempting to remove it. The markdown rendering should be more compact - simple lists should look similar to plain text with proper bullet formatting.","notes":"2025-12-17: Fixed using `font-size: 0` technique on UL/OL elements to eliminate whitespace between HTML elements creating anonymous line boxes. Font size restored to 12px on LI elements. PR #44.","status":"closed","priority":3,"issue_type":"bug","assignee":"jdillon","estimated_minutes":60,"created_at":"2025-11-26T17:55:40.606838-08:00","updated_at":"2025-12-17T16:41:11.045869-08:00","closed_at":"2025-12-17T16:41:11.045869-08:00","close_reason":"Fixed via PR #44 - used font-size:0 technique to eliminate whitespace line boxes","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-l27","depends_on_id":"vsbeads-nin","type":"parent-child","created_at":"2025-12-11T14:52:12.752807-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-ly2","title":"Improve daemon status management and zombie daemon detection","description":"Comprehensive daemon status management improvements:\n\n**Issues Fixed:**\n1. Stale dropdown status after connect/disconnect\n2. No visual feedback when daemon disconnects\n3. Zombie daemon handling (process running but socket missing/unresponsive)\n4. No way to restart daemon from UI\n\n**Features Added:**\n- **Status bar item**: Shows daemon status (green=running, yellow=stopped, red=zombie)\n- **Click menu**: Start/Stop/Restart options, Show Logs\n- **Detailed status check**: Detects edge cases (no DB, stale PID, zombie state)\n- **Commands**: `beads.restartDaemon`, `beads.checkDaemonStatus`, `beads.showDaemonMenu`\n\n**Technical Changes:**\n- `getDaemonStatus()` - comprehensive status with DB/socket/PID/process/health checks\n- `restartDaemon()` - stop + start with cleanup pause\n- `startDaemonProcess()` - refactored, detects \"already running\" error\n- Status bar with ThemeColor backgrounds for visibility\n- Quick pick menu with context-aware options","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-03T00:03:06.507996-08:00","updated_at":"2025-12-03T00:18:16.246048-08:00","closed_at":"2025-12-03T00:18:16.246048-08:00","labels":["daemon","ui"]} -{"id":"vsbeads-lzx6","title":"Test merge-request type display","description":"Testing how merge-request type looks in the UI","status":"closed","priority":3,"issue_type":"merge-request","created_at":"2025-12-25T17:03:46.351472-08:00","updated_at":"2025-12-25T17:04:36.353914-08:00","closed_at":"2025-12-25T17:04:36.353914-08:00","close_reason":"Test complete - UI looks good","labels":["test"]} -{"id":"vsbeads-m0t","title":"Agent VS Code dev: next steps after research","description":"## Context\nResearch complete in `sandbox/agent-vscode-dev-research.md`. Ready to test and implement.\n\n## Immediate Next Step\n1. **Test Chrome DevTools MCP** (vsbeads-1k7)\n - Install: `claude mcp add chrome-devtools -- npx -y chrome-devtools-mcp@latest`\n - Restart Claude Code\n - Run test plan: navigate, click, snapshot, screenshot, console, evaluate_script\n - Key goal: verify console access works (painpoint for debugging)\n\n## If Chrome DevTools MCP works\n2. Create implementation beads from roadmap Phase 1:\n - Install code-server locally\n - Configure Chrome DevTools MCP for code-server\n - Test: open code-server, navigate, see console/errors\n - Install vscode-beads VSIX\n\n## If Chrome DevTools MCP fails\n- Fallback to Playwright MCP\n- May lose console access, need workaround\n\n## Reference\n- Research doc: `sandbox/agent-vscode-dev-research.md`\n- Epic: vsbeads-3cn\n- Research task: vsbeads-q6r","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-27T17:17:51.470823-08:00","updated_at":"2025-11-27T19:17:07.693297-08:00","closed_at":"2025-11-27T19:17:07.693297-08:00","dependencies":[{"issue_id":"vsbeads-m0t","depends_on_id":"vsbeads-1k7","type":"blocks","created_at":"2025-11-27T17:17:55.445037-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-m0t","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.250208-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-m98","title":"sql: database is closed errors after bd upgrade","description":"After upgrading to recent beads (v0.30+), the extension frequently fails with \"sql: database is closed\" errors. This breaks all views - Issues, Details, Dashboard.\n\nSymptoms:\n- \"Error: failed to list issues: failed to search issues: sql: database is closed\"\n- \"Error: failed to get issue: failed to get issue: sql: database is closed\" \n- \"Error: failed to list comments: failed to query comments: sql: database is closed\"\n- Happens intermittently, sometimes recovers with \"Reconnected to daemon\"\n- Retry button doesn't always fix it","design":"Possible causes:\n1. Daemon connection drops/reconnects but client doesn't handle it\n2. bd daemon sqlite connection pool issue\n3. Race condition on daemon restart\n4. Version mismatch between extension expectations and bd daemon protocol\n\nInvestigation needed:\n- Check daemon logs when this happens\n- Check if bd daemon is crashing/restarting\n- Review recent bd changelog for breaking changes\n- Test with direct mode (--no-daemon) to isolate","notes":"---\n2025-12-17: Added client-side retry mitigation in BeadsDaemonClient.ts\n\n- `execute()` now retries up to 2 times for transient errors\n- Transient patterns: \"database is closed\", \"database is locked\", \"connection reset\"\n- Increasing delay between retries (100ms, 200ms)\n- This should mask the race condition on the daemon side\n\nUpstream issue: GH#607","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-17T01:55:16.333492-08:00","updated_at":"2025-12-17T12:26:22.326517-08:00","closed_at":"2025-12-17T12:26:22.326517-08:00","close_reason":"Fixed with client-side retry mitigation. Upstream issue GH#607 filed.","external_ref":"https://github.com/steveyegge/beads/issues/607","labels":["backend","critical","daemon"]} -{"id":"vsbeads-madg","title":"Add fallback handling for unknown bead types","description":"Handle future unknown bead types gracefully. Show question mark icon with gray color. Prevents UI errors when upstream adds new types before extension is updated.","status":"closed","priority":2,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-21T16:48:04.859414-08:00","updated_at":"2025-12-22T17:34:49.227304-08:00","closed_at":"2025-12-22T17:34:49.227304-08:00","close_reason":"PR #49 merged - notdef icon for unknown types","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-madg","depends_on_id":"vsbeads-duu","type":"discovered-from","created_at":"2025-12-21T16:48:11.310971-08:00","created_by":"daemon"}]} -{"id":"vsbeads-mbo","title":"Fix bd sync prefix mismatch (vscode-beads- vs vscode-)","description":"bd sync fails with: \"prefix mismatch detected: database uses 'vscode-beads-' but found issues with prefixes: [vscode- (16 issues)]\". This prevents syncing beads to git.","design":"Error suggests using --rename-on-import flag. May need to:\n1. Run bd sync --rename-on-import\n2. Or fix the prefix in config.yaml\n3. Or re-export with correct prefix","notes":"**Root Cause:** Bug in `internal/utils/issue_id.go:ExtractIssuePrefix` - used `strings.Index` (first hyphen) instead of `strings.LastIndex` (last hyphen). For `vscode-beads-4n2`, it extracted prefix as `vscode` instead of `vscode-beads`.\n\n**Fix:** Already in beads main (commit 6294ef0c). New bd built at `/tmp/bd-new`.\n\n**Workaround Applied:** Renamed prefix from `vscode-beads` to `vsbeads`.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-26T18:52:04.449107-08:00","updated_at":"2025-11-26T23:13:56.591814-08:00","closed_at":"2025-11-26T23:13:56.591814-08:00"} -{"id":"vsbeads-mkvi","title":"Add autocomplete for dependency input","description":"When adding a dependency, provide autocomplete suggestions as the user types. Should match on:\n- Bead ID (e.g., vsbeads-xxx)\n- Title text\n\nThis makes it easier to find the correct bead without needing to remember exact IDs.\n\nCould also validate that the entered ID exists before submitting.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-12-25T14:54:32.085931-08:00","updated_at":"2025-12-25T14:54:32.085931-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-mkvi","depends_on_id":"vsbeads-hw6t","type":"discovered-from","created_at":"2025-12-25T14:54:39.284219-08:00","created_by":"daemon"}]} +{"id":"vsbeads-mkvi","title":"Add autocomplete for dependency input","description":"When adding a dependency, provide autocomplete suggestions as the user types. Should match on:\n- Bead ID (e.g., vsbeads-xxx)\n- Title text\n\nThis makes it easier to find the correct bead without needing to remember exact IDs.\n\nCould also validate that the entered ID exists before submitting.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-12-25T14:54:32.085931-08:00","updated_at":"2025-12-25T14:54:32.085931-08:00","labels":["ui"]} {"id":"vsbeads-mwic","title":"Re-sync upstream from v0.37.0 covering el1i and u5xh context","description":"Re-run /upstream-sync starting from v0.37.0 instead of v0.38.0 to capture context from:\n\n- vsbeads-el1i: Daemon client types (id_prefix, wisp, source_formula, source_location)\n- vsbeads-u5xh: Children list vanishing bug (may be race condition like vsbeads-re92)\n\nAfter re-review, close vsbeads-el1i and vsbeads-u5xh if covered.\n\nUpdate docs/upstream-sync/README.md sync point to v0.37.0 before running.","status":"closed","priority":2,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-29T13:43:34.073673-08:00","created_by":"jason","updated_at":"2025-12-29T14:01:59.180523-08:00","closed_at":"2025-12-29T14:01:59.180523-08:00","close_reason":"Upstream sync completed v0.37.0 → v0.40.0","labels":["backend","ui"],"dependencies":[{"issue_id":"vsbeads-mwic","depends_on_id":"vsbeads-un3l","type":"parent-child","created_at":"2025-12-29T13:43:44.225598-08:00","created_by":"daemon"}]} -{"id":"vsbeads-mwr","title":"Details view: ref beads missing priority badge when priority is null/undefined","description":"Some beads in the Details view dependency list are missing their priority badge. Likely caused by null/undefined priority values not being handled gracefully in the UI.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-21T14:27:26.393975-08:00","updated_at":"2025-12-22T15:42:32.139387-08:00","closed_at":"2025-12-22T15:42:32.139387-08:00","close_reason":"Fixed in PR #45 - shows P? badge with gray background for undefined priority, colors extracted to constants","labels":["ui"]} {"id":"vsbeads-n64","title":"Build optimized agent automation for VS Code/code-server (reduce context bloat)","description":"Chrome DevTools MCP returns ~400 lines (full a11y tree) after EVERY action. This burns through context extremely fast. Need to build custom tooling.\n\n**Problem observed:**\n- `press_key` → 401 lines returned\n- `click` → full snapshot returned \n- Simple reload workflow = ~120KB context\n- Playwright MCP has same issue (also uses a11y snapshots)\n\n**Direction:**\nBuild custom tooling for optimized agent-driven VS Code/code-server automation:\n1. Helper extension that exposes simple commands (reload, focus panel, etc.) callable via API\n2. Custom MCP that returns minimal/filtered responses instead of full tree\n3. Script-based helpers agent can invoke without snapshot overhead\n4. Same pattern needed for Figma later\n\n**Current workaround:**\n- Use Chrome DevTools MCP sparingly for single feature verification\n- Leave window reload to human to avoid context burn\n- Hybrid: agent codes, human clicks to verify","status":"open","priority":2,"issue_type":"task","estimated_minutes":720,"created_at":"2025-11-27T18:31:28.924977-08:00","updated_at":"2025-12-04T11:58:54.423038-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-n64","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.275699-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-nin","title":"UX polish phase 2: filters, context menus, and refinements","description":"Continuation of UX improvements from vsbeads-7cp. Focus on search/filter behavior, context menus, and visual refinements.","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-12-11T14:52:06.290596-08:00","updated_at":"2025-12-17T16:42:59.190417-08:00","closed_at":"2025-12-17T16:42:59.190417-08:00","close_reason":"Completed simpler items; remaining complex UI work moved to vsbeads-wgr","labels":["ui"]} -{"id":"vsbeads-onk","title":"Consider dev/snapshot version suffix after release","description":"After tagging a release, main stays at the released version (e.g., 0.2.0). This could be confusing when building from main after additional commits - same version but different code.\n\nOptions to consider:\n- Bump to `X.Y+1.0-dev` after release\n- Bump to `X.Y.Z-SNAPSHOT` pattern\n- Leave as-is (simpler, beads project does this)\n\nIf implementing, update `/project-release` to bump version after pushing tag.","status":"open","priority":3,"issue_type":"task","estimated_minutes":45,"created_at":"2025-11-29T17:34:58.801913-08:00","updated_at":"2025-12-04T11:59:26.955052-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-onk","depends_on_id":"vsbeads-93b","type":"related","created_at":"2025-11-29T17:35:03.165667-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-onk","title":"Consider dev/snapshot version suffix after release","description":"After tagging a release, main stays at the released version (e.g., 0.2.0). This could be confusing when building from main after additional commits - same version but different code.\n\nOptions to consider:\n- Bump to `X.Y+1.0-dev` after release\n- Bump to `X.Y.Z-SNAPSHOT` pattern\n- Leave as-is (simpler, beads project does this)\n\nIf implementing, update `/project-release` to bump version after pushing tag.","status":"open","priority":3,"issue_type":"task","estimated_minutes":45,"created_at":"2025-11-29T17:34:58.801913-08:00","updated_at":"2025-12-04T11:59:26.955052-08:00","labels":["dx"]} {"id":"vsbeads-ops","title":"Redesign Dashboard for compactness and usefulness","description":"Current dashboard has redundant/space-wasting sections. The status bar chart duplicates the summary cards above. Need a more compact, meaningful layout.","design":"**Keep:**\n- Summary cards (Total, Ready, In Progress, Blocked) - useful at a glance\n- In Progress list - very useful\n\n**Remove/Replace:**\n- Status breakdown bars (redundant with cards)\n- Priority breakdown bars (takes too much space)\n\n**Options for compact redesign:**\n\n**Option A: Type + Priority chips**\n```\n[Summary Cards Row]\n\nBY TYPE BY PRIORITY\nbug: 3 P1: 1 P2: 4 P3: 3\nfeature: 4\ntask: 1\n\nIN PROGRESS BLOCKED (if any)\n- issue... - issue...\n```\n\n**Option B: Single stats row**\n```\n[Summary Cards Row]\n\nTypes: 🐛3 ✨4 📋1 Priority: P1:1 P2:4 P3:3\n\nIN PROGRESS READY (top 3)\n- issue... - issue...\n```\n\n**Option C: Kanban-lite summary**\n```\n[Summary Cards Row]\n\nREADY (3) IN PROGRESS (2) BLOCKED (0)\n- issue... - issue... (none)\n- issue... - issue...\n```\n\nRecommendation: Option C - shows actionable items, no redundancy","status":"open","priority":2,"issue_type":"feature","estimated_minutes":300,"created_at":"2025-11-26T18:20:49.922324-08:00","updated_at":"2025-12-04T11:58:57.526016-08:00","labels":["ui"]} -{"id":"vsbeads-oqb","title":"Fix column resize in Issues list","description":"Column resize handles are visible and highlight on hover, but dragging doesn't properly resize columns. Title column can be made bigger but not smaller despite minWidth being reduced. The resize logic and CSS need debugging.","design":"Current implementation:\n- Resize handle on right edge of each th\n- onMouseDown captures startX and startWidth\n- mousemove calculates delta and updates column width in state\n- width applied via inline style\n\nIssues to investigate:\n- Is the state actually updating?\n- Is the width being applied correctly?\n- Is something else overriding the width?\n- Table layout behavior with/without table-layout: fixed","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-26T18:25:55.633017-08:00","updated_at":"2025-12-01T15:56:32.434936-08:00","closed_at":"2025-12-01T15:56:32.434936-08:00","labels":["ui"]} {"id":"vsbeads-otf","title":"Explore ways to better comprehend large bead lists","description":"As the number of beads grows, it becomes hard to keep track of what's there. Need to brainstorm UX improvements for navigating/understanding large backlogs.\n\n**Ideas to explore:**\n\n1. **Grouping/categorization**\n - Group by label (ui, dx, refactor, etc.)\n - Group by epic/parent\n - Collapsible sections\n\n2. **Summary views**\n - \"What's hot\" - recently updated, high priority\n - \"Stale\" - open items not touched in X days\n - Tag cloud of labels with counts\n\n3. **Search enhancements**\n - Fuzzy search across title + description\n - Saved searches/filters\n - Quick filters: \"my stuff\", \"blockers\", \"quick wins\"\n\n4. **Visual aids**\n - Mini roadmap view (epics + children)\n - Priority heatmap\n - Dependency graph (already exists but could be improved)\n\n5. **AI-assisted**\n - \"Summarize my backlog\" - Claude generates overview\n - \"What should I work on?\" - smart prioritization\n - \"Find duplicates\" - detect similar issues","status":"open","priority":3,"issue_type":"task","estimated_minutes":60,"created_at":"2025-12-05T00:17:41.069543-08:00","updated_at":"2025-12-05T12:01:16.791294-08:00","labels":["research","ux"]} {"id":"vsbeads-p78","title":"Add autocomplete menu for label input with existing labels","description":"When adding labels to an issue, show a dropdown menu with matching existing labels as the user types. Should support both selecting an existing label and creating a new label that doesn't exist yet.","notes":"2025-12-11: Attempted implementation using AutocompleteInput component (created for vsbeads-65h label filter). \n\nApproaches tried:\n1. Inline input with AutocompleteInput - dropdown clipped by overflow:hidden on parent containers\n2. Added useFixedPositioning prop to calculate fixed position via getBoundingClientRect - didn't solve clipping\n3. Wrapped in Dropdown component with AutocompleteInput inside - layout breaks, dropdown menu positioning issues\n\nCore problem: The details-badges area has multiple nested containers with overflow constraints. The autocomplete dropdown gets clipped no matter which approach.\n\nPossible solutions to explore:\n- Portal-based dropdown that renders at document root\n- Completely different UX (modal/popover for adding labels)\n- Fix overflow constraints on parent containers (may break other things)\n\nAutocompleteInput component itself works fine in filter bar context (vsbeads-65h).\n\n---\n\n2025-12-11: Stashed WIP for later: `stash@{0}: On feature/ux-polish: WIP: label autocomplete (vsbeads-p78, vsbeads-65h)`","status":"blocked","priority":3,"issue_type":"feature","created_at":"2025-12-11T02:04:29.914692-08:00","updated_at":"2025-12-11T13:09:45.969264-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-p78","depends_on_id":"vsbeads-wgr","type":"parent-child","created_at":"2025-12-17T16:53:56.399661-08:00","created_by":"daemon","metadata":"{}"}],"comments":[{"id":32,"issue_id":"vsbeads-p78","author":"jason","text":"Testing comment functionality from Claude","created_at":"2025-12-11T21:10:33Z"}]} -{"id":"vsbeads-pqx","title":"Extract FilterBar component","description":"Extract filter bar UI from IssuesView into reusable component:\n- Filter presets dropdown\n- Active filter chips\n- Add filter menu (status/priority/type)\n- Clear button\n- Optional faceted counts support\n\nSaves ~150 LOC from IssuesView. Creates src/webview/common/FilterBar.tsx","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-04T15:54:10.593422-08:00","updated_at":"2025-12-05T12:01:16.754411-08:00","labels":["refactor","ui"],"dependencies":[{"issue_id":"vsbeads-pqx","depends_on_id":"vsbeads-cct","type":"blocks","created_at":"2025-12-04T15:54:23.222703-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-prs","title":"Reorganize webview component directory structure","description":"Group components by function:\n- common/badges/ (StatusBadge, PriorityBadge, TypeBadge, LabelBadge)\n- common/dropdowns/ (Dropdown, ColoredSelect, ProjectDropdown)\n- common/filters/ (FilterBar, FilterChip)\n- common/feedback/ (Toast, Loading, ErrorMessage)\n- hooks/ (useClickOutside, useColumnState)\n\nUpdate all imports.","status":"open","priority":3,"issue_type":"chore","estimated_minutes":60,"created_at":"2025-12-04T15:54:11.547522-08:00","updated_at":"2025-12-05T12:01:16.866291-08:00","labels":["dx","refactor"],"dependencies":[{"issue_id":"vsbeads-prs","depends_on_id":"vsbeads-pqx","type":"blocks","created_at":"2025-12-04T15:54:23.266227-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-prs","depends_on_id":"vsbeads-cct","type":"blocks","created_at":"2025-12-04T15:54:23.313481-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-q29","title":"Setup GitHub Action to build VSIX on push to main","description":"Add GitHub Action workflow to build extension VSIX archive on push to main. Upload as artifact for manual download/testing.","design":"`.github/workflows/build.yml`\n- Trigger: push to main\n- Steps: checkout, setup bun, install, compile, vsce package\n- Upload VSIX as artifact\n- Could also publish to marketplace on tag (see PUBLISHING.md)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-26T18:39:27.093552-08:00","updated_at":"2025-11-27T20:56:11.086242-08:00","closed_at":"2025-11-27T20:56:11.086242-08:00"} -{"id":"vsbeads-q6r","title":"Research: Agent-based VS Code extension development options","description":"Research and document the best approaches for enabling agent-driven VS Code extension development.\n\n## Areas to investigate\n\n### VS Code in Browser\n- code-server (https://github.com/coder/code-server)\n- VS Code Web / vscode.dev\n- Custom builds with local extension support\n\n### Browser Automation/MCP\n- Browser MCP (https://browsermcp.io/)\n- Chrome DevTools MCP (https://github.com/ChromeDevTools/chrome-devtools-mcp)\n- Playwright (https://playwright.dev/)\n- Other automation options\n\n### Required Capabilities\n- Start/stop VS Code, reload extensions\n- Take screenshots, see logs, debug inspector\n- Terminal/output panel access\n- Problem panel (type errors)\n- Command palette execution\n- Webview inspection\n- Test runner integration\n\n### Human Participation\n- VNC access for headless environments\n- X11 forwarding options\n- Screen sharing alternatives\n\n## Deliverable\nResearch document in sandbox/ with findings, trade-offs, and recommendations.","notes":"## Research Findings\n\n### Winning Stack\n```\nChrome DevTools MCP + code-server\n```\n\n### VS Code in Browser - DECIDED ✅\n| Option | Verdict |\n|--------|---------|\n| **code-server** | ✅ WINNER - native macOS, bd socket works |\n| OpenVSCode Server | ⚠️ Docker only, socket blocked |\n| vscode.dev | ❌ No local extension support |\n\n### Browser Automation - DECIDED ✅\n| Option | Verdict |\n|--------|---------|\n| **Chrome DevTools MCP** | ✅ WINNER - headed, console access, evaluate_script |\n| Browser MCP | ❌ Less capable |\n| Playwright MCP | Fallback if needed |\n\n### Capabilities Verified ✅\n- Start/stop VS Code: CLI `code-server` command\n- Reload extensions: DevTools \"Developer: Reload Window\"\n- Screenshots: `take_screenshot`\n- Console access: `list_console_messages`\n- Command palette: `press_key` Meta+Shift+P\n- Webview inspection: `take_snapshot` sees iframe content\n- Extension install: `code-server --install-extension`\n\n### Still to Verify\n- Terminal/output panel access\n- Problem panel (type errors via getDiagnostics?)\n- Test runner integration\n\n### Human Participation - SOLVED\nHeaded browser = human watches directly. No VNC/X11 needed.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-27T13:28:56.851044-08:00","updated_at":"2025-11-27T18:36:56.350768-08:00","closed_at":"2025-11-27T18:36:56.350768-08:00","dependencies":[{"issue_id":"vsbeads-q6r","depends_on_id":"vsbeads-3cn","type":"blocks","created_at":"2025-11-27T13:28:56.85284-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-q92","title":"Investigate real-time mutation updates not working","description":"Issues panel doesn't update when beads are created via CLI/MCP. The mutation watching infrastructure exists but may not be working correctly.","design":"Debug checklist:\n- Check \"Beads Dashboard\" output channel for mutation logs\n- Verify daemon is connected and mutation watch started\n- Check if getMutations RPC is returning data\n- Verify mutation timestamp filtering isn't too aggressive\n- Test with manual refresh to confirm data is available","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-26T18:41:19.755338-08:00","updated_at":"2025-11-26T23:44:58.678746-08:00","closed_at":"2025-11-26T23:44:58.678746-08:00"} +{"id":"vsbeads-pqx","title":"Extract FilterBar component","description":"Extract filter bar UI from IssuesView into reusable component:\n- Filter presets dropdown\n- Active filter chips\n- Add filter menu (status/priority/type)\n- Clear button\n- Optional faceted counts support\n\nSaves ~150 LOC from IssuesView. Creates src/webview/common/FilterBar.tsx","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-04T15:54:10.593422-08:00","updated_at":"2025-12-05T12:01:16.754411-08:00","labels":["refactor","ui"]} +{"id":"vsbeads-prs","title":"Reorganize webview component directory structure","description":"Group components by function:\n- common/badges/ (StatusBadge, PriorityBadge, TypeBadge, LabelBadge)\n- common/dropdowns/ (Dropdown, ColoredSelect, ProjectDropdown)\n- common/filters/ (FilterBar, FilterChip)\n- common/feedback/ (Toast, Loading, ErrorMessage)\n- hooks/ (useClickOutside, useColumnState)\n\nUpdate all imports.","status":"open","priority":3,"issue_type":"chore","estimated_minutes":60,"created_at":"2025-12-04T15:54:11.547522-08:00","updated_at":"2025-12-05T12:01:16.866291-08:00","labels":["dx","refactor"],"dependencies":[{"issue_id":"vsbeads-prs","depends_on_id":"vsbeads-pqx","type":"blocks","created_at":"2025-12-04T15:54:23.266227-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-qcb","title":"Research beads skill vs MCP vs plugin architecture","description":"Understand the relationship between beads skill, MCP server, and Claude Code plugin:\n\n**Questions to answer:**\n1. What is the beads \"skill\" and how does it differ from the MCP server?\n2. Why isn't the skill bundled in the plugin?\n3. What functionality does each provide?\n4. When should users use skill vs MCP vs plugin slash commands?\n\n**Reference docs in upstream repo (`~/ws/reference/beads`):**\n- `docs/PLUGIN.md` - Plugin documentation\n- `.claude-plugin/plugin.json` - Plugin manifest\n- `.claude-plugin/agents/task-agent.md` - Task agent definition\n\n**Deliverables:**\n- Document the architectural relationship\n- Clarify the design rationale\n- Recommend if skill should be added to plugin (or why not)","acceptance_criteria":"- Clear explanation of skill vs MCP vs plugin\n- Design rationale documented\n- Recommendation with trade-offs","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-05T01:18:24.504312-08:00","updated_at":"2025-12-05T01:18:29.272041-08:00","labels":["dx","research","upstream"]} -{"id":"vsbeads-qd8","title":"Investigate automated E2E testing with Playwright and code-server","description":"Research and prototype automated end-to-end testing for the VS Code extension using Playwright with code-server.\n\n**Why Playwright:**\n- Microsoft recommends Playwright for VS Code extension testing\n- Headless browser automation with excellent TypeScript support\n- Can interact with webviews, which is critical for our React-based UI\n- Built-in waiting/retry mechanisms\n\n**Areas to investigate:**\n\n1. **Test setup architecture**\n - How to start/stop code-server programmatically in tests\n - Extension installation/symlink setup in CI\n - Fixture management for test beads data\n\n2. **Webview testing**\n - Accessing webview iframes in Playwright\n - Testing React components through the webview boundary\n - Handling postMessage communication\n\n3. **Integration patterns**\n - Testing daemon start/stop/status flows\n - Mock vs real `bd` CLI for tests\n - Snapshot testing for UI states\n\n4. **CI integration**\n - GitHub Actions setup for headless Playwright\n - Test parallelization strategies\n - Artifact capture (screenshots, traces) on failure\n\n**Alternatives to evaluate:**\n- @vscode/test-electron (official but less webview support)\n- Selenium (older, less recommended)\n- Puppeteer (similar to Playwright but less features)\n\n**Resources:**\n- https://playwright.dev/docs/intro\n- https://code.visualstudio.com/api/working-with-extensions/testing-extension\n- Chrome DevTools MCP could potentially be used for manual testing augmentation","notes":"## Research Findings (2025-12-05)\n\n### Playwright + code-server Strategy Validated\n\nThis approach is viable and aligns with Microsoft's recommendations for testing VS Code extensions that use webviews.\n\n**Key findings:**\n1. **Playwright handles iframes well** - Critical for webview testing. Use `page.frameLocator()` or `page.frame({ url })` to access webview content\n2. **Bun support exists** - `bun create playwright` or manual setup with `@playwright/test`\n3. **GitHub Actions recommended pattern** - Use `npx playwright install --with-deps`, NOT the deprecated GitHub Action\n4. **code-server compatibility** - Similar to OpenVSCode Server; both expose VS Code in browser which Playwright can automate\n\n### Test Architecture Recommendations\n\n```\ne2e/\n├── playwright.config.ts # Config: baseURL, projects, timeouts\n├── fixtures/\n│ ├── code-server.ts # Custom fixture: start/stop code-server\n│ └── beads-project.ts # Fixture: scaffold test .beads directory\n├── helpers/\n│ ├── webview.ts # Helper: locate webview frames\n│ └── selectors.ts # Shared selectors for UI elements\n└── tests/\n ├── issues-view.spec.ts # Issues panel tests\n ├── details-view.spec.ts # Details panel tests\n └── daemon.spec.ts # Daemon start/stop tests\n```\n\n### Key Challenges to Address\n\n1. **Webview frame access** - VS Code embeds webviews in iframes; need to reliably locate them\n2. **Test data isolation** - Each test needs clean beads project state\n3. **code-server lifecycle** - Start before tests, stop after\n4. **CI timing** - code-server startup takes time; need proper wait strategies\n\n### Sources\n\n- [Playwright Installation](https://playwright.dev/docs/intro)\n- [Playwright Frame Handling](https://playwright.dev/docs/frames)\n- [Playwright CI Setup](https://playwright.dev/docs/ci)\n- [Playwright + Bun Template](https://github.com/fabianmolinab/playwright-bun-template)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-04T17:07:47.844099-08:00","updated_at":"2025-12-05T00:23:42.118147-08:00","closed_at":"2025-12-05T00:23:42.118147-08:00","labels":["ci","dx","testing"],"dependencies":[{"issue_id":"vsbeads-qd8","depends_on_id":"vsbeads-4e7","type":"related","created_at":"2025-12-05T00:23:37.111577-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-qgo","title":"Clicking bead ID copies to clipboard but doesn't select row or update details panel","description":"When clicking the bead ID in the title column of the Issues list:\n- ✅ Copies ID to clipboard (working)\n- ❌ Should also select the row and update the Details panel (not working)\n\nCurrently clicking the ID only copies - it doesn't trigger row selection. User has to click elsewhere on the row to select it.\n\n**Expected:** Single click on bead ID copies AND selects the row.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-09T21:43:26.399261-08:00","updated_at":"2025-12-10T00:27:04.114208-08:00","closed_at":"2025-12-10T00:27:04.114208-08:00","labels":["ui"],"comments":[{"id":29,"issue_id":"vsbeads-qgo","author":"jason","text":"Fix: Remove e.stopPropagation() or also call onSelectBead(info.row.original.id) after copying in IssuesView.tsx:176-180","created_at":"2025-12-10T05:45:11Z"}]} -{"id":"vsbeads-qi0","title":"Add icons for bead issue types","description":"Add SVG icons to visually distinguish issue types (bug, feature, task, epic, chore) in the UI.","notes":"2025-12-11: Implemented icons inside type badges, but user feedback indicated this wasn't the right approach. Reverted. User wants a separate icon column before Type instead - needs design discussion.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-10T02:06:34.421593-08:00","updated_at":"2025-12-11T01:34:51.815779-08:00","closed_at":"2025-12-11T01:34:51.815779-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-qi0","depends_on_id":"vsbeads-7cp","type":"parent-child","created_at":"2025-12-10T02:06:42.562858-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-qlp","title":"Add tag/label icon to labels display","description":"Labels displayed in the UI need a visual indicator (SVG icon) to distinguish them as tags/labels, similar to how we added a person icon for assignees.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-10T02:01:06.93022-08:00","updated_at":"2025-12-11T01:34:51.862509-08:00","closed_at":"2025-12-11T01:34:51.862509-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-qlp","depends_on_id":"vsbeads-7cp","type":"parent-child","created_at":"2025-12-10T02:02:05.83127-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-qtl","title":"Sort labels alphabetically in display","description":"Labels are displayed in whatever order they're stored. Should sort alphabetically for consistent display across issues.","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-12-01T16:16:04.313747-08:00","updated_at":"2025-12-01T16:31:26.682726-08:00","closed_at":"2025-12-01T16:31:26.682726-08:00","labels":["ui"]} -{"id":"vsbeads-rbp","title":"Bug: Edit mode status selector shows \"Unknown\"","description":"In DetailsView edit mode, the status dropdown shows \"Unknown\" as an option. This shouldn't be selectable - it's only for display when status can't be parsed.\n\nLocation: `src/webview/views/DetailsView.tsx` lines 201-212","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-27T19:01:47.079665-08:00","updated_at":"2025-11-27T19:19:24.818633-08:00","closed_at":"2025-11-27T19:19:24.818633-08:00"} {"id":"vsbeads-re92","title":"Labels column empty on fresh VS Code startup","notes":"## Symptoms\n- Labels column shows \"-\" for all beads on fresh VS Code startup\n- Labels appear correctly after:\n - Switching to another project and back\n - Reloading the VS Code window\n\n## Likely Cause\nTiming/initialization issue - label data may not be fetched or populated during initial extension activation.\n\n## Investigation Needed\n- Check BeadsBackend initialization order\n- Verify when label data is requested vs when webview is ready\n- Look for race condition between project selection and data fetch","status":"closed","priority":2,"issue_type":"bug","assignee":"jdillon","created_at":"2025-12-26T15:53:57.445613-08:00","updated_at":"2025-12-29T14:43:30.209454-08:00","closed_at":"2025-12-29T14:43:30.209454-08:00","close_reason":"Fixed in Cycle 2 - race condition in webview initialization","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-re92","depends_on_id":"vsbeads-un3l","type":"parent-child","created_at":"2025-12-29T11:39:53.227766-08:00","created_by":"daemon"}],"comments":[{"id":39,"issue_id":"vsbeads-re92","author":"jason","text":"### Investigation \u0026 Fix\n\n**Root cause identified**: Race condition in `BaseViewProvider.resolveWebviewView()`\n\nThe issue was that `initializeView()` was called immediately after setting the webview HTML, but the React app hadn't loaded yet to receive messages. This caused the initial data (including labels) to be lost.\n\n**Fix applied**: Removed the premature `initializeView()` call. Now we wait for the \"ready\" message from the webview, which indicates React is loaded and listening for messages.\n\n**File changed**: `src/providers/BaseViewProvider.ts`\n\n**Note**: Original bug was intermittent and couldn't be reproduced during testing, but the race condition was clearly present in the code. Fix verified working in code-server.","created_at":"2025-12-29T20:13:14Z"}]} {"id":"vsbeads-rru","title":"Implement Dependency Graph as editor panel","description":"Reimplement the dependency graph view as an editor panel (like Settings) instead of sidebar webview. More space for visualization, better UX.","design":"Use `vscode.window.createWebviewPanel()` to open in editor area.\n- Register command to open graph\n- Panel shows in editor tabs like Settings/Keyboard Shortcuts\n- Can have full width for node visualization\n- Consider using a proper graph library (d3, cytoscape, etc)","status":"open","priority":3,"issue_type":"feature","estimated_minutes":480,"created_at":"2025-11-26T18:39:29.324895-08:00","updated_at":"2025-12-04T11:59:40.971443-08:00","labels":["ui"]} -{"id":"vsbeads-rt9j","title":"Add merge-request and molecule bead types","description":"Add support for new upstream bead types: merge-request and molecule. Includes icons (code-merge, flask from Font Awesome), colors (sky blue, teal), and type labels.","status":"closed","priority":2,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-21T16:48:04.049552-08:00","updated_at":"2025-12-26T01:01:09.536557-08:00","closed_at":"2025-12-26T01:01:09.536557-08:00","close_reason":"PR #53 merged","external_ref":"https://github.com/steveyegge/beads/blob/dd9fcd9e361be3d606e99681ca75162a127b1ad4/docs/ARCHITECTURE.md#wisps-and-molecules","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-rt9j","depends_on_id":"vsbeads-duu","type":"discovered-from","created_at":"2025-12-21T16:48:11.198978-08:00","created_by":"daemon"},{"issue_id":"vsbeads-rt9j","depends_on_id":"vsbeads-madg","type":"related","created_at":"2025-12-21T16:48:16.862371-08:00","created_by":"daemon"}],"comments":[{"id":34,"issue_id":"vsbeads-rt9j","author":"jason","text":"icon for merge-request: https://fontawesome.com/icons/code-merge?f=classic\u0026s=solid","created_at":"2025-12-23T01:00:09Z"},{"id":35,"issue_id":"vsbeads-rt9j","author":"jason","text":"icon for molecule: https://fontawesome.com/icons/hexagon-nodes?f=classic\u0026s=solid ? ... is this a product's logo?","created_at":"2025-12-23T01:05:40Z"}]} -{"id":"vsbeads-rtk","title":"Render comments with markdown support","description":"Comments in the Details view are rendered as plain text. Should render with markdown support for code blocks, links, formatting, etc.\n\n**Current behavior:**\n- Comments display as raw text\n- Code snippets, links, bold/italic not rendered\n\n**Expected:**\n- Markdown formatting rendered in comment display\n- Code blocks with syntax highlighting\n- Links clickable\n- Lists, headers, etc. supported\n\n**Location:** `src/webview/views/DetailsView.tsx` (comment display section)","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-29T12:10:26.143399-08:00","updated_at":"2025-12-01T17:17:27.957323-08:00","closed_at":"2025-12-01T17:17:27.957323-08:00","labels":["ui"],"comments":[{"id":25,"issue_id":"vsbeads-rtk","author":"jason","text":"**Estimate: Easy-Medium (~1-1.5 hours)**\n\nWhat's needed:\n1. Add a markdown library (e.g., `marked`, `react-markdown`, or `micromark`)\n2. Replace plain text comment rendering with markdown-rendered output\n3. Add CSS for markdown elements (code blocks, links, lists)\n4. Sanitize HTML output for security\n\nComplexity factors:\n- No markdown lib currently installed - need to add one\n- VS Code webviews have restrictions on external resources\n- Syntax highlighting would add complexity (optional)\n- Need to handle CSS styling for markdown elements\n\n~1 hour for basic markdown, +30min if syntax highlighting wanted.","created_at":"2025-12-02T00:42:01Z"},{"id":26,"issue_id":"vsbeads-rtk","author":"jason","text":"# HERE\n\n**THERE**","created_at":"2025-12-02T01:16:57Z"}]} -{"id":"vsbeads-rz9","title":"Test: code-server vs OpenVSCode Server for local dev","description":"Compare the two VS Code in browser options for our use case.\n\n## Test Plan\n\n### OpenVSCode Server (Gitpod) - Test First\n```bash\ndocker run -p 3000:3000 gitpod/openvscode-server\n```\n- Open in Chrome DevTools MCP\n- Install vscode-beads VSIX\n- Verify extension loads, webviews work\n- Check console access for errors\n\n### code-server (Coder) - Compare\n```bash\nbrew install code-server\ncode-server --bind-addr localhost:8080\n```\n- Same tests as above\n- Compare: auth, settings persistence, extension compat\n\n## Decision Criteria\n- Extension installation ease\n- Webview support (critical for vscode-beads)\n- Console/error visibility\n- Closer to desktop VS Code behavior","notes":"## Final Verdict\n\n**Winner: code-server** for vscode-beads development on macOS.\n\n---\n\n## OpenVSCode Server (Docker) - PARTIAL ⚠️\n\n### Setup\n```bash\ndocker run -p 3000:3000 -v $(pwd):/home/workspace:cached gitpod/openvscode-server\n```\n\n### Results\n- ✅ Extension installs and loads\n- ✅ Webviews render correctly\n- ❌ **bd daemon socket blocked** by Docker isolation\n - Error: `connect ECONNREFUSED /home/workspace/.beads/bd.sock`\n\n### CLI Install\n```bash\ndocker exec \u003ccontainer-id\u003e /home/.openvscode-server/bin/openvscode-server \\\n --install-extension /home/workspace/vscode-beads-0.1.0.vsix\n```\n\n**Verdict**: Good for UI testing only, not full extension functionality.\n\n---\n\n## code-server (Native) - SUCCESS ✅\n\n### Setup\n```bash\nbrew install code-server\ncode-server --bind-addr localhost:8080 --auth none /path/to/project\n```\n\n### Results\n- ✅ Extension installs via CLI\n- ✅ Webviews render correctly\n- ✅ **bd daemon socket works** (native macOS access)\n- ✅ Full functionality - issues list, filters, everything\n\n### CLI Install\n```bash\ncode-server --install-extension /path/to/extension.vsix\n```\n\n**Verdict**: Full functionality, recommended for vscode-beads development.\n\n---\n\n## Comparison Table\n\n| Feature | code-server | OpenVSCode Server |\n|---------|-------------|-------------------|\n| Install | `brew install` | Docker only (macOS) |\n| bd socket | ✅ Works | ❌ Blocked |\n| CLI install | ✅ | ✅ |\n| Webviews | ✅ | ✅ |\n| Dev workflow | Full | UI testing only |","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-27T17:38:55.41521-08:00","updated_at":"2025-11-27T18:00:01.424195-08:00","closed_at":"2025-11-27T18:00:01.424195-08:00","dependencies":[{"issue_id":"vsbeads-rz9","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.1978-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-s2c","title":"Add assignee column and filter to Issues view","description":"Add full assignee support to the Issues view:\n\n**Issues list:**\n- Add assignee column (already exists but hidden by default)\n- Add assignee filter option using known assignee values (not free-form)\n- Filter dropdown should show list of assignees extracted from current beads\n- Include \"Unassigned\" as a filter option\n\n**Details panel:**\n- Display assignee in view mode\n- Edit assignee in edit mode with quick actions:\n - \"Assign to me\" button\n - \"Unassign\" button\n - Dropdown of known assignees (extracted from beads)\n\n**User identity configuration:**\n- Need to know current user's ID for \"Assign to me\" feature\n- Research how beads handles this (check `--actor` flag, `$BD_ACTOR`, `$USER`)\n- Default to `$USER` environment variable\n- Allow user to configure their ID in VS Code settings (e.g., `beads.userId`)\n\n**Implementation notes:**\n- Extract unique assignees from beads data for filter/edit dropdowns\n- Extension needs to pass user ID to webview\n- Check upstream beads for how actor/assignee is determined","design":"**Research needed:**\n1. How does `bd` CLI determine the actor? (check `--actor` flag usage)\n2. Is there a beads config for default user?\n3. What format should user IDs be in? (username, email, etc.)\n\n**VS Code settings to add:**\n```json\n{\n \"beads.userId\": {\n \"type\": \"string\",\n \"default\": \"\",\n \"description\": \"Your user ID for 'Assign to me'. Defaults to $USER if not set.\"\n }\n}\n```\n\n**Webview changes:**\n1. IssuesView - add assignee filter (faceted like status/priority/type)\n2. DetailsView - replace text input with:\n - Quick action buttons: [Assign to me] [Unassign]\n - Dropdown for selecting other known assignees\n\n**Extension changes:**\n1. Read `beads.userId` setting (fallback to process.env.USER)\n2. Pass userId to webview via postMessage or initial state\n3. Extract unique assignees from beads list to send to webview","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-09T23:51:03.090964-08:00","updated_at":"2025-12-10T00:46:57.879127-08:00","closed_at":"2025-12-10T00:46:57.879127-08:00","labels":["ui"]} -{"id":"vsbeads-s4i","title":"Refresh project list when workspace folders change","description":"When adding or removing folders from VS Code workspace, the beads project list doesn't update. Removed folders still appear in the project dropdown.\n\n**Expected behavior:**\n- Adding a folder with `.beads/` should add it to the project list\n- Removing a folder should remove it from the project list\n- If the active project is removed, switch to another available project\n\n**Fix:**\nListen to `vscode.workspace.onDidChangeWorkspaceFolders` event and call `projectManager.discoverProjects()` to refresh.","status":"closed","priority":2,"issue_type":"bug","estimated_minutes":120,"created_at":"2025-12-03T00:26:43.500466-08:00","updated_at":"2025-12-04T15:05:32.566081-08:00","closed_at":"2025-12-04T15:05:32.566081-08:00","labels":["backend","ux"]} {"id":"vsbeads-t5e","title":"Research external issue tracker sync (GitHub/GitLab/Jira)","description":"While beads is great for managing context and agent work, teams often need a subset of beads to sync with external trackers (GitHub Issues, GitLab, Jira, etc.).\n\nResearch questions:\n1. What upstream beads features exist for external sync? (check `external_ref` field usage)\n2. Are there examples or docs for bi-directional sync?\n3. What's the recommended workflow - manual link via `external_ref` or automated sync?\n4. Any plugins or integrations available?\n\nGoal: Understand what's possible today and what gaps exist for team workflows.","status":"open","priority":3,"issue_type":"task","estimated_minutes":180,"created_at":"2025-12-01T16:40:03.527205-08:00","updated_at":"2025-12-04T11:59:04.481436-08:00","labels":["dx","research"]} -{"id":"vsbeads-tbq","title":"Click-outside handler doesn't detect clicks outside the webview panel","description":"The `useClickOutside` hook only detects clicks within the same webview panel. Clicking on other parts of VS Code (including the Details panel, editor, sidebar, etc.) does not trigger the handler, leaving menus/dropdowns open.\n\n**Current behavior:** Menu stays open when clicking outside the webview\n**Expected behavior:** Menu closes when focus leaves the webview\n\n**Possible solutions:**\n1. Listen for `blur` event on the webview/window\n2. Use VS Code's `onDidChangeWindowState` or focus events\n3. Close menus on any navigation/selection change","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-09T23:45:41.296028-08:00","updated_at":"2025-12-10T00:31:02.976024-08:00","closed_at":"2025-12-10T00:31:02.976024-08:00","labels":["ui"]} {"id":"vsbeads-tom","title":"Create webview frame helper utilities","description":"Build helper utilities for accessing VS Code webview content in Playwright.\n\n**Challenges:**\n- Webviews render in nested iframes\n- Frame URLs/names may not be predictable\n- Need to wait for webview to fully render\n\n**Approach:**\n- Create `getWebviewFrame(page, viewId)` helper\n- Use `frameLocator()` with VS Code webview patterns\n- Add retry/wait logic for frame availability\n- Document the iframe structure for future reference","acceptance_criteria":"- Helper reliably locates Issues panel webview\n- Helper reliably locates Details panel webview\n- Works across code-server reloads\n- Clear error messages when webview not found","status":"open","priority":2,"issue_type":"task","estimated_minutes":120,"created_at":"2025-12-05T00:23:02.709382-08:00","updated_at":"2025-12-05T01:14:44.700141-08:00","labels":["testing"],"dependencies":[{"issue_id":"vsbeads-tom","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.357135-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-tom","depends_on_id":"vsbeads-ur9","type":"blocks","created_at":"2025-12-05T00:23:30.07375-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-toz","title":"Architecture review: extension and React component design","description":"Review the vscode-beads extension architecture from an expert perspective.\n\nAreas to evaluate:\n1. **Component duplication** - Where are we duplicating code that should be extracted?\n2. **Common components** - Are shared components in `common/` well-designed and reusable?\n3. **Hacks/workarounds** - Identify technical debt and quick fixes that need proper solutions\n4. **State management** - Is the webview↔extension messaging pattern clean?\n5. **View structure** - Are views (IssuesView, DetailsView, etc.) well-organized?\n6. **CSS organization** - Is `styles.css` maintainable or becoming a dumping ground?\n7. **Type safety** - Are types properly shared between extension and webview?\n\nDeliverable: Report with findings, recommendations, and priority for improvements.","status":"open","priority":2,"issue_type":"task","estimated_minutes":300,"created_at":"2025-12-01T17:23:41.507236-08:00","updated_at":"2025-12-04T11:58:47.201579-08:00","labels":["dx","research"]} -{"id":"vsbeads-tty","title":"Improve dependency/dependent display in Details view - show type + title","description":"The \"Depends On\" and \"Blocks\" sections in Details view currently only show issue IDs as badges. Hard to understand what issues are without navigating back and forth.\n\nMinimum: Show type + title alongside ID\nIdeal: Mini issues list with type, title, status, priority columns\n\nLocation: `src/webview/views/DetailsView.tsx` (deps-list sections)","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-27T20:47:54.611811-08:00","updated_at":"2025-11-28T00:24:25.518796-08:00","closed_at":"2025-11-28T00:24:25.518796-08:00"} {"id":"vsbeads-u0wk","title":"Implicit parent-child from hierarchical IDs not reflected in daemon/UI","notes":"## Problem\nHierarchical bead IDs (e.g., `bd-abc.1`, `bd-abc.2`) create an **implicit** parent-child relationship based purely on the ID naming convention. This implicit relationship:\n\n1. **Blocks adding explicit dependencies** - Trying to add a parent-child dependency returns: \"cannot add dependency: X is already a child of Y. Children inherit dependency via hierarchy.\"\n2. **May not be reflected in daemon/UI** - The implicit relationship from ID naming may not be exposed through the daemon API, so vscode-beads can't display it\n\n## How Hierarchical IDs Work (upstream beads)\n- When creating with `--parent`, `bd create` does TWO things:\n 1. Generates hierarchical ID: `parent-id.N` (e.g., `vsbeads-515e.1`)\n 2. Adds explicit `parent-child` type dependency\n- The `isChildOf()` function in `dep.go` and `server_labels_deps_comments.go` checks if an ID follows the hierarchical pattern\n- Fix bd-nim5 added validation to prevent \"deadlock\" from explicit deps on implicit relationships\n\n## Key Code Locations (upstream)\n- `cmd/bd/dep.go:30` - `isChildOf()` function\n- `cmd/bd/dep.go:142-146` - Check that blocks child→parent deps\n- `internal/rpc/server_labels_deps_comments.go:15-24` - Same check in daemon\n- `internal/storage/sqlite/ids.go:44-64` - `IsHierarchicalID()` parsing\n\n## Impact on vscode-beads\nIf issues have hierarchical IDs but the daemon doesn't expose the implicit parent-child relationship:\n- Parent/child won't show in dependency display\n- Can't manually add the relationship (blocked)\n- Possible data inconsistency\n\n## Investigation Needed\n- Check if daemon returns implicit hierarchy in dependency queries\n- Verify how Linear imports or other sources create hierarchical IDs\n- Determine if this is an upstream beads issue or vscode-beads display issue","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-27T20:46:41.636091-08:00","updated_at":"2025-12-27T20:51:17.967887-08:00","closed_at":"2025-12-27T20:51:17.967887-08:00","close_reason":"Superseded by vsbeads-3ly3 (P0 with full details)","labels":["backend","daemon"]} {"id":"vsbeads-u5xh","title":"Details panel children list vanishes when bead is updated","description":"When viewing a bead in the details panel, if that bead gets updated, the children list disappears from the panel. The list should remain visible and update with the new data.","notes":"---\n2025-12-29: Identified root cause - race condition in loadData()\n\n**Problem:** Multiple refresh() calls result in concurrent loadData() executions.\nResponses can complete out of order, with stale data overwriting newer data.\n\n**Fix:** Added request sequencing in BeadDetailsViewProvider:\n- loadSequence counter increments on each loadData() call\n- Before applying response, check if thisRequest === loadSequence\n- Discard stale responses (older requests that completed late)\n\n**Files changed:**\n- src/providers/BeadDetailsViewProvider.ts\n\nNeeds testing to verify fix.","status":"closed","priority":0,"issue_type":"bug","assignee":"jdillon","created_at":"2025-12-23T17:54:44.777683-08:00","updated_at":"2025-12-29T14:43:18.70786-08:00","closed_at":"2025-12-29T14:43:18.70786-08:00","close_reason":"Fixed race condition with request sequencing in loadData()","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-u5xh","depends_on_id":"vsbeads-un3l","type":"parent-child","created_at":"2025-12-29T13:43:32.923121-08:00","created_by":"daemon"}]} {"id":"vsbeads-ua2","title":"Research: code execution skill as MCP replacement","description":"Future work: Build skill with TypeScript utilities as eventual MCP replacement.\n\n**Approach:**\n- `.claude/skills/vscode-dev/SKILL.md` + supporting files\n- Functions: `reloadWindow()`, `clickElement()`, `getElementContent()`\n- Execute via Bash, return minimal output\n- Eventually deprecate Chrome DevTools MCP dependency\n\n**Note:** Skills share parent context (no isolation), but if output is minimal, that's fine.","status":"open","priority":3,"issue_type":"task","estimated_minutes":180,"created_at":"2025-11-28T21:52:30.285657-08:00","updated_at":"2025-12-04T11:59:31.525211-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-ua2","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:42.143962-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-uak","title":"Research: macOS window screenshot for full Chrome capture","description":"Browser MCP tools only capture page viewport, not full Chrome window (including DevTools).\n\nResearch how to capture full window via macOS:\n- `screencapture -l \u003cwindowid\u003e` requires finding window ID\n- AppleScript can list windows but may need permissions\n- Useful for showing agent what's visible in DevTools panel\n\nLow priority - programmatic console/network access works for most cases.","status":"open","priority":3,"issue_type":"task","estimated_minutes":90,"created_at":"2025-11-27T17:34:17.25294-08:00","updated_at":"2025-12-04T11:59:34.100523-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-uak","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.301246-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-ugm","title":"Stale daemon socket not auto-recovered after reboot","description":"After system reboot, stale socket files remain but daemon is not running. Extension detects socket, tries to connect, gets ECONNREFUSED, but doesn't auto-start because auto-start only triggered when socket file was missing.\n\nUser sees error notification with only \"Show Output\" option - no way to recover without manual intervention.","acceptance_criteria":"- Auto-start triggers when socket exists but connection fails (stale socket)\n- Error notification includes \"Restart Daemon\" action button\n- Stale socket is cleaned up and daemon restarted automatically","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-07T14:17:24.578166-08:00","updated_at":"2025-12-08T17:17:27.661828-08:00","closed_at":"2025-12-08T17:17:27.661828-08:00","labels":["daemon","ux"]} {"id":"vsbeads-un3l","title":"UI Improvements Sprint 2025-12-29","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-12-29T11:39:29.634057-08:00","created_by":"jason","updated_at":"2025-12-30T01:46:19.212774-08:00","closed_at":"2025-12-30T01:46:19.21278-08:00","labels":["ui"]} {"id":"vsbeads-ur9","title":"Set up Playwright with Bun and TypeScript","description":"Initialize Playwright in the project with proper TypeScript and Bun configuration.\n\n**Tasks:**\n- Install `@playwright/test` as dev dependency\n- Create `playwright.config.ts` with sensible defaults\n- Set up `testsuite/` directory structure\n- Add npm scripts: `test:integration`, `test:integration:headed`, `test:integration:ui`\n- Configure for Chromium-only (code-server target)\n- Document local test running workflow","acceptance_criteria":"- `bun run test:integration` runs successfully (even with empty test file)\n- TypeScript types work in test files\n- Config includes proper timeouts for code-server startup","status":"open","priority":2,"issue_type":"task","estimated_minutes":60,"created_at":"2025-12-05T00:23:00.768062-08:00","updated_at":"2025-12-05T01:14:41.119755-08:00","labels":["dx","testing"],"dependencies":[{"issue_id":"vsbeads-ur9","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.221581-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-vlk","title":"viewContainer/title buttons not showing in BEADS header","description":"Configured beads.switchProject and beads.refresh commands in viewContainer/title menu with `when: viewContainer == beads`, but no buttons appear in the BEADS header. Only the [...] overflow menu shows.","design":"VS Code does not support extension-contributed inline buttons in viewContainer title bars. The `viewContainer/title` menu contribution point only adds items to the overflow/context menu.\n\nThis is confirmed by microsoft/vscode#74221 which was closed as out-of-scope.","notes":"**Finding:** This is a VS Code platform limitation, not a bug in our extension.\n\nPer [microsoft/vscode#74221](https://github.com/microsoft/vscode/issues/74221):\n- Built-in view containers (Run and Debug, Search) can have title bar buttons\n- Extension view containers can ONLY add to overflow menu (...)\n- Feature request was rejected as \"out-of-scope\"\n\n**Current workaround:** Use `view/title` to add buttons to individual view headers (e.g., Issues panel title bar) instead of the container title bar.\n\n**Status:** Won't fix - VS Code limitation","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-26T18:30:18.437949-08:00","updated_at":"2025-11-27T00:26:50.564762-08:00","closed_at":"2025-11-27T00:26:50.564762-08:00"} {"id":"vsbeads-vp1","title":"Implement Kanban board as editor panel","description":"Reimplement Kanban board as an editor panel instead of sidebar webview. Sidebar is too narrow for a useful Kanban view.","design":"Use `vscode.window.createWebviewPanel()` to open in editor area.\n- Register command to open Kanban\n- Full-width columns for drag-and-drop\n- Cards show status, priority, assignee\n- Drag between columns to change status","status":"open","priority":3,"issue_type":"feature","estimated_minutes":600,"created_at":"2025-11-26T18:39:31.95544-08:00","updated_at":"2025-12-04T11:59:40.103462-08:00","labels":["ui"]} -{"id":"vsbeads-vq3","title":"Improve created/updated timestamp display in Details panel footer","description":"The created/updated/closed timestamps at the bottom of the Details panel need a better layout. Current display is basic and doesn't make good use of space.\n\n**Consider:**\n- Better visual treatment (less prominent, more metadata-like)\n- Relative time display (\"2 hours ago\") with full datetime on hover\n- Maybe move to a collapsible metadata section\n- Use the Timestamp component with appropriate format","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-12-09T23:54:12.801467-08:00","updated_at":"2025-12-11T01:34:51.905093-08:00","closed_at":"2025-12-11T01:34:51.905093-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-vq3","depends_on_id":"vsbeads-7cp","type":"parent-child","created_at":"2025-12-10T02:03:50.042388-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-w2x","title":"Write first E2E test: Issues panel loads and displays data","description":"Write the first real E2E test that validates the Issues panel works.\n\n**Test scenario:**\n1. Open code-server with test beads project\n2. Navigate to Beads sidebar\n3. Verify Issues panel webview loads\n4. Verify issues from seed data appear in table\n5. Verify status badges display correctly\n\n**This proves:**\n- End-to-end data flow works (bd CLI → backend → webview)\n- Webview helper utilities work\n- Test fixtures work together","acceptance_criteria":"- Test passes locally with `bun run test:integration`\n- Test is readable and documents the user flow\n- Test uses shared selectors (not fragile locators)","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-05T00:23:03.354187-08:00","updated_at":"2025-12-05T01:14:47.066522-08:00","labels":["testing"],"dependencies":[{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.404077-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-dxo","type":"blocks","created_at":"2025-12-05T00:23:30.127404-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-jfa","type":"blocks","created_at":"2025-12-05T00:23:30.189514-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-tom","type":"blocks","created_at":"2025-12-05T00:23:30.579435-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-eby","type":"blocks","created_at":"2025-12-05T00:23:32.194889-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-wgr","title":"UX polish phase 3: complex UI interactions","description":"Continuation of UX improvements from vsbeads-nin. Remaining work involves more complex UI changes:\n\n- Search/filter interaction improvements (vsbeads-57m)\n- Right-click context menus for inline editing (vsbeads-8oc) \n- Labels in dependency references (vsbeads-iur)\n- Label autocomplete with portal-based dropdown (vsbeads-p78, blocked)\n\nThese require more architectural consideration (portals, context menus, search UX design).","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-17T16:42:52.180108-08:00","updated_at":"2025-12-17T16:54:23.622708-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-wgr","depends_on_id":"vsbeads-nin","type":"discovered-from","created_at":"2025-12-17T16:42:59.157847-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-wgr","title":"UX polish phase 3: complex UI interactions","description":"Continuation of UX improvements from vsbeads-nin. Remaining work involves more complex UI changes:\n\n- Search/filter interaction improvements (vsbeads-57m)\n- Right-click context menus for inline editing (vsbeads-8oc) \n- Labels in dependency references (vsbeads-iur)\n- Label autocomplete with portal-based dropdown (vsbeads-p78, blocked)\n\nThese require more architectural consideration (portals, context menus, search UX design).","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-17T16:42:52.180108-08:00","updated_at":"2025-12-17T16:54:23.622708-08:00","labels":["ui"]} {"id":"vsbeads-wk9","title":"Make badge colors configurable via settings","description":"Expose status, priority, and type badge colors as VS Code settings so users can customize them. Should support both background and text colors for each value, with consideration for light/dark themes.","design":"Settings structure could be:\n- `beads.colors.priority.P0`: { bg, text }\n- `beads.colors.priority.P1`: { bg, text }\n- `beads.colors.status.open`: { bg, text }\n- `beads.colors.type.bug`: { bg, text }\n\nOr a single object per category. Consider theme-aware defaults.","status":"open","priority":3,"issue_type":"feature","estimated_minutes":120,"created_at":"2025-11-26T17:57:59.132401-08:00","updated_at":"2025-12-04T12:00:09.336584-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-wk9","depends_on_id":"vsbeads-1le","type":"parent-child","created_at":"2025-12-10T02:09:42.69549-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-xbq","title":"UI blocked when daemon not running - no project switching possible","description":"When daemon connection fails (ENOENT socket error), the entire UI is blocked by ErrorMessage component. User cannot switch to a different project that might have a working daemon.\n\nRoot causes:\n1. App.tsx renders only ErrorMessage when there's an error - no project selector\n2. DashboardView has no project selector at all (IssuesView does)\n3. Need \"Start Daemon\" button for socket errors","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-02T22:57:17.513308-08:00","updated_at":"2025-12-02T23:43:37.817589-08:00","closed_at":"2025-12-02T23:43:37.817589-08:00","labels":["daemon","ui","ux"]} -{"id":"vsbeads-xd5","title":"Test protected branch workflow","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-29T13:45:16.869968-08:00","updated_at":"2025-11-29T13:45:35.922513-08:00","closed_at":"2025-11-29T13:45:35.922513-08:00"} {"id":"vsbeads-xgn","title":"Refine browser-task agent instructions","description":"Based on testing results, refine:\n\n- System prompt for optimal response format\n- Standard task patterns (reload, click sequence, verify)\n- What to include/exclude in summaries\n- Error reporting format","status":"open","priority":2,"issue_type":"task","estimated_minutes":120,"created_at":"2025-11-28T21:52:30.218145-08:00","updated_at":"2025-12-04T11:58:49.641387-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-xgn","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:42.094448-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-xgn","depends_on_id":"vsbeads-hgm","type":"blocks","created_at":"2025-11-28T21:52:49.395613-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-xkk","title":"Improve Add Dependency UX - support all dependency types","description":"Current \"Add Dependency\" input only creates \"blocks\" type dependencies. Should support all dependency types:\n- blocks (hard blocker)\n- related (soft link)\n- parent-child (epic/subtask)\n- discovered-from (found during work)\n\nOptions:\n1. Dropdown to select type before adding\n2. Syntax like `issue-id:parent-child` or `issue-id --type related`\n3. Separate \"Add as child\" / \"Add related\" buttons\n\nAlso clarify the direction - currently adds a \"blocked by\" relationship (this issue depends on the entered ID).","status":"closed","priority":3,"issue_type":"feature","estimated_minutes":210,"created_at":"2025-12-01T15:51:31.66003-08:00","updated_at":"2025-12-11T02:11:23.39242-08:00","closed_at":"2025-12-11T02:11:23.39242-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-xkk","depends_on_id":"vsbeads-7cp","type":"parent-child","created_at":"2025-12-10T02:11:15.575936-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-xvm","title":"Test external_ref persistence behavior","description":"Test issue to verify external_ref persistence works correctly:\n1. Set via bd update --external-ref\n2. Verify it persists after reload\n3. Verify it displays in UI\n4. Test clearing (empty string vs null)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-16T12:50:13.28358-08:00","updated_at":"2025-12-16T12:51:04.9754-08:00","closed_at":"2025-12-16T12:51:04.9754-08:00","external_ref":"test-cli-ref","labels":["testing"],"dependencies":[{"issue_id":"vsbeads-xvm","depends_on_id":"vsbeads-det","type":"discovered-from","created_at":"2025-12-16T12:51:04.942642-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-xxl","title":"Investigate API parity gaps between bd CLI, daemon, and MCP","description":"Analyze the three beads interfaces to identify coverage gaps and inconsistencies:\n\n1. **bd CLI** - Full-featured command-line interface\n2. **Beads Daemon** - Socket-based API for real-time integration\n3. **Beads MCP** - Model Context Protocol server for AI agents\n\n**Goal:** Document gaps and file upstream issues to encourage API parity across all three interfaces.\n\n**Analysis approach:**\n1. Review latest upstream repo (`~/ws/reference/beads`)\n2. Catalog all operations available in each interface\n3. Create comparison matrix showing coverage\n4. Identify missing operations in daemon/MCP that exist in CLI\n5. Note any behavioral differences for same operations\n6. File issues upstream with specific recommendations\n\n**Expected deliverables:**\n- Comparison matrix (CLI vs Daemon vs MCP)\n- List of gaps with severity/impact\n- Upstream issues filed (or PR if straightforward)","acceptance_criteria":"- Comparison matrix complete for all major operations\n- Gaps documented with use-case impact\n- At least one upstream issue filed for significant gaps","status":"open","priority":2,"issue_type":"task","estimated_minutes":180,"created_at":"2025-12-05T01:17:15.838445-08:00","updated_at":"2025-12-05T01:17:20.028981-08:00","labels":["dx","research","upstream"]} -{"id":"vsbeads-ycx","title":"Show error notification when bd commands fail","description":"When any bd command fails (via BeadsDaemonClient or CLI), show an error notification to the user with an option to open the Output console for details.\n\n**Current behavior:**\n- Errors logged to Beads output channel\n- User doesn't see them unless they open Output panel\n\n**Desired behavior:**\n- Show vscode.window.showErrorMessage with error summary\n- Include 'Show Output' button to open Beads output channel\n- Keep detailed error in output channel for debugging","status":"closed","priority":1,"issue_type":"feature","estimated_minutes":60,"created_at":"2025-12-04T15:15:29.880095-08:00","updated_at":"2025-12-04T15:18:05.101147-08:00","closed_at":"2025-12-04T15:18:05.101147-08:00","labels":["backend","ux"]} {"id":"vsbeads-yhok","title":"Test Epic for hierarchy demo","status":"tombstone","priority":2,"issue_type":"epic","created_at":"2025-12-27T20:52:48.814844-08:00","updated_at":"2025-12-29T11:36:43.338738-08:00","deleted_at":"2025-12-29T11:36:43.338738-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"epic"} {"id":"vsbeads-yhok.2","title":"Child task of epic","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-27T20:53:03.840173-08:00","updated_at":"2025-12-29T11:36:43.340845-08:00","dependencies":[{"issue_id":"vsbeads-yhok.2","depends_on_id":"vsbeads-yhok","type":"parent-child","created_at":"2025-12-27T20:53:03.846123-08:00","created_by":"daemon"}],"deleted_at":"2025-12-29T11:36:43.340845-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"} {"id":"vsbeads-yjr","title":"Create browser-task sub-agent configuration","description":"Create `.claude/agents/browser-task.md` with:\n\n```markdown\n---\nname: browser-task\ndescription: Execute multi-step browser automation tasks in VS Code/code-server\ntools: mcp__chrome-devtools__*\nmodel: haiku\n---\n\nExecute browser automation tasks and return minimal summaries.\nDo not return full DOM snapshots. Summarize results concisely.\nIf errors occur, return specific error details.\n```\n\n**Questions to verify:**\n- Can we use glob `mcp__chrome-devtools__*` or must list each tool?\n- Should model be haiku (fast) or sonnet (better instruction following)?","status":"open","priority":1,"issue_type":"task","estimated_minutes":60,"created_at":"2025-11-28T21:52:14.912814-08:00","updated_at":"2025-12-04T11:58:45.105085-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-yjr","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:41.99215-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-zbt","title":"Test: OpenVSCode Server native (non-Docker) for bd socket access","description":"Test running OpenVSCode Server directly on macOS (not in Docker) to get native bd daemon socket access.\n\n## Motivation\nDocker isolation blocks access to `bd.sock` Unix socket. Native run should have full socket access.\n\n## Test Plan\n1. Install openvscode-server via npm or download release\n2. Run on localhost:8080 (different port from Docker instance)\n3. Install vscode-beads VSIX\n4. Verify Beads panel connects to daemon successfully\n5. Compare dev experience with Docker version\n\n## Success Criteria\n- Extension loads\n- Webviews work\n- bd daemon socket connects (no ECONNREFUSED)\n- Issues display in panel","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-27T17:53:52.58167-08:00","updated_at":"2025-11-27T17:57:42.340387-08:00","closed_at":"2025-11-27T17:57:42.340387-08:00","dependencies":[{"issue_id":"vsbeads-zbt","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.172572-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-zkc","title":"Test: code-server for native macOS dev with bd socket access","description":"Test code-server (Coder) running natively on macOS for vscode-beads development.\n\n## Motivation\n- openvscode-server only available via Docker on macOS\n- Docker isolation blocks bd daemon socket access\n- code-server runs natively, should have full socket access\n\n## Setup\n```bash\nbrew install code-server\ncode-server --bind-addr localhost:8080\n```\n\n## Test Plan\n1. Install code-server via brew\n2. Start on localhost:8080\n3. Install vscode-beads VSIX\n4. Verify Beads panel connects to bd daemon\n5. Test Chrome DevTools MCP integration\n6. Document CLI options for extension management\n\n## Success Criteria\n- Extension loads\n- Webviews work \n- bd daemon socket connects (no ECONNREFUSED)\n- Issues display in panel","notes":"## Results - SUCCESS ✅\n\n### Setup\n```bash\nbrew install code-server\ncode-server --bind-addr localhost:8080 --auth none /path/to/project\n```\n\n### CLI Extension Management\n```bash\ncode-server --install-extension /path/to/extension.vsix\ncode-server --list-extensions\n```\n\n### Test Results\n- ✅ VS Code loads in browser at localhost:8080\n- ✅ Extension installs via CLI\n- ✅ Extension loads after reload + trust folder\n- ✅ Beads tab appears in activity bar\n- ✅ Webviews render correctly\n- ✅ **bd daemon socket connects** (no ECONNREFUSED!)\n- ✅ Issues list displays all 26 issues\n- ✅ Filter controls, project selector work\n\n### Why It Works\ncode-server runs natively on macOS, so it has direct access to the Unix socket at `.beads/bd.sock`. No Docker isolation.\n\n### Dev Workflow\n1. `bun run watch` (local rebuild)\n2. `bun run package` (create VSIX)\n3. `code-server --install-extension vscode-beads-*.vsix`\n4. DevTools MCP: \"Developer: Reload Window\"\n5. Test extension in browser\n\n### Comparison vs OpenVSCode Server (Docker)\n| Feature | code-server | OpenVSCode Server |\n|---------|-------------|-------------------|\n| Install | `brew install` | Docker only on macOS |\n| bd socket | ✅ Works | ❌ Docker isolation |\n| CLI install | ✅ | ✅ |\n| Webviews | ✅ | ✅ |\n\n**Winner: code-server** for vscode-beads development on macOS.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-27T17:57:42.397471-08:00","updated_at":"2025-11-27T17:59:55.75636-08:00","closed_at":"2025-11-27T17:59:55.75636-08:00","dependencies":[{"issue_id":"vsbeads-zkc","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.146686-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-zsy","title":"Add press/click feedback to buttons in webview","description":"Buttons in the webview (like \"Start Daemon\", \"Retry\") don't have clear press feedback. When clicked, there's no visual indication the button was pressed, making it feel unresponsive even when the action is triggered.\n\nAdd `:active` styles or a brief visual state change on click to provide clear feedback.","status":"closed","priority":3,"issue_type":"bug","estimated_minutes":30,"created_at":"2025-12-02T23:18:16.910844-08:00","updated_at":"2025-12-04T15:24:34.601865-08:00","closed_at":"2025-12-04T15:24:34.601865-08:00","labels":["ui","ux"]} -{"id":"vsbeads-zvs","title":"Disable browser context menu on Issues table","description":"The default browser context menu (copy/cut/paste) appears when right-clicking on the Issues table rows. This is meaningless for this use case.\n\nDisable the default context menu. We may add custom context menu items later (see vsbeads-8oc).","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-12-04T16:00:56.015479-08:00","updated_at":"2025-12-04T16:01:29.12802-08:00","closed_at":"2025-12-04T16:01:29.12802-08:00","labels":["ui"]} From 44f662a0b7787fb27ae6a21ba9b3fa6cea697524 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Mon, 26 Jan 2026 01:50:08 -0800 Subject: [PATCH 19/49] chore: remove stale beads.jsonl, use issues.jsonl --- .beads/beads.jsonl | 101 --------------------------------------------- 1 file changed, 101 deletions(-) delete mode 100644 .beads/beads.jsonl diff --git a/.beads/beads.jsonl b/.beads/beads.jsonl deleted file mode 100644 index 061bf6d..0000000 --- a/.beads/beads.jsonl +++ /dev/null @@ -1,101 +0,0 @@ -{"id":"vsbeads-1k7","title":"Test Chrome DevTools MCP for agent browser automation","description":"Quick spike to verify Chrome DevTools MCP works for our use case.\n\n## Install\n```bash\nclaude mcp add chrome-devtools -- npx -y chrome-devtools-mcp@latest\n```\n\n## Test Plan\n\n1. **Navigate** - Open a webpage (e.g., https://example.com)\n2. **Click** - Click on a link/element\n3. **Inspect DOM** - Use `take_snapshot` to see page structure\n4. **Screenshot** - Use `take_screenshot` to capture visual state\n5. **Console access** - Use `list_console_messages` to read dev console output\n6. **Script execution** - Use `evaluate_script` to run `document.title` or `getComputedStyle()`\n\n## Success Criteria\n- Headed browser window opens (Jason can watch)\n- All 6 capabilities work\n- Console messages are accessible (key painpoint)\n\n## Fallback\nIf this doesn't work well, try Playwright MCP instead.","notes":"## Test Results - ALL PASSED\n\n| Capability | Tool | Status |\n|------------|------|--------|\n| Navigate | `navigate_page` | ✅ |\n| Click | `click` | ✅ |\n| DOM Snapshot | `take_snapshot` | ✅ |\n| Screenshot | `take_screenshot` | ✅ (viewport only) |\n| Console access | `list_console_messages` | ✅ |\n| Script execution | `evaluate_script` | ✅ |\n| Computed styles | `evaluate_script` + JS | ✅ |\n\n## Decision\n**Chrome DevTools MCP is the winner** for agent browser automation:\n- Headed mode by default (human can watch)\n- Full console access (key painpoint solved)\n- Script execution for computed styles\n- Network/performance tools available\n\n## Not needed for now\n- Playwright MCP: fallback if chrome-devtools issues arise\n- Browser MCP: less capable, no evaluate_script\n- chrome-inspector-mcp: requires extension, evaluate_script suffices\n\n## Limitations noted\n- Screenshots capture page viewport only, not Chrome UI/DevTools\n- See vsbeads-uak for macOS window capture research","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-27T17:17:05.174573-08:00","updated_at":"2025-11-27T17:39:10.636615-08:00","closed_at":"2025-11-27T17:39:10.636615-08:00","dependencies":[{"issue_id":"vsbeads-1k7","depends_on_id":"vsbeads-q6r","type":"discovered-from","created_at":"2025-11-27T17:17:09.142776-08:00","created_by":"daemon"},{"issue_id":"vsbeads-1k7","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.223845-08:00","created_by":"daemon"}]} -{"id":"vsbeads-1nq","title":"Column menu doesn't close when clicking outside","description":"In the Issues list, the column visibility menu (⋮ button) stays open when clicking outside of it. Should close on click-away like other menus.","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-12-01T15:08:03.146209-08:00","updated_at":"2025-12-01T15:56:32.500857-08:00","closed_at":"2025-12-01T15:56:32.500857-08:00","labels":["ui"]} -{"id":"vsbeads-1vr","title":"Extract Daemon* API types to separate file","description":"Refactor daemon API types out of types.ts into a dedicated file (e.g., daemon-types.ts).\n\nCurrent inline types to extract:\n- `DaemonBeadDependency` (already defined)\n- `DaemonComment` (inline in issueToWebviewBead signature)\n- Full daemon issue structure (the large inline type in issueToWebviewBead)\n\nBenefits:\n- Clear separation between daemon API types and internal/webview types\n- Easier to update when daemon API changes\n- Better documentation of the daemon contract","status":"open","priority":3,"issue_type":"chore","estimated_minutes":90,"created_at":"2025-11-28T15:55:07.524718-08:00","updated_at":"2025-12-04T11:59:33.211027-08:00","labels":["backend"]} -{"id":"vsbeads-1za","title":"Fix Issues view: sticky header and remove excess padding","description":"Two issues with the Issues view:\n1. Table header scrolls off screen - should be sticky/fixed at top\n2. Unnecessary padding around the list taking up space","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-27T01:37:30.569797-08:00","updated_at":"2025-11-27T02:10:19.754932-08:00","closed_at":"2025-11-27T02:10:19.754932-08:00"} -{"id":"vsbeads-33u","title":"Add search clear button to Issues panel","description":"Add a clear (×) button inside the search input field to quickly clear the search text.\n\nStandard UX pattern - shows when there's text in the search field.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-27T19:08:09.666845-08:00","updated_at":"2025-11-27T19:42:30.460018-08:00","closed_at":"2025-11-27T19:42:30.460018-08:00","comments":[{"id":5,"issue_id":"vsbeads-33u","author":"jason","text":"Closed prematurely - need user verification","created_at":"2025-11-28T03:37:32Z"}]} -{"id":"vsbeads-34v","title":"Add static filter favorites with \"Not Closed\" default","description":"Initial implementation of filter favorites. Add a dropdown with static preset filter combinations, defaulting to \"Not Closed\".","design":"**Implementation:**\n1. Add favorites dropdown next to \"+ Filter\" button\n2. Static presets:\n - \"All\" - no filters\n - \"Not Closed\" - status: open, in_progress, blocked (default)\n - \"Active\" - status: in_progress, blocked\n3. On load, apply \"Not Closed\" preset\n4. Selecting a preset replaces current filters\n5. Manual filter changes clear the preset selection (show as \"Custom\")\n\n**UI placement:**\n`[Favorites ▾] [+ Filter] [Clear]`\n\nOr integrate into existing filter UI as first option in the filter menu.","acceptance_criteria":"- Favorites dropdown visible in filter toolbar\n- \"Not Closed\" applied by default on panel load\n- Selecting preset updates filter chips\n- Clear button resets to \"All\"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-26T23:34:31.948083-08:00","updated_at":"2025-11-26T23:36:12.283982-08:00","closed_at":"2025-11-26T23:36:12.283982-08:00"} -{"id":"vsbeads-385","title":"Table should stretch to fill container width","description":"After fixing column resize (table-layout: fixed + colgroup), the table no longer stretches to fill the panel width. There's a visible gap between the right edge of the table and the panel splitter.\n\nExpected: Table fills available width, with columns resizable within that space.\nActual: Table width is sum of column widths, leaving empty space on right.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-01T15:29:34.045547-08:00","updated_at":"2025-12-01T15:56:32.38194-08:00","closed_at":"2025-12-01T15:56:32.38194-08:00","labels":["ui"]} -{"id":"vsbeads-3cn","title":"Agent-Driven VS Code Extension Development","description":"Enable Claude to effectively develop and debug VS Code extensions through browser automation and MCP integration.\n\nGoals:\n- Run VS Code in a browser (code-server or VS Code Web) with locally-built extensions\n- Control VS Code via MCP (Browser MCP, Chrome DevTools MCP, or Playwright)\n- Access debugging tools: screenshots, logs, inspector, terminal output\n- Enable human participation via VNC/X11 for guidance and review\n\nSuccess criteria:\n- Claude can start/stop VS Code, reload extensions, run commands\n- Claude can see UI state, logs, and errors programmatically\n- Jason can observe and guide Claude's actions in real-time","status":"open","priority":2,"issue_type":"epic","estimated_minutes":1800,"created_at":"2025-11-27T13:28:48.987495-08:00","updated_at":"2025-12-04T11:58:55.337807-08:00","labels":["dx"],"comments":[{"id":2,"issue_id":"vsbeads-3cn","author":"jason","text":"Context is a problem...","created_at":"2025-11-28T03:11:56Z"},{"id":21,"issue_id":"vsbeads-3cn","author":"jason","text":"a very big problem","created_at":"2025-11-28T04:53:09Z"},{"id":22,"issue_id":"vsbeads-3cn","author":"jason","text":"Initial design, we moved on to some real exploration on wonderland/platform to test with mobile-mcp. Will follow up here after more work is done there.","created_at":"2025-12-01T02:09:06Z"}]} -{"id":"vsbeads-3rk","title":"Test issue with multiple labels","description":"Testing labels overflow indicator","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-01T14:55:15.765599-08:00","updated_at":"2025-12-01T15:12:56.122436-08:00","closed_at":"2025-12-01T15:12:56.122436-08:00","labels":["a","b","c","d","dx","e","ui"]} -{"id":"vsbeads-3zm","title":"Filter menu UX improvements: submenu indicators and click-away dismiss","description":"Two issues with the filter menu:\n\n1. **Submenu indicators missing**: When clicking the filter menu, it's not clear that the first menu item leads to submenus. There should be visual treatment (arrow/chevron) to indicate there's another menu before a selection is made.\n\n2. **Dismiss behavior**: The filter button requires multiple clicks to dismiss if you were just looking. Should dismiss as soon as the user clicks away from the menu (standard click-outside-to-close behavior).","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-11-27T13:31:46.108524-08:00","updated_at":"2025-11-30T17:32:31.489179-08:00","closed_at":"2025-11-30T17:32:31.489179-08:00","labels":["ui"]} -{"id":"vsbeads-49u","title":"Investigate: estimated_minutes field not settable via bd CLI","description":"The `estimated_minutes` field exists in the beads schema (per daemon API docs) but `bd update` doesn't have an `--estimate` flag to set it.\n\nQuestions:\n1. Is this field supported at all in current beads?\n2. Is there a different way to set it (create only? direct JSONL edit?)\n3. Should we file upstream issue to add `--estimate` flag?\n\nWithout ability to set estimates, the Estimate column in vscode-beads is useless.","notes":"---\n\n**2025-12-04 Update**: ✅ **FIXED in v0.29.0!** The `--estimate` / `-e` flag is now properly implemented:\n- `bd create --estimate \u003cminutes\u003e`\n- `bd update \u003cid\u003e --estimate \u003cminutes\u003e`\n- Protocol structs have `EstimatedMinutes` field\n\nVerified in local clone at `~/ws/reference/beads`. vscode-beads Estimate column is now usable once users upgrade to beads v0.29.0+.","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-12-01T16:03:02.12189-08:00","updated_at":"2025-12-04T11:47:04.526243-08:00","closed_at":"2025-12-04T11:47:04.526243-08:00","labels":["dx"]} -{"id":"vsbeads-4n2","title":"Improve Details panel UX - consider inline expansion vs separate panel","description":"VS Code WebviewView API has show() but no collapse/hide method. Current behavior: Details panel auto-expands when bead selected but can't auto-collapse when cleared.\n\nOptions to explore:\n- Inline expansion in the Issues list (like a details row)\n- Editor panel instead of sidebar panel\n- TreeView with expandable items\n- Accept limitation with compact empty state (current)","status":"open","priority":3,"issue_type":"feature","estimated_minutes":300,"created_at":"2025-11-26T16:33:59.306123-08:00","updated_at":"2025-12-04T12:00:11.87706-08:00","labels":["ui"]} -{"id":"vsbeads-4rj","title":"Retry button doesn't reload details panel","description":"When clicking Retry after daemon reconnects, the Issues panel reloads but the Details panel does not refresh. Both panels should refresh on retry.","status":"open","priority":3,"issue_type":"bug","estimated_minutes":60,"created_at":"2025-11-29T15:04:48.965543-08:00","updated_at":"2025-12-04T11:59:27.840917-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-4rj","depends_on_id":"vsbeads-5nm","type":"discovered-from","created_at":"2025-11-29T15:04:54.883404-08:00","created_by":"daemon"}]} -{"id":"vsbeads-4uw","title":"Evaluate TanStack Table for Issues list","description":"Consider using TanStack Table (headless) for the Issues table instead of custom resize/sort/filter logic. Would give us battle-tested implementations without UI opinions.\n\nTrade-offs to evaluate:\n- Bundle size impact\n- API learning curve\n- Migration effort from current custom implementation\n- VS Code webview compatibility","status":"open","priority":3,"issue_type":"task","estimated_minutes":180,"created_at":"2025-12-01T15:29:33.996813-08:00","updated_at":"2025-12-04T11:59:23.20143-08:00","labels":["dx","ui"]} -{"id":"vsbeads-56z","title":"Add transient toast feedback for copy/refresh actions","description":"No visual feedback when:\n- Clicking bead ID/title to copy to clipboard\n- Clicking refresh button\n\nNeed transient toast/popup near the action location.","design":"Implement a simple toast component:\n- Positioned near the triggering element\n- Auto-dismisses after 1.5s\n- Small, non-intrusive\n- Use for: copy actions, refresh complete","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-27T00:07:42.824348-08:00","updated_at":"2025-11-27T00:57:29.115178-08:00","closed_at":"2025-11-27T00:57:29.115178-08:00","comments":[{"id":1,"issue_id":"vsbeads-56z","author":"jason","text":"Toast positioning still being refined","created_at":"2025-11-27T08:56:05Z"}]} -{"id":"vsbeads-5c0","title":"Sub-agent browser automation to reduce context bloat","description":"Use sub-agents with isolated context windows to handle Chrome DevTools MCP operations, preventing context bloat in main conversation.\n\n**Problem:** Chrome DevTools MCP returns ~400 lines (full a11y tree) after every action, burning context fast.\n\n**Solution:** Delegate browser operations to short-lived sub-agents that:\n- Have their own context window (bloat stays there)\n- Return only minimal summaries to main agent\n- Batch multiple operations per invocation\n\n**Approach:**\n1. Create `browser-task` sub-agent with only Chrome DevTools MCP tools\n2. Focused instructions: execute task, return minimal summary\n3. Use for: reload window, click sequences, verify UI state","status":"open","priority":2,"issue_type":"epic","estimated_minutes":600,"created_at":"2025-11-28T21:52:14.860652-08:00","updated_at":"2025-12-04T11:58:51.219932-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-28T21:52:42.200798-08:00","created_by":"daemon"},{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-n64","type":"related","created_at":"2025-11-28T21:52:42.256772-08:00","created_by":"daemon"}]} -{"id":"vsbeads-5nm","title":"Mutation watch spams errors when daemon dies","description":"When the beads daemon is killed, the extension spams error output repeatedly:\n\n```\n[ProjectManager] Mutation watch error: Socket error: connect ENOENT /Users/jason/ws/jdillon/vscode-beads/.beads/bd.sock\n[ProjectManager] Mutation watch error: Cannot read properties of null (reading 'filter')\n```\n\nThe \"filter\" error repeats continuously.","design":"## Root Cause\n\n1. **Error spam** (`BeadsDaemonClient.ts:490-510`): `startMutationWatch` used `setInterval` polling every 1s. When daemon dies, every poll failed with socket error - interval kept running forever.\n\n2. **Null filter error** (`BeadsDaemonClient.ts:495`): `mutations.filter()` called but `getMutations` could return null if daemon returned `{success: true}` without data.\n\n3. **No status feedback**: When daemon died, `daemonStatus` never updated.\n\n## Fix Implemented\n\n**BeadsDaemonClient.ts:**\n- Null guards on all array-returning methods (`list`, `ready`, `listComments`, `getMutations`)\n- Replaced `setInterval` with `setTimeout` + exponential backoff (1s -\u003e 2s -\u003e 4s -\u003e ... -\u003e 30s max)\n- Added `disconnected` and `reconnected` events (emit only on state change)\n- Track connection state to avoid duplicate events\n\n**BeadsProjectManager.ts:**\n- Listen for `disconnected`/`reconnected` events instead of generic `error`\n- Update `project.daemonStatus` on disconnect/reconnect\n- Fire `onActiveProjectChanged` to update UI","acceptance_criteria":"- [x] Null guards prevent \"Cannot read properties of null (reading 'filter')\" error\n- [x] Exponential backoff prevents error spam (1s -\u003e 30s max)\n- [x] Single \"Daemon disconnected\" message on disconnect\n- [x] Single \"Daemon reconnected\" message on reconnect\n- [x] daemonStatus updates to \"stopped\"/\"running\" appropriately\n- [ ] Status bar icon changes color on disconnect (UI needs to consume daemonStatus)","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-29T14:17:08.714282-08:00","updated_at":"2025-11-29T15:14:07.810064-08:00","closed_at":"2025-11-29T15:14:07.810064-08:00","dependencies":[{"issue_id":"vsbeads-5nm","depends_on_id":"vsbeads-ba5","type":"related","created_at":"2025-11-29T14:22:06.235038-08:00","created_by":"daemon"}]} -{"id":"vsbeads-65h","title":"Add label filter option to issues list","description":"Allow filtering issues by label in the issues list view. Could be a dropdown/chip selector similar to existing status filters.","status":"open","priority":2,"issue_type":"feature","estimated_minutes":150,"created_at":"2025-11-28T17:39:51.904712-08:00","updated_at":"2025-12-04T11:58:52.723838-08:00","labels":["ui"]} -{"id":"vsbeads-6mx","title":"Support file attachments via beads-attachments directory","description":"Consider supporting file attachments (screenshots, docs) by:\n\n1. Store files in a `beads-attachments/` directory in repo (or on beads-metadata branch)\n2. Extension provides \"Attach file\" action that:\n - Copies/moves file to `beads-attachments/\u003cissue-id\u003e/filename.png`\n - Adds markdown link/embed to issue body or as a comment\n3. Render inline in Details panel when markdown contains `![](beads-attachments/...)`\n\nUse cases:\n- \"Look at this screenshot\" during bug reports\n- Design mockups attached to feature issues\n- Reference docs for complex tasks\n\nQuestions:\n- Store on main branch or beads-metadata branch?\n- Naming convention: `beads-attachments/\u003cissue-id\u003e/` or flat with prefixes?\n- Auto-cleanup when issue is compacted/deleted?","status":"open","priority":4,"issue_type":"feature","estimated_minutes":480,"created_at":"2025-11-30T01:18:31.564585-08:00","updated_at":"2025-12-04T12:00:13.942853-08:00","labels":["ui"]} -{"id":"vsbeads-6qz","title":"Bump minor version on release from main, reset patch to 0","description":"Current bump strategy increments patch version. For main branch releases, should bump minor version (0.x.0 → 0.y.0) and reset patch to 0. This better reflects semantic versioning where main releases are feature releases.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-28T17:04:40.688149-08:00","updated_at":"2025-11-28T21:39:01.557158-08:00","closed_at":"2025-11-28T21:39:01.557158-08:00","labels":["infra"]} -{"id":"vsbeads-7eg","title":"Dynamic updates from daemon events are broken","description":"Extension does not automatically refresh when beads are modified via CLI. Changes made with bd update (e.g., adding labels, updating estimates) don't trigger UI refresh until manual reload.\n\n**Observed:**\n- Added 'test' label to vsbeads-7jw via CLI\n- Extension UI did not update automatically\n- Details panel still shows old labels\n\n**Expected:**\n- Daemon should emit change events\n- Extension should subscribe and refresh affected views\n\n**Impact:** Critical for workflow - users expect real-time updates when CLI and extension are used together.","notes":"**Root Cause:**\n`setupMutationWatching()` (called after daemon auto-start) only called `startMutationWatch()` but never registered the `mutation`, `disconnected`, and `reconnected` event listeners. The polling ran but events went unhandled.\n\n**Fix:**\n1. Moved event listener registration into `setupMutationWatching()`\n2. Refactored `setActiveProject()` to use `setupMutationWatching()` instead of duplicating code\n\n**Files changed:**\n- `src/backend/BeadsProjectManager.ts`","status":"closed","priority":1,"issue_type":"bug","estimated_minutes":60,"created_at":"2025-12-04T12:03:29.191873-08:00","updated_at":"2025-12-04T12:13:41.742744-08:00","closed_at":"2025-12-04T12:13:41.742744-08:00","labels":["backend","daemon"]} -{"id":"vsbeads-7g6","title":"Edit mode: removing labels via X button doesn't persist on save","description":"In Details panel edit mode, clicking X on a label badge and then clicking Save doesn't actually remove the label. The change is lost.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-01T14:56:40.573858-08:00","updated_at":"2025-12-01T15:56:32.557872-08:00","closed_at":"2025-12-01T15:56:32.557872-08:00","labels":["ui"]} -{"id":"vsbeads-7jw","title":"Setup dedicated test workspace for UI testing","description":"Create a separate workspace/project with beads initialized for testing the extension UI, so we don't pollute vscode-beads with test beads.\n\nPossible approaches:\n- Create `test-workspace/` directory with `.beads/` initialized\n- Or use a separate repo entirely\n- Should have sample beads with various states, labels, priorities, dependencies for testing edge cases","status":"open","priority":1,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-01T15:45:24.063029-08:00","updated_at":"2025-12-04T11:58:41.463335-08:00","labels":["dx"]} -{"id":"vsbeads-7ny","title":"Rename \"Beads Dashboard\" references to \"Beads\"","description":"Extension was renamed to \"Beads\" but there are leftover \"Beads Dashboard\" references. Output channel still shows \"Beads Dashboard\" in selector.","design":"Search and replace:\n- Output channel name in extension.ts\n- Any other \"Beads Dashboard\" strings in code/comments\n- Keep historical references in git commits as-is","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-11-26T18:43:02.79866-08:00","updated_at":"2025-11-27T01:18:57.016161-08:00","closed_at":"2025-11-27T01:18:57.016161-08:00"} -{"id":"vsbeads-7ue","title":"Show connection status indicator instead of full error view on disconnect","description":"When daemon disconnects, the entire panel shows an error view with Retry button. Better UX would be a status indicator (green→red) that shows connection state without replacing the panel content.","status":"open","priority":2,"issue_type":"feature","estimated_minutes":210,"created_at":"2025-11-29T15:04:49.017327-08:00","updated_at":"2025-12-04T11:58:48.492907-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-7ue","depends_on_id":"vsbeads-5nm","type":"discovered-from","created_at":"2025-11-29T15:04:54.924745-08:00","created_by":"daemon"}]} -{"id":"vsbeads-868","title":"Ensure all critical daemon operations are logged to output","description":"Hard to debug daemon auto-start because logging may be missing or unclear. Need to verify that all critical operations (daemon start/stop, connection state changes, errors) are logged to the Beads output channel with clear context.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-29T15:11:28.197113-08:00","updated_at":"2025-12-02T23:51:38.589224-08:00","closed_at":"2025-12-02T23:51:38.589224-08:00","labels":["daemon","dx"],"dependencies":[{"issue_id":"vsbeads-868","depends_on_id":"vsbeads-5nm","type":"discovered-from","created_at":"2025-11-29T15:11:33.979743-08:00","created_by":"daemon"}]} -{"id":"vsbeads-8et","title":"Labels column: inconsistent overflow indicators (... vs +N)","description":"In the Issues list Labels column, overflow is shown inconsistently:\n- Sometimes shows `...` after labels\n- Sometimes shows `+1` or `+N` after labels\n\nShould pick one pattern and use it consistently. `+N` is clearer as it tells you how many more labels exist.","notes":"Current state: Changed from 2-label limit + +N to show all labels with CSS ellipsis overflow. However, can't verify the fix because column resize is broken (vsbeads-oqb) - can't make column smaller to test overflow behavior.\n\nBlocked by: vsbeads-oqb (column resize)\n\nChanges made:\n- IssuesView.tsx: Removed slice(0,2) limit, now renders all labels \n- styles.css: Restored text-overflow: ellipsis on .labels-cell","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-30T01:12:05.180628-08:00","updated_at":"2025-12-01T15:56:32.33104-08:00","closed_at":"2025-12-01T15:56:32.33104-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-8et","depends_on_id":"vsbeads-oqb","type":"blocks","created_at":"2025-12-01T15:12:55.315222-08:00","created_by":"daemon"}]} -{"id":"vsbeads-8oc","title":"Add right-click context menu for type/status/priority in Issues list","description":"Add context menu actions to the Issues list so users can right-click on type/status/priority badges to change them inline.\n\nSimilar to the inline editing in Details view (vsbeads-fwp), but using right-click instead of click since the list rows already have click-to-select behavior.\n\n## Requirements\n- Right-click on type badge → dropdown menu to change type\n- Right-click on status badge → dropdown menu to change status \n- Right-click on priority badge → dropdown menu to change priority\n- Changes auto-save (no confirmation needed)\n- Use same ColoredSelect dropdown component from Details view\n\n## Notes\n- Click on row = select issue (existing behavior)\n- Right-click on badge = edit that field (new behavior)","status":"open","priority":3,"issue_type":"feature","estimated_minutes":210,"created_at":"2025-12-01T00:39:43.583441-08:00","updated_at":"2025-12-04T11:59:24.877438-08:00","labels":["ui"],"comments":[{"id":24,"issue_id":"vsbeads-8oc","author":"jason","text":"**Estimate: Medium (~1-2 hours)**\n\nWhat's needed:\n1. Add `onContextMenu` handlers to type/status/priority badge cells in IssuesView\n2. Render a positioned dropdown menu on right-click (similar to column menu)\n3. Wire up the change to call `onUpdateBead` (already exists but unused in IssuesView)\n4. Reuse `ColoredSelect` or create a context menu variant\n\nComplexity factors:\n- We already have dropdown/menu patterns (column menu, preset dropdown)\n- We already have `ColoredSelect` component from DetailsView\n- Main work is positioning the context menu at click coordinates\n- Need to handle click-outside dismiss (pattern already exists)\n\nThe patterns exist, it's mostly wiring them together in a new context.","created_at":"2025-12-02T00:41:30Z"}]} -{"id":"vsbeads-8p0","title":"Detect uninitialized beads projects and show helpful message","description":"When a project has `.beads/` directory but no database (not initialized), the daemon start fails with \"no database path configured\".\n\nCurrent behavior: Shows generic \"Daemon failed to start\" error.\n\nDesired behavior:\n1. Detect uninitialized state (has .beads/ but no beads.db)\n2. Show specific message: \"Beads not initialized. Run `bd init` in this directory.\"\n3. Future: Could offer to auto-initialize or show a dialog with \"Initialize\" button\n\nRelated error: `Error: no database path configured (run 'bd init' or set BEADS_DB)`","status":"open","priority":2,"issue_type":"feature","estimated_minutes":120,"created_at":"2025-12-02T23:16:32.248375-08:00","updated_at":"2025-12-04T11:58:46.044557-08:00","labels":["daemon","ui","ux"]} -{"id":"vsbeads-8pl","title":"Reduce Dashboard view minimum height","description":"Dashboard stats section takes too much vertical space, partially cutting off the Issues panel below. Need more compact layout for the stat boxes.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-27T01:01:36.914842-08:00","updated_at":"2025-11-27T01:05:05.154318-08:00","closed_at":"2025-11-27T01:05:05.154318-08:00"} -{"id":"vsbeads-8wo","title":"Support patch version bumps for release branches","description":"When releasing from a release branch (e.g., release-0.2.x), should increment patch version (0.2.0 → 0.2.1) for bugfix releases. Complements the minor bump strategy for main branch releases.","status":"closed","priority":4,"issue_type":"task","created_at":"2025-11-28T17:04:40.744218-08:00","updated_at":"2025-12-01T16:38:38.472019-08:00","closed_at":"2025-12-01T16:38:38.472019-08:00","labels":["infra"]} -{"id":"vsbeads-92t","title":"Implement BeadsDaemonClient with Unix socket RPC","description":"Replace CLI-spawning BeadsBackend with direct daemon socket connection using JSON-RPC protocol. Support real-time mutations via get_mutations.","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-26T15:59:20.209079-08:00","updated_at":"2025-11-26T23:11:39.603475-08:00","closed_at":"2025-11-26T16:03:59.684447-08:00"} -{"id":"vsbeads-93b","title":"Release workflow: local slash command with changelog validation","description":"Replace `workflow_dispatch` with tag-triggered workflow. Add `/release` slash command for local release management.\n\n## Current problems\n- Must go to GitHub to trigger release\n- Version auto-calculated after publish → can't finalize changelog first\n- Post-release version bump creates chicken/egg with changelog\n\n## Solution\n\n### `/release` slash command\n1. **Compute default version** based on branch:\n - `main` → bump minor (0.1.3 → 0.2.0)\n - `release-v*` → bump patch (0.2.0 → 0.2.1)\n - Present as default, allow override\n\n2. **Audit changelog** for missing entries:\n - Parse git log since last tag\n - Compare to changelog entries\n - Flag potential gaps (feat/fix commits not in changelog)\n - Skip: docs, chore, refactor, ci commits\n - If gaps → ask user to update first\n\n3. **Validate \u0026 execute**:\n - Verify `[Unreleased]` has content\n - Move `[Unreleased]` → `[X.Y.Z] - YYYY-MM-DD`\n - Update `package.json` version\n - Commit: `chore: release vX.Y.Z`\n - Tag: `vX.Y.Z`\n - Push branch + tag\n\n### GitHub workflow changes\n- Trigger: `on: push: tags: 'v*'`\n- Remove: version calculation, post-publish bump\n- Keep: build, lint, package, publish, create release","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-28T17:28:03.814546-08:00","updated_at":"2025-11-29T17:35:03.199437-08:00","closed_at":"2025-11-29T17:35:03.199437-08:00","labels":["infra"]} -{"id":"vsbeads-94s","title":"Change to a better icon for Beads in the side panel","description":"The current icon in the VS Code activity bar/side panel could be improved. Find or create a more distinctive icon that better represents Beads.","status":"open","priority":3,"issue_type":"task","estimated_minutes":90,"created_at":"2025-11-27T02:15:50.331234-08:00","updated_at":"2025-12-04T11:59:35.93427-08:00","labels":["ui"]} -{"id":"vsbeads-9cp","title":"Configurable columns: reorder, type icons, user preferences","description":"Add configuration and customization options for the Issues table columns:\n\n**Column Configuration:**\n- Reorder columns via drag-and-drop or settings\n- Show/hide specific columns\n- User preferences persisted\n\n**Type Icons:**\n- Add icons for issue types (bug, feature, task, epic, chore)\n- Use in type column and dependency badges (Depends On / Blocks sections)\n- Color badges by type in dependency lists\n\n**Reference:** See vsbeads-jue for where type-based coloring is needed in dep badges.","design":"Options:\n- Drag-and-drop column reordering (complex)\n- Settings-based column order array (simpler)\n- Type icons: bug=🐛, feature=✨, task=☑️, epic=🎯, chore=🔧 (or codicons)","status":"open","priority":3,"issue_type":"feature","estimated_minutes":480,"created_at":"2025-11-27T01:39:27.294846-08:00","updated_at":"2025-12-04T11:59:37.42992-08:00","labels":["ui"]} -{"id":"vsbeads-ba5","title":"Extension should auto-start daemon when not running","description":"Extension failed to connect with error: \"Socket error: connect ENOENT /Users/jason/ws/jdillon/vscode-beads/.beads/bd.sock\"\n\nThe daemon wasn't running and the extension didn't auto-start it. Need to investigate why the auto-start mechanism failed.","design":"## Investigation Areas\n\n1. **Why didn't auto-start work?**\n - Check if startDaemon is being called on connection failure\n - Verify the retry/backoff logic in BeadsBackend\n - Check if there's a race condition or timeout issue\n\n2. **Potential improvements**\n - Add daemon status indicator to UI (statusbar or panel)\n - Add \"Restart Daemon\" command to command palette\n - Show daemon connection status per-project in multi-root workspaces\n - Better error messaging when daemon fails to start\n\n3. **Diagnostics needed**\n - View current daemon connections across all projects\n - Force restart capability\n - Daemon health/metrics visibility in extension","status":"open","priority":3,"issue_type":"bug","estimated_minutes":180,"created_at":"2025-11-29T02:34:16.15086-08:00","updated_at":"2025-12-04T11:59:29.224036-08:00","labels":["daemon"]} -{"id":"vsbeads-bci","title":"Fix confusing dependency type handling and parent-child usage","description":"Dependency handling is confusing in multiple ways:\n\n**Problem 1: Directional confusion**\n- `blocks` relationship is the same whether viewed as \"depends on\" or \"blocks\"\n- UI shows \"Depends On\" and \"Blocks\" sections but both use `blocks` type\n- Not clear to users that these are the same underlying relationship\n\n**Problem 2: Not using parent-child for epics**\n- We have epics (e.g., vsbeads-5c0) with child tasks\n- But agent creates them with `blocks` dependencies, not `parent-child`\n- Should epics use `parent-child` type? What's the semantic difference?\n\n**Problem 3: Unclear when to use each type**\n- `blocks` - hard blocker, affects ready queue\n- `related` - soft link, context only\n- `parent-child` - epic/subtask hierarchy\n- `discovered-from` - work found during other work\n\nWhen should agent use parent-child vs blocks vs discovered-from?\n\n**Potential fixes:**\n1. Add dependency graph visualization showing relationships clearly\n2. Update CLAUDE.md/agent instructions on when to use each type\n3. Clarify UI labels (maybe show relationship type, not just direction)\n4. Consider migrating existing epic→task relationships to parent-child","design":"## Correct Usage (from beads docs)\n\n**`blocks`** - Hard blocker between independent issues\n- \"Task A blocks Task B\" = B can't start until A is done\n- Both directions affect ready queue\n\n**`parent-child`** - Epic/subtask hierarchy\n- `bd dep add EPIC_ID TASK_ID --type parent-child`\n- Epic is parent, tasks are children\n- Special behaviors:\n - `bd epic status` shows progress/completion %\n - `bd epic close-eligible` auto-closes complete epics\n - Children blocked if parent is blocked\n- **We should use this for epics, not `blocks`!**\n\n**`related`** - Soft link for context\n- Doesn't affect ready queue\n- Just for reference/navigation\n\n**`discovered-from`** - Work discovered during other work\n- Tracks \"yak shaving\" chains\n- `bd dep tree --reverse` shows discovery tree\n\n## Current Problem\n\nAgent creates epic relationships with `blocks` but should use `parent-child`:\n```bash\n# Wrong (what we do now):\nbd dep add vsbeads-5c0 vsbeads-yjr --type blocks\n\n# Right (what we should do):\nbd dep add vsbeads-5c0 vsbeads-yjr --type parent-child\n```\n\n## Fixes Needed\n\n1. Update CLAUDE.md with dependency type guidance\n2. Fix vscode-beads MCP tools to support `--type` parameter\n3. Consider graph view showing relationship types with different edge styles","notes":"## Upstream Bug: `bd show` mislabels dependency types\n\nFrom `sandbox/bd-show-display-bug.md`:\n\n**Bug:** `bd show` displays ALL dependencies under \"Blocks\" header, regardless of actual type.\n\n```\n$ bd show platform-wue\n\nBlocks (10): # WRONG - these are parent-child!\n ← platform-1pi: ...\n```\n\n**Actual data in beads.jsonl:**\n```json\n{\"issue_id\":\"platform-1pi\",\"depends_on_id\":\"platform-wue\",\"type\":\"parent-child\",...}\n```\n\n**Expected:**\n```\nChildren (10):\n ← platform-1pi: ...\n```\n\n## Impact on vscode-beads\n\nThe `--json` output should include `dependency_type` field. We can:\n1. Use `dependency_type` from JSON to display correctly in UI\n2. Group by type: \"Children\", \"Blocks\", \"Related\", \"Discovered From\"\n3. Different visual styling per type (icons, colors)\n\n## Action Items\n\n1. **Upstream:** File bug/PR for `bd show` to respect dependency type in display\n2. **vscode-beads:** Use `dependency_type` from daemon API to display correctly\n3. **vscode-beads:** Show relationship type in UI (badge, icon, or section header)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-29T02:42:42.366247-08:00","updated_at":"2025-11-29T13:07:18.994989-08:00","closed_at":"2025-11-29T13:07:18.994989-08:00","labels":["dx","ui"]} -{"id":"vsbeads-bcu","title":"Test bead for labels overflow","description":"Testing label display and overflow behaviordfsfs","status":"open","priority":3,"issue_type":"task","estimated_minutes":0,"created_at":"2025-12-01T15:32:16.718649-08:00","updated_at":"2025-12-04T11:59:22.270468-08:00","labels":["E","a","b","c","d"]} -{"id":"vsbeads-btf","title":"Scroll to latest comment when adding a comment in Details view","description":"When adding a comment in the Details panel, the view should auto-scroll to show the newly added comment at the bottom. Initial implementation attempts didn't work due to webview scroll container complexity.","status":"open","priority":4,"issue_type":"feature","estimated_minutes":45,"created_at":"2025-11-27T20:45:35.746701-08:00","updated_at":"2025-12-04T12:00:18.508148-08:00","labels":["ui"],"comments":[{"id":23,"issue_id":"vsbeads-btf","author":"jason","text":"turns out this is kinda hard, or was for claude to get correct.","created_at":"2025-12-02T00:38:50Z"}]} -{"id":"vsbeads-c46","title":"Bug: Unable to add comment to issue (or comment doesn't show up)","description":"Adding a comment via the Details panel doesn't work or the comment doesn't appear after adding.\n\nNeed to investigate:\n- Is the message being sent to extension?\n- Is the bd CLI being called correctly?\n- Is the view refreshing after add?\n\nLocation: `src/webview/views/DetailsView.tsx` (add comment UI) and `src/providers/BeadDetailsViewProvider.ts` (handler)","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-27T19:12:55.728488-08:00","updated_at":"2025-11-27T20:44:36.179784-08:00","closed_at":"2025-11-27T20:44:36.179784-08:00","comments":[{"id":8,"issue_id":"vsbeads-c46","author":"jason","text":"test","created_at":"2025-11-28T03:50:08Z"}]} -{"id":"vsbeads-cp3","title":"Replace native select menu in saved filter selector with styled dropdown","description":"The saved filter preset selector in the Issues panel uses a native `\u003cselect\u003e` element which renders with the OS native menu. This is inconsistent with the styled ColoredSelect dropdowns used elsewhere.\n\nShould use ColoredSelect or a similar custom dropdown component for visual consistency.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-30T13:49:12.24872-08:00","updated_at":"2025-12-01T16:11:51.517045-08:00","closed_at":"2025-12-01T16:11:51.517045-08:00","labels":["ui"]} -{"id":"vsbeads-cqi","title":"Redesign UI: sidebar for navigation, editor panels for views","description":"Move Kanban, Dependency Graph, and Details to WebviewPanel (editor tabs). Keep project selector and issue list in sidebar.","status":"open","priority":2,"issue_type":"feature","estimated_minutes":960,"created_at":"2025-11-26T15:59:20.263974-08:00","updated_at":"2025-12-04T11:58:59.107775-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-cqi","depends_on_id":"vsbeads-92t","type":"blocks","created_at":"2025-11-26T15:59:26.155171-08:00","created_by":"daemon"}]} -{"id":"vsbeads-cy5","title":"Setup GitHub Action for PR CI (lint, test, build)","description":"Add GitHub Action workflow to run on PRs to main branch. Should run lint, tests (once we have them), and verify build succeeds.","design":"`.github/workflows/ci.yml`\n- Trigger: pull_request to main\n- Steps: checkout, setup bun, install, lint, test, compile\n- Note: No tests exist yet - add placeholder or skip until tests added","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-26T18:39:27.003903-08:00","updated_at":"2025-11-27T20:56:11.148364-08:00","closed_at":"2025-11-27T20:56:11.148364-08:00"} -{"id":"vsbeads-d8u","title":"Replace native project dropdown with custom menu showing daemon status","description":"The project selector currently uses a native `\u003cselect\u003e` element, which limits styling.\n\nReplace with a custom dropdown menu that:\n1. Shows daemon status icon (●/○) next to each project in the dropdown list\n2. Allows consistent styling with the rest of the UI\n3. Can show additional project info (path tooltip, etc.)\n\nCurrent: Native select with status dot shown separately\nDesired: Custom dropdown with status icon integrated per-project option","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-12-02T23:20:13.569524-08:00","updated_at":"2025-12-02T23:43:37.764288-08:00","closed_at":"2025-12-02T23:43:37.764288-08:00","labels":["ui","ux"]} -{"id":"vsbeads-drg","title":"Document branch naming convention in CLAUDE.md","description":"Add branch naming strategy to CLAUDE.md:\n\nFormat: `beads/\u003cbead-id\u003e-\u003cterse-description\u003e`\n\nExamples:\n- `beads/vsbeads-93b-release-workflow`\n- `beads/vsbeads-xyz-fix-daemon-polling`\n\nThis ties branches to tracked work and makes it easy to find related issues.","status":"open","priority":4,"issue_type":"task","estimated_minutes":30,"created_at":"2025-11-29T16:47:10.870444-08:00","updated_at":"2025-12-04T12:00:16.819609-08:00","labels":["dx"]} -{"id":"vsbeads-dso","title":"Setup VS Code Marketplace publisher account","description":"Create Azure DevOps org, get PAT, create planet57 publisher, configure for publishing. See sandbox/PUBLISHING.md for steps.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-26T18:39:27.189685-08:00","updated_at":"2025-11-27T20:56:48.666442-08:00","closed_at":"2025-11-27T20:56:48.666442-08:00"} -{"id":"vsbeads-e36","title":"Add icons to view contributions","description":"VS Code warns about missing `icon` property on view contributions in package.json.\n\nIcons are used when views are dragged to Activity Bar or title can't be shown.\n\nViews needing icons:\n- beadsDashboard\n- beadsPanel (Issues)\n- beadsDetails\n\nOptions:\n- Use same beads-icon.svg for all (quick fix)\n- Create distinct icons per view (better UX)\n\nDecide on iconography style before implementing.","status":"open","priority":4,"issue_type":"task","estimated_minutes":60,"created_at":"2025-11-29T17:41:35.403094-08:00","updated_at":"2025-12-04T12:00:15.568122-08:00","labels":["ui"]} -{"id":"vsbeads-ebs","title":"Add comment count column to Issues list","description":"Add a synthetic column showing comment count per bead, hidden by default.\n\nUse case: Sort/filter by activity level - beads with more comments often indicate complexity or ongoing discussion.\n\nImplementation notes:\n- Column disabled by default (like Assignee/Estimate)\n- Would need comment count in list data (currently only fetched in Details view)\n- Consider if daemon API supports count without fetching full comments","status":"open","priority":4,"issue_type":"feature","estimated_minutes":90,"created_at":"2025-12-01T17:18:34.567726-08:00","updated_at":"2025-12-04T12:00:13.1052-08:00","labels":["ui"]} -{"id":"vsbeads-eeg","title":"Filter count overlay not fixed to bottom-right of issues list","description":"The \"42 of 75\" filter count overlay in the Issues list should be fixed to the bottom-right corner of the table container, but currently it only appears in the correct position when scrollbars are at their starting positions.\n\nWhen scrolling horizontally or vertically, the overlay moves with the content instead of staying pinned to the viewport corner of the container.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-30T14:04:28.644697-08:00","updated_at":"2025-11-30T14:07:31.186018-08:00","closed_at":"2025-11-30T14:07:31.186018-08:00","labels":["ui"]} -{"id":"vsbeads-efp","title":"Normalize typography across dropdown menus","description":"Font sizes and weights appear slightly inconsistent across different dropdown menus (preset dropdown, filter menu, column menu). Should audit and normalize typography to be consistent.","status":"open","priority":3,"issue_type":"bug","estimated_minutes":90,"created_at":"2025-12-01T16:11:51.469647-08:00","updated_at":"2025-12-04T11:59:06.810638-08:00","labels":["ui"]} -{"id":"vsbeads-ejn","title":"Research: Better beads workflow to avoid PR/branch conflicts","description":"Beads conflates PR/branch workflows with issue tracker changes, causing beads created in feature branches to be auto-deleted when PRs merge.\n\n**Problem:**\n- Beads created in feature branch get committed with code\n- PR merges bring beads into main via git\n- `bd sync --from-main` runs and treats these as \"foreign\" entries\n- git-history-backfill incorrectly deletes them as \"pruned from manifest\"\n\n**Analysis:** See `tmp/beads-deletion-analysis.md`\n**Full discussion:** See `tmp/session-subagent-discussion.jsonl`\n\n**Potential Solutions to Research:**\n\n1. **Protected branch support** - beads has this feature, unclear if it helps\n - Does it prevent sync from touching certain branches?\n - Can it isolate beads changes from code changes?\n\n2. **Dedicated beads branch** - worktree with separate branch just for .beads/\n - Code stays on feature branches\n - Beads always committed to a single branch (e.g., `beads-main`)\n - Avoids merge conflicts between code PRs and beads state\n\n3. **Gitignore .beads/ in feature branches**\n - Only commit beads on main\n - Feature branches inherit but don't modify\n - Sync happens only on main\n\n4. **Submodule approach** - .beads/ as separate git repo\n - Complete isolation of issue tracker from code\n - More complex setup\n\n\u003e submodule is probably not great sub modules tie to revisions and the revision of this will be constantly changing.\n\n**Goal:** Find a workflow where:\n- Beads can be created/updated during feature work\n- PRs don't bring stale/conflicting beads state\n- No accidental deletions via sync","design":"## Research Findings\n\n### Question: Is it by design that all branches carry beads changes?\n\n**Answer: NO - this is incidental and problematic, not by design.**\n\n### Evidence from GitHub Issues\n\n1. **Issue #207 (Using beads with PRs)** - Steve Yegge (Nov 4): \"We're taking a serious look at offering a multi-repo solution, where beads uses separate repos\"\n\n2. **Issue #195 (.beads as worktree on orphan branch)** - Steve Yegge (Nov 4): Rejected worktree approach as \"too git-centric\", pursuing separate repository option instead for:\n - Clean separation of issue tracking from code history\n - Platform-agnostic approach (VCS-independent)\n - Better monorepo/multi-project support\n\n3. **Issue #158 (Merge conflicts)** - Extensive discussion about multi-agent conflicts, led to improved 3-way merging in v0.24.1+\n\n### Currently Supported Solutions\n\n1. **Protected Branch Workflow** (`bd init --branch beads-metadata`):\n - Beads commits to separate branch via git worktrees\n - Code stays on feature branches\n - Periodically merge beads-metadata → main via PR\n - See: docs/PROTECTED_BRANCHES.md\n\n2. **Contributor Workflow** (`bd init --contributor`):\n - For OSS contributors\n - Issues stored in `~/.beads-planning` (separate local repo)\n - Never pollutes upstream PRs\n\n### Our Specific Bug\n\nThe `git-history-backfill` deleting beads from PRs appears to be a **bug**, not intended behavior:\n- Expected: Beads in git history should be **recovered** (added to local DB)\n- Actual: Beads are **deleted** as \"pruned from manifest\"\n\n### Recommendation\n\nTry protected branch workflow:\n```bash\nbd config set sync.branch beads-metadata\nbd daemon restart\n```\n\nConsider filing bug report for git-history-backfill behavior.","notes":"## Decision (2025-11-28)\n\n**Strategy:** Try protected branch workflow now, wait for upstream multi-repo solution.\n\n## Experiment on forge (2025-11-28)\n\nTested `bd config set sync.branch beads-metadata` with `--auto-commit --auto-push`:\n\n**What works:**\n- ✅ Beads commits go to `beads-metadata` branch (via worktree)\n- ✅ Auto-push to `origin/beads-metadata` works\n- ✅ `main` branch stays untouched (no new commits)\n\n**Issues found:**\n- ❌ Working tree still shows `.beads/beads.jsonl` modified (tracked on main)\n - Fix: untrack from main with `git rm --cached`\n- ❌ `beads-metadata` is NOT an orphan branch - it's a snapshot of main at config time\n - Contains full code tree + history\n - Designed for merge workflow, not true isolation\n - For \"never merge\" approach, this is wasteful/messy\n\n**Branch structure:**\n```\nmain ─────────────────────────────────► (gets beads.jsonl changes in working tree)\n \\\n └─ beads-metadata ──────────► (beads commits here, has full code copy)\n```\n\n**What we'd want (orphan):**\n```\nmain ──────────────────► (code only)\nbeads-metadata (orphan) ──────────────► (beads only, no shared history)\n```\n\nIssue #195 proposed orphan approach but Steve rejected as \"too git-centric\" - pursuing separate repo instead.\n\n**Status:** Experiment complete, need to decide:\n1. Live with non-orphan branch (functional but messy)\n2. DIY orphan branch (unsupported)\n3. Wait for upstream multi-repo\n\n## Implementation (2025-11-29)\n\nSuccessfully migrated vscode-beads to protected branch workflow:\n- Untracked beads.jsonl/deletions.jsonl from main\n- Set sync.branch = beads-metadata\n- Daemon runs with --auto-commit --auto-push\n- Updated docs/development.md with setup instructions\n\n## Known Issue: beads.jsonl vs issues.jsonl confusion\n\nThere's upstream inconsistency about whether the JSONL file should be named `beads.jsonl` or `issues.jsonl`. Got conflicting answers from maintainers. Leaving as-is until upstream clarifies the canonical naming.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-28T22:03:57.82966-08:00","updated_at":"2025-11-29T14:14:15.314712-08:00","closed_at":"2025-11-29T14:14:15.314712-08:00","labels":["infra"],"dependencies":[{"issue_id":"vsbeads-ejn","depends_on_id":"vsbeads-hw7","type":"related","created_at":"2025-11-28T22:04:03.147893-08:00","created_by":"daemon"}]} -{"id":"vsbeads-fwp","title":"Improvement: Colored dropdowns in edit mode for type/status/priority","description":"In DetailsView edit mode, the type/status/priority dropdowns are plain text. They should show colored versions matching how they appear elsewhere.\n\n## Requirements\n\n### Part 1: Colored dropdowns in edit mode\nApply filter-chip style (colored left border) to the select elements in edit mode. This matches the existing pattern used in the Issues list filter bar.\n\nCurrent location: `src/webview/views/DetailsView.tsx` lines 246-286\n\n### Part 2: Inline editing from view mode\nAdd ability to edit type/status/priority directly from the view page without entering full edit mode:\n- Option A: Click on badge to open dropdown menu\n- Option B: Right-click context menu on badge\n- Option C: Click badge → transforms to select → auto-saves\n\nDecision pending after Part 1 implementation.\n\n## Implementation Notes\n- Filter chips use: `border-left: 3px solid var(--chip-accent-color)` \n- Status colors: `STATUS_COLORS` in `types.ts`\n- Priority colors: `PRIORITY_COLORS` in `types.ts`\n- Type colors: CSS classes `.type-bug`, `.type-feature`, etc.\n\n## Testing\nUse code-server + Chrome DevTools MCP for testing (see `docs/code-server-testing.md`).","design":"## Part 1: Colored dropdowns in edit mode\n- Add `TYPE_COLORS` and `TYPE_TEXT_COLORS` constants to `types.ts` (extract from CSS)\n- Apply filter-chip style (colored left border) to select elements\n- Use inline style with CSS variable for color\n\n## Part 2: Inline editing from view mode\n- **Auto-save**: Yes, changes save immediately (no confirmation)\n- **Visual affordance**: None initially (test without hover effects)\n- **Scope**: type/status/priority only (labels/assignee later)\n- **Interaction**: Click badge → dropdown menu → select → auto-save\n\n## Prep for vsbeads-wk9\nNormalize all color constants (STATUS_COLORS, PRIORITY_COLORS, TYPE_COLORS) to same structure for future configurability.","notes":"## Progress\n\n### Part 1: Colored dropdowns in edit mode ✅\n- PR #21 opened\n- Added `ColoredSelect` component\n- Added `TYPE_COLORS`, `TYPE_TEXT_COLORS`, `TYPE_LABELS` to types.ts\n- Trigger uses filter-chip style (colored left border)\n- Dropdown menu shows full colored badges\n\n### Part 2: Inline editing from view mode\n- Next up: click badge in view mode → dropdown → auto-save","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-27T19:01:47.152941-08:00","updated_at":"2025-11-30T17:32:31.442482-08:00","closed_at":"2025-11-30T17:32:31.442482-08:00","labels":["ui"]} -{"id":"vsbeads-fyn","title":"Add copy ID action to issues list rows","description":"Currently copying a bead ID requires clicking a row to open details, then clicking the ID badge. Add a way to copy the ID directly from the list without navigating away.\n\nOptions:\n- Click on ID column copies to clipboard\n- Right-click context menu with \"Copy ID\"\n- Small copy icon on hover","design":"Click on ID span in issues list row copies to clipboard. Row selection still happens (no propagation stop). Add cursor pointer and title tooltip on ID span. Show brief visual feedback on copy.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-27T01:36:42.479739-08:00","updated_at":"2025-11-28T16:53:09.00156-08:00","closed_at":"2025-11-28T16:53:09.00156-08:00"} -{"id":"vsbeads-gr5","title":"Filter presets/favorites system for Issues panel","description":"Currently filtering requires manually adding multiple filters (e.g., Open + In Progress + Blocked to exclude Closed). Need a better UX for common filter combinations.","design":"**Options considered:**\n\n1. **Preset filters** - Built-in presets like \"Not Closed\", \"Active Work\"\n - Simple UX, covers common cases\n - Limited flexibility\n\n2. **Negated filters** - Click to toggle +/- on any filter\n - Full flexibility\n - More complex UX, needs visual indicator\n\n3. **Default filter** - Start with a filter applied (e.g., \"Not Closed\")\n - Good for most common use case\n - User can clear if needed\n\n**Recommended approach:**\nCombination of 1 + 3: Filter \"favorites\" dropdown that preconfigures filter sets.\n- Start with static built-in favorites: \"Not Closed\", \"Active\" (in_progress + blocked), \"All\"\n- Future: Allow saving custom filter sets as favorites\n- Default to \"Not Closed\" on load","status":"open","priority":3,"issue_type":"feature","estimated_minutes":300,"created_at":"2025-11-26T23:34:31.877133-08:00","updated_at":"2025-12-04T11:59:38.532327-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-gr5","depends_on_id":"vsbeads-34v","type":"parent-child","created_at":"2025-11-26T23:34:39.784152-08:00","created_by":"daemon"}]} -{"id":"vsbeads-gsb","title":"Support secondary sort in issues table","description":"Add multi-column sorting to the issues table.\n\nPossible approaches:\n- Shift+click for secondary sort (common pattern)\n- Always use a default secondary sort (e.g., Updated as tiebreaker)\n- Configurable sort order via settings","status":"open","priority":3,"issue_type":"feature","estimated_minutes":150,"created_at":"2025-11-27T13:04:59.70662-08:00","updated_at":"2025-12-04T11:59:34.886598-08:00","labels":["ui"]} -{"id":"vsbeads-hgm","title":"Test sub-agent context isolation","description":"After creating browser-task agent, test that:\n\n1. MCP response bloat stays in sub-agent context\n2. Only summary returns to main agent\n3. Measure context savings vs direct MCP calls\n\n**Test workflow:**\n- Invoke browser-task to reload code-server window\n- Check main context size before/after\n- Compare to doing reload directly with MCP","status":"open","priority":1,"issue_type":"task","estimated_minutes":90,"created_at":"2025-11-28T21:52:30.146368-08:00","updated_at":"2025-12-04T11:58:43.57841-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-hgm","depends_on_id":"vsbeads-yjr","type":"blocks","created_at":"2025-11-28T21:52:30.148724-08:00","created_by":"daemon"},{"issue_id":"vsbeads-hgm","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:42.044495-08:00","created_by":"daemon"}]} -{"id":"vsbeads-hjx","title":"Filter toggle button feels broken when filters are active","description":"When the filter panel is open and filters are active (icon is green), clicking the filter toggle button doesn't do anything. This feels broken.\n\nPossible solutions:\n- Toggle could hide/show the panel without clearing filters\n- Some other UX pattern\n\nNeed to determine the right behavior.","status":"open","priority":4,"issue_type":"bug","estimated_minutes":90,"created_at":"2025-11-27T02:27:29.005135-08:00","updated_at":"2025-12-04T12:00:20.708765-08:00","labels":["ui"]} -{"id":"vsbeads-hw7","title":"Investigate: beads auto-deleted via git-history-backfill","description":"Several beads created on 2025-11-28 were automatically deleted at 23:54:29 via `git-history-backfill` with reason \"recovered from git history (pruned from manifest)\".\n\n**Affected beads:**\n- vsbeads-ded (epic)\n- vsbeads-b80, vsbeads-csu, vsbeads-8q3, vsbeads-jpc (tasks)\n- vsbeads-b0e, vsbeads-xtn, vsbeads-cau, vsbeads-c04, vsbeads-e4j, vsbeads-92s\n\n**Investigation needed:**\n1. What triggered git-history-backfill?\n2. Was there a git checkout/reset/merge that reverted .beads files?\n3. Check git reflog for what happened around that time\n4. Review bd sync behavior - should it delete beads not in git history?\n\n**Session file for reference:** `tmp/session-subagent-discussion.jsonl`","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-28T21:51:58.272122-08:00","updated_at":"2025-12-01T16:25:56.160078-08:00","closed_at":"2025-12-01T16:25:56.160078-08:00","labels":["infra"]} -{"id":"vsbeads-ipb","title":"Show time in addition to date for timestamps in Details view","description":"Created/Updated/Closed timestamps in Details view currently only show date (toLocaleDateString). Should also show time for better context.\n\nLocation: `src/webview/views/DetailsView.tsx` (details-meta section)","status":"open","priority":4,"issue_type":"feature","estimated_minutes":45,"created_at":"2025-11-27T20:49:34.095573-08:00","updated_at":"2025-12-04T12:00:17.811951-08:00","labels":["ui"]} -{"id":"vsbeads-iur","title":"Show labels in Details panel child bead references","description":"Child bead references in the Details panel dependencies section should display labels (like they do in the Issues list).","status":"open","priority":3,"issue_type":"feature","estimated_minutes":60,"created_at":"2025-11-30T00:34:09.763359-08:00","updated_at":"2025-12-04T11:59:25.787945-08:00","labels":["ui"]} -{"id":"vsbeads-iyn","title":"Daemons management view","description":"Add a dedicated daemons view panel showing all workspace daemons with detailed status and management options.\n\n**Potential features:**\n- List all beads projects with daemon status\n- Start/Stop/Restart buttons per daemon\n- Health indicators (DB status, uptime, last activity)\n- Log viewer integration\n- Auto-refresh status\n\nLower priority since status bar + quick pick menu covers basic needs.","status":"open","priority":3,"issue_type":"feature","estimated_minutes":420,"created_at":"2025-12-03T00:13:55.94898-08:00","updated_at":"2025-12-04T11:59:01.921198-08:00","labels":["daemon","ui"]} -{"id":"vsbeads-izh","title":"Show date+time in Updated/Created columns when wide enough","description":"Currently Updated/Created columns always show date only (e.g., \"12/1/2025\"). When the column is resized wider, should show date + time (e.g., \"12/1/2025 4:15 PM\").\n\nImplementation:\n- Check column width from state\n- If width \u003e threshold (e.g., 120px), use `toLocaleString()` instead of `toLocaleDateString()`\n- Could also show relative time (\"2h ago\") for very narrow columns","status":"open","priority":3,"issue_type":"feature","estimated_minutes":60,"created_at":"2025-12-01T16:16:37.968279-08:00","updated_at":"2025-12-04T11:59:05.666368-08:00","labels":["ui"]} -{"id":"vsbeads-jb7","title":"Allow opening issue detail in editor panel","description":"Add option to open an issue's full detail view in an editor panel (tab) instead of just the sidebar Details panel. This allows viewing/editing while keeping sidebar free, and the view doesn't change when selecting different issues in the list.","design":"- Double-click or context menu \"Open in Editor\" on issue row\n- Opens `vscode.window.createWebviewPanel()` in editor area\n- Panel is independent - doesn't sync with sidebar selection\n- Can have multiple issue tabs open\n- Full editing support\n- Title shows issue ID","status":"open","priority":2,"issue_type":"feature","estimated_minutes":300,"created_at":"2025-11-26T18:39:34.504524-08:00","updated_at":"2025-12-04T11:58:56.508839-08:00","labels":["ui"]} -{"id":"vsbeads-jru","title":"Add copy ID button to Details panel title bar","description":"Added copy button to Details panel VS Code title bar. Also normalized all copy feedback to use VS Code status bar messages (2s auto-dismiss) instead of yellow toast popups.\n\n**Changes:**\n- `package.json`: Added `beads.copyBeadId` command with conditional visibility (`when` clause)\n- `extension.ts`: Command handler using `setStatusBarMessage`\n- `BeadDetailsViewProvider.ts`: `getCurrentBeadId()` getter, context key management, `copyBeadId` message handler\n- `DetailsView.tsx`: Added `onCopyId` prop, uses message passing instead of toast\n- `types.ts`: Added `copyBeadId` message type\n\nButton only shows when a bead is selected.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-27T18:31:28.983608-08:00","updated_at":"2025-11-27T18:43:41.736313-08:00","closed_at":"2025-11-27T18:43:41.736313-08:00"} -{"id":"vsbeads-jue","title":"Show dependents in BeadDetails view","description":"BeadDetails only shows \"Depends On\" (issues this bead depends on). Need to also show \"Dependents\" (issues that depend on this bead) to see the full relationship graph.\n\nCurrently the MCP show command returns both `dependencies` and `dependents`, but only dependencies are displayed in the UI.","design":"1. Update `Bead` type in types.ts to include `dependents?: string[]`\n2. Ensure backend passes through dependents from bd show\n3. Add \"Dependents\" section to BeadDetails.tsx (similar to \"Depends On\")\n4. Make dependent badges clickable to navigate to that issue","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-27T01:00:57.071592-08:00","updated_at":"2025-11-27T19:15:58.191577-08:00","closed_at":"2025-11-27T19:15:58.191577-08:00","dependencies":[{"issue_id":"vsbeads-jue","depends_on_id":"vsbeads-gr5","type":"related","created_at":"2025-11-27T01:01:56.807728-08:00","created_by":"daemon"}]} -{"id":"vsbeads-k3d","title":"test","description":"test","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-11-27T19:00:03.991806-08:00","updated_at":"2025-11-27T20:44:36.231963-08:00","closed_at":"2025-11-27T20:44:36.231963-08:00","comments":[{"id":3,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T03:27:34Z"},{"id":4,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T03:27:47Z"},{"id":7,"issue_id":"vsbeads-k3d","author":"jason","text":"Test comment from bug investigation","created_at":"2025-11-28T03:46:44Z"},{"id":9,"issue_id":"vsbeads-k3d","author":"jason","text":"tst","created_at":"2025-11-28T03:51:07Z"},{"id":10,"issue_id":"vsbeads-k3d","author":"jason","text":"foo bar baz","created_at":"2025-11-28T03:52:00Z"},{"id":11,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T04:10:12Z"},{"id":12,"issue_id":"vsbeads-k3d","author":"jason","text":"Testing auto-scroll feature","created_at":"2025-11-28T04:15:27Z"},{"id":13,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T04:22:02Z"},{"id":14,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T04:22:27Z"},{"id":15,"issue_id":"vsbeads-k3d","author":"jason","text":"5es","created_at":"2025-11-28T04:24:20Z"},{"id":16,"issue_id":"vsbeads-k3d","author":"jason","text":"dfs","created_at":"2025-11-28T04:24:45Z"},{"id":17,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T04:26:07Z"},{"id":18,"issue_id":"vsbeads-k3d","author":"jason","text":"maybe?","created_at":"2025-11-28T04:33:19Z"},{"id":19,"issue_id":"vsbeads-k3d","author":"jason","text":"test","created_at":"2025-11-28T04:35:03Z"}]} -{"id":"vsbeads-kog","title":"Separate VS Code Marketplace content from README","description":"Currently README.md serves both as repo documentation and marketplace listing. Consider creating separate content for the marketplace (e.g., MARKETPLACE.md) to allow:\n- Marketplace-focused content for end users\n- README with development/contribution info for developers\n\nResearch vsce options for custom readme paths.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-29T14:07:09.085539-08:00","updated_at":"2025-11-29T15:49:25.780981-08:00","closed_at":"2025-11-29T15:49:25.780981-08:00","labels":["dx"]} -{"id":"vsbeads-kz0","title":"Add more optional columns to Issues list (assignee, estimate, etc.)","description":"Users may want to see/sort by additional fields not currently exposed as columns:\n- Assignee\n- Estimate (if beads supports this)\n- External ref\n- Dependency count (blocked by / blocks)\n\nThese should be optional columns available via the column visibility menu (⋮).","notes":"Added Assignee and Estimate columns. Estimate column will show '-' for all beads since bd CLI doesn't expose --estimate flag for update. Field exists in schema (estimated_minutes) but not settable via current CLI.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-12-01T15:55:30.048853-08:00","updated_at":"2025-12-01T16:03:02.172879-08:00","closed_at":"2025-12-01T16:03:02.172879-08:00","labels":["ui"]} -{"id":"vsbeads-l27","title":"Markdown rendering has excessive spacing around lists","description":"UL elements have too much padding/margin around them, and there appears to be forced spacing between LI elements despite CSS rules attempting to remove it. The markdown rendering should be more compact - simple lists should look similar to plain text with proper bullet formatting.","status":"open","priority":3,"issue_type":"bug","estimated_minutes":60,"created_at":"2025-11-26T17:55:40.606838-08:00","updated_at":"2025-12-04T12:00:10.285316-08:00","labels":["ui"]} -{"id":"vsbeads-ly2","title":"Improve daemon status management and zombie daemon detection","description":"Comprehensive daemon status management improvements:\n\n**Issues Fixed:**\n1. Stale dropdown status after connect/disconnect\n2. No visual feedback when daemon disconnects\n3. Zombie daemon handling (process running but socket missing/unresponsive)\n4. No way to restart daemon from UI\n\n**Features Added:**\n- **Status bar item**: Shows daemon status (green=running, yellow=stopped, red=zombie)\n- **Click menu**: Start/Stop/Restart options, Show Logs\n- **Detailed status check**: Detects edge cases (no DB, stale PID, zombie state)\n- **Commands**: `beads.restartDaemon`, `beads.checkDaemonStatus`, `beads.showDaemonMenu`\n\n**Technical Changes:**\n- `getDaemonStatus()` - comprehensive status with DB/socket/PID/process/health checks\n- `restartDaemon()` - stop + start with cleanup pause\n- `startDaemonProcess()` - refactored, detects \"already running\" error\n- Status bar with ThemeColor backgrounds for visibility\n- Quick pick menu with context-aware options","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-03T00:03:06.507996-08:00","updated_at":"2025-12-03T00:18:16.246048-08:00","closed_at":"2025-12-03T00:18:16.246048-08:00","labels":["daemon","ui"]} -{"id":"vsbeads-m0t","title":"Agent VS Code dev: next steps after research","description":"## Context\nResearch complete in `sandbox/agent-vscode-dev-research.md`. Ready to test and implement.\n\n## Immediate Next Step\n1. **Test Chrome DevTools MCP** (vsbeads-1k7)\n - Install: `claude mcp add chrome-devtools -- npx -y chrome-devtools-mcp@latest`\n - Restart Claude Code\n - Run test plan: navigate, click, snapshot, screenshot, console, evaluate_script\n - Key goal: verify console access works (painpoint for debugging)\n\n## If Chrome DevTools MCP works\n2. Create implementation beads from roadmap Phase 1:\n - Install code-server locally\n - Configure Chrome DevTools MCP for code-server\n - Test: open code-server, navigate, see console/errors\n - Install vscode-beads VSIX\n\n## If Chrome DevTools MCP fails\n- Fallback to Playwright MCP\n- May lose console access, need workaround\n\n## Reference\n- Research doc: `sandbox/agent-vscode-dev-research.md`\n- Epic: vsbeads-3cn\n- Research task: vsbeads-q6r","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-27T17:17:51.470823-08:00","updated_at":"2025-11-27T19:17:07.693297-08:00","closed_at":"2025-11-27T19:17:07.693297-08:00","dependencies":[{"issue_id":"vsbeads-m0t","depends_on_id":"vsbeads-1k7","type":"blocks","created_at":"2025-11-27T17:17:55.445037-08:00","created_by":"daemon"},{"issue_id":"vsbeads-m0t","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.250208-08:00","created_by":"daemon"}]} -{"id":"vsbeads-mbo","title":"Fix bd sync prefix mismatch (vscode-beads- vs vscode-)","description":"bd sync fails with: \"prefix mismatch detected: database uses 'vscode-beads-' but found issues with prefixes: [vscode- (16 issues)]\". This prevents syncing beads to git.","design":"Error suggests using --rename-on-import flag. May need to:\n1. Run bd sync --rename-on-import\n2. Or fix the prefix in config.yaml\n3. Or re-export with correct prefix","notes":"**Root Cause:** Bug in `internal/utils/issue_id.go:ExtractIssuePrefix` - used `strings.Index` (first hyphen) instead of `strings.LastIndex` (last hyphen). For `vscode-beads-4n2`, it extracted prefix as `vscode` instead of `vscode-beads`.\n\n**Fix:** Already in beads main (commit 6294ef0c). New bd built at `/tmp/bd-new`.\n\n**Workaround Applied:** Renamed prefix from `vscode-beads` to `vsbeads`.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-26T18:52:04.449107-08:00","updated_at":"2025-11-26T23:13:56.591814-08:00","closed_at":"2025-11-26T23:13:56.591814-08:00"} -{"id":"vsbeads-n64","title":"Build optimized agent automation for VS Code/code-server (reduce context bloat)","description":"Chrome DevTools MCP returns ~400 lines (full a11y tree) after EVERY action. This burns through context extremely fast. Need to build custom tooling.\n\n**Problem observed:**\n- `press_key` → 401 lines returned\n- `click` → full snapshot returned \n- Simple reload workflow = ~120KB context\n- Playwright MCP has same issue (also uses a11y snapshots)\n\n**Direction:**\nBuild custom tooling for optimized agent-driven VS Code/code-server automation:\n1. Helper extension that exposes simple commands (reload, focus panel, etc.) callable via API\n2. Custom MCP that returns minimal/filtered responses instead of full tree\n3. Script-based helpers agent can invoke without snapshot overhead\n4. Same pattern needed for Figma later\n\n**Current workaround:**\n- Use Chrome DevTools MCP sparingly for single feature verification\n- Leave window reload to human to avoid context burn\n- Hybrid: agent codes, human clicks to verify","status":"open","priority":2,"issue_type":"task","estimated_minutes":720,"created_at":"2025-11-27T18:31:28.924977-08:00","updated_at":"2025-12-04T11:58:54.423038-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-n64","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.275699-08:00","created_by":"daemon"}]} -{"id":"vsbeads-onk","title":"Consider dev/snapshot version suffix after release","description":"After tagging a release, main stays at the released version (e.g., 0.2.0). This could be confusing when building from main after additional commits - same version but different code.\n\nOptions to consider:\n- Bump to `X.Y+1.0-dev` after release\n- Bump to `X.Y.Z-SNAPSHOT` pattern\n- Leave as-is (simpler, beads project does this)\n\nIf implementing, update `/project-release` to bump version after pushing tag.","status":"open","priority":3,"issue_type":"task","estimated_minutes":45,"created_at":"2025-11-29T17:34:58.801913-08:00","updated_at":"2025-12-04T11:59:26.955052-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-onk","depends_on_id":"vsbeads-93b","type":"related","created_at":"2025-11-29T17:35:03.165667-08:00","created_by":"daemon"}]} -{"id":"vsbeads-ops","title":"Redesign Dashboard for compactness and usefulness","description":"Current dashboard has redundant/space-wasting sections. The status bar chart duplicates the summary cards above. Need a more compact, meaningful layout.","design":"**Keep:**\n- Summary cards (Total, Ready, In Progress, Blocked) - useful at a glance\n- In Progress list - very useful\n\n**Remove/Replace:**\n- Status breakdown bars (redundant with cards)\n- Priority breakdown bars (takes too much space)\n\n**Options for compact redesign:**\n\n**Option A: Type + Priority chips**\n```\n[Summary Cards Row]\n\nBY TYPE BY PRIORITY\nbug: 3 P1: 1 P2: 4 P3: 3\nfeature: 4\ntask: 1\n\nIN PROGRESS BLOCKED (if any)\n- issue... - issue...\n```\n\n**Option B: Single stats row**\n```\n[Summary Cards Row]\n\nTypes: 🐛3 ✨4 📋1 Priority: P1:1 P2:4 P3:3\n\nIN PROGRESS READY (top 3)\n- issue... - issue...\n```\n\n**Option C: Kanban-lite summary**\n```\n[Summary Cards Row]\n\nREADY (3) IN PROGRESS (2) BLOCKED (0)\n- issue... - issue... (none)\n- issue... - issue...\n```\n\nRecommendation: Option C - shows actionable items, no redundancy","status":"open","priority":2,"issue_type":"feature","estimated_minutes":300,"created_at":"2025-11-26T18:20:49.922324-08:00","updated_at":"2025-12-04T11:58:57.526016-08:00","labels":["ui"]} -{"id":"vsbeads-oqb","title":"Fix column resize in Issues list","description":"Column resize handles are visible and highlight on hover, but dragging doesn't properly resize columns. Title column can be made bigger but not smaller despite minWidth being reduced. The resize logic and CSS need debugging.","design":"Current implementation:\n- Resize handle on right edge of each th\n- onMouseDown captures startX and startWidth\n- mousemove calculates delta and updates column width in state\n- width applied via inline style\n\nIssues to investigate:\n- Is the state actually updating?\n- Is the width being applied correctly?\n- Is something else overriding the width?\n- Table layout behavior with/without table-layout: fixed","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-26T18:25:55.633017-08:00","updated_at":"2025-12-01T15:56:32.434936-08:00","closed_at":"2025-12-01T15:56:32.434936-08:00","labels":["ui"]} -{"id":"vsbeads-q29","title":"Setup GitHub Action to build VSIX on push to main","description":"Add GitHub Action workflow to build extension VSIX archive on push to main. Upload as artifact for manual download/testing.","design":"`.github/workflows/build.yml`\n- Trigger: push to main\n- Steps: checkout, setup bun, install, compile, vsce package\n- Upload VSIX as artifact\n- Could also publish to marketplace on tag (see PUBLISHING.md)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-26T18:39:27.093552-08:00","updated_at":"2025-11-27T20:56:11.086242-08:00","closed_at":"2025-11-27T20:56:11.086242-08:00"} -{"id":"vsbeads-q6r","title":"Research: Agent-based VS Code extension development options","description":"Research and document the best approaches for enabling agent-driven VS Code extension development.\n\n## Areas to investigate\n\n### VS Code in Browser\n- code-server (https://github.com/coder/code-server)\n- VS Code Web / vscode.dev\n- Custom builds with local extension support\n\n### Browser Automation/MCP\n- Browser MCP (https://browsermcp.io/)\n- Chrome DevTools MCP (https://github.com/ChromeDevTools/chrome-devtools-mcp)\n- Playwright (https://playwright.dev/)\n- Other automation options\n\n### Required Capabilities\n- Start/stop VS Code, reload extensions\n- Take screenshots, see logs, debug inspector\n- Terminal/output panel access\n- Problem panel (type errors)\n- Command palette execution\n- Webview inspection\n- Test runner integration\n\n### Human Participation\n- VNC access for headless environments\n- X11 forwarding options\n- Screen sharing alternatives\n\n## Deliverable\nResearch document in sandbox/ with findings, trade-offs, and recommendations.","notes":"## Research Findings\n\n### Winning Stack\n```\nChrome DevTools MCP + code-server\n```\n\n### VS Code in Browser - DECIDED ✅\n| Option | Verdict |\n|--------|---------|\n| **code-server** | ✅ WINNER - native macOS, bd socket works |\n| OpenVSCode Server | ⚠️ Docker only, socket blocked |\n| vscode.dev | ❌ No local extension support |\n\n### Browser Automation - DECIDED ✅\n| Option | Verdict |\n|--------|---------|\n| **Chrome DevTools MCP** | ✅ WINNER - headed, console access, evaluate_script |\n| Browser MCP | ❌ Less capable |\n| Playwright MCP | Fallback if needed |\n\n### Capabilities Verified ✅\n- Start/stop VS Code: CLI `code-server` command\n- Reload extensions: DevTools \"Developer: Reload Window\"\n- Screenshots: `take_screenshot`\n- Console access: `list_console_messages`\n- Command palette: `press_key` Meta+Shift+P\n- Webview inspection: `take_snapshot` sees iframe content\n- Extension install: `code-server --install-extension`\n\n### Still to Verify\n- Terminal/output panel access\n- Problem panel (type errors via getDiagnostics?)\n- Test runner integration\n\n### Human Participation - SOLVED\nHeaded browser = human watches directly. No VNC/X11 needed.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-27T13:28:56.851044-08:00","updated_at":"2025-11-27T18:36:56.350768-08:00","closed_at":"2025-11-27T18:36:56.350768-08:00","dependencies":[{"issue_id":"vsbeads-q6r","depends_on_id":"vsbeads-3cn","type":"blocks","created_at":"2025-11-27T13:28:56.85284-08:00","created_by":"daemon"}]} -{"id":"vsbeads-q92","title":"Investigate real-time mutation updates not working","description":"Issues panel doesn't update when beads are created via CLI/MCP. The mutation watching infrastructure exists but may not be working correctly.","design":"Debug checklist:\n- Check \"Beads Dashboard\" output channel for mutation logs\n- Verify daemon is connected and mutation watch started\n- Check if getMutations RPC is returning data\n- Verify mutation timestamp filtering isn't too aggressive\n- Test with manual refresh to confirm data is available","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-26T18:41:19.755338-08:00","updated_at":"2025-11-26T23:44:58.678746-08:00","closed_at":"2025-11-26T23:44:58.678746-08:00"} -{"id":"vsbeads-qtl","title":"Sort labels alphabetically in display","description":"Labels are displayed in whatever order they're stored. Should sort alphabetically for consistent display across issues.","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-12-01T16:16:04.313747-08:00","updated_at":"2025-12-01T16:31:26.682726-08:00","closed_at":"2025-12-01T16:31:26.682726-08:00","labels":["ui"]} -{"id":"vsbeads-rbp","title":"Bug: Edit mode status selector shows \"Unknown\"","description":"In DetailsView edit mode, the status dropdown shows \"Unknown\" as an option. This shouldn't be selectable - it's only for display when status can't be parsed.\n\nLocation: `src/webview/views/DetailsView.tsx` lines 201-212","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-27T19:01:47.079665-08:00","updated_at":"2025-11-27T19:19:24.818633-08:00","closed_at":"2025-11-27T19:19:24.818633-08:00"} -{"id":"vsbeads-rru","title":"Implement Dependency Graph as editor panel","description":"Reimplement the dependency graph view as an editor panel (like Settings) instead of sidebar webview. More space for visualization, better UX.","design":"Use `vscode.window.createWebviewPanel()` to open in editor area.\n- Register command to open graph\n- Panel shows in editor tabs like Settings/Keyboard Shortcuts\n- Can have full width for node visualization\n- Consider using a proper graph library (d3, cytoscape, etc)","status":"open","priority":3,"issue_type":"feature","estimated_minutes":480,"created_at":"2025-11-26T18:39:29.324895-08:00","updated_at":"2025-12-04T11:59:40.971443-08:00","labels":["ui"]} -{"id":"vsbeads-rtk","title":"Render comments with markdown support","description":"Comments in the Details view are rendered as plain text. Should render with markdown support for code blocks, links, formatting, etc.\n\n**Current behavior:**\n- Comments display as raw text\n- Code snippets, links, bold/italic not rendered\n\n**Expected:**\n- Markdown formatting rendered in comment display\n- Code blocks with syntax highlighting\n- Links clickable\n- Lists, headers, etc. supported\n\n**Location:** `src/webview/views/DetailsView.tsx` (comment display section)","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-29T12:10:26.143399-08:00","updated_at":"2025-12-01T17:17:27.957323-08:00","closed_at":"2025-12-01T17:17:27.957323-08:00","labels":["ui"],"comments":[{"id":25,"issue_id":"vsbeads-rtk","author":"jason","text":"**Estimate: Easy-Medium (~1-1.5 hours)**\n\nWhat's needed:\n1. Add a markdown library (e.g., `marked`, `react-markdown`, or `micromark`)\n2. Replace plain text comment rendering with markdown-rendered output\n3. Add CSS for markdown elements (code blocks, links, lists)\n4. Sanitize HTML output for security\n\nComplexity factors:\n- No markdown lib currently installed - need to add one\n- VS Code webviews have restrictions on external resources\n- Syntax highlighting would add complexity (optional)\n- Need to handle CSS styling for markdown elements\n\n~1 hour for basic markdown, +30min if syntax highlighting wanted.","created_at":"2025-12-02T00:42:01Z"},{"id":26,"issue_id":"vsbeads-rtk","author":"jason","text":"# HERE\n\n**THERE**","created_at":"2025-12-02T01:16:57Z"}]} -{"id":"vsbeads-rz9","title":"Test: code-server vs OpenVSCode Server for local dev","description":"Compare the two VS Code in browser options for our use case.\n\n## Test Plan\n\n### OpenVSCode Server (Gitpod) - Test First\n```bash\ndocker run -p 3000:3000 gitpod/openvscode-server\n```\n- Open in Chrome DevTools MCP\n- Install vscode-beads VSIX\n- Verify extension loads, webviews work\n- Check console access for errors\n\n### code-server (Coder) - Compare\n```bash\nbrew install code-server\ncode-server --bind-addr localhost:8080\n```\n- Same tests as above\n- Compare: auth, settings persistence, extension compat\n\n## Decision Criteria\n- Extension installation ease\n- Webview support (critical for vscode-beads)\n- Console/error visibility\n- Closer to desktop VS Code behavior","notes":"## Final Verdict\n\n**Winner: code-server** for vscode-beads development on macOS.\n\n---\n\n## OpenVSCode Server (Docker) - PARTIAL ⚠️\n\n### Setup\n```bash\ndocker run -p 3000:3000 -v $(pwd):/home/workspace:cached gitpod/openvscode-server\n```\n\n### Results\n- ✅ Extension installs and loads\n- ✅ Webviews render correctly\n- ❌ **bd daemon socket blocked** by Docker isolation\n - Error: `connect ECONNREFUSED /home/workspace/.beads/bd.sock`\n\n### CLI Install\n```bash\ndocker exec \u003ccontainer-id\u003e /home/.openvscode-server/bin/openvscode-server \\\n --install-extension /home/workspace/vscode-beads-0.1.0.vsix\n```\n\n**Verdict**: Good for UI testing only, not full extension functionality.\n\n---\n\n## code-server (Native) - SUCCESS ✅\n\n### Setup\n```bash\nbrew install code-server\ncode-server --bind-addr localhost:8080 --auth none /path/to/project\n```\n\n### Results\n- ✅ Extension installs via CLI\n- ✅ Webviews render correctly\n- ✅ **bd daemon socket works** (native macOS access)\n- ✅ Full functionality - issues list, filters, everything\n\n### CLI Install\n```bash\ncode-server --install-extension /path/to/extension.vsix\n```\n\n**Verdict**: Full functionality, recommended for vscode-beads development.\n\n---\n\n## Comparison Table\n\n| Feature | code-server | OpenVSCode Server |\n|---------|-------------|-------------------|\n| Install | `brew install` | Docker only (macOS) |\n| bd socket | ✅ Works | ❌ Blocked |\n| CLI install | ✅ | ✅ |\n| Webviews | ✅ | ✅ |\n| Dev workflow | Full | UI testing only |","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-27T17:38:55.41521-08:00","updated_at":"2025-11-27T18:00:01.424195-08:00","closed_at":"2025-11-27T18:00:01.424195-08:00","dependencies":[{"issue_id":"vsbeads-rz9","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.1978-08:00","created_by":"daemon"}]} -{"id":"vsbeads-s4i","title":"Refresh project list when workspace folders change","description":"When adding or removing folders from VS Code workspace, the beads project list doesn't update. Removed folders still appear in the project dropdown.\n\n**Expected behavior:**\n- Adding a folder with `.beads/` should add it to the project list\n- Removing a folder should remove it from the project list\n- If the active project is removed, switch to another available project\n\n**Fix:**\nListen to `vscode.workspace.onDidChangeWorkspaceFolders` event and call `projectManager.discoverProjects()` to refresh.","status":"in_progress","priority":2,"issue_type":"bug","estimated_minutes":120,"created_at":"2025-12-03T00:26:43.500466-08:00","updated_at":"2025-12-04T12:12:57.674616-08:00","labels":["backend","ux"]} -{"id":"vsbeads-t5e","title":"Research external issue tracker sync (GitHub/GitLab/Jira)","description":"While beads is great for managing context and agent work, teams often need a subset of beads to sync with external trackers (GitHub Issues, GitLab, Jira, etc.).\n\nResearch questions:\n1. What upstream beads features exist for external sync? (check `external_ref` field usage)\n2. Are there examples or docs for bi-directional sync?\n3. What's the recommended workflow - manual link via `external_ref` or automated sync?\n4. Any plugins or integrations available?\n\nGoal: Understand what's possible today and what gaps exist for team workflows.","status":"open","priority":3,"issue_type":"task","estimated_minutes":180,"created_at":"2025-12-01T16:40:03.527205-08:00","updated_at":"2025-12-04T11:59:04.481436-08:00","labels":["dx","research"]} -{"id":"vsbeads-toz","title":"Architecture review: extension and React component design","description":"Review the vscode-beads extension architecture from an expert perspective.\n\nAreas to evaluate:\n1. **Component duplication** - Where are we duplicating code that should be extracted?\n2. **Common components** - Are shared components in `common/` well-designed and reusable?\n3. **Hacks/workarounds** - Identify technical debt and quick fixes that need proper solutions\n4. **State management** - Is the webview↔extension messaging pattern clean?\n5. **View structure** - Are views (IssuesView, DetailsView, etc.) well-organized?\n6. **CSS organization** - Is `styles.css` maintainable or becoming a dumping ground?\n7. **Type safety** - Are types properly shared between extension and webview?\n\nDeliverable: Report with findings, recommendations, and priority for improvements.","status":"open","priority":2,"issue_type":"task","estimated_minutes":300,"created_at":"2025-12-01T17:23:41.507236-08:00","updated_at":"2025-12-04T11:58:47.201579-08:00","labels":["dx","research"]} -{"id":"vsbeads-tty","title":"Improve dependency/dependent display in Details view - show type + title","description":"The \"Depends On\" and \"Blocks\" sections in Details view currently only show issue IDs as badges. Hard to understand what issues are without navigating back and forth.\n\nMinimum: Show type + title alongside ID\nIdeal: Mini issues list with type, title, status, priority columns\n\nLocation: `src/webview/views/DetailsView.tsx` (deps-list sections)","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-27T20:47:54.611811-08:00","updated_at":"2025-11-28T00:24:25.518796-08:00","closed_at":"2025-11-28T00:24:25.518796-08:00"} -{"id":"vsbeads-ua2","title":"Research: code execution skill as MCP replacement","description":"Future work: Build skill with TypeScript utilities as eventual MCP replacement.\n\n**Approach:**\n- `.claude/skills/vscode-dev/SKILL.md` + supporting files\n- Functions: `reloadWindow()`, `clickElement()`, `getElementContent()`\n- Execute via Bash, return minimal output\n- Eventually deprecate Chrome DevTools MCP dependency\n\n**Note:** Skills share parent context (no isolation), but if output is minimal, that's fine.","status":"open","priority":3,"issue_type":"task","estimated_minutes":180,"created_at":"2025-11-28T21:52:30.285657-08:00","updated_at":"2025-12-04T11:59:31.525211-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-ua2","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:42.143962-08:00","created_by":"daemon"}]} -{"id":"vsbeads-uak","title":"Research: macOS window screenshot for full Chrome capture","description":"Browser MCP tools only capture page viewport, not full Chrome window (including DevTools).\n\nResearch how to capture full window via macOS:\n- `screencapture -l \u003cwindowid\u003e` requires finding window ID\n- AppleScript can list windows but may need permissions\n- Useful for showing agent what's visible in DevTools panel\n\nLow priority - programmatic console/network access works for most cases.","status":"open","priority":3,"issue_type":"task","estimated_minutes":90,"created_at":"2025-11-27T17:34:17.25294-08:00","updated_at":"2025-12-04T11:59:34.100523-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-uak","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.301246-08:00","created_by":"daemon"}]} -{"id":"vsbeads-vlk","title":"viewContainer/title buttons not showing in BEADS header","description":"Configured beads.switchProject and beads.refresh commands in viewContainer/title menu with `when: viewContainer == beads`, but no buttons appear in the BEADS header. Only the [...] overflow menu shows.","design":"VS Code does not support extension-contributed inline buttons in viewContainer title bars. The `viewContainer/title` menu contribution point only adds items to the overflow/context menu.\n\nThis is confirmed by microsoft/vscode#74221 which was closed as out-of-scope.","notes":"**Finding:** This is a VS Code platform limitation, not a bug in our extension.\n\nPer [microsoft/vscode#74221](https://github.com/microsoft/vscode/issues/74221):\n- Built-in view containers (Run and Debug, Search) can have title bar buttons\n- Extension view containers can ONLY add to overflow menu (...)\n- Feature request was rejected as \"out-of-scope\"\n\n**Current workaround:** Use `view/title` to add buttons to individual view headers (e.g., Issues panel title bar) instead of the container title bar.\n\n**Status:** Won't fix - VS Code limitation","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-26T18:30:18.437949-08:00","updated_at":"2025-11-27T00:26:50.564762-08:00","closed_at":"2025-11-27T00:26:50.564762-08:00"} -{"id":"vsbeads-vp1","title":"Implement Kanban board as editor panel","description":"Reimplement Kanban board as an editor panel instead of sidebar webview. Sidebar is too narrow for a useful Kanban view.","design":"Use `vscode.window.createWebviewPanel()` to open in editor area.\n- Register command to open Kanban\n- Full-width columns for drag-and-drop\n- Cards show status, priority, assignee\n- Drag between columns to change status","status":"open","priority":3,"issue_type":"feature","estimated_minutes":600,"created_at":"2025-11-26T18:39:31.95544-08:00","updated_at":"2025-12-04T11:59:40.103462-08:00","labels":["ui"]} -{"id":"vsbeads-wk9","title":"Make badge colors configurable via settings","description":"Expose status, priority, and type badge colors as VS Code settings so users can customize them. Should support both background and text colors for each value, with consideration for light/dark themes.","design":"Settings structure could be:\n- `beads.colors.priority.P0`: { bg, text }\n- `beads.colors.priority.P1`: { bg, text }\n- `beads.colors.status.open`: { bg, text }\n- `beads.colors.type.bug`: { bg, text }\n\nOr a single object per category. Consider theme-aware defaults.","status":"open","priority":3,"issue_type":"feature","estimated_minutes":120,"created_at":"2025-11-26T17:57:59.132401-08:00","updated_at":"2025-12-04T12:00:09.336584-08:00","labels":["ui"]} -{"id":"vsbeads-xbq","title":"UI blocked when daemon not running - no project switching possible","description":"When daemon connection fails (ENOENT socket error), the entire UI is blocked by ErrorMessage component. User cannot switch to a different project that might have a working daemon.\n\nRoot causes:\n1. App.tsx renders only ErrorMessage when there's an error - no project selector\n2. DashboardView has no project selector at all (IssuesView does)\n3. Need \"Start Daemon\" button for socket errors","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-02T22:57:17.513308-08:00","updated_at":"2025-12-02T23:43:37.817589-08:00","closed_at":"2025-12-02T23:43:37.817589-08:00","labels":["daemon","ui","ux"]} -{"id":"vsbeads-xd5","title":"Test protected branch workflow","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-29T13:45:16.869968-08:00","updated_at":"2025-11-29T13:45:35.922513-08:00","closed_at":"2025-11-29T13:45:35.922513-08:00"} -{"id":"vsbeads-xgn","title":"Refine browser-task agent instructions","description":"Based on testing results, refine:\n\n- System prompt for optimal response format\n- Standard task patterns (reload, click sequence, verify)\n- What to include/exclude in summaries\n- Error reporting format","status":"open","priority":2,"issue_type":"task","estimated_minutes":120,"created_at":"2025-11-28T21:52:30.218145-08:00","updated_at":"2025-12-04T11:58:49.641387-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-xgn","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:42.094448-08:00","created_by":"daemon"},{"issue_id":"vsbeads-xgn","depends_on_id":"vsbeads-hgm","type":"blocks","created_at":"2025-11-28T21:52:49.395613-08:00","created_by":"daemon"}]} -{"id":"vsbeads-xkk","title":"Improve Add Dependency UX - support all dependency types","description":"Current \"Add Dependency\" input only creates \"blocks\" type dependencies. Should support all dependency types:\n- blocks (hard blocker)\n- related (soft link)\n- parent-child (epic/subtask)\n- discovered-from (found during work)\n\nOptions:\n1. Dropdown to select type before adding\n2. Syntax like `issue-id:parent-child` or `issue-id --type related`\n3. Separate \"Add as child\" / \"Add related\" buttons\n\nAlso clarify the direction - currently adds a \"blocked by\" relationship (this issue depends on the entered ID).","status":"open","priority":3,"issue_type":"feature","estimated_minutes":210,"created_at":"2025-12-01T15:51:31.66003-08:00","updated_at":"2025-12-04T11:59:07.849454-08:00","labels":["ui"]} -{"id":"vsbeads-yjr","title":"Create browser-task sub-agent configuration","description":"Create `.claude/agents/browser-task.md` with:\n\n```markdown\n---\nname: browser-task\ndescription: Execute multi-step browser automation tasks in VS Code/code-server\ntools: mcp__chrome-devtools__*\nmodel: haiku\n---\n\nExecute browser automation tasks and return minimal summaries.\nDo not return full DOM snapshots. Summarize results concisely.\nIf errors occur, return specific error details.\n```\n\n**Questions to verify:**\n- Can we use glob `mcp__chrome-devtools__*` or must list each tool?\n- Should model be haiku (fast) or sonnet (better instruction following)?","status":"open","priority":1,"issue_type":"task","estimated_minutes":60,"created_at":"2025-11-28T21:52:14.912814-08:00","updated_at":"2025-12-04T11:58:45.105085-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-yjr","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:41.99215-08:00","created_by":"daemon"}]} -{"id":"vsbeads-zbt","title":"Test: OpenVSCode Server native (non-Docker) for bd socket access","description":"Test running OpenVSCode Server directly on macOS (not in Docker) to get native bd daemon socket access.\n\n## Motivation\nDocker isolation blocks access to `bd.sock` Unix socket. Native run should have full socket access.\n\n## Test Plan\n1. Install openvscode-server via npm or download release\n2. Run on localhost:8080 (different port from Docker instance)\n3. Install vscode-beads VSIX\n4. Verify Beads panel connects to daemon successfully\n5. Compare dev experience with Docker version\n\n## Success Criteria\n- Extension loads\n- Webviews work\n- bd daemon socket connects (no ECONNREFUSED)\n- Issues display in panel","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-27T17:53:52.58167-08:00","updated_at":"2025-11-27T17:57:42.340387-08:00","closed_at":"2025-11-27T17:57:42.340387-08:00","dependencies":[{"issue_id":"vsbeads-zbt","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.172572-08:00","created_by":"daemon"}]} -{"id":"vsbeads-zkc","title":"Test: code-server for native macOS dev with bd socket access","description":"Test code-server (Coder) running natively on macOS for vscode-beads development.\n\n## Motivation\n- openvscode-server only available via Docker on macOS\n- Docker isolation blocks bd daemon socket access\n- code-server runs natively, should have full socket access\n\n## Setup\n```bash\nbrew install code-server\ncode-server --bind-addr localhost:8080\n```\n\n## Test Plan\n1. Install code-server via brew\n2. Start on localhost:8080\n3. Install vscode-beads VSIX\n4. Verify Beads panel connects to bd daemon\n5. Test Chrome DevTools MCP integration\n6. Document CLI options for extension management\n\n## Success Criteria\n- Extension loads\n- Webviews work \n- bd daemon socket connects (no ECONNREFUSED)\n- Issues display in panel","notes":"## Results - SUCCESS ✅\n\n### Setup\n```bash\nbrew install code-server\ncode-server --bind-addr localhost:8080 --auth none /path/to/project\n```\n\n### CLI Extension Management\n```bash\ncode-server --install-extension /path/to/extension.vsix\ncode-server --list-extensions\n```\n\n### Test Results\n- ✅ VS Code loads in browser at localhost:8080\n- ✅ Extension installs via CLI\n- ✅ Extension loads after reload + trust folder\n- ✅ Beads tab appears in activity bar\n- ✅ Webviews render correctly\n- ✅ **bd daemon socket connects** (no ECONNREFUSED!)\n- ✅ Issues list displays all 26 issues\n- ✅ Filter controls, project selector work\n\n### Why It Works\ncode-server runs natively on macOS, so it has direct access to the Unix socket at `.beads/bd.sock`. No Docker isolation.\n\n### Dev Workflow\n1. `bun run watch` (local rebuild)\n2. `bun run package` (create VSIX)\n3. `code-server --install-extension vscode-beads-*.vsix`\n4. DevTools MCP: \"Developer: Reload Window\"\n5. Test extension in browser\n\n### Comparison vs OpenVSCode Server (Docker)\n| Feature | code-server | OpenVSCode Server |\n|---------|-------------|-------------------|\n| Install | `brew install` | Docker only on macOS |\n| bd socket | ✅ Works | ❌ Docker isolation |\n| CLI install | ✅ | ✅ |\n| Webviews | ✅ | ✅ |\n\n**Winner: code-server** for vscode-beads development on macOS.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-27T17:57:42.397471-08:00","updated_at":"2025-11-27T17:59:55.75636-08:00","closed_at":"2025-11-27T17:59:55.75636-08:00","dependencies":[{"issue_id":"vsbeads-zkc","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.146686-08:00","created_by":"daemon"}]} -{"id":"vsbeads-zsy","title":"Add press/click feedback to buttons in webview","description":"Buttons in the webview (like \"Start Daemon\", \"Retry\") don't have clear press feedback. When clicked, there's no visual indication the button was pressed, making it feel unresponsive even when the action is triggered.\n\nAdd `:active` styles or a brief visual state change on click to provide clear feedback.","status":"open","priority":3,"issue_type":"bug","estimated_minutes":30,"created_at":"2025-12-02T23:18:16.910844-08:00","updated_at":"2025-12-04T11:59:03.256734-08:00","labels":["ui","ux"]} From d14d74e6abd17039bae8e5972403978d89da3a8e Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Fri, 30 Jan 2026 18:04:48 -0800 Subject: [PATCH 20/49] bd daemon sync: 2026-01-30 18:04:48 --- .beads/issues.jsonl | 1 + 1 file changed, 1 insertion(+) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 901f398..54d4bf6 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -18,6 +18,7 @@ {"id":"vsbeads-515e.1","title":"Test child using --parent","status":"tombstone","priority":3,"issue_type":"task","created_at":"2025-12-27T20:45:47.180329-08:00","updated_at":"2025-12-27T20:46:34.905009-08:00","dependencies":[{"issue_id":"vsbeads-515e.1","depends_on_id":"vsbeads-515e","type":"parent-child","created_at":"2025-12-27T20:45:47.190475-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T20:46:34.905009-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"} {"id":"vsbeads-57m","title":"Search should show filtered-out matches or offer to clear filters","description":"When searching by bead ID or text, results may be hidden by active filters (status, type, priority). This is confusing - you search for \"vsbeads-abc\" and see nothing because it's closed.\n\nOptions to consider:\n1. **Bypass filters when searching** - Global search ignores column filters\n2. **Show \"hidden by filter\" indicator** - \"3 matches hidden by filters\" with option to clear\n3. **Show filtered matches differently** - Grayed out rows at bottom showing filtered-out matches\n4. **Auto-clear filters on exact ID match** - If search matches a bead ID exactly, clear filters and select it","status":"open","priority":3,"issue_type":"feature","estimated_minutes":120,"created_at":"2025-12-04T16:58:53.89163-08:00","updated_at":"2025-12-05T12:01:16.828888-08:00","labels":["ui","ux"],"dependencies":[{"issue_id":"vsbeads-57m","depends_on_id":"vsbeads-wgr","type":"parent-child","created_at":"2025-12-17T16:53:56.291691-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-5c0","title":"Sub-agent browser automation to reduce context bloat","description":"Use sub-agents with isolated context windows to handle Chrome DevTools MCP operations, preventing context bloat in main conversation.\n\n**Problem:** Chrome DevTools MCP returns ~400 lines (full a11y tree) after every action, burning context fast.\n\n**Solution:** Delegate browser operations to short-lived sub-agents that:\n- Have their own context window (bloat stays there)\n- Return only minimal summaries to main agent\n- Batch multiple operations per invocation\n\n**Approach:**\n1. Create `browser-task` sub-agent with only Chrome DevTools MCP tools\n2. Focused instructions: execute task, return minimal summary\n3. Use for: reload window, click sequences, verify UI state","status":"open","priority":2,"issue_type":"epic","estimated_minutes":600,"created_at":"2025-11-28T21:52:14.860652-08:00","updated_at":"2025-12-04T11:58:51.219932-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-28T21:52:42.200798-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-n64","type":"related","created_at":"2025-11-28T21:52:42.256772-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-695","title":"Support detecting beads database/daemon when using worktrees","description":"When using git worktrees, the extension should properly detect the .beads directory and daemon socket location.\n\n**Problem:**\nGit worktrees have their .git as a file pointing to the main worktree's .git directory, not a directory. The current detection logic may not handle this correctly.\n\n**Expected behavior:**\n- Detect .beads directory in worktree root\n- Fall back to main worktree if not found in current worktree\n- Daemon socket detection should work across worktrees\n- Project manager should handle worktree scenarios\n\n**Investigation needed:**\n- Test current behavior with worktrees\n- Check how .beads location is resolved\n- Verify daemon socket path resolution\n- Document expected worktree patterns (shared .beads vs per-worktree)","status":"open","priority":2,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-30T18:04:47.926774-08:00","created_by":"Jason Dillon","updated_at":"2026-01-30T18:04:47.926774-08:00","labels":["backend","daemon"]} {"id":"vsbeads-6mx","title":"Support file attachments via beads-attachments directory","description":"Consider supporting file attachments (screenshots, docs) by:\n\n1. Store files in a `beads-attachments/` directory in repo (or on beads-metadata branch)\n2. Extension provides \"Attach file\" action that:\n - Copies/moves file to `beads-attachments/\u003cissue-id\u003e/filename.png`\n - Adds markdown link/embed to issue body or as a comment\n3. Render inline in Details panel when markdown contains `![](beads-attachments/...)`\n\nUse cases:\n- \"Look at this screenshot\" during bug reports\n- Design mockups attached to feature issues\n- Reference docs for complex tasks\n\nQuestions:\n- Store on main branch or beads-metadata branch?\n- Naming convention: `beads-attachments/\u003cissue-id\u003e/` or flat with prefixes?\n- Auto-cleanup when issue is compacted/deleted?","status":"open","priority":4,"issue_type":"feature","estimated_minutes":480,"created_at":"2025-11-30T01:18:31.564585-08:00","updated_at":"2025-12-04T12:00:13.942853-08:00","labels":["ui"]} {"id":"vsbeads-79pr","title":"Tooltip content shows raw markdown instead of rendered","notes":"## Problem\nTooltip content displays raw markdown syntax instead of rendered HTML.\n\nExample: Shows `**bold**` and `- list item` instead of rendered **bold** and bullet points.\n\n## Expected\nMarkdown in tooltip content should be rendered as formatted HTML.\n\n## Fix\nUse a markdown renderer (e.g., `marked`, `react-markdown`) to convert markdown to HTML before displaying in tooltips.","status":"closed","priority":2,"issue_type":"bug","assignee":"jdillon","created_at":"2025-12-28T02:15:56.691005-08:00","updated_at":"2025-12-29T12:51:26.56702-08:00","closed_at":"2025-12-29T12:51:26.56702-08:00","close_reason":"Closed","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-79pr","depends_on_id":"vsbeads-un3l","type":"parent-child","created_at":"2025-12-29T11:39:53.265742-08:00","created_by":"daemon"}]} {"id":"vsbeads-7e9","title":"Docking, undocking, and editor tab support","description":"Support for opening beads views in editor tabs, undocking panels, and flexible window arrangements.","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-10T02:08:17.588144-08:00","updated_at":"2025-12-10T02:08:17.588144-08:00","labels":["ui"]} From 80786f13a0cfab1cb6ea5e9a5b2feedb24239daa Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 03:42:30 -0800 Subject: [PATCH 21/49] bd daemon sync: 2026-01-31 03:42:30 --- .beads/issues.jsonl | 1 + 1 file changed, 1 insertion(+) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 54d4bf6..5f23d86 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -46,6 +46,7 @@ {"id":"vsbeads-fpp1","title":"vscode-server skill: open browser in incognito mode","description":"**Goal:** Open code-server in incognito window to avoid cache issues during development.\n\n**What we tried:**\n- Using Chrome CLI directly: `/Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome --incognito \"http://127.0.0.1:{PORT}/\"`\n- This opens in existing browser session but chrome-devtools MCP can't see/select the new page\n\n**Problem:**\n- chrome-devtools MCP launches its own Chrome instance with `--remote-debugging-pipe`\n- Incognito windows opened via CLI go to the user's regular Chrome, not the MCP-controlled Chrome\n- MCP's `list_pages` gets stuck when previously selected page is closed\n\n**Possible solutions:**\n1. Find a way to open incognito in MCP-controlled Chrome (if possible via DevTools protocol)\n2. Configure MCP to launch Chrome with `--incognito` flag from the start\n3. Use `--disk-cache-size=0` or similar cache-busting flags instead of incognito\n4. Just rely on hard reload (`ignoreCache: true`) which we already do","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-25T17:30:36.272116-08:00","updated_at":"2025-12-25T17:30:36.272116-08:00","labels":["dx"]} {"id":"vsbeads-g09","title":"Setup planet57.com and verify publisher domains","description":"Set up planet57.com website and use it to verify publisher identity on both marketplaces.\n\nTasks:\n1. Set up planet57.com (landing page or redirect to GitHub)\n2. Add DNS TXT record for VS Code Marketplace verification\n3. Complete domain verification on VS Code Marketplace\n4. (Open VSX uses namespace ownership claim instead of domain verification - already filed)","notes":"VS Code Marketplace requires the domain to be live (responding at https://planet57.com) before showing the verify button. Need to set up the site first, then verify.\n\nOpen VSX uses namespace ownership claim (GitHub issue) instead of domain verification - already filed at https://github.com/EclipseFdn/open-vsx.org/issues/6642\n\n---\n\n**GitHub Pages setup plan:**\n1. Create repo `jdillon/planet57.github.io` (or use any repo with Pages enabled)\n2. Add a `CNAME` file with `planet57.com`\n3. Point DNS: `A` record to GitHub's IPs or `CNAME` to `jdillon.github.io`\n4. Enable HTTPS in repo settings\n5. Simple landing page or redirect to GitHub profile","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-10T22:19:40.356092-08:00","updated_at":"2025-12-10T22:24:48.97242-08:00","labels":["dx","release"]} {"id":"vsbeads-gr5","title":"Filter presets/favorites system for Issues panel","description":"Currently filtering requires manually adding multiple filters (e.g., Open + In Progress + Blocked to exclude Closed). Need a better UX for common filter combinations.","design":"**Options considered:**\n\n1. **Preset filters** - Built-in presets like \"Not Closed\", \"Active Work\"\n - Simple UX, covers common cases\n - Limited flexibility\n\n2. **Negated filters** - Click to toggle +/- on any filter\n - Full flexibility\n - More complex UX, needs visual indicator\n\n3. **Default filter** - Start with a filter applied (e.g., \"Not Closed\")\n - Good for most common use case\n - User can clear if needed\n\n**Recommended approach:**\nCombination of 1 + 3: Filter \"favorites\" dropdown that preconfigures filter sets.\n- Start with static built-in favorites: \"Not Closed\", \"Active\" (in_progress + blocked), \"All\"\n- Future: Allow saving custom filter sets as favorites\n- Default to \"Not Closed\" on load","status":"open","priority":3,"issue_type":"feature","estimated_minutes":300,"created_at":"2025-11-26T23:34:31.877133-08:00","updated_at":"2025-12-04T11:59:38.532327-08:00","labels":["ui"]} +{"id":"vsbeads-h5f","title":"Add contributed Kanban board view","description":"Integrate PR #56 from micahbrich - a kanban board view for the Issues panel. The contribution is solid but needs a few improvements before/after merge.\n\n## PR Details\n- **PR**: https://github.com/jdillon/vscode-beads/pull/56\n- **Author**: micahbrich (trusted - 16yr GitHub account)\n- **Security**: Reviewed and approved\n- **Files**: KanbanBoard.tsx (new), IssuesView.tsx, styles.css, README.md\n\n## Scope\n1. Merge the PR\n2. Add bead-id display to cards\n3. Add labels display to cards\n4. Replace text toggle with icons\n5. Make all columns collapsible (not just Closed)","status":"open","priority":2,"issue_type":"epic","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:42:29.839294-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:42:29.839294-08:00","labels":["ui"]} {"id":"vsbeads-hgm","title":"Test sub-agent context isolation","description":"After creating browser-task agent, test that:\n\n1. MCP response bloat stays in sub-agent context\n2. Only summary returns to main agent\n3. Measure context savings vs direct MCP calls\n\n**Test workflow:**\n- Invoke browser-task to reload code-server window\n- Check main context size before/after\n- Compare to doing reload directly with MCP","status":"open","priority":1,"issue_type":"task","estimated_minutes":90,"created_at":"2025-11-28T21:52:30.146368-08:00","updated_at":"2025-12-04T11:58:43.57841-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-hgm","depends_on_id":"vsbeads-yjr","type":"blocks","created_at":"2025-11-28T21:52:30.148724-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-hgm","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:42.044495-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-hjx","title":"Filter toggle button feels broken when filters are active","description":"When the filter panel is open and filters are active (icon is green), clicking the filter toggle button doesn't do anything. This feels broken.\n\nPossible solutions:\n- Toggle could hide/show the panel without clearing filters\n- Some other UX pattern\n\nNeed to determine the right behavior.","status":"open","priority":4,"issue_type":"bug","estimated_minutes":90,"created_at":"2025-11-27T02:27:29.005135-08:00","updated_at":"2025-12-04T12:00:20.708765-08:00","labels":["ui"]} {"id":"vsbeads-i32l","title":"Make type sort order configurable","description":"Allow users to customize the display order of bead types. Could be a VS Code setting or .beads config.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-12-22T01:18:39.209631-08:00","updated_at":"2025-12-22T01:18:39.209631-08:00","labels":["config","ui"]} From 33bd3cdedc5f5178be0fc13cd31bfe1f38166d0e Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 03:47:33 -0800 Subject: [PATCH 22/49] bd daemon sync: 2026-01-31 03:47:33 --- .beads/issues.jsonl | 1 + 1 file changed, 1 insertion(+) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 5f23d86..154adda 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -18,6 +18,7 @@ {"id":"vsbeads-515e.1","title":"Test child using --parent","status":"tombstone","priority":3,"issue_type":"task","created_at":"2025-12-27T20:45:47.180329-08:00","updated_at":"2025-12-27T20:46:34.905009-08:00","dependencies":[{"issue_id":"vsbeads-515e.1","depends_on_id":"vsbeads-515e","type":"parent-child","created_at":"2025-12-27T20:45:47.190475-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T20:46:34.905009-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"} {"id":"vsbeads-57m","title":"Search should show filtered-out matches or offer to clear filters","description":"When searching by bead ID or text, results may be hidden by active filters (status, type, priority). This is confusing - you search for \"vsbeads-abc\" and see nothing because it's closed.\n\nOptions to consider:\n1. **Bypass filters when searching** - Global search ignores column filters\n2. **Show \"hidden by filter\" indicator** - \"3 matches hidden by filters\" with option to clear\n3. **Show filtered matches differently** - Grayed out rows at bottom showing filtered-out matches\n4. **Auto-clear filters on exact ID match** - If search matches a bead ID exactly, clear filters and select it","status":"open","priority":3,"issue_type":"feature","estimated_minutes":120,"created_at":"2025-12-04T16:58:53.89163-08:00","updated_at":"2025-12-05T12:01:16.828888-08:00","labels":["ui","ux"],"dependencies":[{"issue_id":"vsbeads-57m","depends_on_id":"vsbeads-wgr","type":"parent-child","created_at":"2025-12-17T16:53:56.291691-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-5c0","title":"Sub-agent browser automation to reduce context bloat","description":"Use sub-agents with isolated context windows to handle Chrome DevTools MCP operations, preventing context bloat in main conversation.\n\n**Problem:** Chrome DevTools MCP returns ~400 lines (full a11y tree) after every action, burning context fast.\n\n**Solution:** Delegate browser operations to short-lived sub-agents that:\n- Have their own context window (bloat stays there)\n- Return only minimal summaries to main agent\n- Batch multiple operations per invocation\n\n**Approach:**\n1. Create `browser-task` sub-agent with only Chrome DevTools MCP tools\n2. Focused instructions: execute task, return minimal summary\n3. Use for: reload window, click sequences, verify UI state","status":"open","priority":2,"issue_type":"epic","estimated_minutes":600,"created_at":"2025-11-28T21:52:14.860652-08:00","updated_at":"2025-12-04T11:58:51.219932-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-28T21:52:42.200798-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-n64","type":"related","created_at":"2025-11-28T21:52:42.256772-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-66j","title":"Merge kanban board PR #56","description":"Merge the contributed kanban board view from micahbrich.\n\n## Context\n- **PR**: https://github.com/jdillon/vscode-beads/pull/56\n- **Author**: micahbrich (trusted contributor, 16yr GitHub account)\n- **Security review**: PASSED - no vulnerabilities\n- **Code review**: Clean, follows project patterns\n\n## Files Added/Changed\n- `src/webview/views/KanbanBoard.tsx` (new, ~73 lines)\n- `src/webview/views/IssuesView.tsx` (+28 lines for toggle)\n- `src/webview/styles.css` (+150 lines kanban styles)\n- `README.md` (feature documentation)\n\n## Acceptance Criteria\n- [ ] PR merged to main\n- [ ] Build passes\n- [ ] Toggle between Table/Board works\n- [ ] Cards show title, type badge, priority badge, assignee\n- [ ] Closed column collapsed by default\n- [ ] Click card opens details panel\n\n## Open Questions\n- Should we squash commits or preserve history?\n- Tag contributor in release notes?","status":"open","priority":2,"issue_type":"task","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:32.434094-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:47:32.434094-08:00","labels":["ui"]} {"id":"vsbeads-695","title":"Support detecting beads database/daemon when using worktrees","description":"When using git worktrees, the extension should properly detect the .beads directory and daemon socket location.\n\n**Problem:**\nGit worktrees have their .git as a file pointing to the main worktree's .git directory, not a directory. The current detection logic may not handle this correctly.\n\n**Expected behavior:**\n- Detect .beads directory in worktree root\n- Fall back to main worktree if not found in current worktree\n- Daemon socket detection should work across worktrees\n- Project manager should handle worktree scenarios\n\n**Investigation needed:**\n- Test current behavior with worktrees\n- Check how .beads location is resolved\n- Verify daemon socket path resolution\n- Document expected worktree patterns (shared .beads vs per-worktree)","status":"open","priority":2,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-30T18:04:47.926774-08:00","created_by":"Jason Dillon","updated_at":"2026-01-30T18:04:47.926774-08:00","labels":["backend","daemon"]} {"id":"vsbeads-6mx","title":"Support file attachments via beads-attachments directory","description":"Consider supporting file attachments (screenshots, docs) by:\n\n1. Store files in a `beads-attachments/` directory in repo (or on beads-metadata branch)\n2. Extension provides \"Attach file\" action that:\n - Copies/moves file to `beads-attachments/\u003cissue-id\u003e/filename.png`\n - Adds markdown link/embed to issue body or as a comment\n3. Render inline in Details panel when markdown contains `![](beads-attachments/...)`\n\nUse cases:\n- \"Look at this screenshot\" during bug reports\n- Design mockups attached to feature issues\n- Reference docs for complex tasks\n\nQuestions:\n- Store on main branch or beads-metadata branch?\n- Naming convention: `beads-attachments/\u003cissue-id\u003e/` or flat with prefixes?\n- Auto-cleanup when issue is compacted/deleted?","status":"open","priority":4,"issue_type":"feature","estimated_minutes":480,"created_at":"2025-11-30T01:18:31.564585-08:00","updated_at":"2025-12-04T12:00:13.942853-08:00","labels":["ui"]} {"id":"vsbeads-79pr","title":"Tooltip content shows raw markdown instead of rendered","notes":"## Problem\nTooltip content displays raw markdown syntax instead of rendered HTML.\n\nExample: Shows `**bold**` and `- list item` instead of rendered **bold** and bullet points.\n\n## Expected\nMarkdown in tooltip content should be rendered as formatted HTML.\n\n## Fix\nUse a markdown renderer (e.g., `marked`, `react-markdown`) to convert markdown to HTML before displaying in tooltips.","status":"closed","priority":2,"issue_type":"bug","assignee":"jdillon","created_at":"2025-12-28T02:15:56.691005-08:00","updated_at":"2025-12-29T12:51:26.56702-08:00","closed_at":"2025-12-29T12:51:26.56702-08:00","close_reason":"Closed","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-79pr","depends_on_id":"vsbeads-un3l","type":"parent-child","created_at":"2025-12-29T11:39:53.265742-08:00","created_by":"daemon"}]} From 0903d45fcdabe1e1bb5443615294dbec2f1d0be9 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 03:47:46 -0800 Subject: [PATCH 23/49] bd daemon sync: 2026-01-31 03:47:46 --- .beads/issues.jsonl | 1 + 1 file changed, 1 insertion(+) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 154adda..9b27fa7 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -27,6 +27,7 @@ {"id":"vsbeads-7ue","title":"Show connection status indicator instead of full error view on disconnect","description":"When daemon disconnects, the entire panel shows an error view with Retry button. Better UX would be a status indicator (green→red) that shows connection state without replacing the panel content.","status":"open","priority":2,"issue_type":"feature","estimated_minutes":210,"created_at":"2025-11-29T15:04:49.017327-08:00","updated_at":"2025-12-04T11:58:48.492907-08:00","labels":["ui"]} {"id":"vsbeads-7xr","title":"Write E2E test: Issue selection shows details","description":"Test the core interaction flow: selecting an issue shows its details.\n\n**Test scenario:**\n1. Load Issues panel with seed data\n2. Click on an issue row\n3. Verify Details panel updates with selected issue\n4. Verify title, description, status display correctly\n\n**This proves:**\n- webview ↔ extension message passing works\n- Details panel receives selection events\n- UI updates reactively","acceptance_criteria":"- Test passes locally\n- Uses stable selectors (data-testid preferred)\n- Documents the interaction pattern","status":"open","priority":2,"issue_type":"task","estimated_minutes":60,"created_at":"2025-12-05T00:23:04.002552-08:00","updated_at":"2025-12-05T01:14:47.777369-08:00","labels":["testing"],"dependencies":[{"issue_id":"vsbeads-7xr","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.454114-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-7xr","depends_on_id":"vsbeads-w2x","type":"blocks","created_at":"2025-12-05T00:23:31.129272-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-804l","title":"Fix markdown list bullet rendering","description":"Markdown syntax is not rendering list bullets sanely in the webview","status":"open","priority":1,"issue_type":"task","created_at":"2026-01-11T00:46:08.429779-08:00","created_by":"jason","updated_at":"2026-01-11T00:46:08.429779-08:00","labels":["bug","ui"]} +{"id":"vsbeads-89u","title":"Kanban: Display labels on cards","description":"Add label badges to kanban board cards.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: Labels (e.g., 'ui', 'backend', 'bug') which help categorize issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nThe `LabelBadge` component already exists and is used in table view.\nImport and render `bead.labels` array using `LabelBadge`.\n\nExample from IssuesView.tsx:\n```tsx\nimport { LabelBadge } from \"../common/LabelBadge\";\n// ...\n{bead.labels?.map(label =\u003e \u003cLabelBadge key={label} label={label} /\u003e)}\n```\n\n## Design Considerations\n- Cards are narrower than table rows - labels may wrap\n- Consider limiting visible labels (e.g., show 2-3, then '+N more')\n- LabelBadge has size prop - use 'small' for compact display\n\n## Acceptance Criteria\n- [ ] Labels display on kanban cards\n- [ ] Uses existing LabelBadge component\n- [ ] Handles cards with many labels gracefully\n- [ ] Styling matches table view labels\n\n## Open Questions\n- Max labels to show before truncating?\n- Label position: in meta row or separate row?\n- Should labels wrap or scroll horizontally?","status":"open","priority":2,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:46.377432-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:47:46.377432-08:00","labels":["ui"]} {"id":"vsbeads-8oc","title":"Add right-click context menu for type/status/priority in Issues list","description":"Add context menu actions to the Issues list so users can right-click on type/status/priority badges to change them inline.\n\nSimilar to the inline editing in Details view (vsbeads-fwp), but using right-click instead of click since the list rows already have click-to-select behavior.\n\n## Requirements\n- Right-click on type badge → dropdown menu to change type\n- Right-click on status badge → dropdown menu to change status \n- Right-click on priority badge → dropdown menu to change priority\n- Changes auto-save (no confirmation needed)\n- Use same ColoredSelect dropdown component from Details view\n\n## Notes\n- Click on row = select issue (existing behavior)\n- Right-click on badge = edit that field (new behavior)","status":"open","priority":3,"issue_type":"feature","estimated_minutes":210,"created_at":"2025-12-01T00:39:43.583441-08:00","updated_at":"2025-12-04T11:59:24.877438-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-8oc","depends_on_id":"vsbeads-wgr","type":"parent-child","created_at":"2025-12-17T16:53:56.326584-08:00","created_by":"daemon","metadata":"{}"}],"comments":[{"id":24,"issue_id":"vsbeads-8oc","author":"jason","text":"**Estimate: Medium (~1-2 hours)**\n\nWhat's needed:\n1. Add `onContextMenu` handlers to type/status/priority badge cells in IssuesView\n2. Render a positioned dropdown menu on right-click (similar to column menu)\n3. Wire up the change to call `onUpdateBead` (already exists but unused in IssuesView)\n4. Reuse `ColoredSelect` or create a context menu variant\n\nComplexity factors:\n- We already have dropdown/menu patterns (column menu, preset dropdown)\n- We already have `ColoredSelect` component from DetailsView\n- Main work is positioning the context menu at click coordinates\n- Need to handle click-outside dismiss (pattern already exists)\n\nThe patterns exist, it's mostly wiring them together in a new context.","created_at":"2025-12-02T00:41:30Z"}]} {"id":"vsbeads-90cp","title":"Standalone task to associate with epic","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-27T20:54:31.509608-08:00","updated_at":"2025-12-29T11:36:43.341811-08:00","dependencies":[{"issue_id":"vsbeads-90cp","depends_on_id":"vsbeads-yhok","type":"parent-child","created_at":"2025-12-27T20:54:36.25191-08:00","created_by":"daemon"}],"deleted_at":"2025-12-29T11:36:43.341811-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"} {"id":"vsbeads-9r1","title":"\"Active\" filter includes blocked issues - should it?","description":"## Problem\n\nThe \"Active\" filter currently includes issues with `status=blocked`. This pollutes the list with items that can't be worked on.\n\n## Intent of \"Active\"\n\n\"Active\" was created to fill the gap between:\n- `bd ready` = open + no blockers (things to pick up)\n- `bd list --status=in_progress` = things currently being worked\n\nNeither shows both. \"Active\" should be: **ready + in_progress** = everything I can touch today.\n\n## Current Behavior\n\n`bd list --status=active` returns:\n- `open` (all, not just unblocked)\n- `in_progress`\n- `blocked` ← shouldn't be here\n\n## Expected Behavior\n\n\"Active\" should return:\n- `open` with no blockers (i.e., ready)\n- `in_progress`\n\nExcludes:\n- `blocked` (stalled, can't work on)\n- `open` with unresolved blockers (also can't work on)\n\n## Fix\n\nChange \"Active\" filter logic to: `(status=open AND no_blockers) OR status=in_progress`","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-17T02:14:50.439131-08:00","updated_at":"2025-12-17T02:14:50.439131-08:00","labels":["filter","ux"]} From d110bea823cb036381934fbb099cf3e443ee2815 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 03:47:51 -0800 Subject: [PATCH 24/49] bd daemon sync: 2026-01-31 03:47:51 --- .beads/issues.jsonl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 9b27fa7..ebc6cf0 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -80,6 +80,7 @@ {"id":"vsbeads-uak","title":"Research: macOS window screenshot for full Chrome capture","description":"Browser MCP tools only capture page viewport, not full Chrome window (including DevTools).\n\nResearch how to capture full window via macOS:\n- `screencapture -l \u003cwindowid\u003e` requires finding window ID\n- AppleScript can list windows but may need permissions\n- Useful for showing agent what's visible in DevTools panel\n\nLow priority - programmatic console/network access works for most cases.","status":"open","priority":3,"issue_type":"task","estimated_minutes":90,"created_at":"2025-11-27T17:34:17.25294-08:00","updated_at":"2025-12-04T11:59:34.100523-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-uak","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.301246-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-un3l","title":"UI Improvements Sprint 2025-12-29","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-12-29T11:39:29.634057-08:00","created_by":"jason","updated_at":"2025-12-30T01:46:19.212774-08:00","closed_at":"2025-12-30T01:46:19.21278-08:00","labels":["ui"]} {"id":"vsbeads-ur9","title":"Set up Playwright with Bun and TypeScript","description":"Initialize Playwright in the project with proper TypeScript and Bun configuration.\n\n**Tasks:**\n- Install `@playwright/test` as dev dependency\n- Create `playwright.config.ts` with sensible defaults\n- Set up `testsuite/` directory structure\n- Add npm scripts: `test:integration`, `test:integration:headed`, `test:integration:ui`\n- Configure for Chromium-only (code-server target)\n- Document local test running workflow","acceptance_criteria":"- `bun run test:integration` runs successfully (even with empty test file)\n- TypeScript types work in test files\n- Config includes proper timeouts for code-server startup","status":"open","priority":2,"issue_type":"task","estimated_minutes":60,"created_at":"2025-12-05T00:23:00.768062-08:00","updated_at":"2025-12-05T01:14:41.119755-08:00","labels":["dx","testing"],"dependencies":[{"issue_id":"vsbeads-ur9","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.221581-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-uvh","title":"Kanban: Use icons for view toggle","description":"Replace 'Table' and 'Board' text buttons with icons to save toolbar space.\n\n## Context\nCurrent toggle in IssuesView.tsx uses text buttons:\n```tsx\n\u003cbutton\u003eTable\u003c/button\u003e\n\u003cbutton\u003eBoard\u003c/button\u003e\n```\n\nIcons would be more compact and match the filter button style.\n\n## Implementation\nFile: `src/webview/views/IssuesView.tsx`\nIcons: `src/webview/icons/`\n\nNeed two icons:\n- Table view: rows/list icon (e.g., fa-table-list or fa-bars)\n- Board view: grid/kanban icon (e.g., fa-grip or fa-columns)\n\nProject uses Font Awesome Free SVGs stored in `src/webview/icons/`.\n\n## Design Considerations\n- Match existing icon style (16x16, currentColor fill)\n- Icons should be recognizable for table vs board concept\n- Keep title attribute for accessibility\n- Consider toggle group styling (segmented control)\n\n## Acceptance Criteria\n- [ ] Text replaced with appropriate icons\n- [ ] Icons added to `src/webview/icons/`\n- [ ] Title tooltips preserved for accessibility\n- [ ] Active state clearly visible\n- [ ] Matches filter button styling\n\n## Open Questions\n- Which specific Font Awesome icons? (fa-list vs fa-table-list vs fa-bars?)\n- Segmented control style or separate icon buttons?\n- Add visual separator between filter and view toggle?","status":"open","priority":3,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:51.094781-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:47:51.094781-08:00","labels":["ui"]} {"id":"vsbeads-vp1","title":"Implement Kanban board as editor panel","description":"Reimplement Kanban board as an editor panel instead of sidebar webview. Sidebar is too narrow for a useful Kanban view.","design":"Use `vscode.window.createWebviewPanel()` to open in editor area.\n- Register command to open Kanban\n- Full-width columns for drag-and-drop\n- Cards show status, priority, assignee\n- Drag between columns to change status","status":"open","priority":3,"issue_type":"feature","estimated_minutes":600,"created_at":"2025-11-26T18:39:31.95544-08:00","updated_at":"2025-12-04T11:59:40.103462-08:00","labels":["ui"]} {"id":"vsbeads-w2x","title":"Write first E2E test: Issues panel loads and displays data","description":"Write the first real E2E test that validates the Issues panel works.\n\n**Test scenario:**\n1. Open code-server with test beads project\n2. Navigate to Beads sidebar\n3. Verify Issues panel webview loads\n4. Verify issues from seed data appear in table\n5. Verify status badges display correctly\n\n**This proves:**\n- End-to-end data flow works (bd CLI → backend → webview)\n- Webview helper utilities work\n- Test fixtures work together","acceptance_criteria":"- Test passes locally with `bun run test:integration`\n- Test is readable and documents the user flow\n- Test uses shared selectors (not fragile locators)","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-05T00:23:03.354187-08:00","updated_at":"2025-12-05T01:14:47.066522-08:00","labels":["testing"],"dependencies":[{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.404077-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-dxo","type":"blocks","created_at":"2025-12-05T00:23:30.127404-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-jfa","type":"blocks","created_at":"2025-12-05T00:23:30.189514-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-tom","type":"blocks","created_at":"2025-12-05T00:23:30.579435-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-eby","type":"blocks","created_at":"2025-12-05T00:23:32.194889-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-wgr","title":"UX polish phase 3: complex UI interactions","description":"Continuation of UX improvements from vsbeads-nin. Remaining work involves more complex UI changes:\n\n- Search/filter interaction improvements (vsbeads-57m)\n- Right-click context menus for inline editing (vsbeads-8oc) \n- Labels in dependency references (vsbeads-iur)\n- Label autocomplete with portal-based dropdown (vsbeads-p78, blocked)\n\nThese require more architectural consideration (portals, context menus, search UX design).","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-17T16:42:52.180108-08:00","updated_at":"2025-12-17T16:54:23.622708-08:00","labels":["ui"]} @@ -89,3 +90,4 @@ {"id":"vsbeads-yhok","title":"Test Epic for hierarchy demo","status":"tombstone","priority":2,"issue_type":"epic","created_at":"2025-12-27T20:52:48.814844-08:00","updated_at":"2025-12-29T11:36:43.338738-08:00","deleted_at":"2025-12-29T11:36:43.338738-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"epic"} {"id":"vsbeads-yhok.2","title":"Child task of epic","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-27T20:53:03.840173-08:00","updated_at":"2025-12-29T11:36:43.340845-08:00","dependencies":[{"issue_id":"vsbeads-yhok.2","depends_on_id":"vsbeads-yhok","type":"parent-child","created_at":"2025-12-27T20:53:03.846123-08:00","created_by":"daemon"}],"deleted_at":"2025-12-29T11:36:43.340845-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"} {"id":"vsbeads-yjr","title":"Create browser-task sub-agent configuration","description":"Create `.claude/agents/browser-task.md` with:\n\n```markdown\n---\nname: browser-task\ndescription: Execute multi-step browser automation tasks in VS Code/code-server\ntools: mcp__chrome-devtools__*\nmodel: haiku\n---\n\nExecute browser automation tasks and return minimal summaries.\nDo not return full DOM snapshots. Summarize results concisely.\nIf errors occur, return specific error details.\n```\n\n**Questions to verify:**\n- Can we use glob `mcp__chrome-devtools__*` or must list each tool?\n- Should model be haiku (fast) or sonnet (better instruction following)?","status":"open","priority":1,"issue_type":"task","estimated_minutes":60,"created_at":"2025-11-28T21:52:14.912814-08:00","updated_at":"2025-12-04T11:58:45.105085-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-yjr","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:41.99215-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-zsz","title":"Kanban: Display bead ID on cards","description":"Add the bead ID to kanban board cards for quick reference.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: The bead ID (e.g., 'vsbeads-abc') which is useful for referencing issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nAdd bead ID display to the card, likely in `.kanban-card-meta` section or as a subtle ID above the title.\n\n## Design Considerations\n- ID should be visually subtle (not compete with title)\n- Consider monospace font for IDs\n- Match styling used in table view for consistency\n\n## Acceptance Criteria\n- [ ] Bead ID visible on each kanban card\n- [ ] Styling consistent with table view\n- [ ] ID is copy-able or at least readable\n\n## Open Questions\n- Full ID or short ID? (e.g., 'vsbeads-abc' vs 'abc')\n- Position: above title, below title, or in meta row?\n- Should ID be clickable (copy to clipboard)?","status":"open","priority":2,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:47.766612-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:47:47.766612-08:00","labels":["ui"]} From 5000d5547b66c4d7407ec8041a242840c8df12e5 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 03:48:08 -0800 Subject: [PATCH 25/49] bd daemon sync: 2026-01-31 03:48:08 --- .beads/issues.jsonl | 1 + 1 file changed, 1 insertion(+) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index ebc6cf0..650b951 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -37,6 +37,7 @@ {"id":"vsbeads-bcu","title":"Test bead for labels overflow","description":"Testing label display and overflow behaviordfsfs","status":"open","priority":3,"issue_type":"task","estimated_minutes":0,"created_at":"2025-12-01T15:32:16.718649-08:00","updated_at":"2025-12-04T11:59:22.270468-08:00","labels":["E","a","b","c","d"]} {"id":"vsbeads-btf","title":"Scroll to latest comment when adding a comment in Details view","description":"When adding a comment in the Details panel, the view should auto-scroll to show the newly added comment at the bottom. Initial implementation attempts didn't work due to webview scroll container complexity.","status":"open","priority":4,"issue_type":"feature","estimated_minutes":45,"created_at":"2025-11-27T20:45:35.746701-08:00","updated_at":"2025-12-04T12:00:18.508148-08:00","labels":["ui"],"comments":[{"id":23,"issue_id":"vsbeads-btf","author":"jason","text":"turns out this is kinda hard, or was for claude to get correct.","created_at":"2025-12-02T00:38:50Z"}]} {"id":"vsbeads-bxnb","title":"Research tree view / hierarchy display for issues list","description":"Explore options for optional tree/hierarchy view in issues list:\n\n**Inspiration**: IntelliJ IDEA project view has multiple view modes (flat list vs tree hierarchy)\n\n**Options to research**:\n1. Tree column in existing table (expandable rows)\n2. Separate tree view panel\n3. Toggle between list/tree modes\n4. TanStack Table tree data support\n\n**Questions**:\n- How to represent epic → task → subtask hierarchy?\n- How to handle dependencies vs parent-child?\n- What does TanStack Table support for tree data?\n- UX for expand/collapse in table vs dedicated tree view?","notes":"---\n2025-12-25: Draft PR #54 opened. Tree view basic functionality works but UI needs refinement - icons and visual hierarchy indicators need design review. TanStack Query added for data caching.","status":"blocked","priority":3,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-23T00:21:40.100896-08:00","updated_at":"2025-12-26T00:58:17.539117-08:00","labels":["research","ui"],"comments":[{"id":37,"issue_id":"vsbeads-bxnb","author":"jason","text":"Need to find some examples to show the agent what to build.","created_at":"2025-12-26T08:58:27Z"}]} +{"id":"vsbeads-cjh","title":"Kanban: Make all columns collapsible","description":"Allow collapsing any kanban column, not just the Closed column.\n\n## Context\nCurrent implementation only allows collapsing the Closed column:\n```tsx\nconst [closedExpanded, setClosedExpanded] = useState(false);\n// ...\nconst isCollapsed = status === \"closed\" \u0026\u0026 !closedExpanded;\n```\n\nUsers may want to collapse other columns (e.g., Open when focusing on in-progress work).\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nChange from single boolean to a Set tracking collapsed columns:\n```tsx\nconst [collapsedColumns, setCollapsedColumns] = useState\u003cSet\u003cBeadStatus\u003e\u003e(\n new Set([\"closed\"]) // Closed collapsed by default\n);\n\nconst toggleColumn = (status: BeadStatus) =\u003e {\n setCollapsedColumns(prev =\u003e {\n const next = new Set(prev);\n if (next.has(status)) next.delete(status);\n else next.add(status);\n return next;\n });\n};\n\nconst isCollapsed = collapsedColumns.has(status);\n```\n\n## Design Considerations\n- All column headers should be clickable (currently only Closed)\n- Add visual affordance (collapse/expand icon in header)\n- Persist collapsed state? (localStorage or just session)\n- Collapsed column should show count prominently\n\n## Acceptance Criteria\n- [ ] All 4 columns can be collapsed/expanded\n- [ ] Closed still collapsed by default\n- [ ] Click any column header to toggle\n- [ ] Visual indicator for collapsible headers\n- [ ] Collapsed columns show item count\n\n## Open Questions\n- Persist collapse state across sessions (localStorage)?\n- Add explicit collapse/expand icon or just clickable header?\n- Keyboard shortcut to collapse/expand?\n- Should collapsed columns have a minimum width or be truly minimal?","status":"open","priority":3,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:48:08.114162-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:48:08.114162-08:00","labels":["ui"]} {"id":"vsbeads-cqi","title":"Redesign UI: sidebar for navigation, editor panels for views","description":"Move Kanban, Dependency Graph, and Details to WebviewPanel (editor tabs). Keep project selector and issue list in sidebar.","status":"open","priority":2,"issue_type":"feature","estimated_minutes":960,"created_at":"2025-11-26T15:59:20.263974-08:00","updated_at":"2025-12-04T11:58:59.107775-08:00","labels":["ui"]} {"id":"vsbeads-dhe","title":"Set up GitHub Actions workflow for nightly E2E tests","description":"Create GitHub Actions workflow that runs integration tests on a schedule.\n\n**Requirements:**\n- Run nightly (not on every commit - too slow/resource intensive)\n- Manual trigger option (`workflow_dispatch`)\n- Use ubuntu-latest runner\n- Install code-server, bd CLI, Playwright browsers\n- Upload test artifacts on failure (screenshots, traces, HTML report)\n\n**Pattern:**\n```yaml\non:\n schedule:\n - cron: '0 6 * * *' # 6am UTC daily\n workflow_dispatch:\n```","acceptance_criteria":"- Workflow file in `.github/workflows/integration-tests.yml`\n- Manual trigger works from Actions tab\n- Artifacts available on failure\n- Sends notification on failure (optional/later)","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-05T00:23:04.64811-08:00","updated_at":"2025-12-05T01:14:48.401601-08:00","labels":["ci","testing"],"dependencies":[{"issue_id":"vsbeads-dhe","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.83836-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-dhe","depends_on_id":"vsbeads-w2x","type":"blocks","created_at":"2025-12-05T00:23:31.666861-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-drg","title":"Document branch naming convention in CLAUDE.md","description":"Add branch naming strategy to CLAUDE.md:\n\nFormat: `beads/\u003cbead-id\u003e-\u003cterse-description\u003e`\n\nExamples:\n- `beads/vsbeads-93b-release-workflow`\n- `beads/vsbeads-xyz-fix-daemon-polling`\n\nThis ties branches to tracked work and makes it easy to find related issues.","status":"open","priority":4,"issue_type":"task","estimated_minutes":30,"created_at":"2025-11-29T16:47:10.870444-08:00","updated_at":"2025-12-04T12:00:16.819609-08:00","labels":["dx"],"comments":[{"id":28,"issue_id":"vsbeads-drg","author":"jason","text":"this is good, but we often work on a few beads a time. Might want to noramlize some other branch name strategy instead.","created_at":"2025-12-06T20:31:29Z"}]} From 64f775121e5951d836ef47b40f34227596faa2b7 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 03:48:16 -0800 Subject: [PATCH 26/49] bd daemon sync: 2026-01-31 03:48:16 --- .beads/issues.jsonl | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 650b951..ecc8de4 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -18,7 +18,7 @@ {"id":"vsbeads-515e.1","title":"Test child using --parent","status":"tombstone","priority":3,"issue_type":"task","created_at":"2025-12-27T20:45:47.180329-08:00","updated_at":"2025-12-27T20:46:34.905009-08:00","dependencies":[{"issue_id":"vsbeads-515e.1","depends_on_id":"vsbeads-515e","type":"parent-child","created_at":"2025-12-27T20:45:47.190475-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T20:46:34.905009-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"} {"id":"vsbeads-57m","title":"Search should show filtered-out matches or offer to clear filters","description":"When searching by bead ID or text, results may be hidden by active filters (status, type, priority). This is confusing - you search for \"vsbeads-abc\" and see nothing because it's closed.\n\nOptions to consider:\n1. **Bypass filters when searching** - Global search ignores column filters\n2. **Show \"hidden by filter\" indicator** - \"3 matches hidden by filters\" with option to clear\n3. **Show filtered matches differently** - Grayed out rows at bottom showing filtered-out matches\n4. **Auto-clear filters on exact ID match** - If search matches a bead ID exactly, clear filters and select it","status":"open","priority":3,"issue_type":"feature","estimated_minutes":120,"created_at":"2025-12-04T16:58:53.89163-08:00","updated_at":"2025-12-05T12:01:16.828888-08:00","labels":["ui","ux"],"dependencies":[{"issue_id":"vsbeads-57m","depends_on_id":"vsbeads-wgr","type":"parent-child","created_at":"2025-12-17T16:53:56.291691-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-5c0","title":"Sub-agent browser automation to reduce context bloat","description":"Use sub-agents with isolated context windows to handle Chrome DevTools MCP operations, preventing context bloat in main conversation.\n\n**Problem:** Chrome DevTools MCP returns ~400 lines (full a11y tree) after every action, burning context fast.\n\n**Solution:** Delegate browser operations to short-lived sub-agents that:\n- Have their own context window (bloat stays there)\n- Return only minimal summaries to main agent\n- Batch multiple operations per invocation\n\n**Approach:**\n1. Create `browser-task` sub-agent with only Chrome DevTools MCP tools\n2. Focused instructions: execute task, return minimal summary\n3. Use for: reload window, click sequences, verify UI state","status":"open","priority":2,"issue_type":"epic","estimated_minutes":600,"created_at":"2025-11-28T21:52:14.860652-08:00","updated_at":"2025-12-04T11:58:51.219932-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-28T21:52:42.200798-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-n64","type":"related","created_at":"2025-11-28T21:52:42.256772-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-66j","title":"Merge kanban board PR #56","description":"Merge the contributed kanban board view from micahbrich.\n\n## Context\n- **PR**: https://github.com/jdillon/vscode-beads/pull/56\n- **Author**: micahbrich (trusted contributor, 16yr GitHub account)\n- **Security review**: PASSED - no vulnerabilities\n- **Code review**: Clean, follows project patterns\n\n## Files Added/Changed\n- `src/webview/views/KanbanBoard.tsx` (new, ~73 lines)\n- `src/webview/views/IssuesView.tsx` (+28 lines for toggle)\n- `src/webview/styles.css` (+150 lines kanban styles)\n- `README.md` (feature documentation)\n\n## Acceptance Criteria\n- [ ] PR merged to main\n- [ ] Build passes\n- [ ] Toggle between Table/Board works\n- [ ] Cards show title, type badge, priority badge, assignee\n- [ ] Closed column collapsed by default\n- [ ] Click card opens details panel\n\n## Open Questions\n- Should we squash commits or preserve history?\n- Tag contributor in release notes?","status":"open","priority":2,"issue_type":"task","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:32.434094-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:47:32.434094-08:00","labels":["ui"]} +{"id":"vsbeads-66j","title":"Merge kanban board PR #56","description":"Merge the contributed kanban board view from micahbrich.\n\n## Context\n- **PR**: https://github.com/jdillon/vscode-beads/pull/56\n- **Author**: micahbrich (trusted contributor, 16yr GitHub account)\n- **Security review**: PASSED - no vulnerabilities\n- **Code review**: Clean, follows project patterns\n\n## Files Added/Changed\n- `src/webview/views/KanbanBoard.tsx` (new, ~73 lines)\n- `src/webview/views/IssuesView.tsx` (+28 lines for toggle)\n- `src/webview/styles.css` (+150 lines kanban styles)\n- `README.md` (feature documentation)\n\n## Acceptance Criteria\n- [ ] PR merged to main\n- [ ] Build passes\n- [ ] Toggle between Table/Board works\n- [ ] Cards show title, type badge, priority badge, assignee\n- [ ] Closed column collapsed by default\n- [ ] Click card opens details panel\n\n## Open Questions\n- Should we squash commits or preserve history?\n- Tag contributor in release notes?","status":"open","priority":2,"issue_type":"task","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:32.434094-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:47:32.434094-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-66j","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:15.832452-08:00","created_by":"Jason Dillon"}]} {"id":"vsbeads-695","title":"Support detecting beads database/daemon when using worktrees","description":"When using git worktrees, the extension should properly detect the .beads directory and daemon socket location.\n\n**Problem:**\nGit worktrees have their .git as a file pointing to the main worktree's .git directory, not a directory. The current detection logic may not handle this correctly.\n\n**Expected behavior:**\n- Detect .beads directory in worktree root\n- Fall back to main worktree if not found in current worktree\n- Daemon socket detection should work across worktrees\n- Project manager should handle worktree scenarios\n\n**Investigation needed:**\n- Test current behavior with worktrees\n- Check how .beads location is resolved\n- Verify daemon socket path resolution\n- Document expected worktree patterns (shared .beads vs per-worktree)","status":"open","priority":2,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-30T18:04:47.926774-08:00","created_by":"Jason Dillon","updated_at":"2026-01-30T18:04:47.926774-08:00","labels":["backend","daemon"]} {"id":"vsbeads-6mx","title":"Support file attachments via beads-attachments directory","description":"Consider supporting file attachments (screenshots, docs) by:\n\n1. Store files in a `beads-attachments/` directory in repo (or on beads-metadata branch)\n2. Extension provides \"Attach file\" action that:\n - Copies/moves file to `beads-attachments/\u003cissue-id\u003e/filename.png`\n - Adds markdown link/embed to issue body or as a comment\n3. Render inline in Details panel when markdown contains `![](beads-attachments/...)`\n\nUse cases:\n- \"Look at this screenshot\" during bug reports\n- Design mockups attached to feature issues\n- Reference docs for complex tasks\n\nQuestions:\n- Store on main branch or beads-metadata branch?\n- Naming convention: `beads-attachments/\u003cissue-id\u003e/` or flat with prefixes?\n- Auto-cleanup when issue is compacted/deleted?","status":"open","priority":4,"issue_type":"feature","estimated_minutes":480,"created_at":"2025-11-30T01:18:31.564585-08:00","updated_at":"2025-12-04T12:00:13.942853-08:00","labels":["ui"]} {"id":"vsbeads-79pr","title":"Tooltip content shows raw markdown instead of rendered","notes":"## Problem\nTooltip content displays raw markdown syntax instead of rendered HTML.\n\nExample: Shows `**bold**` and `- list item` instead of rendered **bold** and bullet points.\n\n## Expected\nMarkdown in tooltip content should be rendered as formatted HTML.\n\n## Fix\nUse a markdown renderer (e.g., `marked`, `react-markdown`) to convert markdown to HTML before displaying in tooltips.","status":"closed","priority":2,"issue_type":"bug","assignee":"jdillon","created_at":"2025-12-28T02:15:56.691005-08:00","updated_at":"2025-12-29T12:51:26.56702-08:00","closed_at":"2025-12-29T12:51:26.56702-08:00","close_reason":"Closed","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-79pr","depends_on_id":"vsbeads-un3l","type":"parent-child","created_at":"2025-12-29T11:39:53.265742-08:00","created_by":"daemon"}]} @@ -27,7 +27,7 @@ {"id":"vsbeads-7ue","title":"Show connection status indicator instead of full error view on disconnect","description":"When daemon disconnects, the entire panel shows an error view with Retry button. Better UX would be a status indicator (green→red) that shows connection state without replacing the panel content.","status":"open","priority":2,"issue_type":"feature","estimated_minutes":210,"created_at":"2025-11-29T15:04:49.017327-08:00","updated_at":"2025-12-04T11:58:48.492907-08:00","labels":["ui"]} {"id":"vsbeads-7xr","title":"Write E2E test: Issue selection shows details","description":"Test the core interaction flow: selecting an issue shows its details.\n\n**Test scenario:**\n1. Load Issues panel with seed data\n2. Click on an issue row\n3. Verify Details panel updates with selected issue\n4. Verify title, description, status display correctly\n\n**This proves:**\n- webview ↔ extension message passing works\n- Details panel receives selection events\n- UI updates reactively","acceptance_criteria":"- Test passes locally\n- Uses stable selectors (data-testid preferred)\n- Documents the interaction pattern","status":"open","priority":2,"issue_type":"task","estimated_minutes":60,"created_at":"2025-12-05T00:23:04.002552-08:00","updated_at":"2025-12-05T01:14:47.777369-08:00","labels":["testing"],"dependencies":[{"issue_id":"vsbeads-7xr","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.454114-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-7xr","depends_on_id":"vsbeads-w2x","type":"blocks","created_at":"2025-12-05T00:23:31.129272-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-804l","title":"Fix markdown list bullet rendering","description":"Markdown syntax is not rendering list bullets sanely in the webview","status":"open","priority":1,"issue_type":"task","created_at":"2026-01-11T00:46:08.429779-08:00","created_by":"jason","updated_at":"2026-01-11T00:46:08.429779-08:00","labels":["bug","ui"]} -{"id":"vsbeads-89u","title":"Kanban: Display labels on cards","description":"Add label badges to kanban board cards.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: Labels (e.g., 'ui', 'backend', 'bug') which help categorize issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nThe `LabelBadge` component already exists and is used in table view.\nImport and render `bead.labels` array using `LabelBadge`.\n\nExample from IssuesView.tsx:\n```tsx\nimport { LabelBadge } from \"../common/LabelBadge\";\n// ...\n{bead.labels?.map(label =\u003e \u003cLabelBadge key={label} label={label} /\u003e)}\n```\n\n## Design Considerations\n- Cards are narrower than table rows - labels may wrap\n- Consider limiting visible labels (e.g., show 2-3, then '+N more')\n- LabelBadge has size prop - use 'small' for compact display\n\n## Acceptance Criteria\n- [ ] Labels display on kanban cards\n- [ ] Uses existing LabelBadge component\n- [ ] Handles cards with many labels gracefully\n- [ ] Styling matches table view labels\n\n## Open Questions\n- Max labels to show before truncating?\n- Label position: in meta row or separate row?\n- Should labels wrap or scroll horizontally?","status":"open","priority":2,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:46.377432-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:47:46.377432-08:00","labels":["ui"]} +{"id":"vsbeads-89u","title":"Kanban: Display labels on cards","description":"Add label badges to kanban board cards.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: Labels (e.g., 'ui', 'backend', 'bug') which help categorize issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nThe `LabelBadge` component already exists and is used in table view.\nImport and render `bead.labels` array using `LabelBadge`.\n\nExample from IssuesView.tsx:\n```tsx\nimport { LabelBadge } from \"../common/LabelBadge\";\n// ...\n{bead.labels?.map(label =\u003e \u003cLabelBadge key={label} label={label} /\u003e)}\n```\n\n## Design Considerations\n- Cards are narrower than table rows - labels may wrap\n- Consider limiting visible labels (e.g., show 2-3, then '+N more')\n- LabelBadge has size prop - use 'small' for compact display\n\n## Acceptance Criteria\n- [ ] Labels display on kanban cards\n- [ ] Uses existing LabelBadge component\n- [ ] Handles cards with many labels gracefully\n- [ ] Styling matches table view labels\n\n## Open Questions\n- Max labels to show before truncating?\n- Label position: in meta row or separate row?\n- Should labels wrap or scroll horizontally?","status":"open","priority":2,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:46.377432-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:47:46.377432-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-89u","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:15.963853-08:00","created_by":"Jason Dillon"}]} {"id":"vsbeads-8oc","title":"Add right-click context menu for type/status/priority in Issues list","description":"Add context menu actions to the Issues list so users can right-click on type/status/priority badges to change them inline.\n\nSimilar to the inline editing in Details view (vsbeads-fwp), but using right-click instead of click since the list rows already have click-to-select behavior.\n\n## Requirements\n- Right-click on type badge → dropdown menu to change type\n- Right-click on status badge → dropdown menu to change status \n- Right-click on priority badge → dropdown menu to change priority\n- Changes auto-save (no confirmation needed)\n- Use same ColoredSelect dropdown component from Details view\n\n## Notes\n- Click on row = select issue (existing behavior)\n- Right-click on badge = edit that field (new behavior)","status":"open","priority":3,"issue_type":"feature","estimated_minutes":210,"created_at":"2025-12-01T00:39:43.583441-08:00","updated_at":"2025-12-04T11:59:24.877438-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-8oc","depends_on_id":"vsbeads-wgr","type":"parent-child","created_at":"2025-12-17T16:53:56.326584-08:00","created_by":"daemon","metadata":"{}"}],"comments":[{"id":24,"issue_id":"vsbeads-8oc","author":"jason","text":"**Estimate: Medium (~1-2 hours)**\n\nWhat's needed:\n1. Add `onContextMenu` handlers to type/status/priority badge cells in IssuesView\n2. Render a positioned dropdown menu on right-click (similar to column menu)\n3. Wire up the change to call `onUpdateBead` (already exists but unused in IssuesView)\n4. Reuse `ColoredSelect` or create a context menu variant\n\nComplexity factors:\n- We already have dropdown/menu patterns (column menu, preset dropdown)\n- We already have `ColoredSelect` component from DetailsView\n- Main work is positioning the context menu at click coordinates\n- Need to handle click-outside dismiss (pattern already exists)\n\nThe patterns exist, it's mostly wiring them together in a new context.","created_at":"2025-12-02T00:41:30Z"}]} {"id":"vsbeads-90cp","title":"Standalone task to associate with epic","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-27T20:54:31.509608-08:00","updated_at":"2025-12-29T11:36:43.341811-08:00","dependencies":[{"issue_id":"vsbeads-90cp","depends_on_id":"vsbeads-yhok","type":"parent-child","created_at":"2025-12-27T20:54:36.25191-08:00","created_by":"daemon"}],"deleted_at":"2025-12-29T11:36:43.341811-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"} {"id":"vsbeads-9r1","title":"\"Active\" filter includes blocked issues - should it?","description":"## Problem\n\nThe \"Active\" filter currently includes issues with `status=blocked`. This pollutes the list with items that can't be worked on.\n\n## Intent of \"Active\"\n\n\"Active\" was created to fill the gap between:\n- `bd ready` = open + no blockers (things to pick up)\n- `bd list --status=in_progress` = things currently being worked\n\nNeither shows both. \"Active\" should be: **ready + in_progress** = everything I can touch today.\n\n## Current Behavior\n\n`bd list --status=active` returns:\n- `open` (all, not just unblocked)\n- `in_progress`\n- `blocked` ← shouldn't be here\n\n## Expected Behavior\n\n\"Active\" should return:\n- `open` with no blockers (i.e., ready)\n- `in_progress`\n\nExcludes:\n- `blocked` (stalled, can't work on)\n- `open` with unresolved blockers (also can't work on)\n\n## Fix\n\nChange \"Active\" filter logic to: `(status=open AND no_blockers) OR status=in_progress`","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-17T02:14:50.439131-08:00","updated_at":"2025-12-17T02:14:50.439131-08:00","labels":["filter","ux"]} @@ -37,7 +37,7 @@ {"id":"vsbeads-bcu","title":"Test bead for labels overflow","description":"Testing label display and overflow behaviordfsfs","status":"open","priority":3,"issue_type":"task","estimated_minutes":0,"created_at":"2025-12-01T15:32:16.718649-08:00","updated_at":"2025-12-04T11:59:22.270468-08:00","labels":["E","a","b","c","d"]} {"id":"vsbeads-btf","title":"Scroll to latest comment when adding a comment in Details view","description":"When adding a comment in the Details panel, the view should auto-scroll to show the newly added comment at the bottom. Initial implementation attempts didn't work due to webview scroll container complexity.","status":"open","priority":4,"issue_type":"feature","estimated_minutes":45,"created_at":"2025-11-27T20:45:35.746701-08:00","updated_at":"2025-12-04T12:00:18.508148-08:00","labels":["ui"],"comments":[{"id":23,"issue_id":"vsbeads-btf","author":"jason","text":"turns out this is kinda hard, or was for claude to get correct.","created_at":"2025-12-02T00:38:50Z"}]} {"id":"vsbeads-bxnb","title":"Research tree view / hierarchy display for issues list","description":"Explore options for optional tree/hierarchy view in issues list:\n\n**Inspiration**: IntelliJ IDEA project view has multiple view modes (flat list vs tree hierarchy)\n\n**Options to research**:\n1. Tree column in existing table (expandable rows)\n2. Separate tree view panel\n3. Toggle between list/tree modes\n4. TanStack Table tree data support\n\n**Questions**:\n- How to represent epic → task → subtask hierarchy?\n- How to handle dependencies vs parent-child?\n- What does TanStack Table support for tree data?\n- UX for expand/collapse in table vs dedicated tree view?","notes":"---\n2025-12-25: Draft PR #54 opened. Tree view basic functionality works but UI needs refinement - icons and visual hierarchy indicators need design review. TanStack Query added for data caching.","status":"blocked","priority":3,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-23T00:21:40.100896-08:00","updated_at":"2025-12-26T00:58:17.539117-08:00","labels":["research","ui"],"comments":[{"id":37,"issue_id":"vsbeads-bxnb","author":"jason","text":"Need to find some examples to show the agent what to build.","created_at":"2025-12-26T08:58:27Z"}]} -{"id":"vsbeads-cjh","title":"Kanban: Make all columns collapsible","description":"Allow collapsing any kanban column, not just the Closed column.\n\n## Context\nCurrent implementation only allows collapsing the Closed column:\n```tsx\nconst [closedExpanded, setClosedExpanded] = useState(false);\n// ...\nconst isCollapsed = status === \"closed\" \u0026\u0026 !closedExpanded;\n```\n\nUsers may want to collapse other columns (e.g., Open when focusing on in-progress work).\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nChange from single boolean to a Set tracking collapsed columns:\n```tsx\nconst [collapsedColumns, setCollapsedColumns] = useState\u003cSet\u003cBeadStatus\u003e\u003e(\n new Set([\"closed\"]) // Closed collapsed by default\n);\n\nconst toggleColumn = (status: BeadStatus) =\u003e {\n setCollapsedColumns(prev =\u003e {\n const next = new Set(prev);\n if (next.has(status)) next.delete(status);\n else next.add(status);\n return next;\n });\n};\n\nconst isCollapsed = collapsedColumns.has(status);\n```\n\n## Design Considerations\n- All column headers should be clickable (currently only Closed)\n- Add visual affordance (collapse/expand icon in header)\n- Persist collapsed state? (localStorage or just session)\n- Collapsed column should show count prominently\n\n## Acceptance Criteria\n- [ ] All 4 columns can be collapsed/expanded\n- [ ] Closed still collapsed by default\n- [ ] Click any column header to toggle\n- [ ] Visual indicator for collapsible headers\n- [ ] Collapsed columns show item count\n\n## Open Questions\n- Persist collapse state across sessions (localStorage)?\n- Add explicit collapse/expand icon or just clickable header?\n- Keyboard shortcut to collapse/expand?\n- Should collapsed columns have a minimum width or be truly minimal?","status":"open","priority":3,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:48:08.114162-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:48:08.114162-08:00","labels":["ui"]} +{"id":"vsbeads-cjh","title":"Kanban: Make all columns collapsible","description":"Allow collapsing any kanban column, not just the Closed column.\n\n## Context\nCurrent implementation only allows collapsing the Closed column:\n```tsx\nconst [closedExpanded, setClosedExpanded] = useState(false);\n// ...\nconst isCollapsed = status === \"closed\" \u0026\u0026 !closedExpanded;\n```\n\nUsers may want to collapse other columns (e.g., Open when focusing on in-progress work).\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nChange from single boolean to a Set tracking collapsed columns:\n```tsx\nconst [collapsedColumns, setCollapsedColumns] = useState\u003cSet\u003cBeadStatus\u003e\u003e(\n new Set([\"closed\"]) // Closed collapsed by default\n);\n\nconst toggleColumn = (status: BeadStatus) =\u003e {\n setCollapsedColumns(prev =\u003e {\n const next = new Set(prev);\n if (next.has(status)) next.delete(status);\n else next.add(status);\n return next;\n });\n};\n\nconst isCollapsed = collapsedColumns.has(status);\n```\n\n## Design Considerations\n- All column headers should be clickable (currently only Closed)\n- Add visual affordance (collapse/expand icon in header)\n- Persist collapsed state? (localStorage or just session)\n- Collapsed column should show count prominently\n\n## Acceptance Criteria\n- [ ] All 4 columns can be collapsed/expanded\n- [ ] Closed still collapsed by default\n- [ ] Click any column header to toggle\n- [ ] Visual indicator for collapsible headers\n- [ ] Collapsed columns show item count\n\n## Open Questions\n- Persist collapse state across sessions (localStorage)?\n- Add explicit collapse/expand icon or just clickable header?\n- Keyboard shortcut to collapse/expand?\n- Should collapsed columns have a minimum width or be truly minimal?","status":"open","priority":3,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:48:08.114162-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:48:08.114162-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-cjh","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:16.09939-08:00","created_by":"Jason Dillon"}]} {"id":"vsbeads-cqi","title":"Redesign UI: sidebar for navigation, editor panels for views","description":"Move Kanban, Dependency Graph, and Details to WebviewPanel (editor tabs). Keep project selector and issue list in sidebar.","status":"open","priority":2,"issue_type":"feature","estimated_minutes":960,"created_at":"2025-11-26T15:59:20.263974-08:00","updated_at":"2025-12-04T11:58:59.107775-08:00","labels":["ui"]} {"id":"vsbeads-dhe","title":"Set up GitHub Actions workflow for nightly E2E tests","description":"Create GitHub Actions workflow that runs integration tests on a schedule.\n\n**Requirements:**\n- Run nightly (not on every commit - too slow/resource intensive)\n- Manual trigger option (`workflow_dispatch`)\n- Use ubuntu-latest runner\n- Install code-server, bd CLI, Playwright browsers\n- Upload test artifacts on failure (screenshots, traces, HTML report)\n\n**Pattern:**\n```yaml\non:\n schedule:\n - cron: '0 6 * * *' # 6am UTC daily\n workflow_dispatch:\n```","acceptance_criteria":"- Workflow file in `.github/workflows/integration-tests.yml`\n- Manual trigger works from Actions tab\n- Artifacts available on failure\n- Sends notification on failure (optional/later)","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-05T00:23:04.64811-08:00","updated_at":"2025-12-05T01:14:48.401601-08:00","labels":["ci","testing"],"dependencies":[{"issue_id":"vsbeads-dhe","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.83836-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-dhe","depends_on_id":"vsbeads-w2x","type":"blocks","created_at":"2025-12-05T00:23:31.666861-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-drg","title":"Document branch naming convention in CLAUDE.md","description":"Add branch naming strategy to CLAUDE.md:\n\nFormat: `beads/\u003cbead-id\u003e-\u003cterse-description\u003e`\n\nExamples:\n- `beads/vsbeads-93b-release-workflow`\n- `beads/vsbeads-xyz-fix-daemon-polling`\n\nThis ties branches to tracked work and makes it easy to find related issues.","status":"open","priority":4,"issue_type":"task","estimated_minutes":30,"created_at":"2025-11-29T16:47:10.870444-08:00","updated_at":"2025-12-04T12:00:16.819609-08:00","labels":["dx"],"comments":[{"id":28,"issue_id":"vsbeads-drg","author":"jason","text":"this is good, but we often work on a few beads a time. Might want to noramlize some other branch name strategy instead.","created_at":"2025-12-06T20:31:29Z"}]} @@ -81,7 +81,7 @@ {"id":"vsbeads-uak","title":"Research: macOS window screenshot for full Chrome capture","description":"Browser MCP tools only capture page viewport, not full Chrome window (including DevTools).\n\nResearch how to capture full window via macOS:\n- `screencapture -l \u003cwindowid\u003e` requires finding window ID\n- AppleScript can list windows but may need permissions\n- Useful for showing agent what's visible in DevTools panel\n\nLow priority - programmatic console/network access works for most cases.","status":"open","priority":3,"issue_type":"task","estimated_minutes":90,"created_at":"2025-11-27T17:34:17.25294-08:00","updated_at":"2025-12-04T11:59:34.100523-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-uak","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.301246-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-un3l","title":"UI Improvements Sprint 2025-12-29","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-12-29T11:39:29.634057-08:00","created_by":"jason","updated_at":"2025-12-30T01:46:19.212774-08:00","closed_at":"2025-12-30T01:46:19.21278-08:00","labels":["ui"]} {"id":"vsbeads-ur9","title":"Set up Playwright with Bun and TypeScript","description":"Initialize Playwright in the project with proper TypeScript and Bun configuration.\n\n**Tasks:**\n- Install `@playwright/test` as dev dependency\n- Create `playwright.config.ts` with sensible defaults\n- Set up `testsuite/` directory structure\n- Add npm scripts: `test:integration`, `test:integration:headed`, `test:integration:ui`\n- Configure for Chromium-only (code-server target)\n- Document local test running workflow","acceptance_criteria":"- `bun run test:integration` runs successfully (even with empty test file)\n- TypeScript types work in test files\n- Config includes proper timeouts for code-server startup","status":"open","priority":2,"issue_type":"task","estimated_minutes":60,"created_at":"2025-12-05T00:23:00.768062-08:00","updated_at":"2025-12-05T01:14:41.119755-08:00","labels":["dx","testing"],"dependencies":[{"issue_id":"vsbeads-ur9","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.221581-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-uvh","title":"Kanban: Use icons for view toggle","description":"Replace 'Table' and 'Board' text buttons with icons to save toolbar space.\n\n## Context\nCurrent toggle in IssuesView.tsx uses text buttons:\n```tsx\n\u003cbutton\u003eTable\u003c/button\u003e\n\u003cbutton\u003eBoard\u003c/button\u003e\n```\n\nIcons would be more compact and match the filter button style.\n\n## Implementation\nFile: `src/webview/views/IssuesView.tsx`\nIcons: `src/webview/icons/`\n\nNeed two icons:\n- Table view: rows/list icon (e.g., fa-table-list or fa-bars)\n- Board view: grid/kanban icon (e.g., fa-grip or fa-columns)\n\nProject uses Font Awesome Free SVGs stored in `src/webview/icons/`.\n\n## Design Considerations\n- Match existing icon style (16x16, currentColor fill)\n- Icons should be recognizable for table vs board concept\n- Keep title attribute for accessibility\n- Consider toggle group styling (segmented control)\n\n## Acceptance Criteria\n- [ ] Text replaced with appropriate icons\n- [ ] Icons added to `src/webview/icons/`\n- [ ] Title tooltips preserved for accessibility\n- [ ] Active state clearly visible\n- [ ] Matches filter button styling\n\n## Open Questions\n- Which specific Font Awesome icons? (fa-list vs fa-table-list vs fa-bars?)\n- Segmented control style or separate icon buttons?\n- Add visual separator between filter and view toggle?","status":"open","priority":3,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:51.094781-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:47:51.094781-08:00","labels":["ui"]} +{"id":"vsbeads-uvh","title":"Kanban: Use icons for view toggle","description":"Replace 'Table' and 'Board' text buttons with icons to save toolbar space.\n\n## Context\nCurrent toggle in IssuesView.tsx uses text buttons:\n```tsx\n\u003cbutton\u003eTable\u003c/button\u003e\n\u003cbutton\u003eBoard\u003c/button\u003e\n```\n\nIcons would be more compact and match the filter button style.\n\n## Implementation\nFile: `src/webview/views/IssuesView.tsx`\nIcons: `src/webview/icons/`\n\nNeed two icons:\n- Table view: rows/list icon (e.g., fa-table-list or fa-bars)\n- Board view: grid/kanban icon (e.g., fa-grip or fa-columns)\n\nProject uses Font Awesome Free SVGs stored in `src/webview/icons/`.\n\n## Design Considerations\n- Match existing icon style (16x16, currentColor fill)\n- Icons should be recognizable for table vs board concept\n- Keep title attribute for accessibility\n- Consider toggle group styling (segmented control)\n\n## Acceptance Criteria\n- [ ] Text replaced with appropriate icons\n- [ ] Icons added to `src/webview/icons/`\n- [ ] Title tooltips preserved for accessibility\n- [ ] Active state clearly visible\n- [ ] Matches filter button styling\n\n## Open Questions\n- Which specific Font Awesome icons? (fa-list vs fa-table-list vs fa-bars?)\n- Segmented control style or separate icon buttons?\n- Add visual separator between filter and view toggle?","status":"open","priority":3,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:51.094781-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:47:51.094781-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-uvh","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:16.032489-08:00","created_by":"Jason Dillon"}]} {"id":"vsbeads-vp1","title":"Implement Kanban board as editor panel","description":"Reimplement Kanban board as an editor panel instead of sidebar webview. Sidebar is too narrow for a useful Kanban view.","design":"Use `vscode.window.createWebviewPanel()` to open in editor area.\n- Register command to open Kanban\n- Full-width columns for drag-and-drop\n- Cards show status, priority, assignee\n- Drag between columns to change status","status":"open","priority":3,"issue_type":"feature","estimated_minutes":600,"created_at":"2025-11-26T18:39:31.95544-08:00","updated_at":"2025-12-04T11:59:40.103462-08:00","labels":["ui"]} {"id":"vsbeads-w2x","title":"Write first E2E test: Issues panel loads and displays data","description":"Write the first real E2E test that validates the Issues panel works.\n\n**Test scenario:**\n1. Open code-server with test beads project\n2. Navigate to Beads sidebar\n3. Verify Issues panel webview loads\n4. Verify issues from seed data appear in table\n5. Verify status badges display correctly\n\n**This proves:**\n- End-to-end data flow works (bd CLI → backend → webview)\n- Webview helper utilities work\n- Test fixtures work together","acceptance_criteria":"- Test passes locally with `bun run test:integration`\n- Test is readable and documents the user flow\n- Test uses shared selectors (not fragile locators)","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-05T00:23:03.354187-08:00","updated_at":"2025-12-05T01:14:47.066522-08:00","labels":["testing"],"dependencies":[{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.404077-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-dxo","type":"blocks","created_at":"2025-12-05T00:23:30.127404-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-jfa","type":"blocks","created_at":"2025-12-05T00:23:30.189514-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-tom","type":"blocks","created_at":"2025-12-05T00:23:30.579435-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-eby","type":"blocks","created_at":"2025-12-05T00:23:32.194889-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-wgr","title":"UX polish phase 3: complex UI interactions","description":"Continuation of UX improvements from vsbeads-nin. Remaining work involves more complex UI changes:\n\n- Search/filter interaction improvements (vsbeads-57m)\n- Right-click context menus for inline editing (vsbeads-8oc) \n- Labels in dependency references (vsbeads-iur)\n- Label autocomplete with portal-based dropdown (vsbeads-p78, blocked)\n\nThese require more architectural consideration (portals, context menus, search UX design).","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-17T16:42:52.180108-08:00","updated_at":"2025-12-17T16:54:23.622708-08:00","labels":["ui"]} @@ -91,4 +91,4 @@ {"id":"vsbeads-yhok","title":"Test Epic for hierarchy demo","status":"tombstone","priority":2,"issue_type":"epic","created_at":"2025-12-27T20:52:48.814844-08:00","updated_at":"2025-12-29T11:36:43.338738-08:00","deleted_at":"2025-12-29T11:36:43.338738-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"epic"} {"id":"vsbeads-yhok.2","title":"Child task of epic","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-27T20:53:03.840173-08:00","updated_at":"2025-12-29T11:36:43.340845-08:00","dependencies":[{"issue_id":"vsbeads-yhok.2","depends_on_id":"vsbeads-yhok","type":"parent-child","created_at":"2025-12-27T20:53:03.846123-08:00","created_by":"daemon"}],"deleted_at":"2025-12-29T11:36:43.340845-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"} {"id":"vsbeads-yjr","title":"Create browser-task sub-agent configuration","description":"Create `.claude/agents/browser-task.md` with:\n\n```markdown\n---\nname: browser-task\ndescription: Execute multi-step browser automation tasks in VS Code/code-server\ntools: mcp__chrome-devtools__*\nmodel: haiku\n---\n\nExecute browser automation tasks and return minimal summaries.\nDo not return full DOM snapshots. Summarize results concisely.\nIf errors occur, return specific error details.\n```\n\n**Questions to verify:**\n- Can we use glob `mcp__chrome-devtools__*` or must list each tool?\n- Should model be haiku (fast) or sonnet (better instruction following)?","status":"open","priority":1,"issue_type":"task","estimated_minutes":60,"created_at":"2025-11-28T21:52:14.912814-08:00","updated_at":"2025-12-04T11:58:45.105085-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-yjr","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:41.99215-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-zsz","title":"Kanban: Display bead ID on cards","description":"Add the bead ID to kanban board cards for quick reference.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: The bead ID (e.g., 'vsbeads-abc') which is useful for referencing issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nAdd bead ID display to the card, likely in `.kanban-card-meta` section or as a subtle ID above the title.\n\n## Design Considerations\n- ID should be visually subtle (not compete with title)\n- Consider monospace font for IDs\n- Match styling used in table view for consistency\n\n## Acceptance Criteria\n- [ ] Bead ID visible on each kanban card\n- [ ] Styling consistent with table view\n- [ ] ID is copy-able or at least readable\n\n## Open Questions\n- Full ID or short ID? (e.g., 'vsbeads-abc' vs 'abc')\n- Position: above title, below title, or in meta row?\n- Should ID be clickable (copy to clipboard)?","status":"open","priority":2,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:47.766612-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:47:47.766612-08:00","labels":["ui"]} +{"id":"vsbeads-zsz","title":"Kanban: Display bead ID on cards","description":"Add the bead ID to kanban board cards for quick reference.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: The bead ID (e.g., 'vsbeads-abc') which is useful for referencing issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nAdd bead ID display to the card, likely in `.kanban-card-meta` section or as a subtle ID above the title.\n\n## Design Considerations\n- ID should be visually subtle (not compete with title)\n- Consider monospace font for IDs\n- Match styling used in table view for consistency\n\n## Acceptance Criteria\n- [ ] Bead ID visible on each kanban card\n- [ ] Styling consistent with table view\n- [ ] ID is copy-able or at least readable\n\n## Open Questions\n- Full ID or short ID? (e.g., 'vsbeads-abc' vs 'abc')\n- Position: above title, below title, or in meta row?\n- Should ID be clickable (copy to clipboard)?","status":"open","priority":2,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:47.766612-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:47:47.766612-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:15.898179-08:00","created_by":"Jason Dillon"}]} From de1b28fa10326586e5c68b210be571c9a01b0447 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 03:48:20 -0800 Subject: [PATCH 27/49] bd daemon sync: 2026-01-31 03:48:20 --- .beads/issues.jsonl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index ecc8de4..2909661 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -27,7 +27,7 @@ {"id":"vsbeads-7ue","title":"Show connection status indicator instead of full error view on disconnect","description":"When daemon disconnects, the entire panel shows an error view with Retry button. Better UX would be a status indicator (green→red) that shows connection state without replacing the panel content.","status":"open","priority":2,"issue_type":"feature","estimated_minutes":210,"created_at":"2025-11-29T15:04:49.017327-08:00","updated_at":"2025-12-04T11:58:48.492907-08:00","labels":["ui"]} {"id":"vsbeads-7xr","title":"Write E2E test: Issue selection shows details","description":"Test the core interaction flow: selecting an issue shows its details.\n\n**Test scenario:**\n1. Load Issues panel with seed data\n2. Click on an issue row\n3. Verify Details panel updates with selected issue\n4. Verify title, description, status display correctly\n\n**This proves:**\n- webview ↔ extension message passing works\n- Details panel receives selection events\n- UI updates reactively","acceptance_criteria":"- Test passes locally\n- Uses stable selectors (data-testid preferred)\n- Documents the interaction pattern","status":"open","priority":2,"issue_type":"task","estimated_minutes":60,"created_at":"2025-12-05T00:23:04.002552-08:00","updated_at":"2025-12-05T01:14:47.777369-08:00","labels":["testing"],"dependencies":[{"issue_id":"vsbeads-7xr","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.454114-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-7xr","depends_on_id":"vsbeads-w2x","type":"blocks","created_at":"2025-12-05T00:23:31.129272-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-804l","title":"Fix markdown list bullet rendering","description":"Markdown syntax is not rendering list bullets sanely in the webview","status":"open","priority":1,"issue_type":"task","created_at":"2026-01-11T00:46:08.429779-08:00","created_by":"jason","updated_at":"2026-01-11T00:46:08.429779-08:00","labels":["bug","ui"]} -{"id":"vsbeads-89u","title":"Kanban: Display labels on cards","description":"Add label badges to kanban board cards.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: Labels (e.g., 'ui', 'backend', 'bug') which help categorize issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nThe `LabelBadge` component already exists and is used in table view.\nImport and render `bead.labels` array using `LabelBadge`.\n\nExample from IssuesView.tsx:\n```tsx\nimport { LabelBadge } from \"../common/LabelBadge\";\n// ...\n{bead.labels?.map(label =\u003e \u003cLabelBadge key={label} label={label} /\u003e)}\n```\n\n## Design Considerations\n- Cards are narrower than table rows - labels may wrap\n- Consider limiting visible labels (e.g., show 2-3, then '+N more')\n- LabelBadge has size prop - use 'small' for compact display\n\n## Acceptance Criteria\n- [ ] Labels display on kanban cards\n- [ ] Uses existing LabelBadge component\n- [ ] Handles cards with many labels gracefully\n- [ ] Styling matches table view labels\n\n## Open Questions\n- Max labels to show before truncating?\n- Label position: in meta row or separate row?\n- Should labels wrap or scroll horizontally?","status":"open","priority":2,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:46.377432-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:47:46.377432-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-89u","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:15.963853-08:00","created_by":"Jason Dillon"}]} +{"id":"vsbeads-89u","title":"Kanban: Display labels on cards","description":"Add label badges to kanban board cards.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: Labels (e.g., 'ui', 'backend', 'bug') which help categorize issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nThe `LabelBadge` component already exists and is used in table view.\nImport and render `bead.labels` array using `LabelBadge`.\n\nExample from IssuesView.tsx:\n```tsx\nimport { LabelBadge } from \"../common/LabelBadge\";\n// ...\n{bead.labels?.map(label =\u003e \u003cLabelBadge key={label} label={label} /\u003e)}\n```\n\n## Design Considerations\n- Cards are narrower than table rows - labels may wrap\n- Consider limiting visible labels (e.g., show 2-3, then '+N more')\n- LabelBadge has size prop - use 'small' for compact display\n\n## Acceptance Criteria\n- [ ] Labels display on kanban cards\n- [ ] Uses existing LabelBadge component\n- [ ] Handles cards with many labels gracefully\n- [ ] Styling matches table view labels\n\n## Open Questions\n- Max labels to show before truncating?\n- Label position: in meta row or separate row?\n- Should labels wrap or scroll horizontally?","status":"open","priority":2,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:46.377432-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:47:46.377432-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-89u","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:15.963853-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-89u","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.497035-08:00","created_by":"Jason Dillon"}]} {"id":"vsbeads-8oc","title":"Add right-click context menu for type/status/priority in Issues list","description":"Add context menu actions to the Issues list so users can right-click on type/status/priority badges to change them inline.\n\nSimilar to the inline editing in Details view (vsbeads-fwp), but using right-click instead of click since the list rows already have click-to-select behavior.\n\n## Requirements\n- Right-click on type badge → dropdown menu to change type\n- Right-click on status badge → dropdown menu to change status \n- Right-click on priority badge → dropdown menu to change priority\n- Changes auto-save (no confirmation needed)\n- Use same ColoredSelect dropdown component from Details view\n\n## Notes\n- Click on row = select issue (existing behavior)\n- Right-click on badge = edit that field (new behavior)","status":"open","priority":3,"issue_type":"feature","estimated_minutes":210,"created_at":"2025-12-01T00:39:43.583441-08:00","updated_at":"2025-12-04T11:59:24.877438-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-8oc","depends_on_id":"vsbeads-wgr","type":"parent-child","created_at":"2025-12-17T16:53:56.326584-08:00","created_by":"daemon","metadata":"{}"}],"comments":[{"id":24,"issue_id":"vsbeads-8oc","author":"jason","text":"**Estimate: Medium (~1-2 hours)**\n\nWhat's needed:\n1. Add `onContextMenu` handlers to type/status/priority badge cells in IssuesView\n2. Render a positioned dropdown menu on right-click (similar to column menu)\n3. Wire up the change to call `onUpdateBead` (already exists but unused in IssuesView)\n4. Reuse `ColoredSelect` or create a context menu variant\n\nComplexity factors:\n- We already have dropdown/menu patterns (column menu, preset dropdown)\n- We already have `ColoredSelect` component from DetailsView\n- Main work is positioning the context menu at click coordinates\n- Need to handle click-outside dismiss (pattern already exists)\n\nThe patterns exist, it's mostly wiring them together in a new context.","created_at":"2025-12-02T00:41:30Z"}]} {"id":"vsbeads-90cp","title":"Standalone task to associate with epic","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-27T20:54:31.509608-08:00","updated_at":"2025-12-29T11:36:43.341811-08:00","dependencies":[{"issue_id":"vsbeads-90cp","depends_on_id":"vsbeads-yhok","type":"parent-child","created_at":"2025-12-27T20:54:36.25191-08:00","created_by":"daemon"}],"deleted_at":"2025-12-29T11:36:43.341811-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"} {"id":"vsbeads-9r1","title":"\"Active\" filter includes blocked issues - should it?","description":"## Problem\n\nThe \"Active\" filter currently includes issues with `status=blocked`. This pollutes the list with items that can't be worked on.\n\n## Intent of \"Active\"\n\n\"Active\" was created to fill the gap between:\n- `bd ready` = open + no blockers (things to pick up)\n- `bd list --status=in_progress` = things currently being worked\n\nNeither shows both. \"Active\" should be: **ready + in_progress** = everything I can touch today.\n\n## Current Behavior\n\n`bd list --status=active` returns:\n- `open` (all, not just unblocked)\n- `in_progress`\n- `blocked` ← shouldn't be here\n\n## Expected Behavior\n\n\"Active\" should return:\n- `open` with no blockers (i.e., ready)\n- `in_progress`\n\nExcludes:\n- `blocked` (stalled, can't work on)\n- `open` with unresolved blockers (also can't work on)\n\n## Fix\n\nChange \"Active\" filter logic to: `(status=open AND no_blockers) OR status=in_progress`","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-17T02:14:50.439131-08:00","updated_at":"2025-12-17T02:14:50.439131-08:00","labels":["filter","ux"]} @@ -37,7 +37,7 @@ {"id":"vsbeads-bcu","title":"Test bead for labels overflow","description":"Testing label display and overflow behaviordfsfs","status":"open","priority":3,"issue_type":"task","estimated_minutes":0,"created_at":"2025-12-01T15:32:16.718649-08:00","updated_at":"2025-12-04T11:59:22.270468-08:00","labels":["E","a","b","c","d"]} {"id":"vsbeads-btf","title":"Scroll to latest comment when adding a comment in Details view","description":"When adding a comment in the Details panel, the view should auto-scroll to show the newly added comment at the bottom. Initial implementation attempts didn't work due to webview scroll container complexity.","status":"open","priority":4,"issue_type":"feature","estimated_minutes":45,"created_at":"2025-11-27T20:45:35.746701-08:00","updated_at":"2025-12-04T12:00:18.508148-08:00","labels":["ui"],"comments":[{"id":23,"issue_id":"vsbeads-btf","author":"jason","text":"turns out this is kinda hard, or was for claude to get correct.","created_at":"2025-12-02T00:38:50Z"}]} {"id":"vsbeads-bxnb","title":"Research tree view / hierarchy display for issues list","description":"Explore options for optional tree/hierarchy view in issues list:\n\n**Inspiration**: IntelliJ IDEA project view has multiple view modes (flat list vs tree hierarchy)\n\n**Options to research**:\n1. Tree column in existing table (expandable rows)\n2. Separate tree view panel\n3. Toggle between list/tree modes\n4. TanStack Table tree data support\n\n**Questions**:\n- How to represent epic → task → subtask hierarchy?\n- How to handle dependencies vs parent-child?\n- What does TanStack Table support for tree data?\n- UX for expand/collapse in table vs dedicated tree view?","notes":"---\n2025-12-25: Draft PR #54 opened. Tree view basic functionality works but UI needs refinement - icons and visual hierarchy indicators need design review. TanStack Query added for data caching.","status":"blocked","priority":3,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-23T00:21:40.100896-08:00","updated_at":"2025-12-26T00:58:17.539117-08:00","labels":["research","ui"],"comments":[{"id":37,"issue_id":"vsbeads-bxnb","author":"jason","text":"Need to find some examples to show the agent what to build.","created_at":"2025-12-26T08:58:27Z"}]} -{"id":"vsbeads-cjh","title":"Kanban: Make all columns collapsible","description":"Allow collapsing any kanban column, not just the Closed column.\n\n## Context\nCurrent implementation only allows collapsing the Closed column:\n```tsx\nconst [closedExpanded, setClosedExpanded] = useState(false);\n// ...\nconst isCollapsed = status === \"closed\" \u0026\u0026 !closedExpanded;\n```\n\nUsers may want to collapse other columns (e.g., Open when focusing on in-progress work).\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nChange from single boolean to a Set tracking collapsed columns:\n```tsx\nconst [collapsedColumns, setCollapsedColumns] = useState\u003cSet\u003cBeadStatus\u003e\u003e(\n new Set([\"closed\"]) // Closed collapsed by default\n);\n\nconst toggleColumn = (status: BeadStatus) =\u003e {\n setCollapsedColumns(prev =\u003e {\n const next = new Set(prev);\n if (next.has(status)) next.delete(status);\n else next.add(status);\n return next;\n });\n};\n\nconst isCollapsed = collapsedColumns.has(status);\n```\n\n## Design Considerations\n- All column headers should be clickable (currently only Closed)\n- Add visual affordance (collapse/expand icon in header)\n- Persist collapsed state? (localStorage or just session)\n- Collapsed column should show count prominently\n\n## Acceptance Criteria\n- [ ] All 4 columns can be collapsed/expanded\n- [ ] Closed still collapsed by default\n- [ ] Click any column header to toggle\n- [ ] Visual indicator for collapsible headers\n- [ ] Collapsed columns show item count\n\n## Open Questions\n- Persist collapse state across sessions (localStorage)?\n- Add explicit collapse/expand icon or just clickable header?\n- Keyboard shortcut to collapse/expand?\n- Should collapsed columns have a minimum width or be truly minimal?","status":"open","priority":3,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:48:08.114162-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:48:08.114162-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-cjh","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:16.09939-08:00","created_by":"Jason Dillon"}]} +{"id":"vsbeads-cjh","title":"Kanban: Make all columns collapsible","description":"Allow collapsing any kanban column, not just the Closed column.\n\n## Context\nCurrent implementation only allows collapsing the Closed column:\n```tsx\nconst [closedExpanded, setClosedExpanded] = useState(false);\n// ...\nconst isCollapsed = status === \"closed\" \u0026\u0026 !closedExpanded;\n```\n\nUsers may want to collapse other columns (e.g., Open when focusing on in-progress work).\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nChange from single boolean to a Set tracking collapsed columns:\n```tsx\nconst [collapsedColumns, setCollapsedColumns] = useState\u003cSet\u003cBeadStatus\u003e\u003e(\n new Set([\"closed\"]) // Closed collapsed by default\n);\n\nconst toggleColumn = (status: BeadStatus) =\u003e {\n setCollapsedColumns(prev =\u003e {\n const next = new Set(prev);\n if (next.has(status)) next.delete(status);\n else next.add(status);\n return next;\n });\n};\n\nconst isCollapsed = collapsedColumns.has(status);\n```\n\n## Design Considerations\n- All column headers should be clickable (currently only Closed)\n- Add visual affordance (collapse/expand icon in header)\n- Persist collapsed state? (localStorage or just session)\n- Collapsed column should show count prominently\n\n## Acceptance Criteria\n- [ ] All 4 columns can be collapsed/expanded\n- [ ] Closed still collapsed by default\n- [ ] Click any column header to toggle\n- [ ] Visual indicator for collapsible headers\n- [ ] Collapsed columns show item count\n\n## Open Questions\n- Persist collapse state across sessions (localStorage)?\n- Add explicit collapse/expand icon or just clickable header?\n- Keyboard shortcut to collapse/expand?\n- Should collapsed columns have a minimum width or be truly minimal?","status":"open","priority":3,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:48:08.114162-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:48:08.114162-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-cjh","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:16.09939-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-cjh","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.632969-08:00","created_by":"Jason Dillon"}]} {"id":"vsbeads-cqi","title":"Redesign UI: sidebar for navigation, editor panels for views","description":"Move Kanban, Dependency Graph, and Details to WebviewPanel (editor tabs). Keep project selector and issue list in sidebar.","status":"open","priority":2,"issue_type":"feature","estimated_minutes":960,"created_at":"2025-11-26T15:59:20.263974-08:00","updated_at":"2025-12-04T11:58:59.107775-08:00","labels":["ui"]} {"id":"vsbeads-dhe","title":"Set up GitHub Actions workflow for nightly E2E tests","description":"Create GitHub Actions workflow that runs integration tests on a schedule.\n\n**Requirements:**\n- Run nightly (not on every commit - too slow/resource intensive)\n- Manual trigger option (`workflow_dispatch`)\n- Use ubuntu-latest runner\n- Install code-server, bd CLI, Playwright browsers\n- Upload test artifacts on failure (screenshots, traces, HTML report)\n\n**Pattern:**\n```yaml\non:\n schedule:\n - cron: '0 6 * * *' # 6am UTC daily\n workflow_dispatch:\n```","acceptance_criteria":"- Workflow file in `.github/workflows/integration-tests.yml`\n- Manual trigger works from Actions tab\n- Artifacts available on failure\n- Sends notification on failure (optional/later)","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-05T00:23:04.64811-08:00","updated_at":"2025-12-05T01:14:48.401601-08:00","labels":["ci","testing"],"dependencies":[{"issue_id":"vsbeads-dhe","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.83836-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-dhe","depends_on_id":"vsbeads-w2x","type":"blocks","created_at":"2025-12-05T00:23:31.666861-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-drg","title":"Document branch naming convention in CLAUDE.md","description":"Add branch naming strategy to CLAUDE.md:\n\nFormat: `beads/\u003cbead-id\u003e-\u003cterse-description\u003e`\n\nExamples:\n- `beads/vsbeads-93b-release-workflow`\n- `beads/vsbeads-xyz-fix-daemon-polling`\n\nThis ties branches to tracked work and makes it easy to find related issues.","status":"open","priority":4,"issue_type":"task","estimated_minutes":30,"created_at":"2025-11-29T16:47:10.870444-08:00","updated_at":"2025-12-04T12:00:16.819609-08:00","labels":["dx"],"comments":[{"id":28,"issue_id":"vsbeads-drg","author":"jason","text":"this is good, but we often work on a few beads a time. Might want to noramlize some other branch name strategy instead.","created_at":"2025-12-06T20:31:29Z"}]} @@ -81,7 +81,7 @@ {"id":"vsbeads-uak","title":"Research: macOS window screenshot for full Chrome capture","description":"Browser MCP tools only capture page viewport, not full Chrome window (including DevTools).\n\nResearch how to capture full window via macOS:\n- `screencapture -l \u003cwindowid\u003e` requires finding window ID\n- AppleScript can list windows but may need permissions\n- Useful for showing agent what's visible in DevTools panel\n\nLow priority - programmatic console/network access works for most cases.","status":"open","priority":3,"issue_type":"task","estimated_minutes":90,"created_at":"2025-11-27T17:34:17.25294-08:00","updated_at":"2025-12-04T11:59:34.100523-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-uak","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.301246-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-un3l","title":"UI Improvements Sprint 2025-12-29","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-12-29T11:39:29.634057-08:00","created_by":"jason","updated_at":"2025-12-30T01:46:19.212774-08:00","closed_at":"2025-12-30T01:46:19.21278-08:00","labels":["ui"]} {"id":"vsbeads-ur9","title":"Set up Playwright with Bun and TypeScript","description":"Initialize Playwright in the project with proper TypeScript and Bun configuration.\n\n**Tasks:**\n- Install `@playwright/test` as dev dependency\n- Create `playwright.config.ts` with sensible defaults\n- Set up `testsuite/` directory structure\n- Add npm scripts: `test:integration`, `test:integration:headed`, `test:integration:ui`\n- Configure for Chromium-only (code-server target)\n- Document local test running workflow","acceptance_criteria":"- `bun run test:integration` runs successfully (even with empty test file)\n- TypeScript types work in test files\n- Config includes proper timeouts for code-server startup","status":"open","priority":2,"issue_type":"task","estimated_minutes":60,"created_at":"2025-12-05T00:23:00.768062-08:00","updated_at":"2025-12-05T01:14:41.119755-08:00","labels":["dx","testing"],"dependencies":[{"issue_id":"vsbeads-ur9","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.221581-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-uvh","title":"Kanban: Use icons for view toggle","description":"Replace 'Table' and 'Board' text buttons with icons to save toolbar space.\n\n## Context\nCurrent toggle in IssuesView.tsx uses text buttons:\n```tsx\n\u003cbutton\u003eTable\u003c/button\u003e\n\u003cbutton\u003eBoard\u003c/button\u003e\n```\n\nIcons would be more compact and match the filter button style.\n\n## Implementation\nFile: `src/webview/views/IssuesView.tsx`\nIcons: `src/webview/icons/`\n\nNeed two icons:\n- Table view: rows/list icon (e.g., fa-table-list or fa-bars)\n- Board view: grid/kanban icon (e.g., fa-grip or fa-columns)\n\nProject uses Font Awesome Free SVGs stored in `src/webview/icons/`.\n\n## Design Considerations\n- Match existing icon style (16x16, currentColor fill)\n- Icons should be recognizable for table vs board concept\n- Keep title attribute for accessibility\n- Consider toggle group styling (segmented control)\n\n## Acceptance Criteria\n- [ ] Text replaced with appropriate icons\n- [ ] Icons added to `src/webview/icons/`\n- [ ] Title tooltips preserved for accessibility\n- [ ] Active state clearly visible\n- [ ] Matches filter button styling\n\n## Open Questions\n- Which specific Font Awesome icons? (fa-list vs fa-table-list vs fa-bars?)\n- Segmented control style or separate icon buttons?\n- Add visual separator between filter and view toggle?","status":"open","priority":3,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:51.094781-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:47:51.094781-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-uvh","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:16.032489-08:00","created_by":"Jason Dillon"}]} +{"id":"vsbeads-uvh","title":"Kanban: Use icons for view toggle","description":"Replace 'Table' and 'Board' text buttons with icons to save toolbar space.\n\n## Context\nCurrent toggle in IssuesView.tsx uses text buttons:\n```tsx\n\u003cbutton\u003eTable\u003c/button\u003e\n\u003cbutton\u003eBoard\u003c/button\u003e\n```\n\nIcons would be more compact and match the filter button style.\n\n## Implementation\nFile: `src/webview/views/IssuesView.tsx`\nIcons: `src/webview/icons/`\n\nNeed two icons:\n- Table view: rows/list icon (e.g., fa-table-list or fa-bars)\n- Board view: grid/kanban icon (e.g., fa-grip or fa-columns)\n\nProject uses Font Awesome Free SVGs stored in `src/webview/icons/`.\n\n## Design Considerations\n- Match existing icon style (16x16, currentColor fill)\n- Icons should be recognizable for table vs board concept\n- Keep title attribute for accessibility\n- Consider toggle group styling (segmented control)\n\n## Acceptance Criteria\n- [ ] Text replaced with appropriate icons\n- [ ] Icons added to `src/webview/icons/`\n- [ ] Title tooltips preserved for accessibility\n- [ ] Active state clearly visible\n- [ ] Matches filter button styling\n\n## Open Questions\n- Which specific Font Awesome icons? (fa-list vs fa-table-list vs fa-bars?)\n- Segmented control style or separate icon buttons?\n- Add visual separator between filter and view toggle?","status":"open","priority":3,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:51.094781-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:47:51.094781-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-uvh","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:16.032489-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-uvh","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.563973-08:00","created_by":"Jason Dillon"}]} {"id":"vsbeads-vp1","title":"Implement Kanban board as editor panel","description":"Reimplement Kanban board as an editor panel instead of sidebar webview. Sidebar is too narrow for a useful Kanban view.","design":"Use `vscode.window.createWebviewPanel()` to open in editor area.\n- Register command to open Kanban\n- Full-width columns for drag-and-drop\n- Cards show status, priority, assignee\n- Drag between columns to change status","status":"open","priority":3,"issue_type":"feature","estimated_minutes":600,"created_at":"2025-11-26T18:39:31.95544-08:00","updated_at":"2025-12-04T11:59:40.103462-08:00","labels":["ui"]} {"id":"vsbeads-w2x","title":"Write first E2E test: Issues panel loads and displays data","description":"Write the first real E2E test that validates the Issues panel works.\n\n**Test scenario:**\n1. Open code-server with test beads project\n2. Navigate to Beads sidebar\n3. Verify Issues panel webview loads\n4. Verify issues from seed data appear in table\n5. Verify status badges display correctly\n\n**This proves:**\n- End-to-end data flow works (bd CLI → backend → webview)\n- Webview helper utilities work\n- Test fixtures work together","acceptance_criteria":"- Test passes locally with `bun run test:integration`\n- Test is readable and documents the user flow\n- Test uses shared selectors (not fragile locators)","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-05T00:23:03.354187-08:00","updated_at":"2025-12-05T01:14:47.066522-08:00","labels":["testing"],"dependencies":[{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.404077-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-dxo","type":"blocks","created_at":"2025-12-05T00:23:30.127404-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-jfa","type":"blocks","created_at":"2025-12-05T00:23:30.189514-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-tom","type":"blocks","created_at":"2025-12-05T00:23:30.579435-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-eby","type":"blocks","created_at":"2025-12-05T00:23:32.194889-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-wgr","title":"UX polish phase 3: complex UI interactions","description":"Continuation of UX improvements from vsbeads-nin. Remaining work involves more complex UI changes:\n\n- Search/filter interaction improvements (vsbeads-57m)\n- Right-click context menus for inline editing (vsbeads-8oc) \n- Labels in dependency references (vsbeads-iur)\n- Label autocomplete with portal-based dropdown (vsbeads-p78, blocked)\n\nThese require more architectural consideration (portals, context menus, search UX design).","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-17T16:42:52.180108-08:00","updated_at":"2025-12-17T16:54:23.622708-08:00","labels":["ui"]} @@ -91,4 +91,4 @@ {"id":"vsbeads-yhok","title":"Test Epic for hierarchy demo","status":"tombstone","priority":2,"issue_type":"epic","created_at":"2025-12-27T20:52:48.814844-08:00","updated_at":"2025-12-29T11:36:43.338738-08:00","deleted_at":"2025-12-29T11:36:43.338738-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"epic"} {"id":"vsbeads-yhok.2","title":"Child task of epic","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-27T20:53:03.840173-08:00","updated_at":"2025-12-29T11:36:43.340845-08:00","dependencies":[{"issue_id":"vsbeads-yhok.2","depends_on_id":"vsbeads-yhok","type":"parent-child","created_at":"2025-12-27T20:53:03.846123-08:00","created_by":"daemon"}],"deleted_at":"2025-12-29T11:36:43.340845-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"} {"id":"vsbeads-yjr","title":"Create browser-task sub-agent configuration","description":"Create `.claude/agents/browser-task.md` with:\n\n```markdown\n---\nname: browser-task\ndescription: Execute multi-step browser automation tasks in VS Code/code-server\ntools: mcp__chrome-devtools__*\nmodel: haiku\n---\n\nExecute browser automation tasks and return minimal summaries.\nDo not return full DOM snapshots. Summarize results concisely.\nIf errors occur, return specific error details.\n```\n\n**Questions to verify:**\n- Can we use glob `mcp__chrome-devtools__*` or must list each tool?\n- Should model be haiku (fast) or sonnet (better instruction following)?","status":"open","priority":1,"issue_type":"task","estimated_minutes":60,"created_at":"2025-11-28T21:52:14.912814-08:00","updated_at":"2025-12-04T11:58:45.105085-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-yjr","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:41.99215-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-zsz","title":"Kanban: Display bead ID on cards","description":"Add the bead ID to kanban board cards for quick reference.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: The bead ID (e.g., 'vsbeads-abc') which is useful for referencing issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nAdd bead ID display to the card, likely in `.kanban-card-meta` section or as a subtle ID above the title.\n\n## Design Considerations\n- ID should be visually subtle (not compete with title)\n- Consider monospace font for IDs\n- Match styling used in table view for consistency\n\n## Acceptance Criteria\n- [ ] Bead ID visible on each kanban card\n- [ ] Styling consistent with table view\n- [ ] ID is copy-able or at least readable\n\n## Open Questions\n- Full ID or short ID? (e.g., 'vsbeads-abc' vs 'abc')\n- Position: above title, below title, or in meta row?\n- Should ID be clickable (copy to clipboard)?","status":"open","priority":2,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:47.766612-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:47:47.766612-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:15.898179-08:00","created_by":"Jason Dillon"}]} +{"id":"vsbeads-zsz","title":"Kanban: Display bead ID on cards","description":"Add the bead ID to kanban board cards for quick reference.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: The bead ID (e.g., 'vsbeads-abc') which is useful for referencing issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nAdd bead ID display to the card, likely in `.kanban-card-meta` section or as a subtle ID above the title.\n\n## Design Considerations\n- ID should be visually subtle (not compete with title)\n- Consider monospace font for IDs\n- Match styling used in table view for consistency\n\n## Acceptance Criteria\n- [ ] Bead ID visible on each kanban card\n- [ ] Styling consistent with table view\n- [ ] ID is copy-able or at least readable\n\n## Open Questions\n- Full ID or short ID? (e.g., 'vsbeads-abc' vs 'abc')\n- Position: above title, below title, or in meta row?\n- Should ID be clickable (copy to clipboard)?","status":"open","priority":2,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:47.766612-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:47:47.766612-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:15.898179-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.431165-08:00","created_by":"Jason Dillon"}]} From acb4ca873934ca18da0306268aeaff156d81b282 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 03:51:06 -0800 Subject: [PATCH 28/49] bd daemon sync: 2026-01-31 03:51:06 --- .beads/issues.jsonl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 2909661..8653211 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -18,7 +18,7 @@ {"id":"vsbeads-515e.1","title":"Test child using --parent","status":"tombstone","priority":3,"issue_type":"task","created_at":"2025-12-27T20:45:47.180329-08:00","updated_at":"2025-12-27T20:46:34.905009-08:00","dependencies":[{"issue_id":"vsbeads-515e.1","depends_on_id":"vsbeads-515e","type":"parent-child","created_at":"2025-12-27T20:45:47.190475-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T20:46:34.905009-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"} {"id":"vsbeads-57m","title":"Search should show filtered-out matches or offer to clear filters","description":"When searching by bead ID or text, results may be hidden by active filters (status, type, priority). This is confusing - you search for \"vsbeads-abc\" and see nothing because it's closed.\n\nOptions to consider:\n1. **Bypass filters when searching** - Global search ignores column filters\n2. **Show \"hidden by filter\" indicator** - \"3 matches hidden by filters\" with option to clear\n3. **Show filtered matches differently** - Grayed out rows at bottom showing filtered-out matches\n4. **Auto-clear filters on exact ID match** - If search matches a bead ID exactly, clear filters and select it","status":"open","priority":3,"issue_type":"feature","estimated_minutes":120,"created_at":"2025-12-04T16:58:53.89163-08:00","updated_at":"2025-12-05T12:01:16.828888-08:00","labels":["ui","ux"],"dependencies":[{"issue_id":"vsbeads-57m","depends_on_id":"vsbeads-wgr","type":"parent-child","created_at":"2025-12-17T16:53:56.291691-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-5c0","title":"Sub-agent browser automation to reduce context bloat","description":"Use sub-agents with isolated context windows to handle Chrome DevTools MCP operations, preventing context bloat in main conversation.\n\n**Problem:** Chrome DevTools MCP returns ~400 lines (full a11y tree) after every action, burning context fast.\n\n**Solution:** Delegate browser operations to short-lived sub-agents that:\n- Have their own context window (bloat stays there)\n- Return only minimal summaries to main agent\n- Batch multiple operations per invocation\n\n**Approach:**\n1. Create `browser-task` sub-agent with only Chrome DevTools MCP tools\n2. Focused instructions: execute task, return minimal summary\n3. Use for: reload window, click sequences, verify UI state","status":"open","priority":2,"issue_type":"epic","estimated_minutes":600,"created_at":"2025-11-28T21:52:14.860652-08:00","updated_at":"2025-12-04T11:58:51.219932-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-28T21:52:42.200798-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-5c0","depends_on_id":"vsbeads-n64","type":"related","created_at":"2025-11-28T21:52:42.256772-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-66j","title":"Merge kanban board PR #56","description":"Merge the contributed kanban board view from micahbrich.\n\n## Context\n- **PR**: https://github.com/jdillon/vscode-beads/pull/56\n- **Author**: micahbrich (trusted contributor, 16yr GitHub account)\n- **Security review**: PASSED - no vulnerabilities\n- **Code review**: Clean, follows project patterns\n\n## Files Added/Changed\n- `src/webview/views/KanbanBoard.tsx` (new, ~73 lines)\n- `src/webview/views/IssuesView.tsx` (+28 lines for toggle)\n- `src/webview/styles.css` (+150 lines kanban styles)\n- `README.md` (feature documentation)\n\n## Acceptance Criteria\n- [ ] PR merged to main\n- [ ] Build passes\n- [ ] Toggle between Table/Board works\n- [ ] Cards show title, type badge, priority badge, assignee\n- [ ] Closed column collapsed by default\n- [ ] Click card opens details panel\n\n## Open Questions\n- Should we squash commits or preserve history?\n- Tag contributor in release notes?","status":"open","priority":2,"issue_type":"task","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:32.434094-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:47:32.434094-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-66j","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:15.832452-08:00","created_by":"Jason Dillon"}]} +{"id":"vsbeads-66j","title":"Merge kanban board PR #56","description":"Merge the contributed kanban board view from micahbrich.\n\n## Context\n- **PR**: https://github.com/jdillon/vscode-beads/pull/56\n- **Author**: micahbrich (trusted contributor, 16yr GitHub account)\n- **Security review**: PASSED - no vulnerabilities\n- **Code review**: Clean, follows project patterns\n\n## Files Added/Changed\n- `src/webview/views/KanbanBoard.tsx` (new, ~73 lines)\n- `src/webview/views/IssuesView.tsx` (+28 lines for toggle)\n- `src/webview/styles.css` (+150 lines kanban styles)\n- `README.md` (feature documentation)\n\n## Acceptance Criteria\n- [ ] PR merged to main\n- [ ] Build passes\n- [ ] Toggle between Table/Board works\n- [ ] Cards show title, type badge, priority badge, assignee\n- [ ] Closed column collapsed by default\n- [ ] Click card opens details panel\n\n## Open Questions\n- Should we squash commits or preserve history?\n- Tag contributor in release notes?","status":"closed","priority":2,"issue_type":"task","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:32.434094-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:51:05.563564-08:00","closed_at":"2026-01-31T03:51:05.563564-08:00","close_reason":"PR #56 merged to main","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-66j","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:15.832452-08:00","created_by":"Jason Dillon"}]} {"id":"vsbeads-695","title":"Support detecting beads database/daemon when using worktrees","description":"When using git worktrees, the extension should properly detect the .beads directory and daemon socket location.\n\n**Problem:**\nGit worktrees have their .git as a file pointing to the main worktree's .git directory, not a directory. The current detection logic may not handle this correctly.\n\n**Expected behavior:**\n- Detect .beads directory in worktree root\n- Fall back to main worktree if not found in current worktree\n- Daemon socket detection should work across worktrees\n- Project manager should handle worktree scenarios\n\n**Investigation needed:**\n- Test current behavior with worktrees\n- Check how .beads location is resolved\n- Verify daemon socket path resolution\n- Document expected worktree patterns (shared .beads vs per-worktree)","status":"open","priority":2,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-30T18:04:47.926774-08:00","created_by":"Jason Dillon","updated_at":"2026-01-30T18:04:47.926774-08:00","labels":["backend","daemon"]} {"id":"vsbeads-6mx","title":"Support file attachments via beads-attachments directory","description":"Consider supporting file attachments (screenshots, docs) by:\n\n1. Store files in a `beads-attachments/` directory in repo (or on beads-metadata branch)\n2. Extension provides \"Attach file\" action that:\n - Copies/moves file to `beads-attachments/\u003cissue-id\u003e/filename.png`\n - Adds markdown link/embed to issue body or as a comment\n3. Render inline in Details panel when markdown contains `![](beads-attachments/...)`\n\nUse cases:\n- \"Look at this screenshot\" during bug reports\n- Design mockups attached to feature issues\n- Reference docs for complex tasks\n\nQuestions:\n- Store on main branch or beads-metadata branch?\n- Naming convention: `beads-attachments/\u003cissue-id\u003e/` or flat with prefixes?\n- Auto-cleanup when issue is compacted/deleted?","status":"open","priority":4,"issue_type":"feature","estimated_minutes":480,"created_at":"2025-11-30T01:18:31.564585-08:00","updated_at":"2025-12-04T12:00:13.942853-08:00","labels":["ui"]} {"id":"vsbeads-79pr","title":"Tooltip content shows raw markdown instead of rendered","notes":"## Problem\nTooltip content displays raw markdown syntax instead of rendered HTML.\n\nExample: Shows `**bold**` and `- list item` instead of rendered **bold** and bullet points.\n\n## Expected\nMarkdown in tooltip content should be rendered as formatted HTML.\n\n## Fix\nUse a markdown renderer (e.g., `marked`, `react-markdown`) to convert markdown to HTML before displaying in tooltips.","status":"closed","priority":2,"issue_type":"bug","assignee":"jdillon","created_at":"2025-12-28T02:15:56.691005-08:00","updated_at":"2025-12-29T12:51:26.56702-08:00","closed_at":"2025-12-29T12:51:26.56702-08:00","close_reason":"Closed","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-79pr","depends_on_id":"vsbeads-un3l","type":"parent-child","created_at":"2025-12-29T11:39:53.265742-08:00","created_by":"daemon"}]} From 7d0ef671a609ed73bfb115b8125e6ad2962ba3e4 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 03:52:34 -0800 Subject: [PATCH 29/49] bd daemon sync: 2026-01-31 03:52:34 --- .beads/issues.jsonl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 8653211..8948083 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -27,7 +27,7 @@ {"id":"vsbeads-7ue","title":"Show connection status indicator instead of full error view on disconnect","description":"When daemon disconnects, the entire panel shows an error view with Retry button. Better UX would be a status indicator (green→red) that shows connection state without replacing the panel content.","status":"open","priority":2,"issue_type":"feature","estimated_minutes":210,"created_at":"2025-11-29T15:04:49.017327-08:00","updated_at":"2025-12-04T11:58:48.492907-08:00","labels":["ui"]} {"id":"vsbeads-7xr","title":"Write E2E test: Issue selection shows details","description":"Test the core interaction flow: selecting an issue shows its details.\n\n**Test scenario:**\n1. Load Issues panel with seed data\n2. Click on an issue row\n3. Verify Details panel updates with selected issue\n4. Verify title, description, status display correctly\n\n**This proves:**\n- webview ↔ extension message passing works\n- Details panel receives selection events\n- UI updates reactively","acceptance_criteria":"- Test passes locally\n- Uses stable selectors (data-testid preferred)\n- Documents the interaction pattern","status":"open","priority":2,"issue_type":"task","estimated_minutes":60,"created_at":"2025-12-05T00:23:04.002552-08:00","updated_at":"2025-12-05T01:14:47.777369-08:00","labels":["testing"],"dependencies":[{"issue_id":"vsbeads-7xr","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.454114-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-7xr","depends_on_id":"vsbeads-w2x","type":"blocks","created_at":"2025-12-05T00:23:31.129272-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-804l","title":"Fix markdown list bullet rendering","description":"Markdown syntax is not rendering list bullets sanely in the webview","status":"open","priority":1,"issue_type":"task","created_at":"2026-01-11T00:46:08.429779-08:00","created_by":"jason","updated_at":"2026-01-11T00:46:08.429779-08:00","labels":["bug","ui"]} -{"id":"vsbeads-89u","title":"Kanban: Display labels on cards","description":"Add label badges to kanban board cards.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: Labels (e.g., 'ui', 'backend', 'bug') which help categorize issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nThe `LabelBadge` component already exists and is used in table view.\nImport and render `bead.labels` array using `LabelBadge`.\n\nExample from IssuesView.tsx:\n```tsx\nimport { LabelBadge } from \"../common/LabelBadge\";\n// ...\n{bead.labels?.map(label =\u003e \u003cLabelBadge key={label} label={label} /\u003e)}\n```\n\n## Design Considerations\n- Cards are narrower than table rows - labels may wrap\n- Consider limiting visible labels (e.g., show 2-3, then '+N more')\n- LabelBadge has size prop - use 'small' for compact display\n\n## Acceptance Criteria\n- [ ] Labels display on kanban cards\n- [ ] Uses existing LabelBadge component\n- [ ] Handles cards with many labels gracefully\n- [ ] Styling matches table view labels\n\n## Open Questions\n- Max labels to show before truncating?\n- Label position: in meta row or separate row?\n- Should labels wrap or scroll horizontally?","status":"open","priority":2,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:46.377432-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:47:46.377432-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-89u","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:15.963853-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-89u","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.497035-08:00","created_by":"Jason Dillon"}]} +{"id":"vsbeads-89u","title":"Kanban: Display labels on cards","description":"Add label badges to kanban board cards.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: Labels (e.g., 'ui', 'backend', 'bug') which help categorize issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nThe `LabelBadge` component already exists and is used in table view.\nImport and render `bead.labels` array using `LabelBadge`.\n\nExample from IssuesView.tsx:\n```tsx\nimport { LabelBadge } from \"../common/LabelBadge\";\n// ...\n{bead.labels?.map(label =\u003e \u003cLabelBadge key={label} label={label} /\u003e)}\n```\n\n## Design Considerations\n- Cards are narrower than table rows - labels may wrap\n- Consider limiting visible labels (e.g., show 2-3, then '+N more')\n- LabelBadge has size prop - use 'small' for compact display\n\n## Acceptance Criteria\n- [ ] Labels display on kanban cards\n- [ ] Uses existing LabelBadge component\n- [ ] Handles cards with many labels gracefully\n- [ ] Styling matches table view labels\n\n## Open Questions\n- Max labels to show before truncating?\n- Label position: in meta row or separate row?\n- Should labels wrap or scroll horizontally?","status":"in_progress","priority":2,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:46.377432-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:52:33.727872-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-89u","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:15.963853-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-89u","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.497035-08:00","created_by":"Jason Dillon"}]} {"id":"vsbeads-8oc","title":"Add right-click context menu for type/status/priority in Issues list","description":"Add context menu actions to the Issues list so users can right-click on type/status/priority badges to change them inline.\n\nSimilar to the inline editing in Details view (vsbeads-fwp), but using right-click instead of click since the list rows already have click-to-select behavior.\n\n## Requirements\n- Right-click on type badge → dropdown menu to change type\n- Right-click on status badge → dropdown menu to change status \n- Right-click on priority badge → dropdown menu to change priority\n- Changes auto-save (no confirmation needed)\n- Use same ColoredSelect dropdown component from Details view\n\n## Notes\n- Click on row = select issue (existing behavior)\n- Right-click on badge = edit that field (new behavior)","status":"open","priority":3,"issue_type":"feature","estimated_minutes":210,"created_at":"2025-12-01T00:39:43.583441-08:00","updated_at":"2025-12-04T11:59:24.877438-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-8oc","depends_on_id":"vsbeads-wgr","type":"parent-child","created_at":"2025-12-17T16:53:56.326584-08:00","created_by":"daemon","metadata":"{}"}],"comments":[{"id":24,"issue_id":"vsbeads-8oc","author":"jason","text":"**Estimate: Medium (~1-2 hours)**\n\nWhat's needed:\n1. Add `onContextMenu` handlers to type/status/priority badge cells in IssuesView\n2. Render a positioned dropdown menu on right-click (similar to column menu)\n3. Wire up the change to call `onUpdateBead` (already exists but unused in IssuesView)\n4. Reuse `ColoredSelect` or create a context menu variant\n\nComplexity factors:\n- We already have dropdown/menu patterns (column menu, preset dropdown)\n- We already have `ColoredSelect` component from DetailsView\n- Main work is positioning the context menu at click coordinates\n- Need to handle click-outside dismiss (pattern already exists)\n\nThe patterns exist, it's mostly wiring them together in a new context.","created_at":"2025-12-02T00:41:30Z"}]} {"id":"vsbeads-90cp","title":"Standalone task to associate with epic","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-27T20:54:31.509608-08:00","updated_at":"2025-12-29T11:36:43.341811-08:00","dependencies":[{"issue_id":"vsbeads-90cp","depends_on_id":"vsbeads-yhok","type":"parent-child","created_at":"2025-12-27T20:54:36.25191-08:00","created_by":"daemon"}],"deleted_at":"2025-12-29T11:36:43.341811-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"} {"id":"vsbeads-9r1","title":"\"Active\" filter includes blocked issues - should it?","description":"## Problem\n\nThe \"Active\" filter currently includes issues with `status=blocked`. This pollutes the list with items that can't be worked on.\n\n## Intent of \"Active\"\n\n\"Active\" was created to fill the gap between:\n- `bd ready` = open + no blockers (things to pick up)\n- `bd list --status=in_progress` = things currently being worked\n\nNeither shows both. \"Active\" should be: **ready + in_progress** = everything I can touch today.\n\n## Current Behavior\n\n`bd list --status=active` returns:\n- `open` (all, not just unblocked)\n- `in_progress`\n- `blocked` ← shouldn't be here\n\n## Expected Behavior\n\n\"Active\" should return:\n- `open` with no blockers (i.e., ready)\n- `in_progress`\n\nExcludes:\n- `blocked` (stalled, can't work on)\n- `open` with unresolved blockers (also can't work on)\n\n## Fix\n\nChange \"Active\" filter logic to: `(status=open AND no_blockers) OR status=in_progress`","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-17T02:14:50.439131-08:00","updated_at":"2025-12-17T02:14:50.439131-08:00","labels":["filter","ux"]} @@ -37,7 +37,7 @@ {"id":"vsbeads-bcu","title":"Test bead for labels overflow","description":"Testing label display and overflow behaviordfsfs","status":"open","priority":3,"issue_type":"task","estimated_minutes":0,"created_at":"2025-12-01T15:32:16.718649-08:00","updated_at":"2025-12-04T11:59:22.270468-08:00","labels":["E","a","b","c","d"]} {"id":"vsbeads-btf","title":"Scroll to latest comment when adding a comment in Details view","description":"When adding a comment in the Details panel, the view should auto-scroll to show the newly added comment at the bottom. Initial implementation attempts didn't work due to webview scroll container complexity.","status":"open","priority":4,"issue_type":"feature","estimated_minutes":45,"created_at":"2025-11-27T20:45:35.746701-08:00","updated_at":"2025-12-04T12:00:18.508148-08:00","labels":["ui"],"comments":[{"id":23,"issue_id":"vsbeads-btf","author":"jason","text":"turns out this is kinda hard, or was for claude to get correct.","created_at":"2025-12-02T00:38:50Z"}]} {"id":"vsbeads-bxnb","title":"Research tree view / hierarchy display for issues list","description":"Explore options for optional tree/hierarchy view in issues list:\n\n**Inspiration**: IntelliJ IDEA project view has multiple view modes (flat list vs tree hierarchy)\n\n**Options to research**:\n1. Tree column in existing table (expandable rows)\n2. Separate tree view panel\n3. Toggle between list/tree modes\n4. TanStack Table tree data support\n\n**Questions**:\n- How to represent epic → task → subtask hierarchy?\n- How to handle dependencies vs parent-child?\n- What does TanStack Table support for tree data?\n- UX for expand/collapse in table vs dedicated tree view?","notes":"---\n2025-12-25: Draft PR #54 opened. Tree view basic functionality works but UI needs refinement - icons and visual hierarchy indicators need design review. TanStack Query added for data caching.","status":"blocked","priority":3,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-23T00:21:40.100896-08:00","updated_at":"2025-12-26T00:58:17.539117-08:00","labels":["research","ui"],"comments":[{"id":37,"issue_id":"vsbeads-bxnb","author":"jason","text":"Need to find some examples to show the agent what to build.","created_at":"2025-12-26T08:58:27Z"}]} -{"id":"vsbeads-cjh","title":"Kanban: Make all columns collapsible","description":"Allow collapsing any kanban column, not just the Closed column.\n\n## Context\nCurrent implementation only allows collapsing the Closed column:\n```tsx\nconst [closedExpanded, setClosedExpanded] = useState(false);\n// ...\nconst isCollapsed = status === \"closed\" \u0026\u0026 !closedExpanded;\n```\n\nUsers may want to collapse other columns (e.g., Open when focusing on in-progress work).\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nChange from single boolean to a Set tracking collapsed columns:\n```tsx\nconst [collapsedColumns, setCollapsedColumns] = useState\u003cSet\u003cBeadStatus\u003e\u003e(\n new Set([\"closed\"]) // Closed collapsed by default\n);\n\nconst toggleColumn = (status: BeadStatus) =\u003e {\n setCollapsedColumns(prev =\u003e {\n const next = new Set(prev);\n if (next.has(status)) next.delete(status);\n else next.add(status);\n return next;\n });\n};\n\nconst isCollapsed = collapsedColumns.has(status);\n```\n\n## Design Considerations\n- All column headers should be clickable (currently only Closed)\n- Add visual affordance (collapse/expand icon in header)\n- Persist collapsed state? (localStorage or just session)\n- Collapsed column should show count prominently\n\n## Acceptance Criteria\n- [ ] All 4 columns can be collapsed/expanded\n- [ ] Closed still collapsed by default\n- [ ] Click any column header to toggle\n- [ ] Visual indicator for collapsible headers\n- [ ] Collapsed columns show item count\n\n## Open Questions\n- Persist collapse state across sessions (localStorage)?\n- Add explicit collapse/expand icon or just clickable header?\n- Keyboard shortcut to collapse/expand?\n- Should collapsed columns have a minimum width or be truly minimal?","status":"open","priority":3,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:48:08.114162-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:48:08.114162-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-cjh","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:16.09939-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-cjh","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.632969-08:00","created_by":"Jason Dillon"}]} +{"id":"vsbeads-cjh","title":"Kanban: Make all columns collapsible","description":"Allow collapsing any kanban column, not just the Closed column.\n\n## Context\nCurrent implementation only allows collapsing the Closed column:\n```tsx\nconst [closedExpanded, setClosedExpanded] = useState(false);\n// ...\nconst isCollapsed = status === \"closed\" \u0026\u0026 !closedExpanded;\n```\n\nUsers may want to collapse other columns (e.g., Open when focusing on in-progress work).\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nChange from single boolean to a Set tracking collapsed columns:\n```tsx\nconst [collapsedColumns, setCollapsedColumns] = useState\u003cSet\u003cBeadStatus\u003e\u003e(\n new Set([\"closed\"]) // Closed collapsed by default\n);\n\nconst toggleColumn = (status: BeadStatus) =\u003e {\n setCollapsedColumns(prev =\u003e {\n const next = new Set(prev);\n if (next.has(status)) next.delete(status);\n else next.add(status);\n return next;\n });\n};\n\nconst isCollapsed = collapsedColumns.has(status);\n```\n\n## Design Considerations\n- All column headers should be clickable (currently only Closed)\n- Add visual affordance (collapse/expand icon in header)\n- Persist collapsed state? (localStorage or just session)\n- Collapsed column should show count prominently\n\n## Acceptance Criteria\n- [ ] All 4 columns can be collapsed/expanded\n- [ ] Closed still collapsed by default\n- [ ] Click any column header to toggle\n- [ ] Visual indicator for collapsible headers\n- [ ] Collapsed columns show item count\n\n## Open Questions\n- Persist collapse state across sessions (localStorage)?\n- Add explicit collapse/expand icon or just clickable header?\n- Keyboard shortcut to collapse/expand?\n- Should collapsed columns have a minimum width or be truly minimal?","status":"in_progress","priority":3,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:48:08.114162-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:52:33.862703-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-cjh","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:16.09939-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-cjh","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.632969-08:00","created_by":"Jason Dillon"}]} {"id":"vsbeads-cqi","title":"Redesign UI: sidebar for navigation, editor panels for views","description":"Move Kanban, Dependency Graph, and Details to WebviewPanel (editor tabs). Keep project selector and issue list in sidebar.","status":"open","priority":2,"issue_type":"feature","estimated_minutes":960,"created_at":"2025-11-26T15:59:20.263974-08:00","updated_at":"2025-12-04T11:58:59.107775-08:00","labels":["ui"]} {"id":"vsbeads-dhe","title":"Set up GitHub Actions workflow for nightly E2E tests","description":"Create GitHub Actions workflow that runs integration tests on a schedule.\n\n**Requirements:**\n- Run nightly (not on every commit - too slow/resource intensive)\n- Manual trigger option (`workflow_dispatch`)\n- Use ubuntu-latest runner\n- Install code-server, bd CLI, Playwright browsers\n- Upload test artifacts on failure (screenshots, traces, HTML report)\n\n**Pattern:**\n```yaml\non:\n schedule:\n - cron: '0 6 * * *' # 6am UTC daily\n workflow_dispatch:\n```","acceptance_criteria":"- Workflow file in `.github/workflows/integration-tests.yml`\n- Manual trigger works from Actions tab\n- Artifacts available on failure\n- Sends notification on failure (optional/later)","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-05T00:23:04.64811-08:00","updated_at":"2025-12-05T01:14:48.401601-08:00","labels":["ci","testing"],"dependencies":[{"issue_id":"vsbeads-dhe","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.83836-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-dhe","depends_on_id":"vsbeads-w2x","type":"blocks","created_at":"2025-12-05T00:23:31.666861-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-drg","title":"Document branch naming convention in CLAUDE.md","description":"Add branch naming strategy to CLAUDE.md:\n\nFormat: `beads/\u003cbead-id\u003e-\u003cterse-description\u003e`\n\nExamples:\n- `beads/vsbeads-93b-release-workflow`\n- `beads/vsbeads-xyz-fix-daemon-polling`\n\nThis ties branches to tracked work and makes it easy to find related issues.","status":"open","priority":4,"issue_type":"task","estimated_minutes":30,"created_at":"2025-11-29T16:47:10.870444-08:00","updated_at":"2025-12-04T12:00:16.819609-08:00","labels":["dx"],"comments":[{"id":28,"issue_id":"vsbeads-drg","author":"jason","text":"this is good, but we often work on a few beads a time. Might want to noramlize some other branch name strategy instead.","created_at":"2025-12-06T20:31:29Z"}]} @@ -81,7 +81,7 @@ {"id":"vsbeads-uak","title":"Research: macOS window screenshot for full Chrome capture","description":"Browser MCP tools only capture page viewport, not full Chrome window (including DevTools).\n\nResearch how to capture full window via macOS:\n- `screencapture -l \u003cwindowid\u003e` requires finding window ID\n- AppleScript can list windows but may need permissions\n- Useful for showing agent what's visible in DevTools panel\n\nLow priority - programmatic console/network access works for most cases.","status":"open","priority":3,"issue_type":"task","estimated_minutes":90,"created_at":"2025-11-27T17:34:17.25294-08:00","updated_at":"2025-12-04T11:59:34.100523-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-uak","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.301246-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-un3l","title":"UI Improvements Sprint 2025-12-29","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-12-29T11:39:29.634057-08:00","created_by":"jason","updated_at":"2025-12-30T01:46:19.212774-08:00","closed_at":"2025-12-30T01:46:19.21278-08:00","labels":["ui"]} {"id":"vsbeads-ur9","title":"Set up Playwright with Bun and TypeScript","description":"Initialize Playwright in the project with proper TypeScript and Bun configuration.\n\n**Tasks:**\n- Install `@playwright/test` as dev dependency\n- Create `playwright.config.ts` with sensible defaults\n- Set up `testsuite/` directory structure\n- Add npm scripts: `test:integration`, `test:integration:headed`, `test:integration:ui`\n- Configure for Chromium-only (code-server target)\n- Document local test running workflow","acceptance_criteria":"- `bun run test:integration` runs successfully (even with empty test file)\n- TypeScript types work in test files\n- Config includes proper timeouts for code-server startup","status":"open","priority":2,"issue_type":"task","estimated_minutes":60,"created_at":"2025-12-05T00:23:00.768062-08:00","updated_at":"2025-12-05T01:14:41.119755-08:00","labels":["dx","testing"],"dependencies":[{"issue_id":"vsbeads-ur9","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.221581-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-uvh","title":"Kanban: Use icons for view toggle","description":"Replace 'Table' and 'Board' text buttons with icons to save toolbar space.\n\n## Context\nCurrent toggle in IssuesView.tsx uses text buttons:\n```tsx\n\u003cbutton\u003eTable\u003c/button\u003e\n\u003cbutton\u003eBoard\u003c/button\u003e\n```\n\nIcons would be more compact and match the filter button style.\n\n## Implementation\nFile: `src/webview/views/IssuesView.tsx`\nIcons: `src/webview/icons/`\n\nNeed two icons:\n- Table view: rows/list icon (e.g., fa-table-list or fa-bars)\n- Board view: grid/kanban icon (e.g., fa-grip or fa-columns)\n\nProject uses Font Awesome Free SVGs stored in `src/webview/icons/`.\n\n## Design Considerations\n- Match existing icon style (16x16, currentColor fill)\n- Icons should be recognizable for table vs board concept\n- Keep title attribute for accessibility\n- Consider toggle group styling (segmented control)\n\n## Acceptance Criteria\n- [ ] Text replaced with appropriate icons\n- [ ] Icons added to `src/webview/icons/`\n- [ ] Title tooltips preserved for accessibility\n- [ ] Active state clearly visible\n- [ ] Matches filter button styling\n\n## Open Questions\n- Which specific Font Awesome icons? (fa-list vs fa-table-list vs fa-bars?)\n- Segmented control style or separate icon buttons?\n- Add visual separator between filter and view toggle?","status":"open","priority":3,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:51.094781-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:47:51.094781-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-uvh","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:16.032489-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-uvh","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.563973-08:00","created_by":"Jason Dillon"}]} +{"id":"vsbeads-uvh","title":"Kanban: Use icons for view toggle","description":"Replace 'Table' and 'Board' text buttons with icons to save toolbar space.\n\n## Context\nCurrent toggle in IssuesView.tsx uses text buttons:\n```tsx\n\u003cbutton\u003eTable\u003c/button\u003e\n\u003cbutton\u003eBoard\u003c/button\u003e\n```\n\nIcons would be more compact and match the filter button style.\n\n## Implementation\nFile: `src/webview/views/IssuesView.tsx`\nIcons: `src/webview/icons/`\n\nNeed two icons:\n- Table view: rows/list icon (e.g., fa-table-list or fa-bars)\n- Board view: grid/kanban icon (e.g., fa-grip or fa-columns)\n\nProject uses Font Awesome Free SVGs stored in `src/webview/icons/`.\n\n## Design Considerations\n- Match existing icon style (16x16, currentColor fill)\n- Icons should be recognizable for table vs board concept\n- Keep title attribute for accessibility\n- Consider toggle group styling (segmented control)\n\n## Acceptance Criteria\n- [ ] Text replaced with appropriate icons\n- [ ] Icons added to `src/webview/icons/`\n- [ ] Title tooltips preserved for accessibility\n- [ ] Active state clearly visible\n- [ ] Matches filter button styling\n\n## Open Questions\n- Which specific Font Awesome icons? (fa-list vs fa-table-list vs fa-bars?)\n- Segmented control style or separate icon buttons?\n- Add visual separator between filter and view toggle?","status":"in_progress","priority":3,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:51.094781-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:52:33.796462-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-uvh","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:16.032489-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-uvh","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.563973-08:00","created_by":"Jason Dillon"}]} {"id":"vsbeads-vp1","title":"Implement Kanban board as editor panel","description":"Reimplement Kanban board as an editor panel instead of sidebar webview. Sidebar is too narrow for a useful Kanban view.","design":"Use `vscode.window.createWebviewPanel()` to open in editor area.\n- Register command to open Kanban\n- Full-width columns for drag-and-drop\n- Cards show status, priority, assignee\n- Drag between columns to change status","status":"open","priority":3,"issue_type":"feature","estimated_minutes":600,"created_at":"2025-11-26T18:39:31.95544-08:00","updated_at":"2025-12-04T11:59:40.103462-08:00","labels":["ui"]} {"id":"vsbeads-w2x","title":"Write first E2E test: Issues panel loads and displays data","description":"Write the first real E2E test that validates the Issues panel works.\n\n**Test scenario:**\n1. Open code-server with test beads project\n2. Navigate to Beads sidebar\n3. Verify Issues panel webview loads\n4. Verify issues from seed data appear in table\n5. Verify status badges display correctly\n\n**This proves:**\n- End-to-end data flow works (bd CLI → backend → webview)\n- Webview helper utilities work\n- Test fixtures work together","acceptance_criteria":"- Test passes locally with `bun run test:integration`\n- Test is readable and documents the user flow\n- Test uses shared selectors (not fragile locators)","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-05T00:23:03.354187-08:00","updated_at":"2025-12-05T01:14:47.066522-08:00","labels":["testing"],"dependencies":[{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.404077-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-dxo","type":"blocks","created_at":"2025-12-05T00:23:30.127404-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-jfa","type":"blocks","created_at":"2025-12-05T00:23:30.189514-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-tom","type":"blocks","created_at":"2025-12-05T00:23:30.579435-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-eby","type":"blocks","created_at":"2025-12-05T00:23:32.194889-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-wgr","title":"UX polish phase 3: complex UI interactions","description":"Continuation of UX improvements from vsbeads-nin. Remaining work involves more complex UI changes:\n\n- Search/filter interaction improvements (vsbeads-57m)\n- Right-click context menus for inline editing (vsbeads-8oc) \n- Labels in dependency references (vsbeads-iur)\n- Label autocomplete with portal-based dropdown (vsbeads-p78, blocked)\n\nThese require more architectural consideration (portals, context menus, search UX design).","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-17T16:42:52.180108-08:00","updated_at":"2025-12-17T16:54:23.622708-08:00","labels":["ui"]} @@ -91,4 +91,4 @@ {"id":"vsbeads-yhok","title":"Test Epic for hierarchy demo","status":"tombstone","priority":2,"issue_type":"epic","created_at":"2025-12-27T20:52:48.814844-08:00","updated_at":"2025-12-29T11:36:43.338738-08:00","deleted_at":"2025-12-29T11:36:43.338738-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"epic"} {"id":"vsbeads-yhok.2","title":"Child task of epic","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-27T20:53:03.840173-08:00","updated_at":"2025-12-29T11:36:43.340845-08:00","dependencies":[{"issue_id":"vsbeads-yhok.2","depends_on_id":"vsbeads-yhok","type":"parent-child","created_at":"2025-12-27T20:53:03.846123-08:00","created_by":"daemon"}],"deleted_at":"2025-12-29T11:36:43.340845-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"} {"id":"vsbeads-yjr","title":"Create browser-task sub-agent configuration","description":"Create `.claude/agents/browser-task.md` with:\n\n```markdown\n---\nname: browser-task\ndescription: Execute multi-step browser automation tasks in VS Code/code-server\ntools: mcp__chrome-devtools__*\nmodel: haiku\n---\n\nExecute browser automation tasks and return minimal summaries.\nDo not return full DOM snapshots. Summarize results concisely.\nIf errors occur, return specific error details.\n```\n\n**Questions to verify:**\n- Can we use glob `mcp__chrome-devtools__*` or must list each tool?\n- Should model be haiku (fast) or sonnet (better instruction following)?","status":"open","priority":1,"issue_type":"task","estimated_minutes":60,"created_at":"2025-11-28T21:52:14.912814-08:00","updated_at":"2025-12-04T11:58:45.105085-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-yjr","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:41.99215-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-zsz","title":"Kanban: Display bead ID on cards","description":"Add the bead ID to kanban board cards for quick reference.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: The bead ID (e.g., 'vsbeads-abc') which is useful for referencing issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nAdd bead ID display to the card, likely in `.kanban-card-meta` section or as a subtle ID above the title.\n\n## Design Considerations\n- ID should be visually subtle (not compete with title)\n- Consider monospace font for IDs\n- Match styling used in table view for consistency\n\n## Acceptance Criteria\n- [ ] Bead ID visible on each kanban card\n- [ ] Styling consistent with table view\n- [ ] ID is copy-able or at least readable\n\n## Open Questions\n- Full ID or short ID? (e.g., 'vsbeads-abc' vs 'abc')\n- Position: above title, below title, or in meta row?\n- Should ID be clickable (copy to clipboard)?","status":"open","priority":2,"issue_type":"feature","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:47.766612-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:47:47.766612-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:15.898179-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.431165-08:00","created_by":"Jason Dillon"}]} +{"id":"vsbeads-zsz","title":"Kanban: Display bead ID on cards","description":"Add the bead ID to kanban board cards for quick reference.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: The bead ID (e.g., 'vsbeads-abc') which is useful for referencing issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nAdd bead ID display to the card, likely in `.kanban-card-meta` section or as a subtle ID above the title.\n\n## Design Considerations\n- ID should be visually subtle (not compete with title)\n- Consider monospace font for IDs\n- Match styling used in table view for consistency\n\n## Acceptance Criteria\n- [ ] Bead ID visible on each kanban card\n- [ ] Styling consistent with table view\n- [ ] ID is copy-able or at least readable\n\n## Open Questions\n- Full ID or short ID? (e.g., 'vsbeads-abc' vs 'abc')\n- Position: above title, below title, or in meta row?\n- Should ID be clickable (copy to clipboard)?","status":"in_progress","priority":2,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:47.766612-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:52:33.661106-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:15.898179-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.431165-08:00","created_by":"Jason Dillon"}]} From 7c1fd81de845dac7be7e0afe67b96eaadde0383e Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 04:13:11 -0800 Subject: [PATCH 30/49] bd daemon sync: 2026-01-31 04:13:11 --- .beads/issues.jsonl | 1 + 1 file changed, 1 insertion(+) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 8948083..1b08cd1 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -86,6 +86,7 @@ {"id":"vsbeads-w2x","title":"Write first E2E test: Issues panel loads and displays data","description":"Write the first real E2E test that validates the Issues panel works.\n\n**Test scenario:**\n1. Open code-server with test beads project\n2. Navigate to Beads sidebar\n3. Verify Issues panel webview loads\n4. Verify issues from seed data appear in table\n5. Verify status badges display correctly\n\n**This proves:**\n- End-to-end data flow works (bd CLI → backend → webview)\n- Webview helper utilities work\n- Test fixtures work together","acceptance_criteria":"- Test passes locally with `bun run test:integration`\n- Test is readable and documents the user flow\n- Test uses shared selectors (not fragile locators)","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-05T00:23:03.354187-08:00","updated_at":"2025-12-05T01:14:47.066522-08:00","labels":["testing"],"dependencies":[{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.404077-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-dxo","type":"blocks","created_at":"2025-12-05T00:23:30.127404-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-jfa","type":"blocks","created_at":"2025-12-05T00:23:30.189514-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-tom","type":"blocks","created_at":"2025-12-05T00:23:30.579435-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-eby","type":"blocks","created_at":"2025-12-05T00:23:32.194889-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-wgr","title":"UX polish phase 3: complex UI interactions","description":"Continuation of UX improvements from vsbeads-nin. Remaining work involves more complex UI changes:\n\n- Search/filter interaction improvements (vsbeads-57m)\n- Right-click context menus for inline editing (vsbeads-8oc) \n- Labels in dependency references (vsbeads-iur)\n- Label autocomplete with portal-based dropdown (vsbeads-p78, blocked)\n\nThese require more architectural consideration (portals, context menus, search UX design).","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-17T16:42:52.180108-08:00","updated_at":"2025-12-17T16:54:23.622708-08:00","labels":["ui"]} {"id":"vsbeads-wk9","title":"Make badge colors configurable via settings","description":"Expose status, priority, and type badge colors as VS Code settings so users can customize them. Should support both background and text colors for each value, with consideration for light/dark themes.","design":"Settings structure could be:\n- `beads.colors.priority.P0`: { bg, text }\n- `beads.colors.priority.P1`: { bg, text }\n- `beads.colors.status.open`: { bg, text }\n- `beads.colors.type.bug`: { bg, text }\n\nOr a single object per category. Consider theme-aware defaults.","status":"open","priority":3,"issue_type":"feature","estimated_minutes":120,"created_at":"2025-11-26T17:57:59.132401-08:00","updated_at":"2025-12-04T12:00:09.336584-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-wk9","depends_on_id":"vsbeads-1le","type":"parent-child","created_at":"2025-12-10T02:09:42.69549-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"vsbeads-wwl","title":"Migrate icons from Font Awesome to Lucide","description":"Replace all Font Awesome icons with Lucide equivalents for consistent stroke-based styling.\n\n## Context\nCurrently using Font Awesome Free (fill-based). Lucide offers:\n- Consistent stroke-based design\n- MIT license\n- Specific icons like 'kanban' that FA lacks\n\n## Migration Map\n| Current (FA) | Lucide |\n|--------------|--------|\n| bug | bug |\n| lightbulb | lightbulb |\n| square-check | square-check |\n| bolt | zap |\n| wrench | wrench |\n| code-merge | git-merge |\n| flask | flask-conical |\n| user | user |\n| tag | tag |\n| external-link | external-link |\n| notdef | circle-help |\n\n## Implementation\n1. Update Icon component to use Lucide React components\n2. Replace all icon imports\n3. Remove old SVG files\n4. Update any fill-based styling to stroke-based\n\n## Notes\n- kanban and table icons already migrated (vsbeads-uvh)\n- Can use lucide-react package directly instead of raw SVGs","status":"open","priority":3,"issue_type":"chore","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T04:13:10.810464-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T04:13:10.810464-08:00","labels":["ui"]} {"id":"vsbeads-xgn","title":"Refine browser-task agent instructions","description":"Based on testing results, refine:\n\n- System prompt for optimal response format\n- Standard task patterns (reload, click sequence, verify)\n- What to include/exclude in summaries\n- Error reporting format","status":"open","priority":2,"issue_type":"task","estimated_minutes":120,"created_at":"2025-11-28T21:52:30.218145-08:00","updated_at":"2025-12-04T11:58:49.641387-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-xgn","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:42.094448-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-xgn","depends_on_id":"vsbeads-hgm","type":"blocks","created_at":"2025-11-28T21:52:49.395613-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-xxl","title":"Investigate API parity gaps between bd CLI, daemon, and MCP","description":"Analyze the three beads interfaces to identify coverage gaps and inconsistencies:\n\n1. **bd CLI** - Full-featured command-line interface\n2. **Beads Daemon** - Socket-based API for real-time integration\n3. **Beads MCP** - Model Context Protocol server for AI agents\n\n**Goal:** Document gaps and file upstream issues to encourage API parity across all three interfaces.\n\n**Analysis approach:**\n1. Review latest upstream repo (`~/ws/reference/beads`)\n2. Catalog all operations available in each interface\n3. Create comparison matrix showing coverage\n4. Identify missing operations in daemon/MCP that exist in CLI\n5. Note any behavioral differences for same operations\n6. File issues upstream with specific recommendations\n\n**Expected deliverables:**\n- Comparison matrix (CLI vs Daemon vs MCP)\n- List of gaps with severity/impact\n- Upstream issues filed (or PR if straightforward)","acceptance_criteria":"- Comparison matrix complete for all major operations\n- Gaps documented with use-case impact\n- At least one upstream issue filed for significant gaps","status":"open","priority":2,"issue_type":"task","estimated_minutes":180,"created_at":"2025-12-05T01:17:15.838445-08:00","updated_at":"2025-12-05T01:17:20.028981-08:00","labels":["dx","research","upstream"]} {"id":"vsbeads-yhok","title":"Test Epic for hierarchy demo","status":"tombstone","priority":2,"issue_type":"epic","created_at":"2025-12-27T20:52:48.814844-08:00","updated_at":"2025-12-29T11:36:43.338738-08:00","deleted_at":"2025-12-29T11:36:43.338738-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"epic"} From 9f528912a3a01b48a6620caa7f4bb120f7b34671 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 04:13:55 -0800 Subject: [PATCH 31/49] bd daemon sync: 2026-01-31 04:13:55 --- .beads/issues.jsonl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 1b08cd1..a1d86b2 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -86,7 +86,7 @@ {"id":"vsbeads-w2x","title":"Write first E2E test: Issues panel loads and displays data","description":"Write the first real E2E test that validates the Issues panel works.\n\n**Test scenario:**\n1. Open code-server with test beads project\n2. Navigate to Beads sidebar\n3. Verify Issues panel webview loads\n4. Verify issues from seed data appear in table\n5. Verify status badges display correctly\n\n**This proves:**\n- End-to-end data flow works (bd CLI → backend → webview)\n- Webview helper utilities work\n- Test fixtures work together","acceptance_criteria":"- Test passes locally with `bun run test:integration`\n- Test is readable and documents the user flow\n- Test uses shared selectors (not fragile locators)","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-05T00:23:03.354187-08:00","updated_at":"2025-12-05T01:14:47.066522-08:00","labels":["testing"],"dependencies":[{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.404077-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-dxo","type":"blocks","created_at":"2025-12-05T00:23:30.127404-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-jfa","type":"blocks","created_at":"2025-12-05T00:23:30.189514-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-tom","type":"blocks","created_at":"2025-12-05T00:23:30.579435-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-eby","type":"blocks","created_at":"2025-12-05T00:23:32.194889-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-wgr","title":"UX polish phase 3: complex UI interactions","description":"Continuation of UX improvements from vsbeads-nin. Remaining work involves more complex UI changes:\n\n- Search/filter interaction improvements (vsbeads-57m)\n- Right-click context menus for inline editing (vsbeads-8oc) \n- Labels in dependency references (vsbeads-iur)\n- Label autocomplete with portal-based dropdown (vsbeads-p78, blocked)\n\nThese require more architectural consideration (portals, context menus, search UX design).","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-17T16:42:52.180108-08:00","updated_at":"2025-12-17T16:54:23.622708-08:00","labels":["ui"]} {"id":"vsbeads-wk9","title":"Make badge colors configurable via settings","description":"Expose status, priority, and type badge colors as VS Code settings so users can customize them. Should support both background and text colors for each value, with consideration for light/dark themes.","design":"Settings structure could be:\n- `beads.colors.priority.P0`: { bg, text }\n- `beads.colors.priority.P1`: { bg, text }\n- `beads.colors.status.open`: { bg, text }\n- `beads.colors.type.bug`: { bg, text }\n\nOr a single object per category. Consider theme-aware defaults.","status":"open","priority":3,"issue_type":"feature","estimated_minutes":120,"created_at":"2025-11-26T17:57:59.132401-08:00","updated_at":"2025-12-04T12:00:09.336584-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-wk9","depends_on_id":"vsbeads-1le","type":"parent-child","created_at":"2025-12-10T02:09:42.69549-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-wwl","title":"Migrate icons from Font Awesome to Lucide","description":"Replace all Font Awesome icons with Lucide equivalents for consistent stroke-based styling.\n\n## Context\nCurrently using Font Awesome Free (fill-based). Lucide offers:\n- Consistent stroke-based design\n- MIT license\n- Specific icons like 'kanban' that FA lacks\n\n## Migration Map\n| Current (FA) | Lucide |\n|--------------|--------|\n| bug | bug |\n| lightbulb | lightbulb |\n| square-check | square-check |\n| bolt | zap |\n| wrench | wrench |\n| code-merge | git-merge |\n| flask | flask-conical |\n| user | user |\n| tag | tag |\n| external-link | external-link |\n| notdef | circle-help |\n\n## Implementation\n1. Update Icon component to use Lucide React components\n2. Replace all icon imports\n3. Remove old SVG files\n4. Update any fill-based styling to stroke-based\n\n## Notes\n- kanban and table icons already migrated (vsbeads-uvh)\n- Can use lucide-react package directly instead of raw SVGs","status":"open","priority":3,"issue_type":"chore","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T04:13:10.810464-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T04:13:10.810464-08:00","labels":["ui"]} +{"id":"vsbeads-wwl","title":"Migrate icons from Font Awesome to Lucide","description":"Replace all Font Awesome icons with Lucide equivalents for consistent stroke-based styling.\n\n## Context\nCurrently using Font Awesome Free (fill-based). Lucide offers:\n- Consistent stroke-based design\n- MIT license\n- Specific icons like 'kanban' that FA lacks\n\n## Migration Map\n| Current (FA) | Lucide |\n|--------------|--------|\n| bug | bug |\n| lightbulb | lightbulb |\n| square-check | square-check |\n| bolt | zap |\n| wrench | wrench |\n| code-merge | git-merge |\n| flask | flask-conical |\n| user | user |\n| tag | tag |\n| external-link | external-link |\n| notdef | circle-help |\n\n## Implementation\n1. Update Icon component to use Lucide React components\n2. Replace all icon imports\n3. Remove old SVG files\n4. Update any fill-based styling to stroke-based\n\n## Notes\n- kanban and table icons already migrated (vsbeads-uvh)\n- Can use lucide-react package directly instead of raw SVGs","status":"open","priority":3,"issue_type":"chore","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T04:13:10.810464-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T04:13:10.810464-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-wwl","depends_on_id":"vsbeads-uvh","type":"related","created_at":"2026-01-31T04:13:54.685886-08:00","created_by":"Jason Dillon"}]} {"id":"vsbeads-xgn","title":"Refine browser-task agent instructions","description":"Based on testing results, refine:\n\n- System prompt for optimal response format\n- Standard task patterns (reload, click sequence, verify)\n- What to include/exclude in summaries\n- Error reporting format","status":"open","priority":2,"issue_type":"task","estimated_minutes":120,"created_at":"2025-11-28T21:52:30.218145-08:00","updated_at":"2025-12-04T11:58:49.641387-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-xgn","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:42.094448-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-xgn","depends_on_id":"vsbeads-hgm","type":"blocks","created_at":"2025-11-28T21:52:49.395613-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-xxl","title":"Investigate API parity gaps between bd CLI, daemon, and MCP","description":"Analyze the three beads interfaces to identify coverage gaps and inconsistencies:\n\n1. **bd CLI** - Full-featured command-line interface\n2. **Beads Daemon** - Socket-based API for real-time integration\n3. **Beads MCP** - Model Context Protocol server for AI agents\n\n**Goal:** Document gaps and file upstream issues to encourage API parity across all three interfaces.\n\n**Analysis approach:**\n1. Review latest upstream repo (`~/ws/reference/beads`)\n2. Catalog all operations available in each interface\n3. Create comparison matrix showing coverage\n4. Identify missing operations in daemon/MCP that exist in CLI\n5. Note any behavioral differences for same operations\n6. File issues upstream with specific recommendations\n\n**Expected deliverables:**\n- Comparison matrix (CLI vs Daemon vs MCP)\n- List of gaps with severity/impact\n- Upstream issues filed (or PR if straightforward)","acceptance_criteria":"- Comparison matrix complete for all major operations\n- Gaps documented with use-case impact\n- At least one upstream issue filed for significant gaps","status":"open","priority":2,"issue_type":"task","estimated_minutes":180,"created_at":"2025-12-05T01:17:15.838445-08:00","updated_at":"2025-12-05T01:17:20.028981-08:00","labels":["dx","research","upstream"]} {"id":"vsbeads-yhok","title":"Test Epic for hierarchy demo","status":"tombstone","priority":2,"issue_type":"epic","created_at":"2025-12-27T20:52:48.814844-08:00","updated_at":"2025-12-29T11:36:43.338738-08:00","deleted_at":"2025-12-29T11:36:43.338738-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"epic"} From be0e00c7b05ef78b58b3de382a91b998edd63773 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 04:24:22 -0800 Subject: [PATCH 32/49] bd daemon sync: 2026-01-31 04:24:22 --- .beads/issues.jsonl | 1 + 1 file changed, 1 insertion(+) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index a1d86b2..82e2313 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -43,6 +43,7 @@ {"id":"vsbeads-drg","title":"Document branch naming convention in CLAUDE.md","description":"Add branch naming strategy to CLAUDE.md:\n\nFormat: `beads/\u003cbead-id\u003e-\u003cterse-description\u003e`\n\nExamples:\n- `beads/vsbeads-93b-release-workflow`\n- `beads/vsbeads-xyz-fix-daemon-polling`\n\nThis ties branches to tracked work and makes it easy to find related issues.","status":"open","priority":4,"issue_type":"task","estimated_minutes":30,"created_at":"2025-11-29T16:47:10.870444-08:00","updated_at":"2025-12-04T12:00:16.819609-08:00","labels":["dx"],"comments":[{"id":28,"issue_id":"vsbeads-drg","author":"jason","text":"this is good, but we often work on a few beads a time. Might want to noramlize some other branch name strategy instead.","created_at":"2025-12-06T20:31:29Z"}]} {"id":"vsbeads-dxo","title":"Create code-server test fixture","description":"Create Playwright fixture that manages code-server lifecycle for tests.\n\n**Requirements:**\n- Start code-server before test suite (global setup)\n- Stop code-server after tests complete (global teardown)\n- Handle port allocation (avoid conflicts)\n- Wait for code-server to be ready before tests start\n- Symlink extension into code-server extensions directory\n\n**Considerations:**\n- Use `child_process` spawn for code-server\n- Health check endpoint or port availability\n- Cleanup on test failure/interrupt","acceptance_criteria":"- Fixture starts code-server automatically\n- Tests can navigate to code-server URL\n- Clean shutdown on test completion\n- Works on macOS and Linux (CI)","status":"open","priority":2,"issue_type":"task","estimated_minutes":120,"created_at":"2025-12-05T00:23:01.414273-08:00","updated_at":"2025-12-05T01:14:42.779394-08:00","labels":["testing"],"dependencies":[{"issue_id":"vsbeads-dxo","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.266027-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-dxo","depends_on_id":"vsbeads-ur9","type":"blocks","created_at":"2025-12-05T00:23:29.976788-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-e36","title":"Add icons to view contributions","description":"VS Code warns about missing `icon` property on view contributions in package.json.\n\nIcons are used when views are dragged to Activity Bar or title can't be shown.\n\nViews needing icons:\n- beadsDashboard\n- beadsPanel (Issues)\n- beadsDetails\n\nOptions:\n- Use same beads-icon.svg for all (quick fix)\n- Create distinct icons per view (better UX)\n\nDecide on iconography style before implementing.","status":"open","priority":4,"issue_type":"task","estimated_minutes":60,"created_at":"2025-11-29T17:41:35.403094-08:00","updated_at":"2025-12-04T12:00:15.568122-08:00","labels":["ui"]} +{"id":"vsbeads-e74","title":"DetailsView crashes on unknown dependency types","description":"groupDependenciesByType crashes with 'Cannot read properties of undefined (reading push)' when a bead has a dependency type not in the hardcoded list.\n\n## Root Cause\nThe function only handles: blocks, parent-child, discovered-from, related. Beads CLI now allows custom dependency types.\n\n## Fix\nAdded fallback to 'related' for unknown types in groupDependenciesByType().\n\n## File\nsrc/webview/views/DetailsView.tsx:102-105","status":"open","priority":1,"issue_type":"bug","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T04:24:22.23266-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T04:24:22.23266-08:00","labels":["ui"]} {"id":"vsbeads-ebs","title":"Add comment count column to Issues list","description":"Add a synthetic column showing comment count per bead, hidden by default.\n\nUse case: Sort/filter by activity level - beads with more comments often indicate complexity or ongoing discussion.\n\nImplementation notes:\n- Column disabled by default (like Assignee/Estimate)\n- Would need comment count in list data (currently only fetched in Details view)\n- Consider if daemon API supports count without fetching full comments","status":"open","priority":4,"issue_type":"feature","estimated_minutes":90,"created_at":"2025-12-01T17:18:34.567726-08:00","updated_at":"2025-12-04T12:00:13.1052-08:00","labels":["ui"],"comments":[{"id":30,"issue_id":"vsbeads-ebs","author":"jason","text":"not sure how useful this really is... doesn't seem like agents use comments to append data, its more for humans.","created_at":"2025-12-10T10:09:01Z"}]} {"id":"vsbeads-eby","title":"Add data-testid attributes to UI components","description":"Add stable `data-testid` attributes to key UI elements for reliable test selectors.\n\n**Target elements:**\n- Issues table rows (`data-testid=\"issue-row-{id}\"`)\n- Status badges (`data-testid=\"status-badge\"`)\n- Priority indicators (`data-testid=\"priority-badge\"`)\n- Details panel sections (`data-testid=\"details-title\"`, etc.)\n- Filter controls\n\n**Why:**\n- CSS class selectors are fragile (change with styling)\n- Text selectors break with i18n\n- data-testid is E2E testing best practice","acceptance_criteria":"- Key interactive elements have data-testid\n- Tests use these selectors instead of classes\n- No visual impact to UI","status":"open","priority":3,"issue_type":"task","estimated_minutes":45,"created_at":"2025-12-05T00:23:05.294226-08:00","updated_at":"2025-12-05T01:14:41.917251-08:00","labels":["testing","ui"],"dependencies":[{"issue_id":"vsbeads-eby","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:17.386975-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-el1i","title":"Sync daemon client types with upstream beads 0.37.0","description":"Keep BeadsDaemonClient types aligned with upstream beads daemon API.\n\nNew fields to add:\n- `CreateArgs.id_prefix` - custom ID prefix (mol, wisp, etc.)\n- `ListArgs.wisp` - filter by wisp status (boolean)\n- `Issue.source_formula` - steam engine tracing\n- `Issue.source_location` - steam engine tracing\n\nReference: beads commits d3245d26..6bb11c42\n\nEven if we don't use these features, our types should match the daemon for forward compatibility.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-25T16:53:02.796309-08:00","updated_at":"2025-12-29T14:01:59.183309-08:00","closed_at":"2025-12-29T14:01:59.183309-08:00","close_reason":"Upstream sync completed v0.37.0 → v0.40.0","labels":["backend"],"dependencies":[{"issue_id":"vsbeads-el1i","depends_on_id":"vsbeads-4m5i","type":"related","created_at":"2025-12-25T17:01:21.930664-08:00","created_by":"daemon"},{"issue_id":"vsbeads-el1i","depends_on_id":"vsbeads-un3l","type":"parent-child","created_at":"2025-12-29T13:43:31.681844-08:00","created_by":"daemon"}]} From b2eb1dedea91a56271d37e93502a647af4e645ec Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 04:24:58 -0800 Subject: [PATCH 33/49] bd daemon sync: 2026-01-31 04:24:58 --- .beads/issues.jsonl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 82e2313..4bf0f63 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -43,7 +43,7 @@ {"id":"vsbeads-drg","title":"Document branch naming convention in CLAUDE.md","description":"Add branch naming strategy to CLAUDE.md:\n\nFormat: `beads/\u003cbead-id\u003e-\u003cterse-description\u003e`\n\nExamples:\n- `beads/vsbeads-93b-release-workflow`\n- `beads/vsbeads-xyz-fix-daemon-polling`\n\nThis ties branches to tracked work and makes it easy to find related issues.","status":"open","priority":4,"issue_type":"task","estimated_minutes":30,"created_at":"2025-11-29T16:47:10.870444-08:00","updated_at":"2025-12-04T12:00:16.819609-08:00","labels":["dx"],"comments":[{"id":28,"issue_id":"vsbeads-drg","author":"jason","text":"this is good, but we often work on a few beads a time. Might want to noramlize some other branch name strategy instead.","created_at":"2025-12-06T20:31:29Z"}]} {"id":"vsbeads-dxo","title":"Create code-server test fixture","description":"Create Playwright fixture that manages code-server lifecycle for tests.\n\n**Requirements:**\n- Start code-server before test suite (global setup)\n- Stop code-server after tests complete (global teardown)\n- Handle port allocation (avoid conflicts)\n- Wait for code-server to be ready before tests start\n- Symlink extension into code-server extensions directory\n\n**Considerations:**\n- Use `child_process` spawn for code-server\n- Health check endpoint or port availability\n- Cleanup on test failure/interrupt","acceptance_criteria":"- Fixture starts code-server automatically\n- Tests can navigate to code-server URL\n- Clean shutdown on test completion\n- Works on macOS and Linux (CI)","status":"open","priority":2,"issue_type":"task","estimated_minutes":120,"created_at":"2025-12-05T00:23:01.414273-08:00","updated_at":"2025-12-05T01:14:42.779394-08:00","labels":["testing"],"dependencies":[{"issue_id":"vsbeads-dxo","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.266027-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-dxo","depends_on_id":"vsbeads-ur9","type":"blocks","created_at":"2025-12-05T00:23:29.976788-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-e36","title":"Add icons to view contributions","description":"VS Code warns about missing `icon` property on view contributions in package.json.\n\nIcons are used when views are dragged to Activity Bar or title can't be shown.\n\nViews needing icons:\n- beadsDashboard\n- beadsPanel (Issues)\n- beadsDetails\n\nOptions:\n- Use same beads-icon.svg for all (quick fix)\n- Create distinct icons per view (better UX)\n\nDecide on iconography style before implementing.","status":"open","priority":4,"issue_type":"task","estimated_minutes":60,"created_at":"2025-11-29T17:41:35.403094-08:00","updated_at":"2025-12-04T12:00:15.568122-08:00","labels":["ui"]} -{"id":"vsbeads-e74","title":"DetailsView crashes on unknown dependency types","description":"groupDependenciesByType crashes with 'Cannot read properties of undefined (reading push)' when a bead has a dependency type not in the hardcoded list.\n\n## Root Cause\nThe function only handles: blocks, parent-child, discovered-from, related. Beads CLI now allows custom dependency types.\n\n## Fix\nAdded fallback to 'related' for unknown types in groupDependenciesByType().\n\n## File\nsrc/webview/views/DetailsView.tsx:102-105","status":"open","priority":1,"issue_type":"bug","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T04:24:22.23266-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T04:24:22.23266-08:00","labels":["ui"]} +{"id":"vsbeads-e74","title":"DetailsView crashes on unknown dependency types","description":"groupDependenciesByType crashes with 'Cannot read properties of undefined (reading push)' when a bead has a dependency type not in the hardcoded list.\n\n## Root Cause\nThe function only handles: blocks, parent-child, discovered-from, related. Beads CLI now allows custom dependency types.\n\n## Fix\nAdded fallback to 'related' for unknown types in groupDependenciesByType().\n\n## File\nsrc/webview/views/DetailsView.tsx:102-105","status":"closed","priority":1,"issue_type":"bug","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T04:24:22.23266-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T04:24:57.985278-08:00","closed_at":"2026-01-31T04:24:57.985278-08:00","close_reason":"Fixed in feat/kanban-improvements branch","labels":["ui"]} {"id":"vsbeads-ebs","title":"Add comment count column to Issues list","description":"Add a synthetic column showing comment count per bead, hidden by default.\n\nUse case: Sort/filter by activity level - beads with more comments often indicate complexity or ongoing discussion.\n\nImplementation notes:\n- Column disabled by default (like Assignee/Estimate)\n- Would need comment count in list data (currently only fetched in Details view)\n- Consider if daemon API supports count without fetching full comments","status":"open","priority":4,"issue_type":"feature","estimated_minutes":90,"created_at":"2025-12-01T17:18:34.567726-08:00","updated_at":"2025-12-04T12:00:13.1052-08:00","labels":["ui"],"comments":[{"id":30,"issue_id":"vsbeads-ebs","author":"jason","text":"not sure how useful this really is... doesn't seem like agents use comments to append data, its more for humans.","created_at":"2025-12-10T10:09:01Z"}]} {"id":"vsbeads-eby","title":"Add data-testid attributes to UI components","description":"Add stable `data-testid` attributes to key UI elements for reliable test selectors.\n\n**Target elements:**\n- Issues table rows (`data-testid=\"issue-row-{id}\"`)\n- Status badges (`data-testid=\"status-badge\"`)\n- Priority indicators (`data-testid=\"priority-badge\"`)\n- Details panel sections (`data-testid=\"details-title\"`, etc.)\n- Filter controls\n\n**Why:**\n- CSS class selectors are fragile (change with styling)\n- Text selectors break with i18n\n- data-testid is E2E testing best practice","acceptance_criteria":"- Key interactive elements have data-testid\n- Tests use these selectors instead of classes\n- No visual impact to UI","status":"open","priority":3,"issue_type":"task","estimated_minutes":45,"created_at":"2025-12-05T00:23:05.294226-08:00","updated_at":"2025-12-05T01:14:41.917251-08:00","labels":["testing","ui"],"dependencies":[{"issue_id":"vsbeads-eby","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:17.386975-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-el1i","title":"Sync daemon client types with upstream beads 0.37.0","description":"Keep BeadsDaemonClient types aligned with upstream beads daemon API.\n\nNew fields to add:\n- `CreateArgs.id_prefix` - custom ID prefix (mol, wisp, etc.)\n- `ListArgs.wisp` - filter by wisp status (boolean)\n- `Issue.source_formula` - steam engine tracing\n- `Issue.source_location` - steam engine tracing\n\nReference: beads commits d3245d26..6bb11c42\n\nEven if we don't use these features, our types should match the daemon for forward compatibility.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-25T16:53:02.796309-08:00","updated_at":"2025-12-29T14:01:59.183309-08:00","closed_at":"2025-12-29T14:01:59.183309-08:00","close_reason":"Upstream sync completed v0.37.0 → v0.40.0","labels":["backend"],"dependencies":[{"issue_id":"vsbeads-el1i","depends_on_id":"vsbeads-4m5i","type":"related","created_at":"2025-12-25T17:01:21.930664-08:00","created_by":"daemon"},{"issue_id":"vsbeads-el1i","depends_on_id":"vsbeads-un3l","type":"parent-child","created_at":"2025-12-29T13:43:31.681844-08:00","created_by":"daemon"}]} From 1ed7fac3dbc1d0f41cce0d7783be1f1c0c4d7514 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 04:41:15 -0800 Subject: [PATCH 34/49] bd daemon sync: 2026-01-31 04:41:15 --- .beads/issues.jsonl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 4bf0f63..1a532a9 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -70,7 +70,7 @@ {"id":"vsbeads-p78","title":"Add autocomplete menu for label input with existing labels","description":"When adding labels to an issue, show a dropdown menu with matching existing labels as the user types. Should support both selecting an existing label and creating a new label that doesn't exist yet.","notes":"2025-12-11: Attempted implementation using AutocompleteInput component (created for vsbeads-65h label filter). \n\nApproaches tried:\n1. Inline input with AutocompleteInput - dropdown clipped by overflow:hidden on parent containers\n2. Added useFixedPositioning prop to calculate fixed position via getBoundingClientRect - didn't solve clipping\n3. Wrapped in Dropdown component with AutocompleteInput inside - layout breaks, dropdown menu positioning issues\n\nCore problem: The details-badges area has multiple nested containers with overflow constraints. The autocomplete dropdown gets clipped no matter which approach.\n\nPossible solutions to explore:\n- Portal-based dropdown that renders at document root\n- Completely different UX (modal/popover for adding labels)\n- Fix overflow constraints on parent containers (may break other things)\n\nAutocompleteInput component itself works fine in filter bar context (vsbeads-65h).\n\n---\n\n2025-12-11: Stashed WIP for later: `stash@{0}: On feature/ux-polish: WIP: label autocomplete (vsbeads-p78, vsbeads-65h)`","status":"blocked","priority":3,"issue_type":"feature","created_at":"2025-12-11T02:04:29.914692-08:00","updated_at":"2025-12-11T13:09:45.969264-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-p78","depends_on_id":"vsbeads-wgr","type":"parent-child","created_at":"2025-12-17T16:53:56.399661-08:00","created_by":"daemon","metadata":"{}"}],"comments":[{"id":32,"issue_id":"vsbeads-p78","author":"jason","text":"Testing comment functionality from Claude","created_at":"2025-12-11T21:10:33Z"}]} {"id":"vsbeads-pqx","title":"Extract FilterBar component","description":"Extract filter bar UI from IssuesView into reusable component:\n- Filter presets dropdown\n- Active filter chips\n- Add filter menu (status/priority/type)\n- Clear button\n- Optional faceted counts support\n\nSaves ~150 LOC from IssuesView. Creates src/webview/common/FilterBar.tsx","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-04T15:54:10.593422-08:00","updated_at":"2025-12-05T12:01:16.754411-08:00","labels":["refactor","ui"]} {"id":"vsbeads-prs","title":"Reorganize webview component directory structure","description":"Group components by function:\n- common/badges/ (StatusBadge, PriorityBadge, TypeBadge, LabelBadge)\n- common/dropdowns/ (Dropdown, ColoredSelect, ProjectDropdown)\n- common/filters/ (FilterBar, FilterChip)\n- common/feedback/ (Toast, Loading, ErrorMessage)\n- hooks/ (useClickOutside, useColumnState)\n\nUpdate all imports.","status":"open","priority":3,"issue_type":"chore","estimated_minutes":60,"created_at":"2025-12-04T15:54:11.547522-08:00","updated_at":"2025-12-05T12:01:16.866291-08:00","labels":["dx","refactor"],"dependencies":[{"issue_id":"vsbeads-prs","depends_on_id":"vsbeads-pqx","type":"blocks","created_at":"2025-12-04T15:54:23.266227-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-qcb","title":"Research beads skill vs MCP vs plugin architecture","description":"Understand the relationship between beads skill, MCP server, and Claude Code plugin:\n\n**Questions to answer:**\n1. What is the beads \"skill\" and how does it differ from the MCP server?\n2. Why isn't the skill bundled in the plugin?\n3. What functionality does each provide?\n4. When should users use skill vs MCP vs plugin slash commands?\n\n**Reference docs in upstream repo (`~/ws/reference/beads`):**\n- `docs/PLUGIN.md` - Plugin documentation\n- `.claude-plugin/plugin.json` - Plugin manifest\n- `.claude-plugin/agents/task-agent.md` - Task agent definition\n\n**Deliverables:**\n- Document the architectural relationship\n- Clarify the design rationale\n- Recommend if skill should be added to plugin (or why not)","acceptance_criteria":"- Clear explanation of skill vs MCP vs plugin\n- Design rationale documented\n- Recommendation with trade-offs","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-05T01:18:24.504312-08:00","updated_at":"2025-12-05T01:18:29.272041-08:00","labels":["dx","research","upstream"]} +{"id":"vsbeads-qcb","title":"Research beads skill vs MCP vs plugin architecture","description":"Understand the relationship between beads skill, MCP server, and Claude Code plugin:\n\n**Questions to answer:**\n1. What is the beads \"skill\" and how does it differ from the MCP server?\n2. Why isn't the skill bundled in the plugin?\n3. What functionality does each provide?\n4. When should users use skill vs MCP vs plugin slash commands?\n\n**Reference docs in upstream repo (`~/ws/reference/beads`):**\n- `docs/PLUGIN.md` - Plugin documentation\n- `.claude-plugin/plugin.json` - Plugin manifest\n- `.claude-plugin/agents/task-agent.md` - Task agent definition\n\n**Deliverables:**\n- Document the architectural relationship\n- Clarify the design rationale\n- Recommend if skill should be added to plugin (or why not)","acceptance_criteria":"- Clear explanation of skill vs MCP vs plugin\n- Design rationale documented\n- Recommendation with trade-offs","status":"open","priority":2,"issue_type":"task","assignee":"jason","estimated_minutes":90,"created_at":"2025-12-05T01:18:24.504312-08:00","updated_at":"2026-01-31T04:41:14.855536-08:00","labels":["dx","research","upstream"]} {"id":"vsbeads-re92","title":"Labels column empty on fresh VS Code startup","notes":"## Symptoms\n- Labels column shows \"-\" for all beads on fresh VS Code startup\n- Labels appear correctly after:\n - Switching to another project and back\n - Reloading the VS Code window\n\n## Likely Cause\nTiming/initialization issue - label data may not be fetched or populated during initial extension activation.\n\n## Investigation Needed\n- Check BeadsBackend initialization order\n- Verify when label data is requested vs when webview is ready\n- Look for race condition between project selection and data fetch","status":"closed","priority":2,"issue_type":"bug","assignee":"jdillon","created_at":"2025-12-26T15:53:57.445613-08:00","updated_at":"2025-12-29T14:43:30.209454-08:00","closed_at":"2025-12-29T14:43:30.209454-08:00","close_reason":"Fixed in Cycle 2 - race condition in webview initialization","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-re92","depends_on_id":"vsbeads-un3l","type":"parent-child","created_at":"2025-12-29T11:39:53.227766-08:00","created_by":"daemon"}],"comments":[{"id":39,"issue_id":"vsbeads-re92","author":"jason","text":"### Investigation \u0026 Fix\n\n**Root cause identified**: Race condition in `BaseViewProvider.resolveWebviewView()`\n\nThe issue was that `initializeView()` was called immediately after setting the webview HTML, but the React app hadn't loaded yet to receive messages. This caused the initial data (including labels) to be lost.\n\n**Fix applied**: Removed the premature `initializeView()` call. Now we wait for the \"ready\" message from the webview, which indicates React is loaded and listening for messages.\n\n**File changed**: `src/providers/BaseViewProvider.ts`\n\n**Note**: Original bug was intermittent and couldn't be reproduced during testing, but the race condition was clearly present in the code. Fix verified working in code-server.","created_at":"2025-12-29T20:13:14Z"}]} {"id":"vsbeads-rru","title":"Implement Dependency Graph as editor panel","description":"Reimplement the dependency graph view as an editor panel (like Settings) instead of sidebar webview. More space for visualization, better UX.","design":"Use `vscode.window.createWebviewPanel()` to open in editor area.\n- Register command to open graph\n- Panel shows in editor tabs like Settings/Keyboard Shortcuts\n- Can have full width for node visualization\n- Consider using a proper graph library (d3, cytoscape, etc)","status":"open","priority":3,"issue_type":"feature","estimated_minutes":480,"created_at":"2025-11-26T18:39:29.324895-08:00","updated_at":"2025-12-04T11:59:40.971443-08:00","labels":["ui"]} {"id":"vsbeads-t5e","title":"Research external issue tracker sync (GitHub/GitLab/Jira)","description":"While beads is great for managing context and agent work, teams often need a subset of beads to sync with external trackers (GitHub Issues, GitLab, Jira, etc.).\n\nResearch questions:\n1. What upstream beads features exist for external sync? (check `external_ref` field usage)\n2. Are there examples or docs for bi-directional sync?\n3. What's the recommended workflow - manual link via `external_ref` or automated sync?\n4. Any plugins or integrations available?\n\nGoal: Understand what's possible today and what gaps exist for team workflows.","status":"open","priority":3,"issue_type":"task","estimated_minutes":180,"created_at":"2025-12-01T16:40:03.527205-08:00","updated_at":"2025-12-04T11:59:04.481436-08:00","labels":["dx","research"]} From 3eef5b7ab7b6f692af4ffa1e54dbb0f24c5de53d Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 04:47:53 -0800 Subject: [PATCH 35/49] bd daemon sync: 2026-01-31 04:47:53 --- .beads/issues.jsonl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 1a532a9..68feeda 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -36,7 +36,7 @@ {"id":"vsbeads-ba5","title":"Extension should auto-start daemon when not running","description":"Extension failed to connect with error: \"Socket error: connect ENOENT /Users/jason/ws/jdillon/vscode-beads/.beads/bd.sock\"\n\nThe daemon wasn't running and the extension didn't auto-start it. Need to investigate why the auto-start mechanism failed.","design":"## Investigation Areas\n\n1. **Why didn't auto-start work?**\n - Check if startDaemon is being called on connection failure\n - Verify the retry/backoff logic in BeadsBackend\n - Check if there's a race condition or timeout issue\n\n2. **Potential improvements**\n - Add daemon status indicator to UI (statusbar or panel)\n - Add \"Restart Daemon\" command to command palette\n - Show daemon connection status per-project in multi-root workspaces\n - Better error messaging when daemon fails to start\n\n3. **Diagnostics needed**\n - View current daemon connections across all projects\n - Force restart capability\n - Daemon health/metrics visibility in extension","status":"open","priority":3,"issue_type":"bug","estimated_minutes":180,"created_at":"2025-11-29T02:34:16.15086-08:00","updated_at":"2025-12-04T11:59:29.224036-08:00","labels":["daemon"]} {"id":"vsbeads-bcu","title":"Test bead for labels overflow","description":"Testing label display and overflow behaviordfsfs","status":"open","priority":3,"issue_type":"task","estimated_minutes":0,"created_at":"2025-12-01T15:32:16.718649-08:00","updated_at":"2025-12-04T11:59:22.270468-08:00","labels":["E","a","b","c","d"]} {"id":"vsbeads-btf","title":"Scroll to latest comment when adding a comment in Details view","description":"When adding a comment in the Details panel, the view should auto-scroll to show the newly added comment at the bottom. Initial implementation attempts didn't work due to webview scroll container complexity.","status":"open","priority":4,"issue_type":"feature","estimated_minutes":45,"created_at":"2025-11-27T20:45:35.746701-08:00","updated_at":"2025-12-04T12:00:18.508148-08:00","labels":["ui"],"comments":[{"id":23,"issue_id":"vsbeads-btf","author":"jason","text":"turns out this is kinda hard, or was for claude to get correct.","created_at":"2025-12-02T00:38:50Z"}]} -{"id":"vsbeads-bxnb","title":"Research tree view / hierarchy display for issues list","description":"Explore options for optional tree/hierarchy view in issues list:\n\n**Inspiration**: IntelliJ IDEA project view has multiple view modes (flat list vs tree hierarchy)\n\n**Options to research**:\n1. Tree column in existing table (expandable rows)\n2. Separate tree view panel\n3. Toggle between list/tree modes\n4. TanStack Table tree data support\n\n**Questions**:\n- How to represent epic → task → subtask hierarchy?\n- How to handle dependencies vs parent-child?\n- What does TanStack Table support for tree data?\n- UX for expand/collapse in table vs dedicated tree view?","notes":"---\n2025-12-25: Draft PR #54 opened. Tree view basic functionality works but UI needs refinement - icons and visual hierarchy indicators need design review. TanStack Query added for data caching.","status":"blocked","priority":3,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-23T00:21:40.100896-08:00","updated_at":"2025-12-26T00:58:17.539117-08:00","labels":["research","ui"],"comments":[{"id":37,"issue_id":"vsbeads-bxnb","author":"jason","text":"Need to find some examples to show the agent what to build.","created_at":"2025-12-26T08:58:27Z"}]} +{"id":"vsbeads-bxnb","title":"Research tree view / hierarchy display for issues list","description":"Explore options for optional tree/hierarchy view in issues list:\n\n**Inspiration**: IntelliJ IDEA project view has multiple view modes (flat list vs tree hierarchy)\n\n**Options to research**:\n1. Tree column in existing table (expandable rows)\n2. Separate tree view panel\n3. Toggle between list/tree modes\n4. TanStack Table tree data support\n\n**Questions**:\n- How to represent epic → task → subtask hierarchy?\n- How to handle dependencies vs parent-child?\n- What does TanStack Table support for tree data?\n- UX for expand/collapse in table vs dedicated tree view?","notes":"---\n2025-12-25: Draft PR #54 opened. Tree view basic functionality works but UI needs refinement - icons and visual hierarchy indicators need design review. TanStack Query added for data caching.","status":"closed","priority":3,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-23T00:21:40.100896-08:00","updated_at":"2026-01-31T04:47:52.559728-08:00","closed_at":"2026-01-31T04:47:52.559736-08:00","labels":["research","ui"],"comments":[{"id":37,"issue_id":"vsbeads-bxnb","author":"jason","text":"Need to find some examples to show the agent what to build.","created_at":"2025-12-26T08:58:27Z"}]} {"id":"vsbeads-cjh","title":"Kanban: Make all columns collapsible","description":"Allow collapsing any kanban column, not just the Closed column.\n\n## Context\nCurrent implementation only allows collapsing the Closed column:\n```tsx\nconst [closedExpanded, setClosedExpanded] = useState(false);\n// ...\nconst isCollapsed = status === \"closed\" \u0026\u0026 !closedExpanded;\n```\n\nUsers may want to collapse other columns (e.g., Open when focusing on in-progress work).\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nChange from single boolean to a Set tracking collapsed columns:\n```tsx\nconst [collapsedColumns, setCollapsedColumns] = useState\u003cSet\u003cBeadStatus\u003e\u003e(\n new Set([\"closed\"]) // Closed collapsed by default\n);\n\nconst toggleColumn = (status: BeadStatus) =\u003e {\n setCollapsedColumns(prev =\u003e {\n const next = new Set(prev);\n if (next.has(status)) next.delete(status);\n else next.add(status);\n return next;\n });\n};\n\nconst isCollapsed = collapsedColumns.has(status);\n```\n\n## Design Considerations\n- All column headers should be clickable (currently only Closed)\n- Add visual affordance (collapse/expand icon in header)\n- Persist collapsed state? (localStorage or just session)\n- Collapsed column should show count prominently\n\n## Acceptance Criteria\n- [ ] All 4 columns can be collapsed/expanded\n- [ ] Closed still collapsed by default\n- [ ] Click any column header to toggle\n- [ ] Visual indicator for collapsible headers\n- [ ] Collapsed columns show item count\n\n## Open Questions\n- Persist collapse state across sessions (localStorage)?\n- Add explicit collapse/expand icon or just clickable header?\n- Keyboard shortcut to collapse/expand?\n- Should collapsed columns have a minimum width or be truly minimal?","status":"in_progress","priority":3,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:48:08.114162-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:52:33.862703-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-cjh","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:16.09939-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-cjh","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.632969-08:00","created_by":"Jason Dillon"}]} {"id":"vsbeads-cqi","title":"Redesign UI: sidebar for navigation, editor panels for views","description":"Move Kanban, Dependency Graph, and Details to WebviewPanel (editor tabs). Keep project selector and issue list in sidebar.","status":"open","priority":2,"issue_type":"feature","estimated_minutes":960,"created_at":"2025-11-26T15:59:20.263974-08:00","updated_at":"2025-12-04T11:58:59.107775-08:00","labels":["ui"]} {"id":"vsbeads-dhe","title":"Set up GitHub Actions workflow for nightly E2E tests","description":"Create GitHub Actions workflow that runs integration tests on a schedule.\n\n**Requirements:**\n- Run nightly (not on every commit - too slow/resource intensive)\n- Manual trigger option (`workflow_dispatch`)\n- Use ubuntu-latest runner\n- Install code-server, bd CLI, Playwright browsers\n- Upload test artifacts on failure (screenshots, traces, HTML report)\n\n**Pattern:**\n```yaml\non:\n schedule:\n - cron: '0 6 * * *' # 6am UTC daily\n workflow_dispatch:\n```","acceptance_criteria":"- Workflow file in `.github/workflows/integration-tests.yml`\n- Manual trigger works from Actions tab\n- Artifacts available on failure\n- Sends notification on failure (optional/later)","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-05T00:23:04.64811-08:00","updated_at":"2025-12-05T01:14:48.401601-08:00","labels":["ci","testing"],"dependencies":[{"issue_id":"vsbeads-dhe","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.83836-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-dhe","depends_on_id":"vsbeads-w2x","type":"blocks","created_at":"2025-12-05T00:23:31.666861-08:00","created_by":"daemon","metadata":"{}"}]} From bcfbe2305552fcfeee330109c27d9330d55440b4 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 04:48:55 -0800 Subject: [PATCH 36/49] bd daemon sync: 2026-01-31 04:48:55 --- .beads/issues.jsonl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 68feeda..471519a 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -36,7 +36,7 @@ {"id":"vsbeads-ba5","title":"Extension should auto-start daemon when not running","description":"Extension failed to connect with error: \"Socket error: connect ENOENT /Users/jason/ws/jdillon/vscode-beads/.beads/bd.sock\"\n\nThe daemon wasn't running and the extension didn't auto-start it. Need to investigate why the auto-start mechanism failed.","design":"## Investigation Areas\n\n1. **Why didn't auto-start work?**\n - Check if startDaemon is being called on connection failure\n - Verify the retry/backoff logic in BeadsBackend\n - Check if there's a race condition or timeout issue\n\n2. **Potential improvements**\n - Add daemon status indicator to UI (statusbar or panel)\n - Add \"Restart Daemon\" command to command palette\n - Show daemon connection status per-project in multi-root workspaces\n - Better error messaging when daemon fails to start\n\n3. **Diagnostics needed**\n - View current daemon connections across all projects\n - Force restart capability\n - Daemon health/metrics visibility in extension","status":"open","priority":3,"issue_type":"bug","estimated_minutes":180,"created_at":"2025-11-29T02:34:16.15086-08:00","updated_at":"2025-12-04T11:59:29.224036-08:00","labels":["daemon"]} {"id":"vsbeads-bcu","title":"Test bead for labels overflow","description":"Testing label display and overflow behaviordfsfs","status":"open","priority":3,"issue_type":"task","estimated_minutes":0,"created_at":"2025-12-01T15:32:16.718649-08:00","updated_at":"2025-12-04T11:59:22.270468-08:00","labels":["E","a","b","c","d"]} {"id":"vsbeads-btf","title":"Scroll to latest comment when adding a comment in Details view","description":"When adding a comment in the Details panel, the view should auto-scroll to show the newly added comment at the bottom. Initial implementation attempts didn't work due to webview scroll container complexity.","status":"open","priority":4,"issue_type":"feature","estimated_minutes":45,"created_at":"2025-11-27T20:45:35.746701-08:00","updated_at":"2025-12-04T12:00:18.508148-08:00","labels":["ui"],"comments":[{"id":23,"issue_id":"vsbeads-btf","author":"jason","text":"turns out this is kinda hard, or was for claude to get correct.","created_at":"2025-12-02T00:38:50Z"}]} -{"id":"vsbeads-bxnb","title":"Research tree view / hierarchy display for issues list","description":"Explore options for optional tree/hierarchy view in issues list:\n\n**Inspiration**: IntelliJ IDEA project view has multiple view modes (flat list vs tree hierarchy)\n\n**Options to research**:\n1. Tree column in existing table (expandable rows)\n2. Separate tree view panel\n3. Toggle between list/tree modes\n4. TanStack Table tree data support\n\n**Questions**:\n- How to represent epic → task → subtask hierarchy?\n- How to handle dependencies vs parent-child?\n- What does TanStack Table support for tree data?\n- UX for expand/collapse in table vs dedicated tree view?","notes":"---\n2025-12-25: Draft PR #54 opened. Tree view basic functionality works but UI needs refinement - icons and visual hierarchy indicators need design review. TanStack Query added for data caching.","status":"closed","priority":3,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-23T00:21:40.100896-08:00","updated_at":"2026-01-31T04:47:52.559728-08:00","closed_at":"2026-01-31T04:47:52.559736-08:00","labels":["research","ui"],"comments":[{"id":37,"issue_id":"vsbeads-bxnb","author":"jason","text":"Need to find some examples to show the agent what to build.","created_at":"2025-12-26T08:58:27Z"}]} +{"id":"vsbeads-bxnb","title":"Research tree view / hierarchy display for issues list","description":"Explore options for optional tree/hierarchy view in issues list:\n\n**Inspiration**: IntelliJ IDEA project view has multiple view modes (flat list vs tree hierarchy)\n\n**Options to research**:\n1. Tree column in existing table (expandable rows)\n2. Separate tree view panel\n3. Toggle between list/tree modes\n4. TanStack Table tree data support\n\n**Questions**:\n- How to represent epic → task → subtask hierarchy?\n- How to handle dependencies vs parent-child?\n- What does TanStack Table support for tree data?\n- UX for expand/collapse in table vs dedicated tree view?","notes":"---\n2025-12-25: Draft PR #54 opened. Tree view basic functionality works but UI needs refinement - icons and visual hierarchy indicators need design review. TanStack Query added for data caching.","status":"blocked","priority":3,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-23T00:21:40.100896-08:00","updated_at":"2026-01-31T04:48:54.988516-08:00","labels":["research","ui"],"comments":[{"id":37,"issue_id":"vsbeads-bxnb","author":"jason","text":"Need to find some examples to show the agent what to build.","created_at":"2025-12-26T08:58:27Z"}]} {"id":"vsbeads-cjh","title":"Kanban: Make all columns collapsible","description":"Allow collapsing any kanban column, not just the Closed column.\n\n## Context\nCurrent implementation only allows collapsing the Closed column:\n```tsx\nconst [closedExpanded, setClosedExpanded] = useState(false);\n// ...\nconst isCollapsed = status === \"closed\" \u0026\u0026 !closedExpanded;\n```\n\nUsers may want to collapse other columns (e.g., Open when focusing on in-progress work).\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nChange from single boolean to a Set tracking collapsed columns:\n```tsx\nconst [collapsedColumns, setCollapsedColumns] = useState\u003cSet\u003cBeadStatus\u003e\u003e(\n new Set([\"closed\"]) // Closed collapsed by default\n);\n\nconst toggleColumn = (status: BeadStatus) =\u003e {\n setCollapsedColumns(prev =\u003e {\n const next = new Set(prev);\n if (next.has(status)) next.delete(status);\n else next.add(status);\n return next;\n });\n};\n\nconst isCollapsed = collapsedColumns.has(status);\n```\n\n## Design Considerations\n- All column headers should be clickable (currently only Closed)\n- Add visual affordance (collapse/expand icon in header)\n- Persist collapsed state? (localStorage or just session)\n- Collapsed column should show count prominently\n\n## Acceptance Criteria\n- [ ] All 4 columns can be collapsed/expanded\n- [ ] Closed still collapsed by default\n- [ ] Click any column header to toggle\n- [ ] Visual indicator for collapsible headers\n- [ ] Collapsed columns show item count\n\n## Open Questions\n- Persist collapse state across sessions (localStorage)?\n- Add explicit collapse/expand icon or just clickable header?\n- Keyboard shortcut to collapse/expand?\n- Should collapsed columns have a minimum width or be truly minimal?","status":"in_progress","priority":3,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:48:08.114162-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:52:33.862703-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-cjh","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:16.09939-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-cjh","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.632969-08:00","created_by":"Jason Dillon"}]} {"id":"vsbeads-cqi","title":"Redesign UI: sidebar for navigation, editor panels for views","description":"Move Kanban, Dependency Graph, and Details to WebviewPanel (editor tabs). Keep project selector and issue list in sidebar.","status":"open","priority":2,"issue_type":"feature","estimated_minutes":960,"created_at":"2025-11-26T15:59:20.263974-08:00","updated_at":"2025-12-04T11:58:59.107775-08:00","labels":["ui"]} {"id":"vsbeads-dhe","title":"Set up GitHub Actions workflow for nightly E2E tests","description":"Create GitHub Actions workflow that runs integration tests on a schedule.\n\n**Requirements:**\n- Run nightly (not on every commit - too slow/resource intensive)\n- Manual trigger option (`workflow_dispatch`)\n- Use ubuntu-latest runner\n- Install code-server, bd CLI, Playwright browsers\n- Upload test artifacts on failure (screenshots, traces, HTML report)\n\n**Pattern:**\n```yaml\non:\n schedule:\n - cron: '0 6 * * *' # 6am UTC daily\n workflow_dispatch:\n```","acceptance_criteria":"- Workflow file in `.github/workflows/integration-tests.yml`\n- Manual trigger works from Actions tab\n- Artifacts available on failure\n- Sends notification on failure (optional/later)","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-05T00:23:04.64811-08:00","updated_at":"2025-12-05T01:14:48.401601-08:00","labels":["ci","testing"],"dependencies":[{"issue_id":"vsbeads-dhe","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.83836-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-dhe","depends_on_id":"vsbeads-w2x","type":"blocks","created_at":"2025-12-05T00:23:31.666861-08:00","created_by":"daemon","metadata":"{}"}]} From 9efd606ccaa940735a29fc5dcca705e7cd9601ce Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 04:49:06 -0800 Subject: [PATCH 37/49] bd daemon sync: 2026-01-31 04:49:06 --- .beads/issues.jsonl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 471519a..1cb5e3b 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -93,4 +93,4 @@ {"id":"vsbeads-yhok","title":"Test Epic for hierarchy demo","status":"tombstone","priority":2,"issue_type":"epic","created_at":"2025-12-27T20:52:48.814844-08:00","updated_at":"2025-12-29T11:36:43.338738-08:00","deleted_at":"2025-12-29T11:36:43.338738-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"epic"} {"id":"vsbeads-yhok.2","title":"Child task of epic","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-27T20:53:03.840173-08:00","updated_at":"2025-12-29T11:36:43.340845-08:00","dependencies":[{"issue_id":"vsbeads-yhok.2","depends_on_id":"vsbeads-yhok","type":"parent-child","created_at":"2025-12-27T20:53:03.846123-08:00","created_by":"daemon"}],"deleted_at":"2025-12-29T11:36:43.340845-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"} {"id":"vsbeads-yjr","title":"Create browser-task sub-agent configuration","description":"Create `.claude/agents/browser-task.md` with:\n\n```markdown\n---\nname: browser-task\ndescription: Execute multi-step browser automation tasks in VS Code/code-server\ntools: mcp__chrome-devtools__*\nmodel: haiku\n---\n\nExecute browser automation tasks and return minimal summaries.\nDo not return full DOM snapshots. Summarize results concisely.\nIf errors occur, return specific error details.\n```\n\n**Questions to verify:**\n- Can we use glob `mcp__chrome-devtools__*` or must list each tool?\n- Should model be haiku (fast) or sonnet (better instruction following)?","status":"open","priority":1,"issue_type":"task","estimated_minutes":60,"created_at":"2025-11-28T21:52:14.912814-08:00","updated_at":"2025-12-04T11:58:45.105085-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-yjr","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:41.99215-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-zsz","title":"Kanban: Display bead ID on cards","description":"Add the bead ID to kanban board cards for quick reference.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: The bead ID (e.g., 'vsbeads-abc') which is useful for referencing issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nAdd bead ID display to the card, likely in `.kanban-card-meta` section or as a subtle ID above the title.\n\n## Design Considerations\n- ID should be visually subtle (not compete with title)\n- Consider monospace font for IDs\n- Match styling used in table view for consistency\n\n## Acceptance Criteria\n- [ ] Bead ID visible on each kanban card\n- [ ] Styling consistent with table view\n- [ ] ID is copy-able or at least readable\n\n## Open Questions\n- Full ID or short ID? (e.g., 'vsbeads-abc' vs 'abc')\n- Position: above title, below title, or in meta row?\n- Should ID be clickable (copy to clipboard)?","status":"in_progress","priority":2,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:47.766612-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:52:33.661106-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:15.898179-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.431165-08:00","created_by":"Jason Dillon"}]} +{"id":"vsbeads-zsz","title":"Kanban: Display bead ID on cards","description":"Add the bead ID to kanban board cards for quick reference.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: The bead ID (e.g., 'vsbeads-abc') which is useful for referencing issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nAdd bead ID display to the card, likely in `.kanban-card-meta` section or as a subtle ID above the title.\n\n## Design Considerations\n- ID should be visually subtle (not compete with title)\n- Consider monospace font for IDs\n- Match styling used in table view for consistency\n\n## Acceptance Criteria\n- [ ] Bead ID visible on each kanban card\n- [ ] Styling consistent with table view\n- [ ] ID is copy-able or at least readable\n\n## Open Questions\n- Full ID or short ID? (e.g., 'vsbeads-abc' vs 'abc')\n- Position: above title, below title, or in meta row?\n- Should ID be clickable (copy to clipboard)?","status":"blocked","priority":2,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:47.766612-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T04:49:05.488125-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:15.898179-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.431165-08:00","created_by":"Jason Dillon"}]} From 806336b376e7b6a7d1a4044db91a1534c34f3770 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 04:49:09 -0800 Subject: [PATCH 38/49] bd daemon sync: 2026-01-31 04:49:09 --- .beads/issues.jsonl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 1cb5e3b..788f613 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -93,4 +93,4 @@ {"id":"vsbeads-yhok","title":"Test Epic for hierarchy demo","status":"tombstone","priority":2,"issue_type":"epic","created_at":"2025-12-27T20:52:48.814844-08:00","updated_at":"2025-12-29T11:36:43.338738-08:00","deleted_at":"2025-12-29T11:36:43.338738-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"epic"} {"id":"vsbeads-yhok.2","title":"Child task of epic","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-27T20:53:03.840173-08:00","updated_at":"2025-12-29T11:36:43.340845-08:00","dependencies":[{"issue_id":"vsbeads-yhok.2","depends_on_id":"vsbeads-yhok","type":"parent-child","created_at":"2025-12-27T20:53:03.846123-08:00","created_by":"daemon"}],"deleted_at":"2025-12-29T11:36:43.340845-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"} {"id":"vsbeads-yjr","title":"Create browser-task sub-agent configuration","description":"Create `.claude/agents/browser-task.md` with:\n\n```markdown\n---\nname: browser-task\ndescription: Execute multi-step browser automation tasks in VS Code/code-server\ntools: mcp__chrome-devtools__*\nmodel: haiku\n---\n\nExecute browser automation tasks and return minimal summaries.\nDo not return full DOM snapshots. Summarize results concisely.\nIf errors occur, return specific error details.\n```\n\n**Questions to verify:**\n- Can we use glob `mcp__chrome-devtools__*` or must list each tool?\n- Should model be haiku (fast) or sonnet (better instruction following)?","status":"open","priority":1,"issue_type":"task","estimated_minutes":60,"created_at":"2025-11-28T21:52:14.912814-08:00","updated_at":"2025-12-04T11:58:45.105085-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-yjr","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:41.99215-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-zsz","title":"Kanban: Display bead ID on cards","description":"Add the bead ID to kanban board cards for quick reference.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: The bead ID (e.g., 'vsbeads-abc') which is useful for referencing issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nAdd bead ID display to the card, likely in `.kanban-card-meta` section or as a subtle ID above the title.\n\n## Design Considerations\n- ID should be visually subtle (not compete with title)\n- Consider monospace font for IDs\n- Match styling used in table view for consistency\n\n## Acceptance Criteria\n- [ ] Bead ID visible on each kanban card\n- [ ] Styling consistent with table view\n- [ ] ID is copy-able or at least readable\n\n## Open Questions\n- Full ID or short ID? (e.g., 'vsbeads-abc' vs 'abc')\n- Position: above title, below title, or in meta row?\n- Should ID be clickable (copy to clipboard)?","status":"blocked","priority":2,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:47.766612-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T04:49:05.488125-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:15.898179-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.431165-08:00","created_by":"Jason Dillon"}]} +{"id":"vsbeads-zsz","title":"Kanban: Display bead ID on cards","description":"Add the bead ID to kanban board cards for quick reference.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: The bead ID (e.g., 'vsbeads-abc') which is useful for referencing issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nAdd bead ID display to the card, likely in `.kanban-card-meta` section or as a subtle ID above the title.\n\n## Design Considerations\n- ID should be visually subtle (not compete with title)\n- Consider monospace font for IDs\n- Match styling used in table view for consistency\n\n## Acceptance Criteria\n- [ ] Bead ID visible on each kanban card\n- [ ] Styling consistent with table view\n- [ ] ID is copy-able or at least readable\n\n## Open Questions\n- Full ID or short ID? (e.g., 'vsbeads-abc' vs 'abc')\n- Position: above title, below title, or in meta row?\n- Should ID be clickable (copy to clipboard)?","status":"in_progress","priority":2,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:47.766612-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T04:49:08.948881-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:15.898179-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.431165-08:00","created_by":"Jason Dillon"}]} From 1e75382c22f3b7f22465dee4f89302c3651a4fb2 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 04:49:49 -0800 Subject: [PATCH 39/49] bd daemon sync: 2026-01-31 04:49:49 --- .beads/issues.jsonl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 788f613..3a3f154 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -50,7 +50,7 @@ {"id":"vsbeads-fpp1","title":"vscode-server skill: open browser in incognito mode","description":"**Goal:** Open code-server in incognito window to avoid cache issues during development.\n\n**What we tried:**\n- Using Chrome CLI directly: `/Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome --incognito \"http://127.0.0.1:{PORT}/\"`\n- This opens in existing browser session but chrome-devtools MCP can't see/select the new page\n\n**Problem:**\n- chrome-devtools MCP launches its own Chrome instance with `--remote-debugging-pipe`\n- Incognito windows opened via CLI go to the user's regular Chrome, not the MCP-controlled Chrome\n- MCP's `list_pages` gets stuck when previously selected page is closed\n\n**Possible solutions:**\n1. Find a way to open incognito in MCP-controlled Chrome (if possible via DevTools protocol)\n2. Configure MCP to launch Chrome with `--incognito` flag from the start\n3. Use `--disk-cache-size=0` or similar cache-busting flags instead of incognito\n4. Just rely on hard reload (`ignoreCache: true`) which we already do","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-25T17:30:36.272116-08:00","updated_at":"2025-12-25T17:30:36.272116-08:00","labels":["dx"]} {"id":"vsbeads-g09","title":"Setup planet57.com and verify publisher domains","description":"Set up planet57.com website and use it to verify publisher identity on both marketplaces.\n\nTasks:\n1. Set up planet57.com (landing page or redirect to GitHub)\n2. Add DNS TXT record for VS Code Marketplace verification\n3. Complete domain verification on VS Code Marketplace\n4. (Open VSX uses namespace ownership claim instead of domain verification - already filed)","notes":"VS Code Marketplace requires the domain to be live (responding at https://planet57.com) before showing the verify button. Need to set up the site first, then verify.\n\nOpen VSX uses namespace ownership claim (GitHub issue) instead of domain verification - already filed at https://github.com/EclipseFdn/open-vsx.org/issues/6642\n\n---\n\n**GitHub Pages setup plan:**\n1. Create repo `jdillon/planet57.github.io` (or use any repo with Pages enabled)\n2. Add a `CNAME` file with `planet57.com`\n3. Point DNS: `A` record to GitHub's IPs or `CNAME` to `jdillon.github.io`\n4. Enable HTTPS in repo settings\n5. Simple landing page or redirect to GitHub profile","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-10T22:19:40.356092-08:00","updated_at":"2025-12-10T22:24:48.97242-08:00","labels":["dx","release"]} {"id":"vsbeads-gr5","title":"Filter presets/favorites system for Issues panel","description":"Currently filtering requires manually adding multiple filters (e.g., Open + In Progress + Blocked to exclude Closed). Need a better UX for common filter combinations.","design":"**Options considered:**\n\n1. **Preset filters** - Built-in presets like \"Not Closed\", \"Active Work\"\n - Simple UX, covers common cases\n - Limited flexibility\n\n2. **Negated filters** - Click to toggle +/- on any filter\n - Full flexibility\n - More complex UX, needs visual indicator\n\n3. **Default filter** - Start with a filter applied (e.g., \"Not Closed\")\n - Good for most common use case\n - User can clear if needed\n\n**Recommended approach:**\nCombination of 1 + 3: Filter \"favorites\" dropdown that preconfigures filter sets.\n- Start with static built-in favorites: \"Not Closed\", \"Active\" (in_progress + blocked), \"All\"\n- Future: Allow saving custom filter sets as favorites\n- Default to \"Not Closed\" on load","status":"open","priority":3,"issue_type":"feature","estimated_minutes":300,"created_at":"2025-11-26T23:34:31.877133-08:00","updated_at":"2025-12-04T11:59:38.532327-08:00","labels":["ui"]} -{"id":"vsbeads-h5f","title":"Add contributed Kanban board view","description":"Integrate PR #56 from micahbrich - a kanban board view for the Issues panel. The contribution is solid but needs a few improvements before/after merge.\n\n## PR Details\n- **PR**: https://github.com/jdillon/vscode-beads/pull/56\n- **Author**: micahbrich (trusted - 16yr GitHub account)\n- **Security**: Reviewed and approved\n- **Files**: KanbanBoard.tsx (new), IssuesView.tsx, styles.css, README.md\n\n## Scope\n1. Merge the PR\n2. Add bead-id display to cards\n3. Add labels display to cards\n4. Replace text toggle with icons\n5. Make all columns collapsible (not just Closed)","status":"open","priority":2,"issue_type":"epic","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:42:29.839294-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:42:29.839294-08:00","labels":["ui"]} +{"id":"vsbeads-h5f","title":"Add contributed Kanban board view","description":"Integrate PR #56 from micahbrich - a kanban board view for the Issues panel. The contribution is solid but needs a few improvements before/after merge.\n\n## PR Details\n- **PR**: https://github.com/jdillon/vscode-beads/pull/56\n- **Author**: micahbrich (trusted - 16yr GitHub account)\n- **Security**: Reviewed and approved\n- **Files**: KanbanBoard.tsx (new), IssuesView.tsx, styles.css, README.md\n\n## Scope\n1. Merge the PR\n2. Add bead-id display to cards\n3. Add labels display to cards\n4. Replace text toggle with icons\n5. Make all columns collapsible (not just Closed)","status":"in_progress","priority":2,"issue_type":"epic","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:42:29.839294-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T04:49:48.578312-08:00","labels":["ui"]} {"id":"vsbeads-hgm","title":"Test sub-agent context isolation","description":"After creating browser-task agent, test that:\n\n1. MCP response bloat stays in sub-agent context\n2. Only summary returns to main agent\n3. Measure context savings vs direct MCP calls\n\n**Test workflow:**\n- Invoke browser-task to reload code-server window\n- Check main context size before/after\n- Compare to doing reload directly with MCP","status":"open","priority":1,"issue_type":"task","estimated_minutes":90,"created_at":"2025-11-28T21:52:30.146368-08:00","updated_at":"2025-12-04T11:58:43.57841-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-hgm","depends_on_id":"vsbeads-yjr","type":"blocks","created_at":"2025-11-28T21:52:30.148724-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-hgm","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:42.044495-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-hjx","title":"Filter toggle button feels broken when filters are active","description":"When the filter panel is open and filters are active (icon is green), clicking the filter toggle button doesn't do anything. This feels broken.\n\nPossible solutions:\n- Toggle could hide/show the panel without clearing filters\n- Some other UX pattern\n\nNeed to determine the right behavior.","status":"open","priority":4,"issue_type":"bug","estimated_minutes":90,"created_at":"2025-11-27T02:27:29.005135-08:00","updated_at":"2025-12-04T12:00:20.708765-08:00","labels":["ui"]} {"id":"vsbeads-i32l","title":"Make type sort order configurable","description":"Allow users to customize the display order of bead types. Could be a VS Code setting or .beads config.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-12-22T01:18:39.209631-08:00","updated_at":"2025-12-22T01:18:39.209631-08:00","labels":["config","ui"]} From 1bb4b1683d7d73005d7b391297fd94948420003b Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 04:52:32 -0800 Subject: [PATCH 40/49] bd daemon sync: 2026-01-31 04:52:32 --- .beads/issues.jsonl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 3a3f154..4434f6e 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -93,4 +93,4 @@ {"id":"vsbeads-yhok","title":"Test Epic for hierarchy demo","status":"tombstone","priority":2,"issue_type":"epic","created_at":"2025-12-27T20:52:48.814844-08:00","updated_at":"2025-12-29T11:36:43.338738-08:00","deleted_at":"2025-12-29T11:36:43.338738-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"epic"} {"id":"vsbeads-yhok.2","title":"Child task of epic","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-27T20:53:03.840173-08:00","updated_at":"2025-12-29T11:36:43.340845-08:00","dependencies":[{"issue_id":"vsbeads-yhok.2","depends_on_id":"vsbeads-yhok","type":"parent-child","created_at":"2025-12-27T20:53:03.846123-08:00","created_by":"daemon"}],"deleted_at":"2025-12-29T11:36:43.340845-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"} {"id":"vsbeads-yjr","title":"Create browser-task sub-agent configuration","description":"Create `.claude/agents/browser-task.md` with:\n\n```markdown\n---\nname: browser-task\ndescription: Execute multi-step browser automation tasks in VS Code/code-server\ntools: mcp__chrome-devtools__*\nmodel: haiku\n---\n\nExecute browser automation tasks and return minimal summaries.\nDo not return full DOM snapshots. Summarize results concisely.\nIf errors occur, return specific error details.\n```\n\n**Questions to verify:**\n- Can we use glob `mcp__chrome-devtools__*` or must list each tool?\n- Should model be haiku (fast) or sonnet (better instruction following)?","status":"open","priority":1,"issue_type":"task","estimated_minutes":60,"created_at":"2025-11-28T21:52:14.912814-08:00","updated_at":"2025-12-04T11:58:45.105085-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-yjr","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:41.99215-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-zsz","title":"Kanban: Display bead ID on cards","description":"Add the bead ID to kanban board cards for quick reference.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: The bead ID (e.g., 'vsbeads-abc') which is useful for referencing issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nAdd bead ID display to the card, likely in `.kanban-card-meta` section or as a subtle ID above the title.\n\n## Design Considerations\n- ID should be visually subtle (not compete with title)\n- Consider monospace font for IDs\n- Match styling used in table view for consistency\n\n## Acceptance Criteria\n- [ ] Bead ID visible on each kanban card\n- [ ] Styling consistent with table view\n- [ ] ID is copy-able or at least readable\n\n## Open Questions\n- Full ID or short ID? (e.g., 'vsbeads-abc' vs 'abc')\n- Position: above title, below title, or in meta row?\n- Should ID be clickable (copy to clipboard)?","status":"in_progress","priority":2,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:47.766612-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T04:49:08.948881-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:15.898179-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.431165-08:00","created_by":"Jason Dillon"}]} +{"id":"vsbeads-zsz","title":"Kanban: Display bead ID on cards","description":"Add the bead ID to kanban board cards for quick reference.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: The bead ID (e.g., 'vsbeads-abc') which is useful for referencing issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nAdd bead ID display to the card, likely in `.kanban-card-meta` section or as a subtle ID above the title.\n\n## Design Considerations\n- ID should be visually subtle (not compete with title)\n- Consider monospace font for IDs\n- Match styling used in table view for consistency\n\n## Acceptance Criteria\n- [ ] Bead ID visible on each kanban card\n- [ ] Styling consistent with table view\n- [ ] ID is copy-able or at least readable\n\n## Open Questions\n- Full ID or short ID? (e.g., 'vsbeads-abc' vs 'abc')\n- Position: above title, below title, or in meta row?\n- Should ID be clickable (copy to clipboard)?","status":"blocked","priority":2,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:47.766612-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T04:52:32.380093-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:15.898179-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.431165-08:00","created_by":"Jason Dillon"}]} From 2a7658a1420853dbc70250885919f8a8bfcfebba Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 04:52:37 -0800 Subject: [PATCH 41/49] bd daemon sync: 2026-01-31 04:52:37 --- .beads/issues.jsonl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 4434f6e..a0e9cdb 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -93,4 +93,4 @@ {"id":"vsbeads-yhok","title":"Test Epic for hierarchy demo","status":"tombstone","priority":2,"issue_type":"epic","created_at":"2025-12-27T20:52:48.814844-08:00","updated_at":"2025-12-29T11:36:43.338738-08:00","deleted_at":"2025-12-29T11:36:43.338738-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"epic"} {"id":"vsbeads-yhok.2","title":"Child task of epic","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-27T20:53:03.840173-08:00","updated_at":"2025-12-29T11:36:43.340845-08:00","dependencies":[{"issue_id":"vsbeads-yhok.2","depends_on_id":"vsbeads-yhok","type":"parent-child","created_at":"2025-12-27T20:53:03.846123-08:00","created_by":"daemon"}],"deleted_at":"2025-12-29T11:36:43.340845-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"} {"id":"vsbeads-yjr","title":"Create browser-task sub-agent configuration","description":"Create `.claude/agents/browser-task.md` with:\n\n```markdown\n---\nname: browser-task\ndescription: Execute multi-step browser automation tasks in VS Code/code-server\ntools: mcp__chrome-devtools__*\nmodel: haiku\n---\n\nExecute browser automation tasks and return minimal summaries.\nDo not return full DOM snapshots. Summarize results concisely.\nIf errors occur, return specific error details.\n```\n\n**Questions to verify:**\n- Can we use glob `mcp__chrome-devtools__*` or must list each tool?\n- Should model be haiku (fast) or sonnet (better instruction following)?","status":"open","priority":1,"issue_type":"task","estimated_minutes":60,"created_at":"2025-11-28T21:52:14.912814-08:00","updated_at":"2025-12-04T11:58:45.105085-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-yjr","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:41.99215-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-zsz","title":"Kanban: Display bead ID on cards","description":"Add the bead ID to kanban board cards for quick reference.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: The bead ID (e.g., 'vsbeads-abc') which is useful for referencing issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nAdd bead ID display to the card, likely in `.kanban-card-meta` section or as a subtle ID above the title.\n\n## Design Considerations\n- ID should be visually subtle (not compete with title)\n- Consider monospace font for IDs\n- Match styling used in table view for consistency\n\n## Acceptance Criteria\n- [ ] Bead ID visible on each kanban card\n- [ ] Styling consistent with table view\n- [ ] ID is copy-able or at least readable\n\n## Open Questions\n- Full ID or short ID? (e.g., 'vsbeads-abc' vs 'abc')\n- Position: above title, below title, or in meta row?\n- Should ID be clickable (copy to clipboard)?","status":"blocked","priority":2,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:47.766612-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T04:52:32.380093-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:15.898179-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.431165-08:00","created_by":"Jason Dillon"}]} +{"id":"vsbeads-zsz","title":"Kanban: Display bead ID on cards","description":"Add the bead ID to kanban board cards for quick reference.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: The bead ID (e.g., 'vsbeads-abc') which is useful for referencing issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nAdd bead ID display to the card, likely in `.kanban-card-meta` section or as a subtle ID above the title.\n\n## Design Considerations\n- ID should be visually subtle (not compete with title)\n- Consider monospace font for IDs\n- Match styling used in table view for consistency\n\n## Acceptance Criteria\n- [ ] Bead ID visible on each kanban card\n- [ ] Styling consistent with table view\n- [ ] ID is copy-able or at least readable\n\n## Open Questions\n- Full ID or short ID? (e.g., 'vsbeads-abc' vs 'abc')\n- Position: above title, below title, or in meta row?\n- Should ID be clickable (copy to clipboard)?","status":"blocked","priority":2,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:47.766612-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T04:52:37.408627-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:15.898179-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.431165-08:00","created_by":"Jason Dillon"}]} From acfc773df828ea8cf323a1202873c0db78e79afa Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 04:52:40 -0800 Subject: [PATCH 42/49] bd daemon sync: 2026-01-31 04:52:40 --- .beads/issues.jsonl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index a0e9cdb..0a2644c 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -93,4 +93,4 @@ {"id":"vsbeads-yhok","title":"Test Epic for hierarchy demo","status":"tombstone","priority":2,"issue_type":"epic","created_at":"2025-12-27T20:52:48.814844-08:00","updated_at":"2025-12-29T11:36:43.338738-08:00","deleted_at":"2025-12-29T11:36:43.338738-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"epic"} {"id":"vsbeads-yhok.2","title":"Child task of epic","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-27T20:53:03.840173-08:00","updated_at":"2025-12-29T11:36:43.340845-08:00","dependencies":[{"issue_id":"vsbeads-yhok.2","depends_on_id":"vsbeads-yhok","type":"parent-child","created_at":"2025-12-27T20:53:03.846123-08:00","created_by":"daemon"}],"deleted_at":"2025-12-29T11:36:43.340845-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"} {"id":"vsbeads-yjr","title":"Create browser-task sub-agent configuration","description":"Create `.claude/agents/browser-task.md` with:\n\n```markdown\n---\nname: browser-task\ndescription: Execute multi-step browser automation tasks in VS Code/code-server\ntools: mcp__chrome-devtools__*\nmodel: haiku\n---\n\nExecute browser automation tasks and return minimal summaries.\nDo not return full DOM snapshots. Summarize results concisely.\nIf errors occur, return specific error details.\n```\n\n**Questions to verify:**\n- Can we use glob `mcp__chrome-devtools__*` or must list each tool?\n- Should model be haiku (fast) or sonnet (better instruction following)?","status":"open","priority":1,"issue_type":"task","estimated_minutes":60,"created_at":"2025-11-28T21:52:14.912814-08:00","updated_at":"2025-12-04T11:58:45.105085-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-yjr","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:41.99215-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-zsz","title":"Kanban: Display bead ID on cards","description":"Add the bead ID to kanban board cards for quick reference.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: The bead ID (e.g., 'vsbeads-abc') which is useful for referencing issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nAdd bead ID display to the card, likely in `.kanban-card-meta` section or as a subtle ID above the title.\n\n## Design Considerations\n- ID should be visually subtle (not compete with title)\n- Consider monospace font for IDs\n- Match styling used in table view for consistency\n\n## Acceptance Criteria\n- [ ] Bead ID visible on each kanban card\n- [ ] Styling consistent with table view\n- [ ] ID is copy-able or at least readable\n\n## Open Questions\n- Full ID or short ID? (e.g., 'vsbeads-abc' vs 'abc')\n- Position: above title, below title, or in meta row?\n- Should ID be clickable (copy to clipboard)?","status":"blocked","priority":2,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:47.766612-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T04:52:37.408627-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:15.898179-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.431165-08:00","created_by":"Jason Dillon"}]} +{"id":"vsbeads-zsz","title":"Kanban: Display bead ID on cards","description":"Add the bead ID to kanban board cards for quick reference.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: The bead ID (e.g., 'vsbeads-abc') which is useful for referencing issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nAdd bead ID display to the card, likely in `.kanban-card-meta` section or as a subtle ID above the title.\n\n## Design Considerations\n- ID should be visually subtle (not compete with title)\n- Consider monospace font for IDs\n- Match styling used in table view for consistency\n\n## Acceptance Criteria\n- [ ] Bead ID visible on each kanban card\n- [ ] Styling consistent with table view\n- [ ] ID is copy-able or at least readable\n\n## Open Questions\n- Full ID or short ID? (e.g., 'vsbeads-abc' vs 'abc')\n- Position: above title, below title, or in meta row?\n- Should ID be clickable (copy to clipboard)?","status":"in_progress","priority":2,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:47.766612-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T04:52:39.784169-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:15.898179-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.431165-08:00","created_by":"Jason Dillon"}]} From d10d92a51eb31362c0078f57919adef2491b0694 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 04:53:29 -0800 Subject: [PATCH 43/49] bd daemon sync: 2026-01-31 04:53:29 --- .beads/issues.jsonl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 0a2644c..3c713f7 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -27,7 +27,7 @@ {"id":"vsbeads-7ue","title":"Show connection status indicator instead of full error view on disconnect","description":"When daemon disconnects, the entire panel shows an error view with Retry button. Better UX would be a status indicator (green→red) that shows connection state without replacing the panel content.","status":"open","priority":2,"issue_type":"feature","estimated_minutes":210,"created_at":"2025-11-29T15:04:49.017327-08:00","updated_at":"2025-12-04T11:58:48.492907-08:00","labels":["ui"]} {"id":"vsbeads-7xr","title":"Write E2E test: Issue selection shows details","description":"Test the core interaction flow: selecting an issue shows its details.\n\n**Test scenario:**\n1. Load Issues panel with seed data\n2. Click on an issue row\n3. Verify Details panel updates with selected issue\n4. Verify title, description, status display correctly\n\n**This proves:**\n- webview ↔ extension message passing works\n- Details panel receives selection events\n- UI updates reactively","acceptance_criteria":"- Test passes locally\n- Uses stable selectors (data-testid preferred)\n- Documents the interaction pattern","status":"open","priority":2,"issue_type":"task","estimated_minutes":60,"created_at":"2025-12-05T00:23:04.002552-08:00","updated_at":"2025-12-05T01:14:47.777369-08:00","labels":["testing"],"dependencies":[{"issue_id":"vsbeads-7xr","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.454114-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-7xr","depends_on_id":"vsbeads-w2x","type":"blocks","created_at":"2025-12-05T00:23:31.129272-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-804l","title":"Fix markdown list bullet rendering","description":"Markdown syntax is not rendering list bullets sanely in the webview","status":"open","priority":1,"issue_type":"task","created_at":"2026-01-11T00:46:08.429779-08:00","created_by":"jason","updated_at":"2026-01-11T00:46:08.429779-08:00","labels":["bug","ui"]} -{"id":"vsbeads-89u","title":"Kanban: Display labels on cards","description":"Add label badges to kanban board cards.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: Labels (e.g., 'ui', 'backend', 'bug') which help categorize issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nThe `LabelBadge` component already exists and is used in table view.\nImport and render `bead.labels` array using `LabelBadge`.\n\nExample from IssuesView.tsx:\n```tsx\nimport { LabelBadge } from \"../common/LabelBadge\";\n// ...\n{bead.labels?.map(label =\u003e \u003cLabelBadge key={label} label={label} /\u003e)}\n```\n\n## Design Considerations\n- Cards are narrower than table rows - labels may wrap\n- Consider limiting visible labels (e.g., show 2-3, then '+N more')\n- LabelBadge has size prop - use 'small' for compact display\n\n## Acceptance Criteria\n- [ ] Labels display on kanban cards\n- [ ] Uses existing LabelBadge component\n- [ ] Handles cards with many labels gracefully\n- [ ] Styling matches table view labels\n\n## Open Questions\n- Max labels to show before truncating?\n- Label position: in meta row or separate row?\n- Should labels wrap or scroll horizontally?","status":"in_progress","priority":2,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:46.377432-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:52:33.727872-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-89u","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:15.963853-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-89u","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.497035-08:00","created_by":"Jason Dillon"}]} +{"id":"vsbeads-89u","title":"Kanban: Display labels on cards","description":"Add label badges to kanban board cards.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: Labels (e.g., 'ui', 'backend', 'bug') which help categorize issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nThe `LabelBadge` component already exists and is used in table view.\nImport and render `bead.labels` array using `LabelBadge`.\n\nExample from IssuesView.tsx:\n```tsx\nimport { LabelBadge } from \"../common/LabelBadge\";\n// ...\n{bead.labels?.map(label =\u003e \u003cLabelBadge key={label} label={label} /\u003e)}\n```\n\n## Design Considerations\n- Cards are narrower than table rows - labels may wrap\n- Consider limiting visible labels (e.g., show 2-3, then '+N more')\n- LabelBadge has size prop - use 'small' for compact display\n\n## Acceptance Criteria\n- [ ] Labels display on kanban cards\n- [ ] Uses existing LabelBadge component\n- [ ] Handles cards with many labels gracefully\n- [ ] Styling matches table view labels\n\n## Open Questions\n- Max labels to show before truncating?\n- Label position: in meta row or separate row?\n- Should labels wrap or scroll horizontally?","status":"closed","priority":2,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:46.377432-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T04:53:29.149837-08:00","closed_at":"2026-01-31T04:53:29.149837-08:00","close_reason":"Implemented in feat/kanban-improvements branch","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-89u","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:15.963853-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-89u","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.497035-08:00","created_by":"Jason Dillon"}]} {"id":"vsbeads-8oc","title":"Add right-click context menu for type/status/priority in Issues list","description":"Add context menu actions to the Issues list so users can right-click on type/status/priority badges to change them inline.\n\nSimilar to the inline editing in Details view (vsbeads-fwp), but using right-click instead of click since the list rows already have click-to-select behavior.\n\n## Requirements\n- Right-click on type badge → dropdown menu to change type\n- Right-click on status badge → dropdown menu to change status \n- Right-click on priority badge → dropdown menu to change priority\n- Changes auto-save (no confirmation needed)\n- Use same ColoredSelect dropdown component from Details view\n\n## Notes\n- Click on row = select issue (existing behavior)\n- Right-click on badge = edit that field (new behavior)","status":"open","priority":3,"issue_type":"feature","estimated_minutes":210,"created_at":"2025-12-01T00:39:43.583441-08:00","updated_at":"2025-12-04T11:59:24.877438-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-8oc","depends_on_id":"vsbeads-wgr","type":"parent-child","created_at":"2025-12-17T16:53:56.326584-08:00","created_by":"daemon","metadata":"{}"}],"comments":[{"id":24,"issue_id":"vsbeads-8oc","author":"jason","text":"**Estimate: Medium (~1-2 hours)**\n\nWhat's needed:\n1. Add `onContextMenu` handlers to type/status/priority badge cells in IssuesView\n2. Render a positioned dropdown menu on right-click (similar to column menu)\n3. Wire up the change to call `onUpdateBead` (already exists but unused in IssuesView)\n4. Reuse `ColoredSelect` or create a context menu variant\n\nComplexity factors:\n- We already have dropdown/menu patterns (column menu, preset dropdown)\n- We already have `ColoredSelect` component from DetailsView\n- Main work is positioning the context menu at click coordinates\n- Need to handle click-outside dismiss (pattern already exists)\n\nThe patterns exist, it's mostly wiring them together in a new context.","created_at":"2025-12-02T00:41:30Z"}]} {"id":"vsbeads-90cp","title":"Standalone task to associate with epic","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-27T20:54:31.509608-08:00","updated_at":"2025-12-29T11:36:43.341811-08:00","dependencies":[{"issue_id":"vsbeads-90cp","depends_on_id":"vsbeads-yhok","type":"parent-child","created_at":"2025-12-27T20:54:36.25191-08:00","created_by":"daemon"}],"deleted_at":"2025-12-29T11:36:43.341811-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"} {"id":"vsbeads-9r1","title":"\"Active\" filter includes blocked issues - should it?","description":"## Problem\n\nThe \"Active\" filter currently includes issues with `status=blocked`. This pollutes the list with items that can't be worked on.\n\n## Intent of \"Active\"\n\n\"Active\" was created to fill the gap between:\n- `bd ready` = open + no blockers (things to pick up)\n- `bd list --status=in_progress` = things currently being worked\n\nNeither shows both. \"Active\" should be: **ready + in_progress** = everything I can touch today.\n\n## Current Behavior\n\n`bd list --status=active` returns:\n- `open` (all, not just unblocked)\n- `in_progress`\n- `blocked` ← shouldn't be here\n\n## Expected Behavior\n\n\"Active\" should return:\n- `open` with no blockers (i.e., ready)\n- `in_progress`\n\nExcludes:\n- `blocked` (stalled, can't work on)\n- `open` with unresolved blockers (also can't work on)\n\n## Fix\n\nChange \"Active\" filter logic to: `(status=open AND no_blockers) OR status=in_progress`","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-17T02:14:50.439131-08:00","updated_at":"2025-12-17T02:14:50.439131-08:00","labels":["filter","ux"]} @@ -37,7 +37,7 @@ {"id":"vsbeads-bcu","title":"Test bead for labels overflow","description":"Testing label display and overflow behaviordfsfs","status":"open","priority":3,"issue_type":"task","estimated_minutes":0,"created_at":"2025-12-01T15:32:16.718649-08:00","updated_at":"2025-12-04T11:59:22.270468-08:00","labels":["E","a","b","c","d"]} {"id":"vsbeads-btf","title":"Scroll to latest comment when adding a comment in Details view","description":"When adding a comment in the Details panel, the view should auto-scroll to show the newly added comment at the bottom. Initial implementation attempts didn't work due to webview scroll container complexity.","status":"open","priority":4,"issue_type":"feature","estimated_minutes":45,"created_at":"2025-11-27T20:45:35.746701-08:00","updated_at":"2025-12-04T12:00:18.508148-08:00","labels":["ui"],"comments":[{"id":23,"issue_id":"vsbeads-btf","author":"jason","text":"turns out this is kinda hard, or was for claude to get correct.","created_at":"2025-12-02T00:38:50Z"}]} {"id":"vsbeads-bxnb","title":"Research tree view / hierarchy display for issues list","description":"Explore options for optional tree/hierarchy view in issues list:\n\n**Inspiration**: IntelliJ IDEA project view has multiple view modes (flat list vs tree hierarchy)\n\n**Options to research**:\n1. Tree column in existing table (expandable rows)\n2. Separate tree view panel\n3. Toggle between list/tree modes\n4. TanStack Table tree data support\n\n**Questions**:\n- How to represent epic → task → subtask hierarchy?\n- How to handle dependencies vs parent-child?\n- What does TanStack Table support for tree data?\n- UX for expand/collapse in table vs dedicated tree view?","notes":"---\n2025-12-25: Draft PR #54 opened. Tree view basic functionality works but UI needs refinement - icons and visual hierarchy indicators need design review. TanStack Query added for data caching.","status":"blocked","priority":3,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-23T00:21:40.100896-08:00","updated_at":"2026-01-31T04:48:54.988516-08:00","labels":["research","ui"],"comments":[{"id":37,"issue_id":"vsbeads-bxnb","author":"jason","text":"Need to find some examples to show the agent what to build.","created_at":"2025-12-26T08:58:27Z"}]} -{"id":"vsbeads-cjh","title":"Kanban: Make all columns collapsible","description":"Allow collapsing any kanban column, not just the Closed column.\n\n## Context\nCurrent implementation only allows collapsing the Closed column:\n```tsx\nconst [closedExpanded, setClosedExpanded] = useState(false);\n// ...\nconst isCollapsed = status === \"closed\" \u0026\u0026 !closedExpanded;\n```\n\nUsers may want to collapse other columns (e.g., Open when focusing on in-progress work).\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nChange from single boolean to a Set tracking collapsed columns:\n```tsx\nconst [collapsedColumns, setCollapsedColumns] = useState\u003cSet\u003cBeadStatus\u003e\u003e(\n new Set([\"closed\"]) // Closed collapsed by default\n);\n\nconst toggleColumn = (status: BeadStatus) =\u003e {\n setCollapsedColumns(prev =\u003e {\n const next = new Set(prev);\n if (next.has(status)) next.delete(status);\n else next.add(status);\n return next;\n });\n};\n\nconst isCollapsed = collapsedColumns.has(status);\n```\n\n## Design Considerations\n- All column headers should be clickable (currently only Closed)\n- Add visual affordance (collapse/expand icon in header)\n- Persist collapsed state? (localStorage or just session)\n- Collapsed column should show count prominently\n\n## Acceptance Criteria\n- [ ] All 4 columns can be collapsed/expanded\n- [ ] Closed still collapsed by default\n- [ ] Click any column header to toggle\n- [ ] Visual indicator for collapsible headers\n- [ ] Collapsed columns show item count\n\n## Open Questions\n- Persist collapse state across sessions (localStorage)?\n- Add explicit collapse/expand icon or just clickable header?\n- Keyboard shortcut to collapse/expand?\n- Should collapsed columns have a minimum width or be truly minimal?","status":"in_progress","priority":3,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:48:08.114162-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:52:33.862703-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-cjh","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:16.09939-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-cjh","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.632969-08:00","created_by":"Jason Dillon"}]} +{"id":"vsbeads-cjh","title":"Kanban: Make all columns collapsible","description":"Allow collapsing any kanban column, not just the Closed column.\n\n## Context\nCurrent implementation only allows collapsing the Closed column:\n```tsx\nconst [closedExpanded, setClosedExpanded] = useState(false);\n// ...\nconst isCollapsed = status === \"closed\" \u0026\u0026 !closedExpanded;\n```\n\nUsers may want to collapse other columns (e.g., Open when focusing on in-progress work).\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nChange from single boolean to a Set tracking collapsed columns:\n```tsx\nconst [collapsedColumns, setCollapsedColumns] = useState\u003cSet\u003cBeadStatus\u003e\u003e(\n new Set([\"closed\"]) // Closed collapsed by default\n);\n\nconst toggleColumn = (status: BeadStatus) =\u003e {\n setCollapsedColumns(prev =\u003e {\n const next = new Set(prev);\n if (next.has(status)) next.delete(status);\n else next.add(status);\n return next;\n });\n};\n\nconst isCollapsed = collapsedColumns.has(status);\n```\n\n## Design Considerations\n- All column headers should be clickable (currently only Closed)\n- Add visual affordance (collapse/expand icon in header)\n- Persist collapsed state? (localStorage or just session)\n- Collapsed column should show count prominently\n\n## Acceptance Criteria\n- [ ] All 4 columns can be collapsed/expanded\n- [ ] Closed still collapsed by default\n- [ ] Click any column header to toggle\n- [ ] Visual indicator for collapsible headers\n- [ ] Collapsed columns show item count\n\n## Open Questions\n- Persist collapse state across sessions (localStorage)?\n- Add explicit collapse/expand icon or just clickable header?\n- Keyboard shortcut to collapse/expand?\n- Should collapsed columns have a minimum width or be truly minimal?","status":"closed","priority":3,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:48:08.114162-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T04:53:29.153421-08:00","closed_at":"2026-01-31T04:53:29.153421-08:00","close_reason":"Implemented in feat/kanban-improvements branch","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-cjh","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:16.09939-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-cjh","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.632969-08:00","created_by":"Jason Dillon"}]} {"id":"vsbeads-cqi","title":"Redesign UI: sidebar for navigation, editor panels for views","description":"Move Kanban, Dependency Graph, and Details to WebviewPanel (editor tabs). Keep project selector and issue list in sidebar.","status":"open","priority":2,"issue_type":"feature","estimated_minutes":960,"created_at":"2025-11-26T15:59:20.263974-08:00","updated_at":"2025-12-04T11:58:59.107775-08:00","labels":["ui"]} {"id":"vsbeads-dhe","title":"Set up GitHub Actions workflow for nightly E2E tests","description":"Create GitHub Actions workflow that runs integration tests on a schedule.\n\n**Requirements:**\n- Run nightly (not on every commit - too slow/resource intensive)\n- Manual trigger option (`workflow_dispatch`)\n- Use ubuntu-latest runner\n- Install code-server, bd CLI, Playwright browsers\n- Upload test artifacts on failure (screenshots, traces, HTML report)\n\n**Pattern:**\n```yaml\non:\n schedule:\n - cron: '0 6 * * *' # 6am UTC daily\n workflow_dispatch:\n```","acceptance_criteria":"- Workflow file in `.github/workflows/integration-tests.yml`\n- Manual trigger works from Actions tab\n- Artifacts available on failure\n- Sends notification on failure (optional/later)","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-05T00:23:04.64811-08:00","updated_at":"2025-12-05T01:14:48.401601-08:00","labels":["ci","testing"],"dependencies":[{"issue_id":"vsbeads-dhe","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.83836-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-dhe","depends_on_id":"vsbeads-w2x","type":"blocks","created_at":"2025-12-05T00:23:31.666861-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-drg","title":"Document branch naming convention in CLAUDE.md","description":"Add branch naming strategy to CLAUDE.md:\n\nFormat: `beads/\u003cbead-id\u003e-\u003cterse-description\u003e`\n\nExamples:\n- `beads/vsbeads-93b-release-workflow`\n- `beads/vsbeads-xyz-fix-daemon-polling`\n\nThis ties branches to tracked work and makes it easy to find related issues.","status":"open","priority":4,"issue_type":"task","estimated_minutes":30,"created_at":"2025-11-29T16:47:10.870444-08:00","updated_at":"2025-12-04T12:00:16.819609-08:00","labels":["dx"],"comments":[{"id":28,"issue_id":"vsbeads-drg","author":"jason","text":"this is good, but we often work on a few beads a time. Might want to noramlize some other branch name strategy instead.","created_at":"2025-12-06T20:31:29Z"}]} @@ -82,7 +82,7 @@ {"id":"vsbeads-uak","title":"Research: macOS window screenshot for full Chrome capture","description":"Browser MCP tools only capture page viewport, not full Chrome window (including DevTools).\n\nResearch how to capture full window via macOS:\n- `screencapture -l \u003cwindowid\u003e` requires finding window ID\n- AppleScript can list windows but may need permissions\n- Useful for showing agent what's visible in DevTools panel\n\nLow priority - programmatic console/network access works for most cases.","status":"open","priority":3,"issue_type":"task","estimated_minutes":90,"created_at":"2025-11-27T17:34:17.25294-08:00","updated_at":"2025-12-04T11:59:34.100523-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-uak","depends_on_id":"vsbeads-3cn","type":"parent-child","created_at":"2025-11-27T18:50:55.301246-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-un3l","title":"UI Improvements Sprint 2025-12-29","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-12-29T11:39:29.634057-08:00","created_by":"jason","updated_at":"2025-12-30T01:46:19.212774-08:00","closed_at":"2025-12-30T01:46:19.21278-08:00","labels":["ui"]} {"id":"vsbeads-ur9","title":"Set up Playwright with Bun and TypeScript","description":"Initialize Playwright in the project with proper TypeScript and Bun configuration.\n\n**Tasks:**\n- Install `@playwright/test` as dev dependency\n- Create `playwright.config.ts` with sensible defaults\n- Set up `testsuite/` directory structure\n- Add npm scripts: `test:integration`, `test:integration:headed`, `test:integration:ui`\n- Configure for Chromium-only (code-server target)\n- Document local test running workflow","acceptance_criteria":"- `bun run test:integration` runs successfully (even with empty test file)\n- TypeScript types work in test files\n- Config includes proper timeouts for code-server startup","status":"open","priority":2,"issue_type":"task","estimated_minutes":60,"created_at":"2025-12-05T00:23:00.768062-08:00","updated_at":"2025-12-05T01:14:41.119755-08:00","labels":["dx","testing"],"dependencies":[{"issue_id":"vsbeads-ur9","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.221581-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-uvh","title":"Kanban: Use icons for view toggle","description":"Replace 'Table' and 'Board' text buttons with icons to save toolbar space.\n\n## Context\nCurrent toggle in IssuesView.tsx uses text buttons:\n```tsx\n\u003cbutton\u003eTable\u003c/button\u003e\n\u003cbutton\u003eBoard\u003c/button\u003e\n```\n\nIcons would be more compact and match the filter button style.\n\n## Implementation\nFile: `src/webview/views/IssuesView.tsx`\nIcons: `src/webview/icons/`\n\nNeed two icons:\n- Table view: rows/list icon (e.g., fa-table-list or fa-bars)\n- Board view: grid/kanban icon (e.g., fa-grip or fa-columns)\n\nProject uses Font Awesome Free SVGs stored in `src/webview/icons/`.\n\n## Design Considerations\n- Match existing icon style (16x16, currentColor fill)\n- Icons should be recognizable for table vs board concept\n- Keep title attribute for accessibility\n- Consider toggle group styling (segmented control)\n\n## Acceptance Criteria\n- [ ] Text replaced with appropriate icons\n- [ ] Icons added to `src/webview/icons/`\n- [ ] Title tooltips preserved for accessibility\n- [ ] Active state clearly visible\n- [ ] Matches filter button styling\n\n## Open Questions\n- Which specific Font Awesome icons? (fa-list vs fa-table-list vs fa-bars?)\n- Segmented control style or separate icon buttons?\n- Add visual separator between filter and view toggle?","status":"in_progress","priority":3,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:51.094781-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T03:52:33.796462-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-uvh","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:16.032489-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-uvh","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.563973-08:00","created_by":"Jason Dillon"}]} +{"id":"vsbeads-uvh","title":"Kanban: Use icons for view toggle","description":"Replace 'Table' and 'Board' text buttons with icons to save toolbar space.\n\n## Context\nCurrent toggle in IssuesView.tsx uses text buttons:\n```tsx\n\u003cbutton\u003eTable\u003c/button\u003e\n\u003cbutton\u003eBoard\u003c/button\u003e\n```\n\nIcons would be more compact and match the filter button style.\n\n## Implementation\nFile: `src/webview/views/IssuesView.tsx`\nIcons: `src/webview/icons/`\n\nNeed two icons:\n- Table view: rows/list icon (e.g., fa-table-list or fa-bars)\n- Board view: grid/kanban icon (e.g., fa-grip or fa-columns)\n\nProject uses Font Awesome Free SVGs stored in `src/webview/icons/`.\n\n## Design Considerations\n- Match existing icon style (16x16, currentColor fill)\n- Icons should be recognizable for table vs board concept\n- Keep title attribute for accessibility\n- Consider toggle group styling (segmented control)\n\n## Acceptance Criteria\n- [ ] Text replaced with appropriate icons\n- [ ] Icons added to `src/webview/icons/`\n- [ ] Title tooltips preserved for accessibility\n- [ ] Active state clearly visible\n- [ ] Matches filter button styling\n\n## Open Questions\n- Which specific Font Awesome icons? (fa-list vs fa-table-list vs fa-bars?)\n- Segmented control style or separate icon buttons?\n- Add visual separator between filter and view toggle?","status":"closed","priority":3,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:51.094781-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T04:53:29.151754-08:00","closed_at":"2026-01-31T04:53:29.151754-08:00","close_reason":"Implemented in feat/kanban-improvements branch","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-uvh","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:16.032489-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-uvh","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.563973-08:00","created_by":"Jason Dillon"}]} {"id":"vsbeads-vp1","title":"Implement Kanban board as editor panel","description":"Reimplement Kanban board as an editor panel instead of sidebar webview. Sidebar is too narrow for a useful Kanban view.","design":"Use `vscode.window.createWebviewPanel()` to open in editor area.\n- Register command to open Kanban\n- Full-width columns for drag-and-drop\n- Cards show status, priority, assignee\n- Drag between columns to change status","status":"open","priority":3,"issue_type":"feature","estimated_minutes":600,"created_at":"2025-11-26T18:39:31.95544-08:00","updated_at":"2025-12-04T11:59:40.103462-08:00","labels":["ui"]} {"id":"vsbeads-w2x","title":"Write first E2E test: Issues panel loads and displays data","description":"Write the first real E2E test that validates the Issues panel works.\n\n**Test scenario:**\n1. Open code-server with test beads project\n2. Navigate to Beads sidebar\n3. Verify Issues panel webview loads\n4. Verify issues from seed data appear in table\n5. Verify status badges display correctly\n\n**This proves:**\n- End-to-end data flow works (bd CLI → backend → webview)\n- Webview helper utilities work\n- Test fixtures work together","acceptance_criteria":"- Test passes locally with `bun run test:integration`\n- Test is readable and documents the user flow\n- Test uses shared selectors (not fragile locators)","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-05T00:23:03.354187-08:00","updated_at":"2025-12-05T01:14:47.066522-08:00","labels":["testing"],"dependencies":[{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.404077-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-dxo","type":"blocks","created_at":"2025-12-05T00:23:30.127404-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-jfa","type":"blocks","created_at":"2025-12-05T00:23:30.189514-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-tom","type":"blocks","created_at":"2025-12-05T00:23:30.579435-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-w2x","depends_on_id":"vsbeads-eby","type":"blocks","created_at":"2025-12-05T00:23:32.194889-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-wgr","title":"UX polish phase 3: complex UI interactions","description":"Continuation of UX improvements from vsbeads-nin. Remaining work involves more complex UI changes:\n\n- Search/filter interaction improvements (vsbeads-57m)\n- Right-click context menus for inline editing (vsbeads-8oc) \n- Labels in dependency references (vsbeads-iur)\n- Label autocomplete with portal-based dropdown (vsbeads-p78, blocked)\n\nThese require more architectural consideration (portals, context menus, search UX design).","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-17T16:42:52.180108-08:00","updated_at":"2025-12-17T16:54:23.622708-08:00","labels":["ui"]} @@ -93,4 +93,4 @@ {"id":"vsbeads-yhok","title":"Test Epic for hierarchy demo","status":"tombstone","priority":2,"issue_type":"epic","created_at":"2025-12-27T20:52:48.814844-08:00","updated_at":"2025-12-29T11:36:43.338738-08:00","deleted_at":"2025-12-29T11:36:43.338738-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"epic"} {"id":"vsbeads-yhok.2","title":"Child task of epic","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-27T20:53:03.840173-08:00","updated_at":"2025-12-29T11:36:43.340845-08:00","dependencies":[{"issue_id":"vsbeads-yhok.2","depends_on_id":"vsbeads-yhok","type":"parent-child","created_at":"2025-12-27T20:53:03.846123-08:00","created_by":"daemon"}],"deleted_at":"2025-12-29T11:36:43.340845-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"} {"id":"vsbeads-yjr","title":"Create browser-task sub-agent configuration","description":"Create `.claude/agents/browser-task.md` with:\n\n```markdown\n---\nname: browser-task\ndescription: Execute multi-step browser automation tasks in VS Code/code-server\ntools: mcp__chrome-devtools__*\nmodel: haiku\n---\n\nExecute browser automation tasks and return minimal summaries.\nDo not return full DOM snapshots. Summarize results concisely.\nIf errors occur, return specific error details.\n```\n\n**Questions to verify:**\n- Can we use glob `mcp__chrome-devtools__*` or must list each tool?\n- Should model be haiku (fast) or sonnet (better instruction following)?","status":"open","priority":1,"issue_type":"task","estimated_minutes":60,"created_at":"2025-11-28T21:52:14.912814-08:00","updated_at":"2025-12-04T11:58:45.105085-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-yjr","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:41.99215-08:00","created_by":"daemon","metadata":"{}"}]} -{"id":"vsbeads-zsz","title":"Kanban: Display bead ID on cards","description":"Add the bead ID to kanban board cards for quick reference.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: The bead ID (e.g., 'vsbeads-abc') which is useful for referencing issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nAdd bead ID display to the card, likely in `.kanban-card-meta` section or as a subtle ID above the title.\n\n## Design Considerations\n- ID should be visually subtle (not compete with title)\n- Consider monospace font for IDs\n- Match styling used in table view for consistency\n\n## Acceptance Criteria\n- [ ] Bead ID visible on each kanban card\n- [ ] Styling consistent with table view\n- [ ] ID is copy-able or at least readable\n\n## Open Questions\n- Full ID or short ID? (e.g., 'vsbeads-abc' vs 'abc')\n- Position: above title, below title, or in meta row?\n- Should ID be clickable (copy to clipboard)?","status":"in_progress","priority":2,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:47.766612-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T04:52:39.784169-08:00","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:15.898179-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.431165-08:00","created_by":"Jason Dillon"}]} +{"id":"vsbeads-zsz","title":"Kanban: Display bead ID on cards","description":"Add the bead ID to kanban board cards for quick reference.\n\n## Context\nCurrently kanban cards show: title, type badge, priority badge, assignee.\nMissing: The bead ID (e.g., 'vsbeads-abc') which is useful for referencing issues.\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nAdd bead ID display to the card, likely in `.kanban-card-meta` section or as a subtle ID above the title.\n\n## Design Considerations\n- ID should be visually subtle (not compete with title)\n- Consider monospace font for IDs\n- Match styling used in table view for consistency\n\n## Acceptance Criteria\n- [ ] Bead ID visible on each kanban card\n- [ ] Styling consistent with table view\n- [ ] ID is copy-able or at least readable\n\n## Open Questions\n- Full ID or short ID? (e.g., 'vsbeads-abc' vs 'abc')\n- Position: above title, below title, or in meta row?\n- Should ID be clickable (copy to clipboard)?","status":"closed","priority":2,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:47:47.766612-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T04:53:29.147575-08:00","closed_at":"2026-01-31T04:53:29.147575-08:00","close_reason":"Implemented in feat/kanban-improvements branch","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:15.898179-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-zsz","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.431165-08:00","created_by":"Jason Dillon"}]} From d0462c68ea14fdc12a3396a8d1b7d4ba396afb6a Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 04:53:36 -0800 Subject: [PATCH 44/49] bd daemon sync: 2026-01-31 04:53:36 --- .beads/issues.jsonl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 3c713f7..be8ddbd 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -50,7 +50,7 @@ {"id":"vsbeads-fpp1","title":"vscode-server skill: open browser in incognito mode","description":"**Goal:** Open code-server in incognito window to avoid cache issues during development.\n\n**What we tried:**\n- Using Chrome CLI directly: `/Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome --incognito \"http://127.0.0.1:{PORT}/\"`\n- This opens in existing browser session but chrome-devtools MCP can't see/select the new page\n\n**Problem:**\n- chrome-devtools MCP launches its own Chrome instance with `--remote-debugging-pipe`\n- Incognito windows opened via CLI go to the user's regular Chrome, not the MCP-controlled Chrome\n- MCP's `list_pages` gets stuck when previously selected page is closed\n\n**Possible solutions:**\n1. Find a way to open incognito in MCP-controlled Chrome (if possible via DevTools protocol)\n2. Configure MCP to launch Chrome with `--incognito` flag from the start\n3. Use `--disk-cache-size=0` or similar cache-busting flags instead of incognito\n4. Just rely on hard reload (`ignoreCache: true`) which we already do","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-25T17:30:36.272116-08:00","updated_at":"2025-12-25T17:30:36.272116-08:00","labels":["dx"]} {"id":"vsbeads-g09","title":"Setup planet57.com and verify publisher domains","description":"Set up planet57.com website and use it to verify publisher identity on both marketplaces.\n\nTasks:\n1. Set up planet57.com (landing page or redirect to GitHub)\n2. Add DNS TXT record for VS Code Marketplace verification\n3. Complete domain verification on VS Code Marketplace\n4. (Open VSX uses namespace ownership claim instead of domain verification - already filed)","notes":"VS Code Marketplace requires the domain to be live (responding at https://planet57.com) before showing the verify button. Need to set up the site first, then verify.\n\nOpen VSX uses namespace ownership claim (GitHub issue) instead of domain verification - already filed at https://github.com/EclipseFdn/open-vsx.org/issues/6642\n\n---\n\n**GitHub Pages setup plan:**\n1. Create repo `jdillon/planet57.github.io` (or use any repo with Pages enabled)\n2. Add a `CNAME` file with `planet57.com`\n3. Point DNS: `A` record to GitHub's IPs or `CNAME` to `jdillon.github.io`\n4. Enable HTTPS in repo settings\n5. Simple landing page or redirect to GitHub profile","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-10T22:19:40.356092-08:00","updated_at":"2025-12-10T22:24:48.97242-08:00","labels":["dx","release"]} {"id":"vsbeads-gr5","title":"Filter presets/favorites system for Issues panel","description":"Currently filtering requires manually adding multiple filters (e.g., Open + In Progress + Blocked to exclude Closed). Need a better UX for common filter combinations.","design":"**Options considered:**\n\n1. **Preset filters** - Built-in presets like \"Not Closed\", \"Active Work\"\n - Simple UX, covers common cases\n - Limited flexibility\n\n2. **Negated filters** - Click to toggle +/- on any filter\n - Full flexibility\n - More complex UX, needs visual indicator\n\n3. **Default filter** - Start with a filter applied (e.g., \"Not Closed\")\n - Good for most common use case\n - User can clear if needed\n\n**Recommended approach:**\nCombination of 1 + 3: Filter \"favorites\" dropdown that preconfigures filter sets.\n- Start with static built-in favorites: \"Not Closed\", \"Active\" (in_progress + blocked), \"All\"\n- Future: Allow saving custom filter sets as favorites\n- Default to \"Not Closed\" on load","status":"open","priority":3,"issue_type":"feature","estimated_minutes":300,"created_at":"2025-11-26T23:34:31.877133-08:00","updated_at":"2025-12-04T11:59:38.532327-08:00","labels":["ui"]} -{"id":"vsbeads-h5f","title":"Add contributed Kanban board view","description":"Integrate PR #56 from micahbrich - a kanban board view for the Issues panel. The contribution is solid but needs a few improvements before/after merge.\n\n## PR Details\n- **PR**: https://github.com/jdillon/vscode-beads/pull/56\n- **Author**: micahbrich (trusted - 16yr GitHub account)\n- **Security**: Reviewed and approved\n- **Files**: KanbanBoard.tsx (new), IssuesView.tsx, styles.css, README.md\n\n## Scope\n1. Merge the PR\n2. Add bead-id display to cards\n3. Add labels display to cards\n4. Replace text toggle with icons\n5. Make all columns collapsible (not just Closed)","status":"in_progress","priority":2,"issue_type":"epic","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:42:29.839294-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T04:49:48.578312-08:00","labels":["ui"]} +{"id":"vsbeads-h5f","title":"Add contributed Kanban board view","description":"Integrate PR #56 from micahbrich - a kanban board view for the Issues panel. The contribution is solid but needs a few improvements before/after merge.\n\n## PR Details\n- **PR**: https://github.com/jdillon/vscode-beads/pull/56\n- **Author**: micahbrich (trusted - 16yr GitHub account)\n- **Security**: Reviewed and approved\n- **Files**: KanbanBoard.tsx (new), IssuesView.tsx, styles.css, README.md\n\n## Scope\n1. Merge the PR\n2. Add bead-id display to cards\n3. Add labels display to cards\n4. Replace text toggle with icons\n5. Make all columns collapsible (not just Closed)","status":"closed","priority":2,"issue_type":"epic","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:42:29.839294-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T04:53:36.186585-08:00","closed_at":"2026-01-31T04:53:36.186585-08:00","close_reason":"All improvements complete - PR #62","labels":["ui"]} {"id":"vsbeads-hgm","title":"Test sub-agent context isolation","description":"After creating browser-task agent, test that:\n\n1. MCP response bloat stays in sub-agent context\n2. Only summary returns to main agent\n3. Measure context savings vs direct MCP calls\n\n**Test workflow:**\n- Invoke browser-task to reload code-server window\n- Check main context size before/after\n- Compare to doing reload directly with MCP","status":"open","priority":1,"issue_type":"task","estimated_minutes":90,"created_at":"2025-11-28T21:52:30.146368-08:00","updated_at":"2025-12-04T11:58:43.57841-08:00","labels":["dx"],"dependencies":[{"issue_id":"vsbeads-hgm","depends_on_id":"vsbeads-yjr","type":"blocks","created_at":"2025-11-28T21:52:30.148724-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-hgm","depends_on_id":"vsbeads-5c0","type":"parent-child","created_at":"2025-11-28T21:52:42.044495-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-hjx","title":"Filter toggle button feels broken when filters are active","description":"When the filter panel is open and filters are active (icon is green), clicking the filter toggle button doesn't do anything. This feels broken.\n\nPossible solutions:\n- Toggle could hide/show the panel without clearing filters\n- Some other UX pattern\n\nNeed to determine the right behavior.","status":"open","priority":4,"issue_type":"bug","estimated_minutes":90,"created_at":"2025-11-27T02:27:29.005135-08:00","updated_at":"2025-12-04T12:00:20.708765-08:00","labels":["ui"]} {"id":"vsbeads-i32l","title":"Make type sort order configurable","description":"Allow users to customize the display order of bead types. Could be a VS Code setting or .beads config.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-12-22T01:18:39.209631-08:00","updated_at":"2025-12-22T01:18:39.209631-08:00","labels":["config","ui"]} From 2dd0ed229283e97de0b31b58a00a03ce8f21241f Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 05:00:52 -0800 Subject: [PATCH 45/49] bd daemon sync: 2026-01-31 05:00:52 --- .beads/issues.jsonl | 1 + 1 file changed, 1 insertion(+) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index be8ddbd..8120800 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -7,6 +7,7 @@ {"id":"vsbeads-2t7n","title":"Add BeadsStore with caching and on-demand loading","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-25T17:42:12.08201-08:00","updated_at":"2025-12-25T17:42:12.08201-08:00","labels":["architecture","backend"]} {"id":"vsbeads-3cn","title":"Agent-Driven VS Code Extension Development","description":"Enable Claude to effectively develop and debug VS Code extensions through browser automation and MCP integration.\n\nGoals:\n- Run VS Code in a browser (code-server or VS Code Web) with locally-built extensions\n- Control VS Code via MCP (Browser MCP, Chrome DevTools MCP, or Playwright)\n- Access debugging tools: screenshots, logs, inspector, terminal output\n- Enable human participation via VNC/X11 for guidance and review\n\nSuccess criteria:\n- Claude can start/stop VS Code, reload extensions, run commands\n- Claude can see UI state, logs, and errors programmatically\n- Jason can observe and guide Claude's actions in real-time","status":"open","priority":2,"issue_type":"epic","estimated_minutes":1800,"created_at":"2025-11-27T13:28:48.987495-08:00","updated_at":"2025-12-04T11:58:55.337807-08:00","labels":["dx"],"comments":[{"id":2,"issue_id":"vsbeads-3cn","author":"jason","text":"Context is a problem...","created_at":"2025-11-28T03:11:56Z"},{"id":21,"issue_id":"vsbeads-3cn","author":"jason","text":"a very big problem","created_at":"2025-11-28T04:53:09Z"},{"id":22,"issue_id":"vsbeads-3cn","author":"jason","text":"Initial design, we moved on to some real exploration on wonderland/platform to test with mobile-mcp. Will follow up here after more work is done there.","created_at":"2025-12-01T02:09:06Z"}]} {"id":"vsbeads-3ly3","title":"Hierarchical IDs create implicit parent-child not exposed by daemon API","notes":"## Summary\nHierarchical bead IDs (`\u003cparent-id\u003e.\u003cN\u003e`) create an **implicit** parent-child relationship based on ID naming convention. This implicit relationship:\n1. Is NOT exposed through the daemon API\n2. Blocks adding explicit `parent-child` dependencies\n3. Results in \"orphaned\" parent-child relationships invisible to vscode-beads\n\n## Reproduction\n```bash\n# Create parent\nbd create --title=\"Parent\" --type=epic\n# Output: vsbeads-515e\n\n# Create child with --parent (works correctly - adds BOTH hierarchical ID AND explicit dep)\nbd create --title=\"Child\" --type=task --parent=vsbeads-515e\n# Output: vsbeads-515e.1 (hierarchical ID)\n# Also adds explicit parent-child dependency record\n\n# Try to manually add parent-child dep (BLOCKED)\nbd dep add vsbeads-515e.1 vsbeads-515e --type=parent-child\n# Error: cannot add dependency: vsbeads-515e.1 is already a child of vsbeads-515e.\n# Children inherit dependency on parent completion via hierarchy.\n# Adding an explicit dependency would create a deadlock\n```\n\n## Root Cause\nThe `isChildOf()` function checks if an ID follows hierarchical pattern (`parent.N`):\n- If true, blocks adding explicit `parent-child` dependency (bd-nim5 fix)\n- But daemon API doesn't synthesize this implicit relationship in dependency queries\n- vscode-beads only sees explicit dependencies from daemon\n\n## Upstream Code References\n| File | Line | Function | Purpose |\n|------|------|----------|---------|\n| `cmd/bd/dep.go` | 30 | `isChildOf()` | Checks if ID follows hierarchical pattern |\n| `cmd/bd/dep.go` | 142-146 | dep add | Blocks child→parent deps with deadlock error |\n| `internal/rpc/server_labels_deps_comments.go` | 15-24 | `isChildOf()` | Same check in daemon RPC |\n| `internal/rpc/server_labels_deps_comments.go` | 35-42 | `DepAdd()` | Daemon-side blocking |\n| `internal/storage/sqlite/ids.go` | 44-64 | `IsHierarchicalID()` | Parses hierarchical IDs |\n| `internal/storage/sqlite/ids.go` | 70-91 | `ParseHierarchicalID()` | Extracts parent ID and child number |\n\n## Impact\n- Issues imported with hierarchical IDs (e.g., from Linear) may lack explicit dependencies\n- Parent-child relationships invisible in vscode-beads UI\n- Cannot manually fix by adding dependency (blocked)\n- Dependency display shows \"-\" for parent/children columns\n\n## Possible Solutions\n1. **Upstream fix**: Daemon API should synthesize implicit parent-child from hierarchical IDs\n2. **vscode-beads workaround**: Parse hierarchical IDs client-side to infer relationships\n3. **Data migration**: Script to add missing explicit deps for existing hierarchical IDs\n\n## Related\n- bd-nim5: Original fix that added the blocking behavior\n- GH#728: Child counter updates for explicit child IDs\n- `bd doctor --fix-child-parent`: Opt-in fix for child→parent deps","status":"closed","priority":0,"issue_type":"bug","assignee":"jdillon","created_at":"2025-12-27T20:50:53.075865-08:00","updated_at":"2025-12-29T11:36:24.070757-08:00","closed_at":"2025-12-29T11:36:24.070757-08:00","close_reason":"Testing shows mechanism works correctly. Will file new issue if reproduction steps found in other project.","labels":["backend","daemon","upstream"],"dependencies":[{"issue_id":"vsbeads-3ly3","depends_on_id":"vsbeads-yhok","type":"related","created_at":"2025-12-27T21:03:11.869224-08:00","created_by":"daemon"},{"issue_id":"vsbeads-3ly3","depends_on_id":"vsbeads-yhok.2","type":"related","created_at":"2025-12-27T21:03:11.911184-08:00","created_by":"daemon"},{"issue_id":"vsbeads-3ly3","depends_on_id":"vsbeads-90cp","type":"related","created_at":"2025-12-27T21:03:11.951047-08:00","created_by":"daemon"}],"comments":[{"id":38,"issue_id":"vsbeads-3ly3","author":"jason","text":"## Testing Findings (2025-12-27)\n\nTested both parent-child creation methods - both work correctly:\n\n### Test 1: Using --parent flag\n```bash\nbd create --title=\"Test Epic\" --type=epic # → vsbeads-yhok\nbd create --title=\"Child task\" --type=task --parent=vsbeads-yhok # → vsbeads-yhok.2\n```\n**Result**: ✓ Hierarchical ID created, explicit `parent-child` dep added, shows in daemon API\n\n### Test 2: Manual association\n```bash\nbd create --title=\"Standalone task\" --type=task # → vsbeads-90cp\nbd dep add vsbeads-90cp vsbeads-yhok --type=parent-child\n```\n**Result**: ✓ Regular ID, manual dep works, shows in daemon API\n\n### Revised Hypothesis\nThe bug may be triggered by:\n1. **Imported hierarchical IDs** without explicit dep records\n2. **Misuse of ID format** (manually setting `.N` suffix without using `--parent`)\n3. **Data migration edge cases** from older beads versions\n\nThe `isChildOf()` blocking logic assumes hierarchical IDs always have implicit relationships, but if the explicit dep record is missing, the relationship becomes invisible yet unfixable.\n\n### Test Issues\n- vsbeads-yhok (epic)\n- vsbeads-yhok.2 (child via --parent)\n- vsbeads-90cp (child via manual dep add)\n\nAll showing correct parent-child relationships in daemon API.","created_at":"2025-12-28T05:03:05Z"}]} +{"id":"vsbeads-3tx","title":"Fix pre-existing TypeScript errors","description":"Fixed 6 pre-existing TypeScript errors that were failing CI:\n\n1. DependencyGraph type not defined - added placeholder interface\n2. WebviewSettings missing userId in backend/types.ts - synced with webview types\n3. IssuesView filtering for non-existent 'unknown' status - removed dead code\n4. columnMenuRef typed as HTMLDivElement but used on \u003cth\u003e - fixed to HTMLTableCellElement\n5. WebviewMessage missing 'openFile' type - added to union\n6. BeadDetailsViewProvider updateArgs cast - fixed type assertion through unknown\n\nAll fixes applied in PR #62.","status":"open","priority":3,"issue_type":"bug","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T05:00:52.208165-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T05:00:52.208165-08:00","labels":["dx"]} {"id":"vsbeads-44c","title":"Add \"me\" option to assignee filter for saved filters support","description":"The assignee filter dropdown should include a special \"me\" option that resolves to the current user. This enables saved filters like \"not closed and assigned to me\" that work across different users/machines.","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-11T02:15:28.470012-08:00","updated_at":"2025-12-11T02:15:28.470012-08:00","labels":["filters","ui"],"dependencies":[{"issue_id":"vsbeads-44c","depends_on_id":"vsbeads-gr5","type":"related","created_at":"2025-12-11T02:15:47.790211-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-4e7","title":"E2E Testing Infrastructure with Playwright","description":"Establish automated end-to-end testing for the VS Code extension using Playwright with code-server.\n\n**Goal:** Prevent regressions when making UI/feature changes (like the TanStack Table migration).\n\n**Strategy:**\n- Playwright for browser automation (Microsoft-recommended, excellent iframe/webview support)\n- code-server as the test target (VS Code in browser)\n- Nightly runs on GitHub Actions (not blocking PRs, but catches regressions)\n- Manual trigger option for PR testing when needed\n\n**Success criteria:**\n- Tests cover core user flows: view issues, select issue, see details\n- Tests run reliably in CI (no flakiness)\n- Failures produce actionable artifacts (screenshots, traces)\n- Test suite runs in \u003c 5 minutes","status":"open","priority":1,"issue_type":"epic","created_at":"2025-12-05T00:22:22.058747-08:00","updated_at":"2025-12-10T00:18:15.564344-08:00","labels":["ci","dx","testing"]} {"id":"vsbeads-4f0","title":"Investigate i18n options for VS Code extension","description":"Research internationalization (i18n) options for VS Code extensions. Determine what's needed to support multiple languages for UI strings, commands, settings, etc.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-11T01:38:58.666866-08:00","updated_at":"2025-12-11T01:38:58.666866-08:00","labels":["dx","research"]} From 8bb7904dbfcef626e3b2b843e0a740749180b3ab Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 05:00:59 -0800 Subject: [PATCH 46/49] bd daemon sync: 2026-01-31 05:00:59 --- .beads/issues.jsonl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 8120800..a6e9118 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -7,7 +7,7 @@ {"id":"vsbeads-2t7n","title":"Add BeadsStore with caching and on-demand loading","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-25T17:42:12.08201-08:00","updated_at":"2025-12-25T17:42:12.08201-08:00","labels":["architecture","backend"]} {"id":"vsbeads-3cn","title":"Agent-Driven VS Code Extension Development","description":"Enable Claude to effectively develop and debug VS Code extensions through browser automation and MCP integration.\n\nGoals:\n- Run VS Code in a browser (code-server or VS Code Web) with locally-built extensions\n- Control VS Code via MCP (Browser MCP, Chrome DevTools MCP, or Playwright)\n- Access debugging tools: screenshots, logs, inspector, terminal output\n- Enable human participation via VNC/X11 for guidance and review\n\nSuccess criteria:\n- Claude can start/stop VS Code, reload extensions, run commands\n- Claude can see UI state, logs, and errors programmatically\n- Jason can observe and guide Claude's actions in real-time","status":"open","priority":2,"issue_type":"epic","estimated_minutes":1800,"created_at":"2025-11-27T13:28:48.987495-08:00","updated_at":"2025-12-04T11:58:55.337807-08:00","labels":["dx"],"comments":[{"id":2,"issue_id":"vsbeads-3cn","author":"jason","text":"Context is a problem...","created_at":"2025-11-28T03:11:56Z"},{"id":21,"issue_id":"vsbeads-3cn","author":"jason","text":"a very big problem","created_at":"2025-11-28T04:53:09Z"},{"id":22,"issue_id":"vsbeads-3cn","author":"jason","text":"Initial design, we moved on to some real exploration on wonderland/platform to test with mobile-mcp. Will follow up here after more work is done there.","created_at":"2025-12-01T02:09:06Z"}]} {"id":"vsbeads-3ly3","title":"Hierarchical IDs create implicit parent-child not exposed by daemon API","notes":"## Summary\nHierarchical bead IDs (`\u003cparent-id\u003e.\u003cN\u003e`) create an **implicit** parent-child relationship based on ID naming convention. This implicit relationship:\n1. Is NOT exposed through the daemon API\n2. Blocks adding explicit `parent-child` dependencies\n3. Results in \"orphaned\" parent-child relationships invisible to vscode-beads\n\n## Reproduction\n```bash\n# Create parent\nbd create --title=\"Parent\" --type=epic\n# Output: vsbeads-515e\n\n# Create child with --parent (works correctly - adds BOTH hierarchical ID AND explicit dep)\nbd create --title=\"Child\" --type=task --parent=vsbeads-515e\n# Output: vsbeads-515e.1 (hierarchical ID)\n# Also adds explicit parent-child dependency record\n\n# Try to manually add parent-child dep (BLOCKED)\nbd dep add vsbeads-515e.1 vsbeads-515e --type=parent-child\n# Error: cannot add dependency: vsbeads-515e.1 is already a child of vsbeads-515e.\n# Children inherit dependency on parent completion via hierarchy.\n# Adding an explicit dependency would create a deadlock\n```\n\n## Root Cause\nThe `isChildOf()` function checks if an ID follows hierarchical pattern (`parent.N`):\n- If true, blocks adding explicit `parent-child` dependency (bd-nim5 fix)\n- But daemon API doesn't synthesize this implicit relationship in dependency queries\n- vscode-beads only sees explicit dependencies from daemon\n\n## Upstream Code References\n| File | Line | Function | Purpose |\n|------|------|----------|---------|\n| `cmd/bd/dep.go` | 30 | `isChildOf()` | Checks if ID follows hierarchical pattern |\n| `cmd/bd/dep.go` | 142-146 | dep add | Blocks child→parent deps with deadlock error |\n| `internal/rpc/server_labels_deps_comments.go` | 15-24 | `isChildOf()` | Same check in daemon RPC |\n| `internal/rpc/server_labels_deps_comments.go` | 35-42 | `DepAdd()` | Daemon-side blocking |\n| `internal/storage/sqlite/ids.go` | 44-64 | `IsHierarchicalID()` | Parses hierarchical IDs |\n| `internal/storage/sqlite/ids.go` | 70-91 | `ParseHierarchicalID()` | Extracts parent ID and child number |\n\n## Impact\n- Issues imported with hierarchical IDs (e.g., from Linear) may lack explicit dependencies\n- Parent-child relationships invisible in vscode-beads UI\n- Cannot manually fix by adding dependency (blocked)\n- Dependency display shows \"-\" for parent/children columns\n\n## Possible Solutions\n1. **Upstream fix**: Daemon API should synthesize implicit parent-child from hierarchical IDs\n2. **vscode-beads workaround**: Parse hierarchical IDs client-side to infer relationships\n3. **Data migration**: Script to add missing explicit deps for existing hierarchical IDs\n\n## Related\n- bd-nim5: Original fix that added the blocking behavior\n- GH#728: Child counter updates for explicit child IDs\n- `bd doctor --fix-child-parent`: Opt-in fix for child→parent deps","status":"closed","priority":0,"issue_type":"bug","assignee":"jdillon","created_at":"2025-12-27T20:50:53.075865-08:00","updated_at":"2025-12-29T11:36:24.070757-08:00","closed_at":"2025-12-29T11:36:24.070757-08:00","close_reason":"Testing shows mechanism works correctly. Will file new issue if reproduction steps found in other project.","labels":["backend","daemon","upstream"],"dependencies":[{"issue_id":"vsbeads-3ly3","depends_on_id":"vsbeads-yhok","type":"related","created_at":"2025-12-27T21:03:11.869224-08:00","created_by":"daemon"},{"issue_id":"vsbeads-3ly3","depends_on_id":"vsbeads-yhok.2","type":"related","created_at":"2025-12-27T21:03:11.911184-08:00","created_by":"daemon"},{"issue_id":"vsbeads-3ly3","depends_on_id":"vsbeads-90cp","type":"related","created_at":"2025-12-27T21:03:11.951047-08:00","created_by":"daemon"}],"comments":[{"id":38,"issue_id":"vsbeads-3ly3","author":"jason","text":"## Testing Findings (2025-12-27)\n\nTested both parent-child creation methods - both work correctly:\n\n### Test 1: Using --parent flag\n```bash\nbd create --title=\"Test Epic\" --type=epic # → vsbeads-yhok\nbd create --title=\"Child task\" --type=task --parent=vsbeads-yhok # → vsbeads-yhok.2\n```\n**Result**: ✓ Hierarchical ID created, explicit `parent-child` dep added, shows in daemon API\n\n### Test 2: Manual association\n```bash\nbd create --title=\"Standalone task\" --type=task # → vsbeads-90cp\nbd dep add vsbeads-90cp vsbeads-yhok --type=parent-child\n```\n**Result**: ✓ Regular ID, manual dep works, shows in daemon API\n\n### Revised Hypothesis\nThe bug may be triggered by:\n1. **Imported hierarchical IDs** without explicit dep records\n2. **Misuse of ID format** (manually setting `.N` suffix without using `--parent`)\n3. **Data migration edge cases** from older beads versions\n\nThe `isChildOf()` blocking logic assumes hierarchical IDs always have implicit relationships, but if the explicit dep record is missing, the relationship becomes invisible yet unfixable.\n\n### Test Issues\n- vsbeads-yhok (epic)\n- vsbeads-yhok.2 (child via --parent)\n- vsbeads-90cp (child via manual dep add)\n\nAll showing correct parent-child relationships in daemon API.","created_at":"2025-12-28T05:03:05Z"}]} -{"id":"vsbeads-3tx","title":"Fix pre-existing TypeScript errors","description":"Fixed 6 pre-existing TypeScript errors that were failing CI:\n\n1. DependencyGraph type not defined - added placeholder interface\n2. WebviewSettings missing userId in backend/types.ts - synced with webview types\n3. IssuesView filtering for non-existent 'unknown' status - removed dead code\n4. columnMenuRef typed as HTMLDivElement but used on \u003cth\u003e - fixed to HTMLTableCellElement\n5. WebviewMessage missing 'openFile' type - added to union\n6. BeadDetailsViewProvider updateArgs cast - fixed type assertion through unknown\n\nAll fixes applied in PR #62.","status":"open","priority":3,"issue_type":"bug","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T05:00:52.208165-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T05:00:52.208165-08:00","labels":["dx"]} +{"id":"vsbeads-3tx","title":"Fix pre-existing TypeScript errors","description":"Fixed 6 pre-existing TypeScript errors that were failing CI:\n\n1. DependencyGraph type not defined - added placeholder interface\n2. WebviewSettings missing userId in backend/types.ts - synced with webview types\n3. IssuesView filtering for non-existent 'unknown' status - removed dead code\n4. columnMenuRef typed as HTMLDivElement but used on \u003cth\u003e - fixed to HTMLTableCellElement\n5. WebviewMessage missing 'openFile' type - added to union\n6. BeadDetailsViewProvider updateArgs cast - fixed type assertion through unknown\n\nAll fixes applied in PR #62.","status":"in_progress","priority":3,"issue_type":"bug","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T05:00:52.208165-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T05:00:59.290191-08:00","labels":["dx"]} {"id":"vsbeads-44c","title":"Add \"me\" option to assignee filter for saved filters support","description":"The assignee filter dropdown should include a special \"me\" option that resolves to the current user. This enables saved filters like \"not closed and assigned to me\" that work across different users/machines.","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-11T02:15:28.470012-08:00","updated_at":"2025-12-11T02:15:28.470012-08:00","labels":["filters","ui"],"dependencies":[{"issue_id":"vsbeads-44c","depends_on_id":"vsbeads-gr5","type":"related","created_at":"2025-12-11T02:15:47.790211-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-4e7","title":"E2E Testing Infrastructure with Playwright","description":"Establish automated end-to-end testing for the VS Code extension using Playwright with code-server.\n\n**Goal:** Prevent regressions when making UI/feature changes (like the TanStack Table migration).\n\n**Strategy:**\n- Playwright for browser automation (Microsoft-recommended, excellent iframe/webview support)\n- code-server as the test target (VS Code in browser)\n- Nightly runs on GitHub Actions (not blocking PRs, but catches regressions)\n- Manual trigger option for PR testing when needed\n\n**Success criteria:**\n- Tests cover core user flows: view issues, select issue, see details\n- Tests run reliably in CI (no flakiness)\n- Failures produce actionable artifacts (screenshots, traces)\n- Test suite runs in \u003c 5 minutes","status":"open","priority":1,"issue_type":"epic","created_at":"2025-12-05T00:22:22.058747-08:00","updated_at":"2025-12-10T00:18:15.564344-08:00","labels":["ci","dx","testing"]} {"id":"vsbeads-4f0","title":"Investigate i18n options for VS Code extension","description":"Research internationalization (i18n) options for VS Code extensions. Determine what's needed to support multiple languages for UI strings, commands, settings, etc.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-11T01:38:58.666866-08:00","updated_at":"2025-12-11T01:38:58.666866-08:00","labels":["dx","research"]} From e254b2814a58c1814044e685492cdde02d69af2b Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 05:01:18 -0800 Subject: [PATCH 47/49] bd daemon sync: 2026-01-31 05:01:18 --- .beads/issues.jsonl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index a6e9118..adcbea5 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -7,7 +7,7 @@ {"id":"vsbeads-2t7n","title":"Add BeadsStore with caching and on-demand loading","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-25T17:42:12.08201-08:00","updated_at":"2025-12-25T17:42:12.08201-08:00","labels":["architecture","backend"]} {"id":"vsbeads-3cn","title":"Agent-Driven VS Code Extension Development","description":"Enable Claude to effectively develop and debug VS Code extensions through browser automation and MCP integration.\n\nGoals:\n- Run VS Code in a browser (code-server or VS Code Web) with locally-built extensions\n- Control VS Code via MCP (Browser MCP, Chrome DevTools MCP, or Playwright)\n- Access debugging tools: screenshots, logs, inspector, terminal output\n- Enable human participation via VNC/X11 for guidance and review\n\nSuccess criteria:\n- Claude can start/stop VS Code, reload extensions, run commands\n- Claude can see UI state, logs, and errors programmatically\n- Jason can observe and guide Claude's actions in real-time","status":"open","priority":2,"issue_type":"epic","estimated_minutes":1800,"created_at":"2025-11-27T13:28:48.987495-08:00","updated_at":"2025-12-04T11:58:55.337807-08:00","labels":["dx"],"comments":[{"id":2,"issue_id":"vsbeads-3cn","author":"jason","text":"Context is a problem...","created_at":"2025-11-28T03:11:56Z"},{"id":21,"issue_id":"vsbeads-3cn","author":"jason","text":"a very big problem","created_at":"2025-11-28T04:53:09Z"},{"id":22,"issue_id":"vsbeads-3cn","author":"jason","text":"Initial design, we moved on to some real exploration on wonderland/platform to test with mobile-mcp. Will follow up here after more work is done there.","created_at":"2025-12-01T02:09:06Z"}]} {"id":"vsbeads-3ly3","title":"Hierarchical IDs create implicit parent-child not exposed by daemon API","notes":"## Summary\nHierarchical bead IDs (`\u003cparent-id\u003e.\u003cN\u003e`) create an **implicit** parent-child relationship based on ID naming convention. This implicit relationship:\n1. Is NOT exposed through the daemon API\n2. Blocks adding explicit `parent-child` dependencies\n3. Results in \"orphaned\" parent-child relationships invisible to vscode-beads\n\n## Reproduction\n```bash\n# Create parent\nbd create --title=\"Parent\" --type=epic\n# Output: vsbeads-515e\n\n# Create child with --parent (works correctly - adds BOTH hierarchical ID AND explicit dep)\nbd create --title=\"Child\" --type=task --parent=vsbeads-515e\n# Output: vsbeads-515e.1 (hierarchical ID)\n# Also adds explicit parent-child dependency record\n\n# Try to manually add parent-child dep (BLOCKED)\nbd dep add vsbeads-515e.1 vsbeads-515e --type=parent-child\n# Error: cannot add dependency: vsbeads-515e.1 is already a child of vsbeads-515e.\n# Children inherit dependency on parent completion via hierarchy.\n# Adding an explicit dependency would create a deadlock\n```\n\n## Root Cause\nThe `isChildOf()` function checks if an ID follows hierarchical pattern (`parent.N`):\n- If true, blocks adding explicit `parent-child` dependency (bd-nim5 fix)\n- But daemon API doesn't synthesize this implicit relationship in dependency queries\n- vscode-beads only sees explicit dependencies from daemon\n\n## Upstream Code References\n| File | Line | Function | Purpose |\n|------|------|----------|---------|\n| `cmd/bd/dep.go` | 30 | `isChildOf()` | Checks if ID follows hierarchical pattern |\n| `cmd/bd/dep.go` | 142-146 | dep add | Blocks child→parent deps with deadlock error |\n| `internal/rpc/server_labels_deps_comments.go` | 15-24 | `isChildOf()` | Same check in daemon RPC |\n| `internal/rpc/server_labels_deps_comments.go` | 35-42 | `DepAdd()` | Daemon-side blocking |\n| `internal/storage/sqlite/ids.go` | 44-64 | `IsHierarchicalID()` | Parses hierarchical IDs |\n| `internal/storage/sqlite/ids.go` | 70-91 | `ParseHierarchicalID()` | Extracts parent ID and child number |\n\n## Impact\n- Issues imported with hierarchical IDs (e.g., from Linear) may lack explicit dependencies\n- Parent-child relationships invisible in vscode-beads UI\n- Cannot manually fix by adding dependency (blocked)\n- Dependency display shows \"-\" for parent/children columns\n\n## Possible Solutions\n1. **Upstream fix**: Daemon API should synthesize implicit parent-child from hierarchical IDs\n2. **vscode-beads workaround**: Parse hierarchical IDs client-side to infer relationships\n3. **Data migration**: Script to add missing explicit deps for existing hierarchical IDs\n\n## Related\n- bd-nim5: Original fix that added the blocking behavior\n- GH#728: Child counter updates for explicit child IDs\n- `bd doctor --fix-child-parent`: Opt-in fix for child→parent deps","status":"closed","priority":0,"issue_type":"bug","assignee":"jdillon","created_at":"2025-12-27T20:50:53.075865-08:00","updated_at":"2025-12-29T11:36:24.070757-08:00","closed_at":"2025-12-29T11:36:24.070757-08:00","close_reason":"Testing shows mechanism works correctly. Will file new issue if reproduction steps found in other project.","labels":["backend","daemon","upstream"],"dependencies":[{"issue_id":"vsbeads-3ly3","depends_on_id":"vsbeads-yhok","type":"related","created_at":"2025-12-27T21:03:11.869224-08:00","created_by":"daemon"},{"issue_id":"vsbeads-3ly3","depends_on_id":"vsbeads-yhok.2","type":"related","created_at":"2025-12-27T21:03:11.911184-08:00","created_by":"daemon"},{"issue_id":"vsbeads-3ly3","depends_on_id":"vsbeads-90cp","type":"related","created_at":"2025-12-27T21:03:11.951047-08:00","created_by":"daemon"}],"comments":[{"id":38,"issue_id":"vsbeads-3ly3","author":"jason","text":"## Testing Findings (2025-12-27)\n\nTested both parent-child creation methods - both work correctly:\n\n### Test 1: Using --parent flag\n```bash\nbd create --title=\"Test Epic\" --type=epic # → vsbeads-yhok\nbd create --title=\"Child task\" --type=task --parent=vsbeads-yhok # → vsbeads-yhok.2\n```\n**Result**: ✓ Hierarchical ID created, explicit `parent-child` dep added, shows in daemon API\n\n### Test 2: Manual association\n```bash\nbd create --title=\"Standalone task\" --type=task # → vsbeads-90cp\nbd dep add vsbeads-90cp vsbeads-yhok --type=parent-child\n```\n**Result**: ✓ Regular ID, manual dep works, shows in daemon API\n\n### Revised Hypothesis\nThe bug may be triggered by:\n1. **Imported hierarchical IDs** without explicit dep records\n2. **Misuse of ID format** (manually setting `.N` suffix without using `--parent`)\n3. **Data migration edge cases** from older beads versions\n\nThe `isChildOf()` blocking logic assumes hierarchical IDs always have implicit relationships, but if the explicit dep record is missing, the relationship becomes invisible yet unfixable.\n\n### Test Issues\n- vsbeads-yhok (epic)\n- vsbeads-yhok.2 (child via --parent)\n- vsbeads-90cp (child via manual dep add)\n\nAll showing correct parent-child relationships in daemon API.","created_at":"2025-12-28T05:03:05Z"}]} -{"id":"vsbeads-3tx","title":"Fix pre-existing TypeScript errors","description":"Fixed 6 pre-existing TypeScript errors that were failing CI:\n\n1. DependencyGraph type not defined - added placeholder interface\n2. WebviewSettings missing userId in backend/types.ts - synced with webview types\n3. IssuesView filtering for non-existent 'unknown' status - removed dead code\n4. columnMenuRef typed as HTMLDivElement but used on \u003cth\u003e - fixed to HTMLTableCellElement\n5. WebviewMessage missing 'openFile' type - added to union\n6. BeadDetailsViewProvider updateArgs cast - fixed type assertion through unknown\n\nAll fixes applied in PR #62.","status":"in_progress","priority":3,"issue_type":"bug","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T05:00:52.208165-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T05:00:59.290191-08:00","labels":["dx"]} +{"id":"vsbeads-3tx","title":"Fix pre-existing TypeScript errors","description":"Fixed 6 pre-existing TypeScript errors that were failing CI:\n\n1. DependencyGraph type not defined - added placeholder interface\n2. WebviewSettings missing userId in backend/types.ts - synced with webview types\n3. IssuesView filtering for non-existent 'unknown' status - removed dead code\n4. columnMenuRef typed as HTMLDivElement but used on \u003cth\u003e - fixed to HTMLTableCellElement\n5. WebviewMessage missing 'openFile' type - added to union\n6. BeadDetailsViewProvider updateArgs cast - fixed type assertion through unknown\n\nAll fixes applied in PR #62.","status":"closed","priority":3,"issue_type":"bug","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T05:00:52.208165-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T05:01:18.364355-08:00","closed_at":"2026-01-31T05:01:18.364355-08:00","close_reason":"Fixed in feat/kanban-improvements branch, commit eb7df5d","labels":["dx"]} {"id":"vsbeads-44c","title":"Add \"me\" option to assignee filter for saved filters support","description":"The assignee filter dropdown should include a special \"me\" option that resolves to the current user. This enables saved filters like \"not closed and assigned to me\" that work across different users/machines.","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-11T02:15:28.470012-08:00","updated_at":"2025-12-11T02:15:28.470012-08:00","labels":["filters","ui"],"dependencies":[{"issue_id":"vsbeads-44c","depends_on_id":"vsbeads-gr5","type":"related","created_at":"2025-12-11T02:15:47.790211-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"vsbeads-4e7","title":"E2E Testing Infrastructure with Playwright","description":"Establish automated end-to-end testing for the VS Code extension using Playwright with code-server.\n\n**Goal:** Prevent regressions when making UI/feature changes (like the TanStack Table migration).\n\n**Strategy:**\n- Playwright for browser automation (Microsoft-recommended, excellent iframe/webview support)\n- code-server as the test target (VS Code in browser)\n- Nightly runs on GitHub Actions (not blocking PRs, but catches regressions)\n- Manual trigger option for PR testing when needed\n\n**Success criteria:**\n- Tests cover core user flows: view issues, select issue, see details\n- Tests run reliably in CI (no flakiness)\n- Failures produce actionable artifacts (screenshots, traces)\n- Test suite runs in \u003c 5 minutes","status":"open","priority":1,"issue_type":"epic","created_at":"2025-12-05T00:22:22.058747-08:00","updated_at":"2025-12-10T00:18:15.564344-08:00","labels":["ci","dx","testing"]} {"id":"vsbeads-4f0","title":"Investigate i18n options for VS Code extension","description":"Research internationalization (i18n) options for VS Code extensions. Determine what's needed to support multiple languages for UI strings, commands, settings, etc.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-11T01:38:58.666866-08:00","updated_at":"2025-12-11T01:38:58.666866-08:00","labels":["dx","research"]} From 12994ee16e92205b097a700ab93bf8f208196807 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 05:01:58 -0800 Subject: [PATCH 48/49] bd daemon sync: 2026-01-31 05:01:58 --- .beads/issues.jsonl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index adcbea5..b7dac10 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -37,7 +37,7 @@ {"id":"vsbeads-ba5","title":"Extension should auto-start daemon when not running","description":"Extension failed to connect with error: \"Socket error: connect ENOENT /Users/jason/ws/jdillon/vscode-beads/.beads/bd.sock\"\n\nThe daemon wasn't running and the extension didn't auto-start it. Need to investigate why the auto-start mechanism failed.","design":"## Investigation Areas\n\n1. **Why didn't auto-start work?**\n - Check if startDaemon is being called on connection failure\n - Verify the retry/backoff logic in BeadsBackend\n - Check if there's a race condition or timeout issue\n\n2. **Potential improvements**\n - Add daemon status indicator to UI (statusbar or panel)\n - Add \"Restart Daemon\" command to command palette\n - Show daemon connection status per-project in multi-root workspaces\n - Better error messaging when daemon fails to start\n\n3. **Diagnostics needed**\n - View current daemon connections across all projects\n - Force restart capability\n - Daemon health/metrics visibility in extension","status":"open","priority":3,"issue_type":"bug","estimated_minutes":180,"created_at":"2025-11-29T02:34:16.15086-08:00","updated_at":"2025-12-04T11:59:29.224036-08:00","labels":["daemon"]} {"id":"vsbeads-bcu","title":"Test bead for labels overflow","description":"Testing label display and overflow behaviordfsfs","status":"open","priority":3,"issue_type":"task","estimated_minutes":0,"created_at":"2025-12-01T15:32:16.718649-08:00","updated_at":"2025-12-04T11:59:22.270468-08:00","labels":["E","a","b","c","d"]} {"id":"vsbeads-btf","title":"Scroll to latest comment when adding a comment in Details view","description":"When adding a comment in the Details panel, the view should auto-scroll to show the newly added comment at the bottom. Initial implementation attempts didn't work due to webview scroll container complexity.","status":"open","priority":4,"issue_type":"feature","estimated_minutes":45,"created_at":"2025-11-27T20:45:35.746701-08:00","updated_at":"2025-12-04T12:00:18.508148-08:00","labels":["ui"],"comments":[{"id":23,"issue_id":"vsbeads-btf","author":"jason","text":"turns out this is kinda hard, or was for claude to get correct.","created_at":"2025-12-02T00:38:50Z"}]} -{"id":"vsbeads-bxnb","title":"Research tree view / hierarchy display for issues list","description":"Explore options for optional tree/hierarchy view in issues list:\n\n**Inspiration**: IntelliJ IDEA project view has multiple view modes (flat list vs tree hierarchy)\n\n**Options to research**:\n1. Tree column in existing table (expandable rows)\n2. Separate tree view panel\n3. Toggle between list/tree modes\n4. TanStack Table tree data support\n\n**Questions**:\n- How to represent epic → task → subtask hierarchy?\n- How to handle dependencies vs parent-child?\n- What does TanStack Table support for tree data?\n- UX for expand/collapse in table vs dedicated tree view?","notes":"---\n2025-12-25: Draft PR #54 opened. Tree view basic functionality works but UI needs refinement - icons and visual hierarchy indicators need design review. TanStack Query added for data caching.","status":"blocked","priority":3,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-23T00:21:40.100896-08:00","updated_at":"2026-01-31T04:48:54.988516-08:00","labels":["research","ui"],"comments":[{"id":37,"issue_id":"vsbeads-bxnb","author":"jason","text":"Need to find some examples to show the agent what to build.","created_at":"2025-12-26T08:58:27Z"}]} +{"id":"vsbeads-bxnb","title":"Research tree view / hierarchy display for issues list","description":"Explore options for optional tree/hierarchy view in issues list:\n\n**Inspiration**: IntelliJ IDEA project view has multiple view modes (flat list vs tree hierarchy)\n\n**Options to research**:\n1. Tree column in existing table (expandable rows)\n2. Separate tree view panel\n3. Toggle between list/tree modes\n4. TanStack Table tree data support\n\n**Questions**:\n- How to represent epic → task → subtask hierarchy?\n- How to handle dependencies vs parent-child?\n- What does TanStack Table support for tree data?\n- UX for expand/collapse in table vs dedicated tree view?","notes":"---\n2025-12-25: Draft PR #54 opened. Tree view basic functionality works but UI needs refinement - icons and visual hierarchy indicators need design review. TanStack Query added for data caching.","status":"in_progress","priority":3,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-23T00:21:40.100896-08:00","updated_at":"2026-01-31T05:01:58.341864-08:00","labels":["research","ui"],"comments":[{"id":37,"issue_id":"vsbeads-bxnb","author":"jason","text":"Need to find some examples to show the agent what to build.","created_at":"2025-12-26T08:58:27Z"}]} {"id":"vsbeads-cjh","title":"Kanban: Make all columns collapsible","description":"Allow collapsing any kanban column, not just the Closed column.\n\n## Context\nCurrent implementation only allows collapsing the Closed column:\n```tsx\nconst [closedExpanded, setClosedExpanded] = useState(false);\n// ...\nconst isCollapsed = status === \"closed\" \u0026\u0026 !closedExpanded;\n```\n\nUsers may want to collapse other columns (e.g., Open when focusing on in-progress work).\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nChange from single boolean to a Set tracking collapsed columns:\n```tsx\nconst [collapsedColumns, setCollapsedColumns] = useState\u003cSet\u003cBeadStatus\u003e\u003e(\n new Set([\"closed\"]) // Closed collapsed by default\n);\n\nconst toggleColumn = (status: BeadStatus) =\u003e {\n setCollapsedColumns(prev =\u003e {\n const next = new Set(prev);\n if (next.has(status)) next.delete(status);\n else next.add(status);\n return next;\n });\n};\n\nconst isCollapsed = collapsedColumns.has(status);\n```\n\n## Design Considerations\n- All column headers should be clickable (currently only Closed)\n- Add visual affordance (collapse/expand icon in header)\n- Persist collapsed state? (localStorage or just session)\n- Collapsed column should show count prominently\n\n## Acceptance Criteria\n- [ ] All 4 columns can be collapsed/expanded\n- [ ] Closed still collapsed by default\n- [ ] Click any column header to toggle\n- [ ] Visual indicator for collapsible headers\n- [ ] Collapsed columns show item count\n\n## Open Questions\n- Persist collapse state across sessions (localStorage)?\n- Add explicit collapse/expand icon or just clickable header?\n- Keyboard shortcut to collapse/expand?\n- Should collapsed columns have a minimum width or be truly minimal?","status":"closed","priority":3,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:48:08.114162-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T04:53:29.153421-08:00","closed_at":"2026-01-31T04:53:29.153421-08:00","close_reason":"Implemented in feat/kanban-improvements branch","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-cjh","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:16.09939-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-cjh","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.632969-08:00","created_by":"Jason Dillon"}]} {"id":"vsbeads-cqi","title":"Redesign UI: sidebar for navigation, editor panels for views","description":"Move Kanban, Dependency Graph, and Details to WebviewPanel (editor tabs). Keep project selector and issue list in sidebar.","status":"open","priority":2,"issue_type":"feature","estimated_minutes":960,"created_at":"2025-11-26T15:59:20.263974-08:00","updated_at":"2025-12-04T11:58:59.107775-08:00","labels":["ui"]} {"id":"vsbeads-dhe","title":"Set up GitHub Actions workflow for nightly E2E tests","description":"Create GitHub Actions workflow that runs integration tests on a schedule.\n\n**Requirements:**\n- Run nightly (not on every commit - too slow/resource intensive)\n- Manual trigger option (`workflow_dispatch`)\n- Use ubuntu-latest runner\n- Install code-server, bd CLI, Playwright browsers\n- Upload test artifacts on failure (screenshots, traces, HTML report)\n\n**Pattern:**\n```yaml\non:\n schedule:\n - cron: '0 6 * * *' # 6am UTC daily\n workflow_dispatch:\n```","acceptance_criteria":"- Workflow file in `.github/workflows/integration-tests.yml`\n- Manual trigger works from Actions tab\n- Artifacts available on failure\n- Sends notification on failure (optional/later)","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-05T00:23:04.64811-08:00","updated_at":"2025-12-05T01:14:48.401601-08:00","labels":["ci","testing"],"dependencies":[{"issue_id":"vsbeads-dhe","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.83836-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-dhe","depends_on_id":"vsbeads-w2x","type":"blocks","created_at":"2025-12-05T00:23:31.666861-08:00","created_by":"daemon","metadata":"{}"}]} From 52c302bb5ad95e58b5a0aa5226e5e5543ad3f155 Mon Sep 17 00:00:00 2001 From: Jason Dillon Date: Sat, 31 Jan 2026 05:02:02 -0800 Subject: [PATCH 49/49] bd daemon sync: 2026-01-31 05:02:02 --- .beads/issues.jsonl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index b7dac10..ff08444 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -37,7 +37,7 @@ {"id":"vsbeads-ba5","title":"Extension should auto-start daemon when not running","description":"Extension failed to connect with error: \"Socket error: connect ENOENT /Users/jason/ws/jdillon/vscode-beads/.beads/bd.sock\"\n\nThe daemon wasn't running and the extension didn't auto-start it. Need to investigate why the auto-start mechanism failed.","design":"## Investigation Areas\n\n1. **Why didn't auto-start work?**\n - Check if startDaemon is being called on connection failure\n - Verify the retry/backoff logic in BeadsBackend\n - Check if there's a race condition or timeout issue\n\n2. **Potential improvements**\n - Add daemon status indicator to UI (statusbar or panel)\n - Add \"Restart Daemon\" command to command palette\n - Show daemon connection status per-project in multi-root workspaces\n - Better error messaging when daemon fails to start\n\n3. **Diagnostics needed**\n - View current daemon connections across all projects\n - Force restart capability\n - Daemon health/metrics visibility in extension","status":"open","priority":3,"issue_type":"bug","estimated_minutes":180,"created_at":"2025-11-29T02:34:16.15086-08:00","updated_at":"2025-12-04T11:59:29.224036-08:00","labels":["daemon"]} {"id":"vsbeads-bcu","title":"Test bead for labels overflow","description":"Testing label display and overflow behaviordfsfs","status":"open","priority":3,"issue_type":"task","estimated_minutes":0,"created_at":"2025-12-01T15:32:16.718649-08:00","updated_at":"2025-12-04T11:59:22.270468-08:00","labels":["E","a","b","c","d"]} {"id":"vsbeads-btf","title":"Scroll to latest comment when adding a comment in Details view","description":"When adding a comment in the Details panel, the view should auto-scroll to show the newly added comment at the bottom. Initial implementation attempts didn't work due to webview scroll container complexity.","status":"open","priority":4,"issue_type":"feature","estimated_minutes":45,"created_at":"2025-11-27T20:45:35.746701-08:00","updated_at":"2025-12-04T12:00:18.508148-08:00","labels":["ui"],"comments":[{"id":23,"issue_id":"vsbeads-btf","author":"jason","text":"turns out this is kinda hard, or was for claude to get correct.","created_at":"2025-12-02T00:38:50Z"}]} -{"id":"vsbeads-bxnb","title":"Research tree view / hierarchy display for issues list","description":"Explore options for optional tree/hierarchy view in issues list:\n\n**Inspiration**: IntelliJ IDEA project view has multiple view modes (flat list vs tree hierarchy)\n\n**Options to research**:\n1. Tree column in existing table (expandable rows)\n2. Separate tree view panel\n3. Toggle between list/tree modes\n4. TanStack Table tree data support\n\n**Questions**:\n- How to represent epic → task → subtask hierarchy?\n- How to handle dependencies vs parent-child?\n- What does TanStack Table support for tree data?\n- UX for expand/collapse in table vs dedicated tree view?","notes":"---\n2025-12-25: Draft PR #54 opened. Tree view basic functionality works but UI needs refinement - icons and visual hierarchy indicators need design review. TanStack Query added for data caching.","status":"in_progress","priority":3,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-23T00:21:40.100896-08:00","updated_at":"2026-01-31T05:01:58.341864-08:00","labels":["research","ui"],"comments":[{"id":37,"issue_id":"vsbeads-bxnb","author":"jason","text":"Need to find some examples to show the agent what to build.","created_at":"2025-12-26T08:58:27Z"}]} +{"id":"vsbeads-bxnb","title":"Research tree view / hierarchy display for issues list","description":"Explore options for optional tree/hierarchy view in issues list:\n\n**Inspiration**: IntelliJ IDEA project view has multiple view modes (flat list vs tree hierarchy)\n\n**Options to research**:\n1. Tree column in existing table (expandable rows)\n2. Separate tree view panel\n3. Toggle between list/tree modes\n4. TanStack Table tree data support\n\n**Questions**:\n- How to represent epic → task → subtask hierarchy?\n- How to handle dependencies vs parent-child?\n- What does TanStack Table support for tree data?\n- UX for expand/collapse in table vs dedicated tree view?","notes":"---\n2025-12-25: Draft PR #54 opened. Tree view basic functionality works but UI needs refinement - icons and visual hierarchy indicators need design review. TanStack Query added for data caching.","status":"blocked","priority":3,"issue_type":"task","assignee":"jdillon","created_at":"2025-12-23T00:21:40.100896-08:00","updated_at":"2026-01-31T05:02:01.942889-08:00","labels":["research","ui"],"comments":[{"id":37,"issue_id":"vsbeads-bxnb","author":"jason","text":"Need to find some examples to show the agent what to build.","created_at":"2025-12-26T08:58:27Z"}]} {"id":"vsbeads-cjh","title":"Kanban: Make all columns collapsible","description":"Allow collapsing any kanban column, not just the Closed column.\n\n## Context\nCurrent implementation only allows collapsing the Closed column:\n```tsx\nconst [closedExpanded, setClosedExpanded] = useState(false);\n// ...\nconst isCollapsed = status === \"closed\" \u0026\u0026 !closedExpanded;\n```\n\nUsers may want to collapse other columns (e.g., Open when focusing on in-progress work).\n\n## Implementation\nFile: `src/webview/views/KanbanBoard.tsx`\n\nChange from single boolean to a Set tracking collapsed columns:\n```tsx\nconst [collapsedColumns, setCollapsedColumns] = useState\u003cSet\u003cBeadStatus\u003e\u003e(\n new Set([\"closed\"]) // Closed collapsed by default\n);\n\nconst toggleColumn = (status: BeadStatus) =\u003e {\n setCollapsedColumns(prev =\u003e {\n const next = new Set(prev);\n if (next.has(status)) next.delete(status);\n else next.add(status);\n return next;\n });\n};\n\nconst isCollapsed = collapsedColumns.has(status);\n```\n\n## Design Considerations\n- All column headers should be clickable (currently only Closed)\n- Add visual affordance (collapse/expand icon in header)\n- Persist collapsed state? (localStorage or just session)\n- Collapsed column should show count prominently\n\n## Acceptance Criteria\n- [ ] All 4 columns can be collapsed/expanded\n- [ ] Closed still collapsed by default\n- [ ] Click any column header to toggle\n- [ ] Visual indicator for collapsible headers\n- [ ] Collapsed columns show item count\n\n## Open Questions\n- Persist collapse state across sessions (localStorage)?\n- Add explicit collapse/expand icon or just clickable header?\n- Keyboard shortcut to collapse/expand?\n- Should collapsed columns have a minimum width or be truly minimal?","status":"closed","priority":3,"issue_type":"feature","assignee":"jdillon","owner":"jdillon@users.noreply.github.com","created_at":"2026-01-31T03:48:08.114162-08:00","created_by":"Jason Dillon","updated_at":"2026-01-31T04:53:29.153421-08:00","closed_at":"2026-01-31T04:53:29.153421-08:00","close_reason":"Implemented in feat/kanban-improvements branch","labels":["ui"],"dependencies":[{"issue_id":"vsbeads-cjh","depends_on_id":"vsbeads-h5f","type":"child","created_at":"2026-01-31T03:48:16.09939-08:00","created_by":"Jason Dillon"},{"issue_id":"vsbeads-cjh","depends_on_id":"vsbeads-66j","type":"blocks","created_at":"2026-01-31T03:48:19.632969-08:00","created_by":"Jason Dillon"}]} {"id":"vsbeads-cqi","title":"Redesign UI: sidebar for navigation, editor panels for views","description":"Move Kanban, Dependency Graph, and Details to WebviewPanel (editor tabs). Keep project selector and issue list in sidebar.","status":"open","priority":2,"issue_type":"feature","estimated_minutes":960,"created_at":"2025-11-26T15:59:20.263974-08:00","updated_at":"2025-12-04T11:58:59.107775-08:00","labels":["ui"]} {"id":"vsbeads-dhe","title":"Set up GitHub Actions workflow for nightly E2E tests","description":"Create GitHub Actions workflow that runs integration tests on a schedule.\n\n**Requirements:**\n- Run nightly (not on every commit - too slow/resource intensive)\n- Manual trigger option (`workflow_dispatch`)\n- Use ubuntu-latest runner\n- Install code-server, bd CLI, Playwright browsers\n- Upload test artifacts on failure (screenshots, traces, HTML report)\n\n**Pattern:**\n```yaml\non:\n schedule:\n - cron: '0 6 * * *' # 6am UTC daily\n workflow_dispatch:\n```","acceptance_criteria":"- Workflow file in `.github/workflows/integration-tests.yml`\n- Manual trigger works from Actions tab\n- Artifacts available on failure\n- Sends notification on failure (optional/later)","status":"open","priority":2,"issue_type":"task","estimated_minutes":90,"created_at":"2025-12-05T00:23:04.64811-08:00","updated_at":"2025-12-05T01:14:48.401601-08:00","labels":["ci","testing"],"dependencies":[{"issue_id":"vsbeads-dhe","depends_on_id":"vsbeads-4e7","type":"parent-child","created_at":"2025-12-05T00:23:16.83836-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"vsbeads-dhe","depends_on_id":"vsbeads-w2x","type":"blocks","created_at":"2025-12-05T00:23:31.666861-08:00","created_by":"daemon","metadata":"{}"}]}