beads v0.57.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
Features
- 94b699c Merge PR #1995: feat: allow per-worktree .beads/redirect to override main repo
- f6b04f7 Merge PR #1996: feat(query): add has_metadata_key to bd query DSL
- 24e12a3 Merge PR #2088: feat: Add the option to use the Jira V2 api
- 21ca845 Merge PR #2143: feat: add dolt-data-dir config for custom dolt data directory
- a9ca7b7 Merge PR #2178: feat(dolt): SSH push/pull fallback + dual-surface remote management
- feb8a00 Merge PR #2221: feat: phase 1 hook census and migration planning (#2217)
- e688ea7 feat(backup): add 'bd backup restore' command to bootstrap from JSONL backup
- d821109 feat(backup): add JSONL backup command and auto-backup support
- 051a43d feat(backup): auto-enable JSONL backup when git remote exists
- 84c9540 feat(cli): add --comment alias for bd close, --yes/-y alias for bd mol burn
- a3dd653 feat(cli): show titles in command feedback (GH#1384)
- 573bdd1 feat(dolt): add 'bd dolt remote' subcommands (add/list/remove)
- f710909 feat(dolt): auto-push to Dolt remote with 5-minute debounce
- 20516a4 feat(dolt): dual-surface remote management (SQL + CLI)
- a30e02a feat(init): add --database flag to configure existing server database (#2102)
- 8cc0874 feat(init): wire sync.git-remote config into bd init for auto-bootstrap
- 9a2eea8 feat(labels): inherit parent labels on child creation
- e17d73a feat(linear): add Project sync support
- 3a86e9f feat(mcp): add dedicated claim tool for atomic start-work (#2071)
- 5f0b3be feat(protocol): lane 6 — 10 new protocol invariant tests
- 74ffe23 feat(ready): add metadata filtering to bd ready (GH#1406)
- 5fd7fe3 feat(regression): replace bd export with snapshot harness (list+show)
- 0467fb0 feat(test): parallelize dolt storage tests for 3.5x speedup (bd-5ua)
- 801965a feat(test): parallelize protocol tests for 3x speedup (bd-dgp)
- 11f5f43 feat(testutil): branch-per-test isolation for dolt, tracker, molecules (L2)
- 982164a feat(testutil): reuse existing Dolt server via BEADS_DOLT_PORT (L1)
- 82a5f89 feat(testutil): server crash detection + doctor branch-per-test (L2)
- dcf5c22 feat(update): add --set-metadata and --unset-metadata flags (GH#1406)
- ef4c996 feat(wisp): add --root-only flag to bd mol wisp create
- 1c6f373 feat: add --metadata flag to bd create (GH#1406)
- 0ed2e1a feat: add .dolt/ and *.db to project .gitignore on bd init (GH#2034)
- 6abc586 feat: add PreToolUse hook to block interactive cp/mv/rm prompts (bd-tm2p)
- bd3fb06 feat: add ResetTestBranch and migrate tests to shared server + branch-per-test (bd-tk8y)
- fecf282 feat: add bd backup init/sync for Dolt-native backups (bd-zafu)
- 8d5e3ef feat: add bd doctor --agent mode for AI agent diagnostics (bd-6ud)
- 6157920 feat: add bd dolt start/stop commands for server lifecycle management (bd-rbzi)
- 97ae54d feat: add bd export command for JSONL backup (bd-xav)
- 5e0e83a feat: add bd gc, bd compact, bd flatten for standalone Beads lifecycle (bd-kzn)
- 0cb7936 feat: add circuit breaker for Dolt server connections (bd-05an)
- 7228991 feat: add dolt-data-dir config for custom dolt data directory
- 9457158 feat: add has_metadata_key to bd query DSL
- eafff36 feat: add hk (hk.jdx.dev) as supported git hook manager
- dfd9b56 feat: add hook migration census + doctor signal (bd-w4x.1, #2217)
- 02197ee feat: add stale database detection to bd doctor and bd dolt clean-databases
- c402711 feat: add staleness check for read-only commands against JSONL (bd-2q6d)
- 1dcaa50 feat: allow per-worktree .beads/redirect to override main repo .beads
- dab2a20 feat: apply error wrapping to remaining bare returns in dolt storage (bd-bwk2)
- 24ed5a3 feat: auto-migrate SQLite to Dolt on first bd command (bd-3dx)
- 13a8daa feat: auto-migration shim: SQLite to Dolt via sqlite3 CLI (bd--3y8)
- 4fd1f6e feat: auto-push to git remote after Dolt commits
- 7dafce0 feat: auto-update stale hooks during bd init (GH#1466) (#2008)
- 06eff8a feat: centralize error handling in dolt storage layer (bd-bwk2)
- 580e7db feat: complete branch-per-test migration with dolt reset --hard (bd-tk8y)
- 00aa5dc feat: config-driven metadata schema enforcement (GH#1416 Phase 2) (#2027)
- 8e22d27 feat: make IsInfraType config-driven via types.infra (bd-39c)
- 1fda04c feat: port collision fallback, idle monitor, and crash watchdog for Dolt server (test-hqvv5t, test-n99ihy)
- 9d64fc1 feat: route infra beads (agent/rig/role/message) to dolt-ignored wisps table
- 893f6fc feat: self-managing Dolt server for standalone users (GH#2049, GH#2050)
- 87f3286 feat: support issue_id_mode=counter for sequential IDs (#2013)
- 1b56f58 feat: use section markers for git hooks (GH#1380)
Bug Fixes
- 807091e Merge PR #1893: fix: resolve pre-existing CI failures (fmt-check, tests, lint)
- b3d2535 Merge PR #2005: fix(deps): update opentelemetry-go monorepo to v1.40.0
- 21e52ef Merge PR #2044: fix: add missing columns to SQLite-to-Dolt migration INSERT
- e0417d4 Merge PR #2067: fix: follow-up to GH#2002 counter-mode review
- 0ff6443 Merge PR #2105: fix: unify hook outdated detection
- d6f2266 Merge PR #2106: fix(routing): check local store before prefix routing
- 4044dc1 Merge PR #2107: fix(test): clean orphaned temp dirs for all test server prefixes
- f70dce8 Merge PR #2108: fix(storage): batch SQL IN-clause queries to prevent query explosion
- 373149d Merge PR #2114: fix: use doltserver.DefaultConfig for port resolution
- 088d9bf Merge PR #2116: fix: suppress git upstream warning for repos with no remotes
- b8d9e0a Merge PR #2119: fix(migrate): skip auto-migration when backend is already Dolt
- 2bb4cc6 Merge PR #2120: fix(doctor): auto-import JSONL issues on fresh clone migration
- f165654 Merge PR #2124: fix(doctor): create dolt marker directory after store creation
- a138db4 Merge PR #2135: fix(dolt): reset AUTO_INCREMENT after DOLT_PULL
- 4dd4b9b Merge PR #2144: fix(linear): include stateId in push updates to sync status changes
- 0b0586f Merge PR #2147: fix: sanitize hyphens to underscores in dolt_database name
- 6af5f5a Merge PR #2148: fix: doctor checks now use hash-derived port instead of hardcoded 3307
- e5647f7 Merge PR #2150: fix: escape # in SQLite URI paths to prevent truncation
- f2e0284 Merge PR #2151: fix(dep): traverse blocks-type edges in dep tree and graph
- 4ab9d55 Merge PR #2152: fix(init): stealth mode no longer creates Claude-specific settings
- d0c3e98 Merge PR #2153: fix: honor BEADS_DOLT_SERVER_PORT and BEADS_DOLT_SERVER_HOST in store
- 4b816c7 Merge PR #2171: fix: handle Windows connectex syscall in verifyServerTarget ECONNREFUSED check
- 72b7847 Merge PR #2173: fix(testutil): eliminate port allocation race with flock-based coordination
- cc18b0f Merge PR #2180: fix: use derived port in migrate_shim and init instead of hardcoded 3307
- a115892 Merge PR #2194: fix(doctor): clean cruft in redirect-expected dirs even without redirect file
- be4c5ae fix(ci): resolve baseline windows, lint, and fmt failures
- 16ff6fc fix(ci): resolve baseline windows, lint, and fmt failures (#2069)
- 322a084 fix(create): commit post-create metadata (deps, labels) to Dolt (GH#2009) (#2055)
- facc13a fix(dep): traverse blocks-type edges in dep tree and graph commands
- ebf78eb fix(deps): update opentelemetry-go monorepo to v1.40.0
- 2e8d77e fix(deps): update react monorepo to v19
- d9a5a72 fix(doctor): auto-import JSONL issues on fresh clone migration
- 08fc8ec fix(doctor): clean cruft in redirect-expected dirs even without redirect file
- 7e29605 fix(doctor): eliminate false warnings after clean-room bd init
- 76b0cc7 fix(doctor): exclude wisp tables from Dolt Status/Locks warnings (GH#2079)
- 5eccd6b fix(doctor): follow redirect when fixing outdated .beads/.gitignore (#2078)
- 1172880 fix(doctor): gracefully handle non-git-repo in fingerprint and role checks
- fdb45f5 fix(doctor): gracefully handle non-git-repo in fingerprint and role checks
- 5a6a3cc fix(doctor): migrate maintenance checks to Dolt for #2101
- 42ae193 fix(doctor): re-run diagnostics after --fix to show fresh verification results
- 1fddfbd fix(doctor): remove 3307 fallback in test port helpers
- 8db0cd1 fix(doctor): remove unused cfg param, warn when SQL unreachable
- 9be692e fix(doctor): respect dolt_data_dir config in all doctor checks
- 5aa2ae6 fix(doctor): skip upstream warning when no git remotes exist
- 362d82b fix(doctor): suppress expected .beads/ deletions in redirect worktrees (#2080)
- 3d62376 fix(doctor): use configured server port in federation checks
- 9e8567a fix(doctor): use configured server port in federation checks
- ee03bcf fix(doctor): use correct beadsDir path in fix/remotes.go
- 2f665cc fix(doctor): use doltserver.DefaultConfig for port resolution in openDoltDB
- b302296 fix(dolt): BEADS_DOLT_PORT always overrides config port (env > config)
- a10e9d1 fix(dolt): add connection timeouts to prevent agent hangs
- a045d08 fix(dolt): commit SQL transaction when DOLT_COMMIT finds nothing to commit
- 7c5d984 fix(dolt): commit SQL tx before DOLT_COMMIT to persist wisp data (hq-3paz0m)
- 03322a5 fix(dolt): filter dolt_ignore'd tables from CommitPending and batch message
- b579751 fix(dolt): per-issue ephemeral routing in batch creation
- a22da6f fix(dolt): remove auto-push from create and repo sync
- b199a53 fix(dolt): reset AUTO_INCREMENT counters after DOLT_PULL
- ef57293 fix(dolt): stop wisp ID double-prefixing and add wisp fallback to ResolvePartialID
- 2b354ff fix(dolt): use CLI fallback for push/pull on SSH remotes (#2118)
- 762acfa fix(doltserver): add filesystem heuristic fallback for Gas Town detection (#2076)
- 9e46fa4 fix(doltserver): remove global process count guard from Start()
- de7cb33 fix(graph): lift children to parent's layer in graph layout (GH#1748)
- 1bb7c4f fix(init): sanitize auto-detected prefix for MySQL database names
- 04a2848 fix(init): skip git/worktree guards when BEADS_DIR is explicitly set
- 51ef157 fix(init): stealth mode no longer creates Claude-specific settings
- 6a21757 fix(init): use prefix directly as database name instead of beads_ prefix
- 5907658 fix(jira): log when no matching workflow transition is available
- 0b95c75 fix(linear): correct Project sync issues from PR #2022
- 622c852 fix(linear): include stateId in push updates to sync status changes
- 0dc6bdb fix(lint): check AcceptanceCriteria field in LintIssue
- 8c0c007 fix(lint): check AcceptanceCriteria field in LintIssue
- f79111c fix(list): reparented child no longer appears under old parent
- ff178e2 fix(migrate): deterministic SQLite->Dolt fidelity + dependency/comment preservation (#2125)
- e37d0d8 fix(migrate): skip auto-migration when backend is already Dolt
- 9fe4856 fix(queries): also fall through on empty wisps results for ephemeral filter
- e10dbb9 fix(readiness): evaluate conditional-blocks deps in computeBlockedIDs()
- a08f8ba fix(regression): improve test isolation and snapshot reliability
- a5fa36c fix(regression): normalization for snapshot-based parity
- 7e28581 fix(regression): set BEADS_DOLT_SERVER_PORT in test harness env
- f14c29f fix(release): auto-publish Homebrew tap on release
- 7bc8fe1 fix(release): use brews instead of homebrew_casks for formula publishing
- 6b47996 fix(reopen): clear defer_until when reopening an issue (#2000)
- 0812123 fix(routing): check local store before prefix routing to prevent write divergence
- 68f35bf fix(storage): batch SQL IN-clause queries to prevent query explosion
- f561e9f fix(storage): exclude reparented children from dotted-ID prefix matches
- ffb09e6 fix(storage): find ephemeral beads with explicit IDs in single-bead lookups (GH#2053)
- e9f63a3 fix(storage): prevent silent dependency type overwrites on dep add
- 852bfe6 fix(test): TestShimExtract_FullMigration — remove explicit sqlite backend from test config
- ef4c85c fix(test): add skipIfNoDolt guard to all init tests that need Dolt
- 3499e3c fix(test): clean orphaned temp dirs for all test server prefixes
- 51bb656 fix(test): comprehensive Dolt skip guards across all test files
- f236701 fix(test): isolate regression tests from production Dolt server
- c3fd341 fix(test): reduce unreachable_host dial timeout to prevent CI suite timeout
- 191eed8 fix(test): skip Dolt-dependent tests when server not available
- 6940075 fix(test): skip TestInitCommand when dolt not installed
- da3b21e fix(tests): wrap raw SQL inserts in transactions and isolate env overrides
- 0f7d7d2 fix(testutil): eliminate port allocation race with flock-based coordination
- a180ade fix(testutil): move testServer var above function doc comment
- a227207 fix: BEADS_TEST_MODE blocks production port even when BEADS_DOLT_PORT set
- 68be32a fix: CI formatting, lint, and test failures blocking release
- 880b60b fix: CleanStaleTestServers now removes orphaned temp dirs and legacy PID files
- 2785358 fix: IsRunning() checks daemon PID file under Gas Town
- 32504ad fix: Makefile build and install fail on Windows when Make uses cmd.exe
- 63f4523 fix: StartTestDoltServer ignores production port when BEADS_TEST_MODE=1
- 34a9c39 fix: Windows compatibility for doltserver package
- b6ad8e7 fix: add .dolt/ to project .gitignore (#2081)
- 3700441 fix: add Gas Town daemon guardrails to dolt server operations
- 7122679 fix: add Gas Town guardrails to beads Dolt server management
- 8f7480a fix: add backpressure to clean-databases to prevent server exhaustion
- f489463 fix: add default values to wisps table NOT NULL TEXT columns (bd-5nn)
- 442bf27 fix: add dolt.auto-start config check and BEADS_DOLT_AUTO_START=1 test
- 1e33b31 fix: add field validation parity to createWisp (#2032)
- 8643ae0 fix: add missing spec_id, wisp_type, metadata columns to migration INSERT
- 93f3425 fix: add unique DB naming and cleanup to doctor test helpers (bd-cv9)
- f7fd46a fix: address Copilot review — context timeout, nolint comment, version refs
- f77aa17 fix: address Copilot round 3 — LIKE escaping, comment, symlink safety
- ae182e4 fix: address review feedback on SSH push/pull fallback
- da508e8 fix: allow bd dolt push/pull/commit to initialize store (GH#2042)
- 195d169 fix: atomic counter increment + gitignore overhaul (GH#2067)
- 75c5a36 fix: atomic counter increment, gofmt, lint, and Windows build
- 76e01b2 fix: auto-clean stale Dolt noms LOCK files on bd startup (#2059)
- 194093c fix: auto-close molecule root when all steps complete (#2200)
- 1d3c9a7 fix: auto-migrate database version on CLI upgrade for all commands
- 5f35dc7 fix: avoid SELECT * UNION that crashes Dolt on column count mismatch
- 643e4e2 fix: avoid config migration side effect in ResolveDoltDir
- 0e459ab fix: avoid redundant worktree gitignore entries
- f417eed fix: bd init --stealth sets no-git-ops: true in config (GH#2159)
- 4394fdc fix: centralize hardcoded "beads" database defaults to configfile.DefaultDoltDatabase (bd-tcn)
- a59b368 fix: clean up pre-existing phantom DBs in tests expecting StatusOK (bd-8we)
- fe30a71 fix: clean up stale jsonl_export references in test files (bd-9ni.3)
- d510a7f fix: complete explicit-ID ephemeral routing across all storage layers (GH#2053)
- 301952a fix: connect directly to Dolt server in clean-databases command
- f473b75 fix: counter mode parity for transaction path, remove dead code (#2013 follow-up)
- a87b410 fix: create dolt marker directory after store creation in doctor --fix
- a1933f7 fix: deduplicate worktree redirect logic from PR #1995 followup
- 651bb13 fix: doctor and fix tests now use isolated dolt server
- 2c206f1 fix: doctor checks use hash-derived port instead of hardcoded 3307
- 56f4c98 fix: doctor phantom detection and INFORMATION_SCHEMA crash (#2091) (#2093)
- fd6f9bd fix: doctor validate checks use server config for Dolt connections (bd--9w6)
- 6df4a28 fix: enable Dolt auto-start in NewFromConfigWithOptions
- 15e2a26 fix: escape '#' in SQLite URI paths to prevent truncation
- b21ec9e fix: exclude zombie/defunct processes from isDoltProcess checks
- d220955 fix: exit non-zero when all close/update attempts fail (GH#2014)
- 228dc21 fix: expand stale database prefixes and fix per-op timeout in clean-databases
- 6dce899 fix: export events.jsonl with full re-export instead of incremental append (bd-qnd)
- 299dd0d fix: fall through to issues table when wisps table missing
- 408333f fix: firewall test databases from production Dolt server (Clown Shows #12-#18)
- 7fd9595 fix: fix comment wording and honor caller precedence over config.yaml
- 9a6a860 fix: fix server adoption in dolt anti-proliferation guardrails
- b68d555 fix: flush Dolt working set before server stop to prevent data loss
- c8c4ab6 fix: gofmt alignment in bd doctor agent mode
- 63418ae fix: guard CREATE DATABASE to prevent shadow databases on wrong server
- 8362ddf fix: handle NULL created_by in issue scan to prevent bd duplicates crash
- 52eaa35 fix: handle Windows connectex syscall in verifyServerTarget ECONNREFUSED check
- 49aed46 fix: harden SQLite→Dolt migration safety, old-schema compat, and doctor recovery (#2156)
- 5022da9 fix: harden migration safety — verify DB target, deduplicate, spot-check data
- 70c2b0b fix: harden test dolt server startup with retry loop and longer timeout
- 9c903d0 fix: honor BEADS_DOLT_SERVER_PORT and BEADS_DOLT_SERVER_HOST in store connection
- ea8e9c8 fix: honor caller AutoStart value and add test coverage
- 21601cf fix: ignore unhandled conn.Close() error in migrate_safety
- d81badd fix: include labels, deps, and parent in bd ready --json output (bd-xgso)
- 6704274 fix: include waits-for deps in bd blocked output (GH#2043)
- fbe10e5 fix: increase TestRun_Async polling timeout to 10s (bd-ldi)
- e447ab2 fix: isolate id_parser_test.go from shared Dolt server (bd-19i)
- 3a0e582 fix: isolate protocol tests with unique per-test Dolt databases
- 2e1df31 fix: make Commit() tolerate 'nothing to commit' like other Dolt operations
- 4891d87 fix: make migration 007 resilient to schema evolution differences
- 045b627 fix: migration port mismatch and UX improvements for Windows migration path
- e95a07f fix: move syncCommandContext() before staleness check so --allow-stale works (bd-f49)
- 37e428d fix: normalize issue_prefix in transaction and import paths to prevent double-hyphen IDs
- d99ad71 fix: normalize issue_prefix to prevent double-hyphen bead IDs
- eb84f6f fix: one dolt server per town, not per worktree
- 63e14d9 fix: optimize JSONL import memory usage and emptiness check
- 8f260f0 fix: panic if BEADS_TEST_MODE=1 without BEADS_DOLT_PORT (bd-zt7)
- a388c3e fix: prevent OSC escape leaks in git hooks, detect stale hooks in doctor (GH#1303, GH#1466)
- 9746220 fix: prevent closed-store panics and consolidate test suites (bd-1rh)
- 59898e8 fix: prevent storage/dolt tests from hitting production Dolt server
- 376122b fix: prevent test suite from leaking databases onto production Dolt server (#2089)
- efdd6f7 fix: prevent tests from connecting to prod Dolt server
- 2b1d84d fix: propagate notes field from formula steps to issues (#2155)
- 83a02d8 fix: protocol tests now use isolated Dolt server instead of prod
- 2b83768 fix: read dolt.auto-start from beadsDir for library consumers; harden tests
- fae207e fix: reject empty and whitespace-only comment text
- d3e581b fix: reject empty and whitespace-only comment text
- 13190ef fix: reject empty title and empty label on update/label add (GH#1994)
- 83b3991 fix: reject flag-like positional args in bd create (bd-2c0)
- c9fabf2 fix: reject non-positive --days flag on bd stale
- 9b995e3 fix: reject non-positive --days flag on bd stale
- 9dfac4f fix: remove JSONL gitignore rules, merge driver, and issues tracking check (bd-9ni.6)
- b69ae5b fix: remove JSONL references from core Go files (bd-9ni.2)
- c980b96 fix: remove JSONL storage functions and config field (bd-9ni.2)
- 8569471 fix: remove dead JSONL converter examples (bd-9ni.5)
- e79f9a1 fix: remove dead probeStale code, deduplicate noms LOCK cleanup (#2059 follow-up)
- e2375da fix: remove extra arg from formatHookMigrationPlan test calls (bd-ddn)
- adb8e76 fix: remove operational constants from defaultConfig in schema.go (bd-1lc)
- f625c95 fix: remove redundant tx.Commit() after DOLT_COMMIT in transactions
- befc254 fix: remove stale bd export/sync references from prime output (GH#2007)
- 5d9788a fix: remove stale stderr assertion in TestInitDoltMetadataNoGit
- eb451c3 fix: remove unused hasRedirect param from scanCruftBeadsDir
- 1f8cb03 fix: remove unused hasRedirect parameter from scanCruftBeadsDir
- 5002b08 fix: remove unused hasRedirect parameter from scanCruftBeadsDir
- 27680fa fix: repair migrations_test.go for modern dolt versions
- ea329d1 fix: replace SHOW DATABASES LIKE with exact-match iteration
- 1afd815 fix: replace deprecated GetDoltServerPort() with doltserver.DefaultConfig()
- 162ab27 fix: replace information_schema queries with SHOW COLUMNS/TABLES to avoid stale catalog crashes (bd-ggnx)
- aadef18 fix: replace port-fallback with kill-before-start to prevent server proliferation
- 2276c5f fix: report correct status when reopen/undefer is a no-op (GH#2037)
- 041b74b fix: resolve CI failures on main (6 tests, formatting)
- 18e70e1 fix: resolve beadsDir correctly when dolt-data-dir is set
- f44d580 fix: resolve gofmt alignment and errcheck lint warnings
- 5a07c92 fix: resolve gofmt alignment and gosec lint issues blocking CI
- fb8ca5f fix: resolve gofmt and golangci-lint CI failures
- 42cd5db fix: resolve gofmt struct field alignment in git_test.go
- 523ac14 fix: resolve lint errors (unparam, errcheck)
- c879f33 fix: resolve lint errors blocking all CI (gosec G304, unused param)
- 7ad29a0 fix: resolve lint issues in hook migration planner
- 162707e fix: resolve pre-existing CI failures (gt-ngoe)
- fd21fa4 fix: restore bd init --from-jsonl for server mode (bd-phzy)
- c3d011a fix: restore sandbox guard in maybeAutoPush (#2192)
- dfcca9b fix: revert FindBeadsDir in PersistentPreRun to fix test guard
- 65858d6 fix: revert scanIssueFrom wrapping to preserve sql.ErrNoRows chain (bd-bwk2)
- d741172 fix: rewrite GetNewlyUnblockedByClose to avoid nested JOIN subquery (bd-o23)
- 2345c82 fix: rewrite protocol tests to use bd show --json instead of deleted bd export
- 3f147b6 fix: root package tests now use isolated dolt server
- b76276f fix: route auto-backup queries through retry-wrapped DoltStore methods
- 07e98f1 fix: route promoted wisps to issues table in partitionByWispStatus (bd-ftc)
- 838b79b fix: route wisp lookups through wisps table in storage functions (bd-w2w)
- 70424e4 fix: sanitize hyphens to underscores in dolt_database name (GH#2142)
- 781f1c9 fix: sanitize prefix hyphens to underscores for SQL database name (bd-qy0)
- 87fba0c fix: set BEADS_TEST_MODE=1 in all test server setups for DB isolation
- 987c227 fix: skip gt dolt start fallback in test mode (bd-kyu)
- 7a75f1f fix: skip local-first check in routing when prefix maps to different database (bd-7vk)
- 7cb0e0f fix: skip maybeAutoPush on read-only commands (GH#2191)
- 612b370 fix: suppress git upstream warning for repos with no remotes
- 68e224f fix: unexport DefaultInfraTypes to prevent mutation inconsistency (#2193)
- 59ff8d9 fix: unify hook outdated detection between CheckGitHooks and hooksNeedUpdate
- c48f544 fix: update stale SQLite comments in doctor package (bd-516)
- d19a3a1 fix: update stale SQLite error messages in perf_dolt.go (bd-gv7)
- 07e60f1 fix: update test fixture to use backend instead of sqlite_version (bd-veh)
- 18fe2cf fix: update test to match AddDependency type-change rejection (bd-7z5)
- ba08e97 fix: update version scripts for section markers, suppress unused param lint
- d78d0f1 fix: use NOT IN exclusion for active status checks so custom statuses are visible (bd-1x0)
- 7ea3b7d fix: use derived port in migrate_shim and init instead of hardcoded 3307
- 046fa03 fix: use doltserver.DefaultConfig for port resolution across codebase (#2112)
- 62e9485 fix: use net.JoinHostPort for IPv6-safe address formatting (bd-0tn)
- 2ff387b fix: use repo-relative paths in backup git operations, add findGitRoot tests
- 44fd610 fix: use types.StatusClosed constant and config-driven thresholds in compact.go (bd-17p)
- 6254803 fix: use upsert logic for issue insert to prevent duplicate primary key errors (GH#2061)
- aebbc5a fix: validate JSON metadata on create path to match update path
- 2a89def fix: validate JSON metadata on issue creation path
- 3ef50b8 fix: validate status on update against built-in + custom statuses (#2021)
- df47a96 fix: warn when bd defer --until date is in the past
- f4a858c fix: warn when bd defer --until date is in the past
- 4891ec3 fix: wire up auto-fix for git merge driver %L/%R placeholders (bd-7yg)
- acf01b6 fix: work around Dolt max1Row optimization in dolt_history_issues query (bd-d3j)
- b837a23 fix: wrap doctor fix DELETEs in explicit transactions for autocommit-OFF safety
Others
- f5af65b Adds the option to use the Jira V2 api
- d8bcd8d Makes API calls to transition the jira status when the local beads status also changes
- 0b4fffe Merge PR #2001: test for reparented child dotted-ID precedence
- 6fa125b Merge PR #2068: docs(setup): use --claim in generated templates
- 1c60cf6 Merge PR #2104: docs(claim): fix resume semantics and finalize review nits
- e54b89a Merge PR #2109: docs: use make install instead of go build
- 3e04a92 Merge PR #2131: fix "no store available" issue with "bd dolt pull"
- 1c45a3c Merge PR #2138: Remove dolt embedded mode docs
- f0a38c4 Merge PR #2149: Update nix so beads builds (with latest go)
- 9b95302 Merge main: resolve gosec comment style conflicts
- 56c423b Merge polecat/jasper/bd-d3j: work around Dolt max1Row optimization in history query
- 73b6446 Merge polecat/obsidian/bd-ddn: fix extra arg in formatHookMigrationPlan test calls
- cec066f Merge polecat/obsidian/bd-qnd@mm703jdp: fix stale events.jsonl export (bd-qnd)
- 17160e4 Merge polecat/onyx/bd-5nn: add default values to wisps table NOT NULL TEXT columns
- 76f1c0a Merge polecat/onyx/bd-6bq: speed up doctor tests via branch-per-test isolation
- b393030 Merge polecat/opal/bd-ldi: increase TestRun_Async polling timeout
- 9a9f92d Merge polecat/opal/bd-xmf: speed up cmd/bd tests with shared DB + branch-per-test isolation
- 1c4c9a5 Merge polecat/quartz/bd-8we: clean up pre-existing phantom DBs in tests
- 989b485 Merge remote-tracking branch 'origin/main' into fix/doltserver-windows-compat
- 61a1722 Merge remote-tracking branch 'origin/main' into fix/doltserver-windows-compat
- bbcb2c6 Merge remote-tracking branch 'origin/main' into fix/doltserver-windows-compat
- ecddbcf Merge remote-tracking branch 'origin/polecat/garnet/bd-0tn@mm5kyq8s'
- 3f439d5 Merge remote-tracking branch 'origin/polecat/jasper/bd-f3oo@mm17cnwi'
- 582b190 Merge remote-tracking branch 'origin/polecat/jasper/beads-69o@mm0568gv'
- 517ae19 Merge remote-tracking branch 'origin/polecat/obsidian/beads-2zj@mm055izh'
- 3d97396 Merge remote-tracking branch 'origin/polecat/ruby/bd-tk8y@mm5l1669'
- 7bca403 Merge remote-tracking branch 'origin/polecat/topaz/bd-qy0@mm5kyivk'
- 7d3c9b3 Re-add support for custom jira statuses and field maps
- 6c90545 Remove dolt embedded mode docs
- 4673b00 Update nix so beads builds (with latest go)
- f12b7c6 add "federation." to matched prefixes so that we can run "bd config set federation.remote gs://test-beads-data/prj-a"
- 6fde394 bd: backup 2026-02-28 05:17
- 6ad290e bd: backup 2026-02-28 05:32
- 2607367 bd: backup 2026-02-28 05:47
- 7537597 bd: backup 2026-02-28 06:02
- ab005f5 bd: backup 2026-02-28 06:17
- bfc4628 bd: backup 2026-02-28 06:32
- ab992cc bd: backup 2026-02-28 07:05
- a12e084 bd: backup 2026-02-28 07:37
- d16e975 bd: backup 2026-02-28 07:52
- b0189b2 bd: backup 2026-02-28 08:07
- 85710c9 bd: backup 2026-02-28 08:22
- 9a113d2 bd: backup 2026-02-28 08:45
- 6840dff bd: backup 2026-02-28 09:35
- 10b6325 bd: backup 2026-02-28 09:51
- 6625f4a bd: backup 2026-02-28 12:32
- 1bcb03c bd: backup 2026-02-28 13:41
- 835a86e bd: backup 2026-02-28 13:56
- 87d4b10 bd: backup 2026-02-28 14:14
- 7e12022 bd: backup 2026-02-28 14:56
- 46ac2d0 bd: backup 2026-02-28 15:14
- 051bb34 bd: backup 2026-02-28 15:29
- ef356a0 bd: backup 2026-02-28 15:46
- 85a4a05 bd: backup 2026-02-28 16:42
- cd998dd bd: backup 2026-02-28 16:57
- 10cdabc bd: backup 2026-02-28 17:12
- 4ca5623 bd: backup 2026-02-28 17:27
- 60df1c3 bd: backup 2026-02-28 17:42
- bae915d bd: backup 2026-02-28 18:06
- ff5e3b5 bd: backup 2026-02-28 18:23
- 7a76f40 bd: backup 2026-02-28 18:38
- 99a6f9f bd: backup 2026-02-28 18:53
- 1407423 bd: backup 2026-02-28 19:08
- fe8f424 bd: backup 2026-02-28 19:29
- 4c57fbc bd: backup 2026-02-28 19:44
- 03fc994 bd: backup 2026-02-28 20:04
- 294f0f6 bd: backup 2026-02-28 20:19
- 1798509 bd: backup 2026-02-28 20:34
- 3576b26 bd: backup 2026-02-28 20:49
- 574213f bd: backup 2026-02-28 21:04
- 99fb9fa bd: backup 2026-02-28 21:19
- 29abd2a bd: backup 2026-02-28 21:34
- c13a9c5 bd: backup 2026-02-28 21:49
- 9819a0c bd: backup 2026-02-28 22:06
- 4aff5cf bd: backup 2026-02-28 22:21
- ec81dd8 bd: backup 2026-02-28 22:42
- 099245f bd: backup 2026-02-28 22:57
- a06640a bd: backup 2026-02-28 23:12
- 7426a75 bd: backup 2026-02-28 23:27
- 0c4df44 bd: backup 2026-02-28 23:42
- ce0923f bd: backup 2026-02-28 23:57
- 2769a08 bd: backup 2026-03-01 00:12
- 2c9e46c bd: backup 2026-03-01 00:33
- 746fed7 bd: backup 2026-03-01 00:49
- daef91c bd: backup 2026-03-01 02:21
- 0cad7f4 bd: backup 2026-03-01 02:36
- 1203d2b bd: backup 2026-03-01 02:51
- 9c50056 bd: backup 2026-03-01 03:06
- a25e60c bd: backup 2026-03-01 03:21
- a7b025a bd: backup 2026-03-01 03:36
- 1e2c605 bd: backup 2026-03-01 03:51
- de34851 bd: backup 2026-03-01 04:06
- d5d60de bd: backup 2026-03-01 04:21
- b392a7d bd: backup 2026-03-01 04:36
- 63d8944 bd: backup 2026-03-01 04:51
- 3aef63c bd: backup 2026-03-01 05:07
- 422e687 bd: backup 2026-03-01 05:22
- 7d2dc1f bd: backup 2026-03-01 05:45
- fb09b01 bd: backup 2026-03-01 06:00
- 8b7f9c2 bd: backup 2026-03-01 07:09
- 8ccd3fd bd: backup 2026-03-01 08:01
- f797c2d bd: backup 2026-03-01 08:16
- 385c0c0 bd: clean JSONL export from Dolt (post-reap, post-pollution cleanup)
- b92ce05 chore(deps): update actions/cache action to v5
- a6f73dd chore(deps): update actions/cache action to v5
- f5c2da1 docs(claim): address review nits and unblock resume semantics
- f9b306f docs(claim): standardize start-work semantics to --claim (#2070)
- fbc90a3 docs(claim): use --claim for start-work flows across docs, examples, and templates
- b59486c docs(deps): add DEPENDENCIES.md covering dependency system and gates
- 4f4cc41 docs(faq): clarify atomic self-pick claim wording
- 06cc556 docs(faq): note optional assignee with claim
- 999d158 docs(faq): reorder assigned-vs-claim note
- 95c86e1 docs(faq): require assignee in claim example
- 05727ef docs(faq): restore assigned-work flow and clarify claim semantics
- 8c6375f docs(otel): add OTel architecture and data model design docs
- f41397b docs(otel): correct data model doc against source code audit
- 56a5ae6 docs(otel): re-verify data model appendix line numbers against main@371df32b
- cef38b2 docs(otel): remove absent metrics section from data model appendix
- 5e0602a docs(regression): Phase 3 triage — 95+ pass, 15 fail (all known bugs)
- b966c10 docs(regression): add GH issue numbers for BUG-7, BUG-8, BUG-13
- 98707aa docs(regression): fix DISCOVERY.md to reference DECISION PRs not issues
- 4a3966c docs(regression): session 6 discovery — stale, sort, reparent cycle, overdue
- f89af04 docs(regression): session 6b — reversed ranges, negative limit, duplicate
- 3a937ba docs(regression): session 6c — whitespace title, config ambiguity, dep rm
- bf03c23 docs(regression): session 7 — deferred state, comma status, filter conflicts
- 9bac57a docs(regression): session 7b — protocol tests for status, all, type, show
- a683708 docs(regression): session 7c — empty comments, past due date, ID filter
- 1b2b430 docs(regression): session 8 — lifecycle validation, ready filters, duplicate cycles
- 8e0a57c docs(regression): session 8b — stale edge, search comma-status, type filter
- 4e15ee4 docs(regression): session 8c — blocked parent, label idempotency, dep tree
- 547bed2 docs(regression): update DISCOVERY.md with PR status and bug triage
- 6a70a3e docs(setup): use --claim in generated agent templates
- fba1d3b fix "no store available" issue with "bd dolt pull".
- 74c968c fix tests: stop version tracking from polluting repo metadata
- 1f6ab00 fix(doctor,git): isClaudePresent gate + JJ/git boundary detection
- d61445e format with go
- f78df9b merge: sync docs/claim-start-work-followup with upstream main
- a266db9 perf(doctor): speed up tests from 44s to ~12s via branch-per-test isolation
- 4237ebb perf(test): consolidate messaging and dep test suites (bd-1rh)
- 793f3f2 perf: speed up cmd/bd tests with shared DB + branch-per-test isolation (bd-xmf)
- 5675a3c perf: stream backup exports to disk, reduce allocations
- 332b4f4 refactor(output): simplify title-length semantics and default to 255
- 765ac3c refactor(protocol): split protocol_test.go monolith into thematic files
- 66574d8 refactor: consolidate SSH detection and CLI remote helpers into doltutil
- 5a5cde0 refactor: consolidate duplicate findBeadsDir to use beads.FindBeadsDir (bd-74w1)
- 97fc30d refactor: convert doctor test fixtures from SQLite to Dolt (GH#bd-o0u.1)
- bcb22df refactor: extract ToRemoteNameMap() helper for DRY
- 8ee993a refactor: remove JSONL references from core Go files (bd-9ni.2)
- 5e243b1 refactor: remove JSONL storage layer from core Go files (bd-9ni.2)
- 7d7da19 refactor: remove SQLite from doctor/database.go and doctor/deep.go (bd-o0u.2)
- 70d7c62 refactor: remove SQLite from doctor/integrity.go and config_values.go (bd-o0u.3)
- ce0ed23 refactor: remove SQLite from doctor/migration*.go and fix/validation.go (bd-o0u.5)
- 7d4a18e refactor: remove SQLite from doctor/perf.go, multirepo.go, installation.go (bd-o0u.4)
- 5f023a1 refactor: remove dead SQLite helpers, connstring.go, and --to-sqlite flag (bd-o0u.6)
- 6f9fcc1 refactor: remove duplicate DB() method from DoltStore (bd-ar6)
- cc55e34 refactor: surgical JSONL removal from core Go files (bd-9ni.2)
- c1d436e revert: remove auto-push to git remote (broken)
- 4654c42 style: fix comment alignment in resolveAutoStart priority list
- f9af171 style: fix comment indentation in TestResolveAutoStart
- ef43ebe style: fix gofmt alignment in messaging_test.go
- 02e37c7 style: fix gofmt errors
- 41cd095 style: fix gofmt formatting in discovery_test.go
- c80dfa9 style: normalize indentation in TestGetStringFromDir
- fc6a921 test(discovery): add tests for external blocker and conditional-blocks gaps
- 2bc8dd2 test(discovery): session 3 — five new candidate-only seams
- d6ebf85 test(discovery): session 4 — close guard bypass, cycles, supersede, defer
- 372e724 test(discovery): session 4 — close guard bypass, supersede reopen, defer past date
- e4cfbee test(discovery): session 5 — dead label filter, flag conflicts, filter bypass
- bc6733b test(doctor): skip maintenance cgo tests when dolt test server is unavailable
- b5c5e49 test(dolt): verify AUTO_INCREMENT reset after pull
- e2ded3a test(protocol): split blocked-status test into separate file
- 4e938f7 test(wisp): add regression tests for ephemeral auto-ID generation (GH#2087)
- 1c285fd testutil: migrate test Dolt server from binary-spawning to testcontainers