Releases: steveyegge/beads
v0.52.0
beads v0.52.0
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
Bug Fixes
- bb3fef9 fix(ci): resolve gosec G204 and unparam lint warnings
- 9652a5e fix: block rename-prefix in git worktrees to prevent JSONL staleness (#1645)
- 3f4c0ab fix: expand tilde in core.hooksPath on Windows (GH#1796)
- 780be2d fix: guard dolt directory creation with server-mode check (#1800)
- 2beaad3 fix: guard dolt directory creation with server-mode check (bd-vyr)
- abfcdd3 fix: resolve worktree redirect paths from worktree root, not .beads/ dir (#1266)
Others
- 180030c Block rename-prefix from running in git worktrees (#1792)
- f581cf9 Fix CI: add stubs.go to gosec G204 exclusion (#1790)
- 7eaea49 Fix bd ready excluding ephemeral issues, add --include-ephemeral flag
- a6273c1 Fix doctor redirect target resolution
- 11ccf7a Fix doctor redirect target resolution (#1803)
- ba15514 Fix getRedirectTarget() path resolution in worktree list (#1791)
- bf6b47e Fix tilde expansion in core.hooksPath on Windows (#1798)
- 5075a87 Remove dead git-portable sync functions (#1793)
v0.51.0
beads v0.51.0
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
Bug Fixes
- 0c6ef53 fix(create): swap dependency direction for explicit blocks: prefix
- 1590e01 fix(doctor): add AccessLock to doctor Dolt health checks
- b24ee90 fix(doctor): add error-path tests and CloseWithTimeout documentation
- 7440ef8 fix(doctor): honor --yes for repo fingerprint auto-fix
- b8ba2de fix(doctor): migrate remaining Dolt checks to shared AccessLock connection
- 3db18e3 fix(doctor): restore sqliteConnString pragmas dropped by Phase 8 cleanup
- 7c10563 fix(dolt): batch DeleteIssues queries to prevent hang on large ID sets
- 4244855 fix(dolt): harden batch DeleteIssues correctness and add comprehensive tests
- b47f2b9 fix(dolt): seed types.custom in default config
- 02f4326 fix(mol): use analyzeMoleculeParallel for step readiness in bd mol current (#1276)
- fa5622e fix(types): add message as built-in issue type
- f4f70a3 fix: add non-CGO build stubs for goreleaser cross-compilation
- 6a6c501 fix: deleteBatch signature mismatch and unused types import
- 63544a5 fix: dolt config tests corrupt rig metadata.json in worktree environments
- 6caf05a fix: filter workflow/identity types from Dolt GetReadyWork
- 304c684 fix: gofmt formatting across 24 files and 2 lint warnings (bd-i4o4e)
- b74fc06 fix: malformed test names and obsolete SQLite-backend doctor tests (bd-gwm8z, bd-yqpwy)
- 817efc9 fix: read Dolt database name from metadata.json in embedded mode (bd-pqn2e)
- dd01a65 fix: repair test suite for Dolt-only backend (bd-h0zvj.4)
- dc0dc1c fix: serialize dolt.New() and stdio redirection to eliminate test race conditions (bd-cqjoi)
Others
- 896d5ed Dolt-native cleanup: remove legacy code, rename API, add server watchdog
- 225ee74 Fix typo in dolt migrate command
- 97fa7cc Revise INSTALLING.md for mise installation methods
- 5083873 cleanup: delete deprecated SQLite-era docs (EXTENDING.md, MULTI_REPO_HYDRATION.md)
- 03a1415 cleanup: remove stale golangci suppressions and dead compact methods
- 85ba9bd cleanup: remove stale sqlite refs, fix lint warnings, update Makefile benchmarks
- 5f59039 perf(dolt): leverage CASCADE deletes to cut deletion queries by 60%
- fa191af perf: skip schema init when already at current version
- 5ffd625 refactor: Phase 8 CLI & config cleanup - remove SQLite/daemon remnants (dolt-1s40.8)
- 0e74612 refactor: fix stale NewSQLiteStorage refs in docs and monitor-webui import (bd-h0zvj.8)
- 76b2f1e refactor: gut JSONL sync engine, keep simple manual import/export (bd-h0zvj.2)
- d6a8462 refactor: make bd sync a no-op, fix test suite for Dolt-only backend (bd-h0zvj.4)
- 6a5da90 refactor: prune 12 dead/duplicate DoltStore methods and 650 lines (bd-h0zvj.6)
- eacaa51 refactor: prune 5 legacy doctor checks and 1457 lines of dead code (bd-h0zvj.4)
- 5102512 refactor: remove 3-way merge engine (Phase 3)
- 8e10fd0 refactor: remove JSONL sync layer (Phase 5)
- a3bf3ee refactor: remove SQLite backend (Phase 6)
- 6c82467 refactor: remove SQLite migration code and legacy backend detection (bd-h0zvj.3) [WIP]
- cddddf7 refactor: remove all no-op stubs and dead functions (bd-h0zvj.1)
- 5b6e015 refactor: remove daemon compat stub and --no-daemon flag (Phase 2)
- 64c3031 refactor: remove internal/beads type aliases and fix stale examples (bd-h0zvj.7)
- a5da57e refactor: remove storage factory, memory backend, and provider abstraction (Phase 7)
- 7eed8b8 refactor: remove tombstone/soft-delete system (Phase 4)
- 12f9037 refactor: replace factory/memory imports with direct dolt calls (Phase 7 cleanup)
- b62e495 refactor: restore --to-dolt migration, fix tests for Dolt-only backend (bd-h0zvj.3)
- 6a81082 release: v0.51.0 — Dolt-native cleanup
- 87c7693 style: fix gofmt alignment in sync_git_remote_test.go
- 31c9107 syncbranch: enforce bounded lock contention behavior in read/write tests (#1776)
- 4eba911 test(doctor): add E2E tests for Dolt AccessLock integration
v0.50.3
beads v0.50.3
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
- 3728ac1 feat: add PullHooks/PushHooks to SyncEngine for battle-tested CLI behaviors
Bug Fixes
- 0987367 fix: add routing and label-based agent check to bd slot commands (bd-yw7ui)
- 118e451 fix: remove stale State assignment in jiraToTrackerIssue
- 1f59a21 fix: use Required field for formula variable validation
- 3b8562e fix: use errors.New for Jira sentinel error, add Jira tracker tests
- 7de76f3 fix: wire FormatDescription hook in doPush, add GenerateID/FormatDescription tests
Others
- d582e00 perf(tests): replace ~60 git init subprocess calls with cached template copy
- fe2b537 refactor: extract Jira integration into internal/jira/ package
- 3c45dcb refactor: inline tracker adapters into internal packages
- 8f00fb7 refactor: wire Jira CLI through SyncEngine, delete duplicated sync code
- 5a5407f refactor: wire Linear/GitLab CLI through SyncEngine, delete duplicated sync code
- db1c3d7 style: fix gofmt formatting across 14 files
v0.50.2
beads v0.50.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
- 3894fd3 feat: nudge all SQLite users to migrate to Dolt
Bug Fixes
- 6c00524 fix(beads): stop FindBeadsDir walk from escaping sibling worktree boundary (#1731)
- 1eb3bc1 fix(doctor): correct plugin install command in doctor output (#1732)
- 3bdc978 fix: bump npm package version to 0.50.2
- f7311e9 fix: reliable metadata writes for Dolt backend (bd_version, repo_id, clone_id) (#1741)
- 53694a8 fix: update backend descriptions to reflect Dolt as default since v0.50
Others
v0.50.1
beads v0.50.1
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
- cf4ffec feat: add GitLab adapter for tracker framework (GH#1150)
- 7b3148d feat: add Linear adapter for tracker framework (GH#1150)
- 66ffc44 feat: add audit log for bd dolt config set changes
- 9d29ffd feat: add plugin-based issue tracker framework (GH#1150)
Bug Fixes
- 32e3e83 fix(ci): remove dead RPC test code and fix CI failures for v0.50.0
- 7dca841 fix(lint): add missing exclusions for tracker adapters and dolt audit log
- 8319a85 fix: gofmt tracker adapter files
- c0ad80d fix: remove auto-fallback from dolt server mode to embedded mode
- 9861144 fix: remove t.Parallel() from graph tests that race on os.Stdout
v0.49.6
beads v0.49.6
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
Others
v0.49.5
beads v0.49.5
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
- 3c167b8 feat(dolt): fail-fast TCP check before MySQL protocol initialization
- e06e0cc feat: add bd find-duplicates for AI-powered duplicate detection (bd-581b80b3)
- 4d16070 feat: add bd promote command for wisp-to-bead promotion (gt-7mqd.9)
- 55a4140 feat: add bd todo command for lightweight task management
- 24ba7e3 feat: add bd validate command for data-integrity health checks (bd-e108)
- 6d99a8c feat: add content and null-check filters to bd search (bd-au0.5)
- a6cbb7c feat: centralize AI model config into ai.model with DefaultAIModel()
- 6fe7f20 feat: default to chaining hooks in bd init instead of prompting (bd-bxha)
- 66b7fc4 feat: embed Windows PE version info to reduce antivirus false positives (bd-t4u1)
- e533064 feat: remove embedded Dolt mode, keep server-only connections (bd-esqfe)
Bug Fixes
- f5e0de4 fix(ci): resolve lint failures and test guard false positive (#1550)
- f763b15 fix(ci): resolve lint failures and test guard false positive on main
- 31687be fix(ci): unbreak Nix and Windows CI
- 307cd1b fix(ci): update vendorHash, fix pre-existing lint failures
- 9affc8f fix(config): log when viper uninitialized in getConfigList
- d0cb650 fix(config): write beads.role to git config instead of SQLite
- 3ba6bc3 fix(daemon): use rpc.ShortSocketPath for daemon status/health/metrics
- 7057b08 fix(docs): correct markdown link syntax in COMMUNITY_TOOLS.md
- 3d4ac66 fix(doctor): correct brew upgrade command from "bd" to "beads"
- c9f68c2 fix(doctor): improve output formatting with summary-first layout (bd-4qfb)
- 282c13e fix(dolt): clean test tables in setupTestStore to prevent duplicate primary key errors
- ac0ff2e fix(gitignore): add .jsonl.lock to template and requiredPatterns
- 85bd4bb fix(lint): suppress unparam for doctor/sqlite_open.go readOnly
- 1296242 fix(merge): use strings.HasPrefix to prevent panic on short error messages
- 3e8bc4f fix(migrate): check for running daemon before dolt migration
- 8566c34 fix(nix): update flake.lock, remove CI workaround
- a96df5a fix(rpc): pass issueID via closure to prevent empty mutation events
- fea2bc7 fix(rpc): replace hardcoded /tmp paths with t.TempDir() in tests
- 531f7a9 fix(security): path traversal in export handler and command injection in import
- 85a5b84 fix(security): upgrade Go toolchain to 1.25.7 for CVE-2025-68121
- eb1049b fix(sqlite): make Close() idempotent to prevent WAL retry deadlock (bd-4ri)
- 0f14a11 fix(sync): apply --ours/--theirs strategy to conflict resolution
- 914146d fix(sync): include tombstones in auto-flush full export
- f72000a fix(tests): add missing assertions to RPC coverage and list filter tests
- 5b8090e fix(tests): re-enable deadlock test and add timeout guards for peer sync (dolt-test-ebm)
- 3273834 fix(update): log DB error when GetCustomTypes fails
- 182655c fix(update): skip type pre-validation in daemon mode
- 16ac05c fix: ShouldExportJSONL reads DB directly, returns false in dolt-native mode
- 3d01c7f fix: Support cross-prefix ID resolution in multi-repo scenarios (GH#1513)
- 69ab6b6 fix: add bounds checks for slice/string access in migrate.go (dolt-test-atg)
- b78a67a fix: add exclusive lock to flushToJSONLWithState to prevent race conditions
- f291727 fix: add nil storage guard to handleCommentList and handleCommentAdd (dolt-test-w1p)
- 48574fe fix: add staleness check to export, graph, history, gate list commands (bd-2q6d)
- fd274c9 fix: apply approved fixes before returning on stdin read error (dolt-test-hp8)
- de5f702 fix: bd dep list cross-rig routing broken from town root (bd-ciouf)
- 8ea2353 fix: bd doctor --check=validate re-checks after fix, reuses doctor infra (bd-e108)
- 2b90ed1 fix: bd list --all disables default limit (bd-u0l9f)
- dd2e1c6 fix: block BD_BACKEND env var to prevent data fragmentation (bd-hevyw)
- bf3af46 fix: centralize error handling patterns in storage layer (bd-bwk2)
- 656c806 fix: detect cross-rig contamination in post-migration check (bd-73cf5)
- 75fd768 fix: dolt_conflicts column name, doctor gastown detection, explicit routing mode
- 831c6ab fix: drain in-flight requests before closing storage in Server.Stop (dolt-test-rgh)
- 2a0cd4c fix: handle json.Marshal error in runServerHealth (dolt-test-hk6)
- a66165a fix: include dependencies and comments in issueEqual comparison (dolt-test-7e4)
- 1b42ec3 fix: isolate Dolt tests with per-test databases (dolt-test-1cf)
- 8a18582 fix: log warnings for label and dependency import errors in migration (dolt-test-qf0)
- 342af3b fix: make "connection refused" retryable in Dolt retry logic (bd-p3ytz)
- 81a87a7 fix: make TestRoutingIntegration/maintainer_with_SSH_remote deterministic (bd-g9eu)
- e73f16f fix: prevent stdout export from clearing dirty flags and auto-flush state (dolt-test-f8l)
- c4c54cb fix: remove global os.Stderr redirect during daemon import (dolt-test-s6y)
- db232c8 fix: remove output_schema=None workaround, FastMCP 2.14.4 handles union return types (bd-49kw)
- a8bc581 fix: remove unreachable RPC import method and dead code
- 766f6dc fix: replace hardcoded 100ms sleep with response-write-then-shutdown pattern (dolt-test-931)
- 2f4c26f fix: resolve gosec lint warnings in migrate_sync.go and migration_hint.go
- 7b9c581 fix: separate parent-child from blocks in bd list output (bd-ohn7c)
- ac09cde fix: standardize JSON output across commands (bd-au0.7)
- 4eafe63 fix: sync labels during import by removing DB labels absent from JSONL (dolt-test-96u)
- 6be7133 fix: use SQLITE_BUSY retry logic for all BEGIN IMMEDIATE calls (bd-ola6)
- 1d77673 fix: use port 3307 consistently for Dolt server connections (bd-ig3re)
- 249609d fix: use prefix-based Dolt database names to prevent cross-rig contamination (bd-u8rda)
- 4bf6e8f fix: use unique temp filename in writeMergedStateToJSONL to avoid collisions (dolt-test-1so)
Others
- 556836b Add beads-manager plugin to community tools list
- 17e54c5 Enable Dolt on Windows via gms_pure_go build tag
- 8cc9344 Fix bd doctor fix suggestion: bd daemon stop requires workspace path
- 3126997 Fix daemon ignoring auto-sync config from YAML
- 89e4ec5 Fix doctor --fix migration for legacy spec_id
- 976fbe6 Fix doctor role check false positive when role set via bd config
- df0204d Initialize bd after merge
- 7593042 Merge remote-tracking branch 'origin/main' into fix/nix-and-windows-ci
- a39cf8b Newsletter generator: automated narrative summaries of releases (#1197)
- a0450ec cleanup: remove G5 flock semaphore remnants (server mode makes them obsolete)
- e54ac33 hygiene: consolidate internal/util into internal/utils
- 16cdc21 hygiene: consolidate sqliteConnString into internal/storage
- d182aa...
v0.49.4
beads v0.49.4
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
- ebead13 feat(bd): add wisp_type field support for TTL-based compaction (gt-7mqd.2)
- e8158ae feat(cli): add --metadata flag to bd update (bd-0vud2)
- feae3bc feat(config): support .beads/config.local.yaml for local overrides
- 30e8c99 feat(doctor): add Dolt migration validation checks (gt-nibe)
- 22e21c6 feat(dolt): add BD_SKIP_ACCESS_LOCK env var for lock testing
- 8b24c12 feat(make): check repo is up-to-date before install
- 909085b feat(migrate): add agent-managed Dolt upgrade path
- c2ae767 feat(migrate): add orphan branch support for sync-branch mode
- 7e21aef feat(migrate): make orphan branch default for bd migrate sync (#1148)
- e5c8c1d feat(schema): add wisp_type column for TTL-based compaction (gt-7mqd.1)
- 51dc5ff feat: add 'beads' alias for bd command during installation
- 46b6b7a feat: add --label-pattern and --label-regex flags to bd list
- fa1218d feat: add Dolt schema migration runner (bd-ijw)
- f3874ed feat: add simple query language for complex filtering
- cf185ce feat: add spec_id field for linking issues to specification documents (#1372)
- a1c447e feat: add spec_id support
- dc038c9 feat: allow UpdateIssue metadata updates via json.RawMessage/[]byte (#1417)
Bug Fixes
- 7451ddc Merge PR #1279: fix: add JSONL file locking to prevent race conditions
- 0b92eae Merge PR #1281: fix: add WAL checkpoint robustness with retry logic
- f220cb4 fix(autoflush): use unique temp file names for concurrent writes
- e48e94e fix(compact): restore safety logic accidentally removed in cb1e355
- b5ae6e8 fix(daemon): add initial JSONL import on startup with hash update
- 22bbbc4 fix(daemon): update hash after auto-import to prevent export validation failure
- 4d9fced fix(daemon_lock): update race test to document transient PID state
- 4564736 fix(dep): use factory.NewFromConfig for cross-rig dependency resolution
- 1ee9fbe fix(doctor): use read-only mode to avoid creating database
- 6ec1943 fix(dolt): add retry logic for server mode transient connection errors
- 1c2166e fix(dolt): add spec_id column migration for existing databases
- 9f2326b fix(dolt): add timeout to embedded Dolt close to prevent indefinite hang
- eaa4e79 fix(dolt): fix driver bad connection errors from nested queries in server mode
- 623c36b fix(dolt): remove FK constraint on depends_on_id for external references
- 054e92d fix(dolt): use correct variable in initSchemaOnDB
- ead2428 fix(dolt): work around merge join panic in ready_issues view
- bc70460 fix(lint): address unparam warnings in gitlab_sync.go
- bde38fd fix(lint): handle rows.Close() errors explicitly (G104)
- 70bc384 fix(lint): suppress G304 false positive for @file.json syntax
- 76e7aa2 fix(lint): use secure file permissions for lock file (G302)
- f3317a3 fix(migrate): use --stdin for cross-platform empty tree creation
- 1797e33 fix(nix): allow Go toolchain auto-download for version compatibility
- 4af28d5 fix(nix): use Go 1.25.6 overlay for dolthub/driver compatibility
- 24097e0 fix(nix): use buildGoModule.override for go-modules derivation
- 7032113 fix(path): exclude routes.jsonl from FindJSONLInDir fallback
- 5f8cb4c fix(routing): respect BEADS_DIR over prefix routing in show/close/update
- aa5e92f fix(show): display relates-to deps correctly and deduplicate RELATED section
- 69bf2c9 fix(sync): disable JSONL auto-flush in dolt-native mode (bd-zlih1)
- 1c02b4e fix(sync): disable JSONL imports in dolt-native mode, keep local writes as safety net
- cd9768d fix(sync): disable JSONL sync exports in dolt-native mode (bd-zlih1)
- 2726e6b fix(sync): use GetGitCommonDir for worktree creation in bare repo setups
- c5953db fix(sync): use content-based merge for daemon pulls (GH#1358)
- 665863e fix(test): create database before use in migrations_test.go
- 6f89e65 fix(test): use atomic counter in TestFetchIssues_ContextCancellation
- f5b7025 fix(test): use atomic counter to fix data race in gitlab test
- 047174e fix(update): add config.yaml fallback for custom types in daemon mode
- 001a6ae fix: accept simple string vars in TOML [vars] section
- 26bed83 fix: add JSONL file locking to prevent race conditions
- 7165f31 fix: add JSONL locking to performIncrementalExport
- 9e397bc fix: add WAL checkpoint robustness with retry logic
- c96e62e fix: add atomic compare-and-swap semantics to bd claim (#1474)
- 690adbb fix: add missing placeholder for spec_id in Dolt INSERT
- 8457d9e fix: add missing spec_id to SQL queries using scanIssues
- 6b46f3a fix: add process-level semaphore to limit concurrent dolt access (G5)
- bb18dad fix: add routes.jsonl to FindJSONLInDir skip list to prevent corruption
- 823efe6 fix: add toml tags for snake_case fields in formula structs
- 7dcfb1c fix: add transaction safety and daemon lock improvements
- 5619c50 fix: add wisp_type to Dolt GetIssuesByIDs and insertIssueTx queries
- 1269368 fix: advisory flock to prevent zombie bd processes from dolt lock contention
- 9acaa85 fix: align resolve_conflicts tie-breaking with merge driver (#1481)
- 2aff2db fix: bd cleanup --hard always prunes tombstones immediately (bd-4q8)
- 4b80094 fix: bd ready now excludes in_progress issues to show only claimable work
- 92d1e59 fix: deduplicate children in bd list --tree
- 49cf54e fix: enable govet linter and resolve all IPv6 address format issues
- dfeac38 fix: merge driver silently drops issue fields (#1480)
- f013db9 fix: merge driver silently drops issue fields (#1480) (#1482)
- ed71a9a fix: remove unused source return value from getGitLabConfigValue (unparam)
- 60978cf fix: replace daemonLogger with *slog.Logger for proper structured logging
- 62c9f9b fix: resolve all CI failures (lint, tests, nix) (#1464)
- 87a22e0 fix: resolve connection pool deadlock in dolt dependency resolution (G10)
- c2f3d46 fix: resolve errcheck violations in cmd/bd/gitlab.go and gitlab_sync.go
- 309bab4 fix: resolve failing tests in daemon autostart, gitlab, and syncbranch
- 3db3d2c fix: resolve gosec G104 unhandled rows.Close() error in doctor/perf_dolt.go
- b169dc1 fix: resolve gosec G104 unhandled rows.Close() errors in dependencies.go
- a7f9e86 fix: resolve remaining errcheck violations in gitlab files
- 789ffe7 fix: resolve unused ctx lint warning in filterByLabelRegex
- 78b657c fix: scope Dolt migration helpers to current database (bd-0gfm6)
- 74920a8 fix: skip CREATE DATABASE for read-only commands in dolt store
- 0bca2f5 fix: use types.Dependency end-to-end, add JSONL round-trip tests (#1481)
Others
- 1a6bedd Document ICU build deps and hint in in...
v0.49.3
beads v0.49.3
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
- 0b25ff2 feat: make embedded Dolt the default, server mode opt-in
Bug Fixes
- a7cc4e1 fix(dolt): eliminate all three-table joins that trigger mergeJoinIter panic
- 9234aa9 fix(dolt): prevent mergeJoinIter panic on type-filtered queries
- 1079786 fix(template): filter Handlebars keywords in extractVariables (#1411)
- 5d81329 fix(tests): extract initConfigForTest helper to prevent config state pollution
- fe8d7c1 fix: eliminate dolt split-brain root cause (B1+B2) and fix CGO build
- 987f5db fix: guard auto-import against nil pointer panic in dolt-native mode
v0.49.2
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...