- Add bd restore command to view full history of compacted issues from git
- Command temporarily checks out historical commit, reads JSONL, displays original content
- Read-only operation, no database or git state modification
- Flip ready work sort to created_at ASC (older issues first within priority tier)
- Prevents issue treadmill effect, surfaces old P1s for triage
- Update README.md and AGENTS.md with restore documentation
Closes bd-407, bd-383
- Implement bd rename-prefix command with --dry-run and --json flags
- Add prefix validation (max 8 chars, lowercase, starts with letter)
- Update all issue IDs and text references atomically per issue
- Update dependencies, labels, events, and counters
- Fix counter merge to use MAX() to prevent ID collisions
- Update snapshot tables for FK integrity
- Add comprehensive tests for validation and rename workflow
- Document in README.md and AGENTS.md
Known limitation: Each issue updates in its own transaction.
A failure mid-way could leave mixed state. Acceptable for
intended use case (infrequent operation on small DBs).
Amp-Thread-ID: https://ampcode.com/threads/T-7e77b779-bd88-44f2-9f0b-a9f2ccd54d38
Co-authored-by: Amp <amp@ampcode.com>
- Add comprehensive godoc to CreateIssues with usage examples
- Add batch operations section to EXTENDING.md with performance comparison
- Add performance feature to README.md
- Include when to use CreateIssue vs CreateIssues guidance
- Document counter sync requirement after explicit IDs
Amp-Thread-ID: https://ampcode.com/threads/T-59fc78c3-a7f2-4c33-b074-2fa840c97c87
Co-authored-by: Amp <amp@ampcode.com>
Recovery investigation complete. Key findings documented in bd-229 notes.
No need for separate recovery doc - issue tracker has the details.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Auto-import collision detection fix (bd-228) is deployed and needs field testing.
Banner alerts users that the critical bug is fixed but testing is ongoing.
Links to LOST_ISSUES_RECOVERY.md for transparency about recovered data.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
CRITICAL FIX: Auto-import was silently overwriting local changes without any
collision detection or warning. This caused data loss in multi-developer workflows.
Changes:
- Auto-import now uses sqlite.DetectCollisions() before importing
- Colliding issues are skipped (preserves local changes)
- Warning printed with list of skipped issues and resolution instructions
- Added autoImportWithoutCollisionDetection() fallback for non-SQLite backends
- All tests pass
Impact:
- Local changes are now preserved during git pull
- Users are informed when collisions occur
- Can manually resolve with 'bd import --resolve-collisions'
- No more silent data corruption
Also:
- Removed critical warning banner from README
- Created bd-229 for data recovery investigation
- Closed bd-228 as fixed
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
CRITICAL: Auto-import silently overwrites local changes without collision detection.
Changes:
- Added prominent warning banner at top of README
- Documents data corruption risk for multi-developer workflows
- Provides --no-auto-import workaround
- References bd-228 for tracking and updates
This affects anyone using bd with multiple developers or agent swarms.
Local updates/closes can be silently reverted by auto-import after git pull.
Also includes:
- ULTRATHINK_BD224.md analysis document (bd-224, bd-225)
- Updated issues.jsonl with bd-224, bd-225, bd-226, bd-227, bd-228
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixes#34
Problem: Users with Go 1.18 were unable to install beads because go.mod
specifies 'go 1.23.0', which older Go toolchains cannot parse. The error
"invalid go version '1.23.0': must match format 1.23" occurs because
Go versions before 1.21 don't support the three-part version format.
Root cause: Our dependencies (especially modernc.org/sqlite) require Go 1.23,
which forces go.mod to use the 1.23.0 format. This is correct for our actual
requirements, but was incorrectly documented as requiring only Go 1.21.
Solution:
1. Updated install.sh to check for Go 1.23+ and show clear error messages
if an older version is detected
2. Updated README.md to correctly state "requires Go 1.23+" instead of 1.21+
3. go.mod already correctly specifies go 1.23.0 (no changes needed there)
The version check in install.sh now:
- Parses the Go version from 'go version' output
- Compares major.minor version numbers
- Fails fast with helpful upgrade instructions if Go < 1.23
This prevents confusing build errors and guides users to upgrade Go before
attempting installation.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
The plugin documentation now explicitly states that:
1. The bd CLI must be installed first (prerequisite)
2. Plugin installation is a multi-step process (marketplace add + install + restart)
3. Removed misleading 'one-command' and 'auto-configured' language
This completes the documentation fixes started in PR #35.
The README was claiming one-command, zero-config installation, but actually requires: 1) marketplace add, 2) plugin install, 3) separate bd CLI installation. This revert tones down the promotional language to match reality.
Thanks to @jjshanks for catching this!
Added clear installation instructions for users of Sourcegraph Amp, Claude Desktop,
and other MCP clients right after the Claude Code plugin section.
Users can now easily find instructions to install via:
- uv tool install beads-mcp
- pip install beads-mcp
Includes Claude Desktop configuration example and link to detailed MCP server docs.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Make it clearer that the Claude Code plugin is the recommended
installation method for Claude Code users.
Changes:
- Add Claude Code plugin option to "Instant start" section at top
- Expand plugin benefits (zero setup, MCP tools, agent-ready)
- List example MCP tool names for agents
- Clarify that agents can use MCP directly vs Bash commands
This addresses the issue where agents didn't know they could use
the MCP tools and were falling back to Bash commands instead.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Adds scripts/bump-version.sh to automate version syncing across all
beads components, preventing version mismatches like bd-66.
Features:
- Updates all version files in one command
- Validates semantic versioning format
- Verifies all versions match after update
- Shows git diff preview
- Optional auto-commit with standardized message
- Cross-platform compatible (macOS/Linux)
Files updated by script:
- cmd/bd/version.go
- .claude-plugin/plugin.json
- .claude-plugin/marketplace.json
- integrations/beads-mcp/pyproject.toml
- README.md
- PLUGIN.md
Usage:
./scripts/bump-version.sh 0.9.3 # Dry run with diff
./scripts/bump-version.sh 0.9.3 --commit # Auto-commit
Closes bd-67
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixes version inconsistencies across the project. All components now at 0.9.2:
Updated:
- .claude-plugin/plugin.json: 0.9.0 → 0.9.2
- .claude-plugin/marketplace.json: 0.9.0 → 0.9.2
- integrations/beads-mcp/pyproject.toml: 1.0.0 → 0.9.2
- README.md: v0.9.0 → v0.9.2
- PLUGIN.md: Updated version requirements
Root cause: Previous version bumps (0.9.0 → 0.9.1 → 0.9.2) only updated
cmd/bd/version.go, leaving other components out of sync.
The MCP server was initially versioned at 1.0.0 when added today, but
syncing to 0.9.2 for consistency since the project is still in alpha.
Closes bd-66
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Implement `bd create -f file.md` to parse markdown files and create
multiple issues in one command. This enables drafting features in
markdown and converting them to tracked issues.
Features:
- Parse markdown H2 headers (##) as issue titles
- Support all issue fields via H3 sections (### Priority, ### Type, etc.)
- Handle multiple issues per file
- Comprehensive validation and error handling
- Full test coverage with 5 test cases
Closes bd-91 (GH-9)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add "Hierarchical Blocking" section to README explaining blocking propagation through parent-child hierarchies
- Clarify that 'blocks' + 'parent-child' create transitive blocking up to 50 levels deep
- Note that 'related' and 'discovered-from' do NOT propagate blocking
- Add TestDeepHierarchyBlocking to verify 50-level deep hierarchy works correctly
- All tests pass successfully
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Adds a Claude Code plugin for one-command installation of beads via
/plugin command. The plugin bundles the MCP server, slash commands,
and an autonomous task agent.
Components:
- Plugin metadata with MCP server configuration
- 8 slash commands for core workflow (/bd-ready, /bd-create, etc.)
- Task agent for autonomous execution (@task-agent)
- Comprehensive plugin documentation (PLUGIN.md)
The plugin provides a lower-friction installation path for Claude Code
users who want integrated slash commands rather than direct MCP tools.
Related: https://github.com/steveyegge/beads/issues/28🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed bug where PersistentPostRun was clearing isDirty flag before
calling flushToJSONL(), causing the flush to abort immediately.
The fix ensures flushToJSONL() handles the isDirty flag itself,
allowing the JSONL export to complete successfully.
Also added Arch Linux AUR installation instructions to README.
Changes:
- cmd/bd/main.go: Fixed PersistentPostRun flush logic
- README.md: Added Arch Linux (AUR) installation section
- .beads/bd.jsonl: Auto-exported issue bd-169 (init -q flag bug)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Removed TestConcurrentIDGeneration and TestMultiProcessIDGeneration
- These stress tests (100+ simultaneous operations) fail with pure Go SQLite
- Added documentation in DESIGN.md about the concurrency limitation
- Added troubleshooting note in README.md
- All other tests pass; normal usage unaffected
- Pure Go driver benefits (no CGO, cross-compilation) outweigh limitation
Implements GH-18: Allow creating issues with dependencies in a single command.
Changes:
- Add --deps flag to bd create command
- Support format: 'type:id' or just 'id' (defaults to 'blocks')
- Multiple dependencies supported via comma-separated values
- Example: bd create "Fix bug" --deps discovered-from:bd-20,blocks:bd-15
- Updated README.md and CLAUDE.md with examples
This improves the UX for AI agents by reducing two commands (create + dep add)
to a single command, making discovered-from workflows much smoother.
Fixes#18🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Three improvements to beads:
1. ID space partitioning (closes bd-24)
- Add --id flag to 'bd create' for explicit ID assignment
- Validates format: prefix-number (e.g., worker1-100)
- Enables parallel agents to partition ID space and avoid conflicts
- Storage layer already supported this, just wired up CLI
2. Auto-flush failure tracking (closes bd-38)
- Track consecutive flush failures with counter and last error
- Show prominent red warning after 3+ consecutive failures
- Reset counter on successful flush
- Users get clear guidance to run manual export if needed
3. Manual export cancels auto-flush timer
- Add clearAutoFlushState() helper function
- bd export now cancels pending auto-flush and clears dirty flag
- Prevents redundant exports when user manually exports
- Also resets failure counter on successful manual export
Documentation updated in README.md and CLAUDE.md with --id flag examples.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Adds auto-import feature to complement bd-35's auto-export, completing
the automatic sync workflow for git collaboration.
**Implementation:**
- Auto-import checks if JSONL is newer than DB on command startup
- Silently imports JSONL when modification time is newer
- Skips import command itself to avoid recursion
- Can be disabled with --no-auto-import flag
**Documentation updates:**
- Updated README.md git workflow section
- Updated CLAUDE.md workflow and pro tips
- Updated bd quickstart with auto-sync section
- Updated git hooks README to clarify they're now optional
**Testing:**
- Tested auto-import by touching JSONL and running commands
- Tested auto-export with create/close operations
- Complete workflow verified working
Closes bd-33
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Updated Features: Multi-project isolation instead of Project-aware
- Expanded FAQ to clearly explain multi-project scenarios
- Added concrete example showing multiple agents on different projects
- Documented limitation: cross-project issue linking not supported
- Emphasized that each project database is completely isolated (no conflicts)
Makes it clear that running bd on multiple projects simultaneously is safe and expected.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed critical issues identified in code review:
- Fixed invalid Go version (1.25.2 → 1.21) in go.mod
- Fixed unchecked error in import.go JSON unmarshaling
- Fixed unchecked error returns in test cleanup (export_import_test.go, import_collision_test.go)
- Removed duplicate test code in dependencies_test.go via helper function
Added release infrastructure:
- Added 'bd version' command with JSON output support
- Created comprehensive CHANGELOG.md following Keep a Changelog format
- Updated README.md with clear alpha status warnings
All tests passing. Ready for public repository opening.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Implements --resolve-collisions flag for import command to safely handle ID
collisions during branch merges. When enabled, colliding issues are remapped
to new IDs and all text references and dependencies are automatically updated.
Also adds comprehensive tests, branch-merge example, and documentation.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit adds everything needed for a successful public launch:
**New Documentation**
- SECURITY.md: Security policy and best practices
- CLAUDE.md: Complete agent instructions for contributing to beads
- Enhanced README with pain points, FAQ, troubleshooting sections
- Added Taskwarrior to comparison table with detailed explanation
**Installation**
- install.sh: One-liner installation script with platform detection
- Auto-detects OS/arch, tries go install, falls back to building from source
- Updated README with prominent installation instructions
**Examples** (2,268+ lines of working code)
- examples/python-agent/: Full Python implementation of agent workflow
- examples/bash-agent/: Shell script agent with colorized output
- examples/git-hooks/: Pre-commit, post-merge, post-checkout hooks with installer
- examples/claude-desktop-mcp/: Documentation for future MCP server integration
- examples/README.md: Overview of all examples
**Dogfooding**
- Initialized bd in beads project itself (.beads/beads.db)
- Created issues for roadmap (MCP server, migrations, demos, 1.0 milestone)
- Exported to .beads/issues.jsonl for git versioning
**Visual Assets**
- Added screenshot showing agent using beads to README intro
- Placed in .github/images/ following GitHub conventions
This addresses all launch readiness items:
✅ Security policy
✅ Working agent examples (Python, Bash)
✅ Git hooks for automation
✅ FAQ addressing skeptics
✅ Troubleshooting common issues
✅ Easy installation
✅ Dogfooding our own tool
✅ Pain points that create urgency
Ready to ship! 🚀🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added new section "The Magic: Distributed Database via Git" explaining
the key insight: bd provides the illusion of a centralized database
while actually distributing via git.
Key points:
- Feels like centralized DB (query, update from any machine)
- Actually distributed via git (JSONL source of truth)
- Local SQLite cache for fast queries (<100ms)
- No server, daemon, or configuration needed
- AI-assisted conflict resolution for the rare conflicts
Updated Features section:
- 📦 Git-versioned - JSONL records stored in git
- 🌍 Distributed by design - Multiple machines share one logical DB
Updated comparison table to emphasize no-server advantage:
- "Distributed via git" vs "Git-native storage"
- "No server required" vs "Self-hosted"
This clarifies what makes bd unique: you get database-like behavior
(queries, transactions, dependencies) without database-like operations
(server setup, hosting, network config). Just install bd, clone repo.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>