beads v0.49.2
Pre-compiled binaries for Linux, macOS (Intel & Apple Silicon), Windows (AMD64 & ARM64), Android/Termux (ARM64), and FreeBSD.
Installation
Homebrew (macOS/Linux):
brew install beadsQuick Install (macOS/Linux/FreeBSD):
curl -sSL https://raw.githubusercontent.com/steveyegge/beads/main/scripts/install.sh | bashWindows (PowerShell):
irm https://raw.githubusercontent.com/steveyegge/beads/main/install.ps1 | iexManual Install:
Download the appropriate binary for your platform below, extract it, and place it in your PATH.
Changelog
Features
- e02c44d Merge PR #1290: feat: Add GitLab backend for bidirectional issue sync
- dc8bb7a feat(cli): add bd backend and bd sync mode subcommands
- 7810c63 feat(config): add env var overrides for Dolt server connection settings
- 9df801e feat(config): make agent roles configurable (bd-hx8w)
- 857d2b6 feat(context): add UserRole detection to RepoContext
- 9e37767 feat(dep): resolve external refs in dep list for cross-rig dependencies
- e4886a0 feat(doctor): add Dolt-specific diagnostics and performance profiling
- abbc091 feat(gitlab): implement GitLab REST API client wrapper
- fc27840 feat(import): process JSONL deletion markers (bd-9qywp)
- d5a8e0f feat(init): add interactive contributor role prompt
- a2a94e1 feat(init): auto-detect dolt server and enable server mode (gt-1mf.3)
- 03ba29f feat(jira): add pull_prefix and push_prefix config options
- eb07ed9 feat(kv): add key-value store commands
- 13dbef5 feat(kv): add key-value store commands (#1164)
- 82a2354 feat(mol): add hint to view step instructions in mol current output (#1403)
- 9e16f34 feat(role): implement explicit role configuration via git
- b080961 feat(sync): detect push permission errors during sync
- 774cc5b feat: add comment_count to issue JSON views (list, ready, search)
- c23a848 feat: add events JSONL export (opt-in via events.export config)
- 92fd124 feat: add optional per-issue JSON metadata field (SQLite + Dolt) (#1407)
Bug Fixes
- 2879554 fix: handle nil pointer dereference in bd restore with invalid issue ID
- e66b775 fix(build): add CGO build tags to Dolt storage for cross-compilation
- 9e5ea59 fix(ci): disable CGO for Windows build in goreleaser
- 051aeb0 fix(cli): address code review feedback for backend/sync mode commands
- e07ac18 fix(cli): use abstract error messages instead of exposing internals (bd-ats9.3.2)
- 7448754 fix(config): add YAML config support for daemon auto-sync settings (#1294)
- 3abec58 fix(create): remove Gas Town-specific --role-type flag (bd-31ajf)
- 02b445e fix(daemon): make daemon start idempotent (#1334)
- 9939e71 fix(doctor): add Dolt backend detection to all fix functions (gt-doctor-dolt-fix)
- cb1a379 fix(doctor): add fix for stale JSONL in dolt-native mode (bd-bbo8)
- 289512a fix(doctor): address review issues in Dolt diagnostics
- bf194b7 fix(doctor): skip SQLite-specific checks when using Dolt backend
- ba3a725 fix(formula): add dev build handling to local-install step
- 93965b4 fix(formula): ignore undeclared handlebars in description text (gt-ky9loa) (#1394)
- a907203 fix(gitlab): P0 - conflict detection before push and SyncContext
- f9f3a03 fix(gitlab): P1 - add pagination limit and context cancellation
- 745002e fix(gitlab): P2 - fix error handling and type safety
- 917d8be fix(gitlab): P2-P3 - cleanup deprecated code and improve docs
- 96a28ee fix(gitlab): address PR review findings for merge readiness
- 8604c5e fix(gitlab): address code review round 3 feedback
- a176177 fix(importer): remove dead code with sqlite.IsUniqueConstraintError (bd-2kgr)
- dbc5f3c fix(kv): add key validation and exit code on missing key
- d8f5e1f fix(linear): exclude ephemeral issues from sync push by default (#1397)
- 9d75d41 fix(lint): add gosec nolint for events.jsonl file permissions
- 18b7baa fix(lint): use 0600 permissions for events.jsonl
- 7e3b828 fix(main): use GetDoltDatabase() instead of raw cfg.Database for server mode
- ba8ca25 fix(mcp): Update Stats model to match bd stats --json output (#1392)
- a5c1664 fix(merge): tombstone should win over closed in resolve_conflicts.go
- 82f6435 fix(migrate): use storage factory for backend-aware database access
- 306de3b fix(rpc): handle EINVAL from chmod on Unix sockets in containers (#1399)
- e880159 fix(state): allow event type in CreateIssue validation (#1398)
- 1752e58 fix(storage): document SQLite-only API and make FindAllDatabases backend-aware
- aa663c4 fix(storage): move BatchCreateOptions to storage package for backend-agnostic batch creation
- de64d81 fix(storage): use factory for backend-aware storage creation (bd-m2jr)
- e78bcc0 fix(sync): normalize JSONL path in CommitToSyncBranch for sync-branch mode (#1340)
- 6320e2a fix(sync): respect dolt-native mode in JSONL export paths
- 1f24187 fix(sync): respect dolt-native mode in daemon_sync_branch.go (bd-ats9.3.1)
- e22f7d8 fix(sync): set GIT_DIR and GIT_WORK_TREE in GitCmd for worktree support
- 9d669e0 fix(sync): use store.Path() for database mtime update
- 704affb fix(types): generalize RoleType comment, file followup (bd-hx8w)
- c156580 fix(update): use IsValidWithCustom for --type validation (#1356)
- ed6d21d fix: Auto-stage JSONL files after flush in pre-push hook
- b1f0774 fix: check rows.Err() in SQLite GetAllEventsSince
- 1fefbaf fix: code review fixes for bd-hx8w
- 8afd0a0 fix: correct error message for --gated flag (#1391)
- a696a36 fix: detect and clean stale Dolt lock files (gt-dolt-lockfiles)
- 6f707fc fix: ensure sync-branch worktree exists on fresh clone (#1349)
- 8b3432a fix: exclude tombstones from external_ref uniqueness validation
- b6b5a0a fix: graceful server-to-embedded fallback when Dolt server unreachable (gt-dolt-fallback)
- 617d4ac fix: rename events.export config key to events-export
- 02f889f fix: skip JSONL staleness check in dolt-native mode (gt-dolt-stale-jsonl)
- bd17093 fix: skip sync when source and destination JSONL paths are identical (#1367)
Others
- c8abf99 Add GitLab types for beads integration (Issue #4)
- 04b34b2 Add bd gitlab command with sync, status, projects subcommands
- 789a0a4 Add export-state/ to gitignore template
- efe31b4 Add integration tests for GitLab backend (Issue #11)
- 70e5cc1 Add review fixes: URL encoding, WithEndpoint, FetchIssueByIID, CreateIssueLink
- f271075 Add unit tests for GitLab backend (Issue #10)
- b600c47 Fix code review issues: path-based IDs, ID collisions, warnings
- 78adcf5 Fix daemon to respect BD_SOCKET environment variable
- 7af8153 Implement GitLab sync (Issue #7): pull, push, conflict detection
- e8dd9b4 Implement GitLab to beads mapping (Issue #6)
- 1f5cb9f Implement conflict resolution strategies (Issue #8)
- 2c7e2d8 Revert Dolt lock cleanup workaround; fix embedded Dolt open via driver retries (#1389)
- c6bb265 Show blocking dependencies inline in bd list output
- 5457c1d Update COMMUNITY_TOOLS.md
- ed3d36d chore(beads): sync after closing bd-7nd6t
- 379c4c1 chore(deps): bump fastmcp in /integrations/beads-mcp (#1345)
- b8f4f91 chore(deps): bump github.com/ncruces/go-sqlite3 from 0.30.4 to 0.30.5 (#1346)
- 922c7f6 docs(kv): add CLI documentation and tests for KV store
- 100b89a feat(show,comments): display comment timestamps with time and add --local-time flag
- 6a9de49 refactor(compact): accept interface instead of concrete SQLiteStorage (bd-oa45)
- 07600dc refactor(hooks): remove Gas Town role detection from beads core
- 8516436 refactor(hooks): remove all Gas Town role detection from beads
- 2e6789d refactor(kv): move commands under bd kv subcommand
- cb1e355 refactor(rpc): fix leaky abstraction - remove direct sqlite imports (bd-oslm)
- 2d44697 refactor(validation): remove Gas Town actor validation from beads core (bd-741si)
- 36e1725 review(dolt): complete bd-ats9.4 - Dolt integration review
- cbf21ea review(sync): complete sync package v3 readiness review (bd-ats9.2)
- 5f63be2 test(cli): add tests for bd backend and bd sync mode commands (bd-ib7s)