beads v1.0.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
- 7f0a165 feat(docs): version Docusaurus site and align llms-full with snapshots (#3033)
- f03d4e7 feat(issues): add started_at timestamp (GH#2796) (#3206)
- 3fa1038 feat(telemetry): add pool metrics for shared-server diagnosis (GH#3140) (#3172)
- e39f041 feat: add 'bd batch' for atomic multi-op transactions (#3165)
- cc1cb9e feat: add 'bd config drift' and 'bd config apply' commands (#3086)
- d802687 feat: add --issues flag, push pull subcommands, and --parent port (#2975)
- f5ae2fc feat: add --label and --label-any filtering to bd orphans (#3026)
- ef621e5 feat: add IssueIDs filter to SyncOptions for selective sync (#2957)
- 4bce933 feat: add OpenBestAvailable to public API (#3143) (#3149)
- 2c295f0 feat: add bd config show with unified provenance view (bd-934) (#3084)
- fa87dd2 feat: add global beads_global database for shared-server mode
- e4fca03 feat: add migration test harness for cross-era upgrade fidelity (#3067)
Bug Fixes
- ebcb901 fix(bootstrap): commit issue_prefix to config table (GH#3216) (#3247)
- 4aa573d fix(bootstrap): write metadata.json and config.yaml after sync clone (#3203)
- df2078b fix(ci): collapse multiline expression in cross-version-smoke workflow (#3189)
- 94992a2 fix(ci): correct action versions in cross-version smoke workflow
- 66af622 fix(ci): drop ICU linkage from test jobs, use -tags gms_pure_go everywhere (#3240)
- ec95e7c fix(ci): memoize bd test binary to avoid macOS 10m timeout (#3273)
- 530ffbc fix(ci): remove BEADS_TEST_MODE override and add gms_pure_go tag in migration-test (#3106) (#3108)
- 9211e73 fix(ci): remove Microsoft apt repos before apt-get update (#3224)
- e3a3bb9 fix(ci): resolve lychee baseUrl mismatch with symlink-based root directory (#3105)
- d5d42bf fix(config): honor BEADS_DIR for YAML-only config file resolution (#3104)
- 7fe590d fix(docs): repair broken links failing Deploy Documentation CI (#3103)
- cace7c5 fix(dolt): pass branch to DOLT_PULL to match DOLT_PUSH behavior (#3137)
- 3c7dec4 fix(dolt): reject empty database name in embeddeddolt.New (GH#3113) (#3179)
- f9ec985 fix(dolt): resolve shared-server CLI dir from shared root (#3223)
- 9fa62ee fix(doltserver): rotate dolt-server.log at startup to cap size (#3161)
- 4e0a654 fix(gitlab): wire issue link dependencies into sync pull (GH#2645) (#3202)
- bc613d8 fix(hooks): sanitize husky hooks when copied into beads-managed dir (GH#3132) (#3208)
- f3d4293 fix(init): sanitize dots in metadata.json DoltDatabase and add early validation (#3129)
- 7ada790 fix(list): emit informative truncation hint in all output modes (GH#3212) (#3243)
- 129c3ea fix(mcp): detect Dolt-backed projects in workspace discovery (GH#2997) (#3207)
- e85475d fix(mcp): widen DependencyType to str so all bd dep types validate (#3133)
- 01a3767 fix(mol): use word-boundary regex in distill applyReplacements (#3157)
- 2520c2b fix(nocgo): correct --mode flag in store_factory_nocgo.go error messages (bd-ruk) (#3010)
- b404538 fix(npm): close download streams in postinstall (#3228)
- 696ed0e fix(update): set status=deferred when --defer is provided (GH#3233) (#3241)
- f58bd1d fix: add embeddeddolt/ to .beads/.gitignore template (GH#2994) (#2998)
- 8269ab7 fix: add gms_pure_go tag to linux-amd64 build to remove ICU runtime dep (#2991)
- cadf02e fix: add worktree fallback to countExistingIssues
- e46318e fix: address PR review — replace hardcoded version 23 with LatestVersion()
- 7b02edd fix: allow cross-prefix dependency targets in bd dep add/remove
- a58149d fix: auto-commit config table writes in remember, forget, and config commands (bd-g8p) (#3052)
- 9ab8a79 fix: auto-import issues.jsonl on empty embedded database after upgrade (#2999)
- d46a84b fix: avoid nil-pointer panic in bd dolt pull (embedded mode) (#3148)
- c98e1e7 fix: backfill empty custom_types and custom_statuses tables (#3012)
- 5b53faa fix: backward-compatible JSONL import for all pre-v1.0 formats
- ed91503 fix: backward-compatible JSONL import for all pre-v1.0 formats (#3021)
- f3c1551 fix: bootstrap respects shared-server mode for database path (#3016)
- eee8514 fix: bootstrap uses parent workspace db name when local .beads missing (#3029) (#3083)
- 05734b2 fix: commit test data and use --from-jsonl for JSONL recovery in smoke test
- e54bc62 fix: correct 'bd config' hints to 'bd config set' in error messages (#3141)
- dee815a fix: custom status and type validation falls back to config when tables are empty
- 22aacc3 fix: custom status validation falls back to config when table is empty (#2985)
- ebbf720 fix: detect transitive dependency cycles in bd mol bond (#2719) (#3111)
- 64e504d fix: enable auto-export by default and add init prompt (GH#2973) (#3204)
- 31d5123 fix: ensure wisp tables exist after bootstrap clone
- 1a218aa fix: explicitly disable TLS in Dolt connections when not configured (#3107)
- afbfcbe fix: export JSONL in pre-commit hook for atomic code+issues commits (#3121)
- af12d6f fix: export data before clearing metadata in server→embedded migration (#3075)
- a3b323d fix: fall through to config string when custom_statuses table is empty
- d49c503 fix: gate doctor tests on container port, not env var (GH-3087)
- 4bdf39e fix: handle JSON array format in SyncCustomTypesTable
- 63770b6 fix: handle read-only Go module cache files in test temp dir cleanup
- b599839 fix: handle release archives that extract into a subdirectory (#3167)
- 15f8a14 fix: harden bootstrap database naming and reject empty db param (GH#3029)
- 05a9069 fix: include comment bodies in bd export JSONL output
- ad285ad fix: include comment bodies in export and fix same-second dedup on import (#3009)
- a3923ed fix: narrow cross-version smoke CI triggers and warn on high skip rate
- 23bfd05 fix: parse create output for versions without --silent flag
- 8d94faf fix: preserve dependencies and labels in SQLite-era JSONL migration (#3079) (#3082)
- f0adda4 fix: prevent silent fallback to embedded mode when shared-server is active (GH#2949)
- f700796 fix: proper failure reporting for cross-version smoke test
- 98d8e72 fix: queue concurrent embedded Dolt callers instead of failing (#3005)
- 7916e02 fix: remove ICU runtime dependency from release binaries (#3066)
- 8ccb82d fix: remove duplicate testutil import in validation_test.go
- 9d0b7ad fix: remove nonexistent -i flag from bd import references (#3200)
- 70e1596 fix: remove redundant os.Stat check after FindBeadsDir
- 6686e1d fix: remove set -e to prevent dolt server crashes killing the script
- c911055 fix: remove stale worktree guard in rename-prefix
- 164e251 fix: remove unsupported stepping-stone migration paths (#3073) (#3110)
- 5d9e878 fix: replace CWD-only check with walk-up in FindBeadsDir (GH#3027)
- d588fb5 fix: replace blanket .claude/ gitignore with specific ignores (GH#3182) (#3190)
- f443df1 fix: resolve CI failures from flock, version bump, and lint (#2981)
- 9ed1897 fix: resolve
go installfailure on Windows due to ICU header dependency (#3013) (#3112) - a6a28d8 fix: resolve backup_export conflict in bd backup init/remove (#2962) (#2980)
- 234da63 fix: resolve remaining 11 CI test failures (#2983)
- 97fea94 fix: respect dolt.auto-start=false, prevent rogue server spawns (#3058)
- 7e7104f fix: restore general-purpose CLAUDE.md, relocate Emma rig notes (GH-3078) (#3169)
- 652d321 fix: set FS_NOCOW_FL on .beads/ at init to avoid btrfs kworker thrashing (#3162)
- 64678bc fix: show diverged-history guidance on auto-push failure (#3138)
- 935a200 fix: silence dolt sql-server NewConnection log spam (#3160)
- 9035839 fix: smoke test mutations + add PR gate trigger (GH-2968)
- b8ec14d fix: surface auto-export and auto-backup errors to stderr (#3122)
- 0537368 fix: unblock SQLite-era migration by clearing old DB before init (#3070) (#3077)
- 4fc0459 fix: unblock v0.62.0 migration test by allowing Dolt auto-start (#3072) (#3076)
- 1cbde7e fix: update steveyegge references in claude-plugin layer (#3060)
- 9b3afbd fix: use American English spelling for misspell linter
- 145f1a4 fix: use CGO_ENABLED=0 for pre-commit linter
- c2c2306 fix: use FindBeadsDir for worktree-aware reset
- 65f7521 fix: use bd daemon/dolt stop for reliable server cleanup
- b93cb4b fix: use default database name when metadata.json is missing (#2988) (#2989)
- 0f6c306 fix: use main repo root for hooks path in worktrees
- 7226e2c fix: use type "molecule" for formula root beads instead of "epic"
- 33109be fix: use worktree fallback in bootstrap path synthesis
- 355cc9f fix: use worktree-aware beads dir in doctor checks
- feb2d5d fix: worktree-aware fingerprint prevents repo ID mismatch (GH-2867) (#3123)
- 785253b fix: worktree-aware path resolution in config validate and preflight
- 1ba4ff3 fix: write metadata.json in ensureBeadsDirForPath + contributor tests (#2988) (#2996)
Others
- 3cf374e +# Beads / Dolt files (added by bd init) +.beads-credential-key
- eaa6a8b /.goreleaser.yml: make windows use embedded and cgo (#2990)
- bf028bf /cmd/bd/context_cmd.go: keep deprecated field
- 6385508 /cmd/bd/dolt.go: fix remote overwrite
- 1444c6c /cmd/bd/shared_server_integration_test.go: log times in verbose mode
- 9778764 /cmd/bd/shared_server_integration_test.go: run behind env var
- 5b81cbc /cmd/bd: some cleanup
- c96008f /cmd/bd: unify behavior of bd init and bootstrap
- b483fbb /internal/storage/dolt: optimize schema migrations
- 457df7a /internal/storage/embeddeddolt: make backfill schema robust
- f6ef511 /internal/storage/issueops/ready_work.go: fix time
- 3aef853 /internal/storage/schema/schema.go: fix test
- 9aa9b82 /internal/storage/schema/schema.go: fix tests
- 40e5eb1 /internal/storage/schema: use shared schema package
- f74f9f2 /internal/storage/{dolt,embeddeddolt}: update embedded schema to match dolt server
- 65dbdbf /internal/storage: fix migration issue
- ab9c2ff /internal/storage: pr feedback
- f079786 /internal/storage: remove conflicting column on schema migration table
- b4284a2 /internal/storage: shared ensure ignored
- cbfdc6b /internal/testutil/testdoltcommon.go: use latest dolt
- 1684130 /{cmd,docs,internal}: get bootstrap and init working correctly and remote agnostic
- fef1d18 /{cmd,internal,scripts}: use dsn helpers
- 4b3b06e /{cmd,internal}: fix lint
- 50f715b /{cmd,internal}: move local only state to dolt ignored tables
- c71930d /{cmd,internal}: pr feedback
- 0c2dfc1 /{cmd,internal}: shared server concurrency tests
- a084972 /{cmd,internal}: some cleanup
- 7ada135 Add az:// (Azure Blob Storage) as a recognized Dolt remote URL scheme (#3101)
- 9730a89 Add documentation link and deepwiki reference. (#2978)
- 8e9120f Add release stability gate for upgrade safety (GH#2951) (#2963)
- 8c8329a Add side-effect hints for config set/unset commands (#3089)
- f09970f Allow BEADS_DOLT_READY_TIMEOUT to override waitForReady timeout (#3188)
- fda23dc Default test/install helpers to gms_pure_go (#3259)
- 69a13b6 Fix GetCustomTypes swallowing DB errors, breaking bd update --type for custom types (#3159)
- 2568b6b Fix bd list watch hierarchy consistency (#3236)
- ed78d03 Fix doctor hangs in non-interactive and artifact scans (GH-3092) (#3109)
- 9b4896f Fix formula search paths for worktree-aware beads dirs (#3235)
- 27b7acc Fix init leaving beads.role unset in edge cases (GH#2950) (#2964)
- b6e5563 Fix jira.priority_map.* config not read on push/pull (#3130)
- 03bb3e1 Fix shared-server init mode selection
- ef6c6e3 Follow up remaining runtime .beads fallbacks after GH#3124 (#3183)
- e42f498 Improve config list: dynamic yaml key discovery and comprehensive env var detection (#3088)
- 8ec8f70 Update nix install for v1.0.0 (#3064)
- 4fe05a3 Use getting started docs as bugs to fix (#3034)
- 1b9b26c Warn on shared-server embedded metadata mismatch
- 21910a8 [codex] Fix installer ICU/CGO fallback handling (#2965)
- c99cf4b add bd init fallback when candidate suggests it
- 48f611a add cross-version smoke test for upgrade compatibility (GH#2968)
- 149938a add migration fallback and prefix with special chars
- 5eca896 add pull_request trigger to cross-version smoke test workflow
- c9cefec add tag trigger to cross-version smoke test workflow
- dfd1add chore(bootstrap): remove unreachable nil-cfg guard in finalizeSyncedBootstrap (#3222)
- 69eefd3 chore(deps): bump fastmcp from 3.2.0 to 3.2.3 in /integrations/beads-mcp (#3173)
- 5530a19 chore(deps): bump github.com/anthropics/anthropic-sdk-go (#3178)
- 1fd569f chore(deps): bump github.com/testcontainers/testcontainers-go (#3176)
- 76229e7 chore(deps): bump github.com/testcontainers/testcontainers-go/modules/dolt (#3177)
- c64047a chore(deps): bump go.opentelemetry.io/otel from 1.42.0 to 1.43.0 (#3002)
- 7cd9811 chore(deps): bump go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp (#3174)
- 88e77e3 chore(deps): bump go.opentelemetry.io/otel/exporters/stdout/stdouttrace (#3003)
- 41f6b2a chore(deps): bump go.opentelemetry.io/otel/sdk from 1.42.0 to 1.43.0 (#3004)
- 055eefe chore(deps): bump golang.org/x/sys from 0.42.0 to 0.43.0 (#3175)
- 6f15e70 ci: add merge_group support and cancel stale runs (#3069)
- 7fb5092 clarify --issues + --parent flag interaction in selective sync (#3056)
- e7a554c fix ci: test: align auto-start precedence expectation (#3063)
- a61911f merge: resolve conflicts with main for PR #3146
- 1a05daa refactor(dolt): make connection pool lifetime configurable with longer default (#3163)
- 231c88d refactor: deduplicate migration logic into runMigrations helper
- 296008f refactor: improve custom status error message per review feedback
- 138a2b3 refactor: remove redirect file creation from bd worktree create (#3051)
- 0d11851 refactor: simplify worktree root resolution in hooks
- 4c52b9f release: beads v1.0.1
- 5e6e5ed remove migration fallback — candidate doesn't suggest it to users
- 7ea14b2 security: harden remote URL validation at config parse time (#3210)
- 2ed8cb8 test(audit): prove concurrent-writer ID uniqueness invariant (#3164)