github gastownhall/beads v1.0.4

2 hours ago

beads v1.0.4

Pre-compiled binaries for Linux, macOS (Intel & Apple Silicon), Windows (AMD64 & ARM64), Android/Termux (ARM64), and FreeBSD.

Installation

Homebrew (macOS/Linux):

brew install beads

Quick Install (macOS/Linux/FreeBSD):

curl -sSL https://raw.githubusercontent.com/gastownhall/beads/main/scripts/install.sh | bash

Windows (PowerShell):

irm https://raw.githubusercontent.com/gastownhall/beads/main/install.ps1 | iex

Manual Install:
Download the appropriate binary for your platform below, extract it, and place it in your PATH.

Changelog

Features

  • ecb9542 feat(close): add --reason-file flag mirroring --body-file pattern
  • 3367288 feat(config): add central server config library (#3258)
  • 097ed1c feat(linear): add OAuth client-credentials support
  • 6584ff8 feat(linear): add ambient staleness signal for auto-fresh data
  • 0ec4a99 feat(linear): add idempotency markers to prevent duplicate issue creation
  • 989d0f9 feat(linear): add per-workspace concurrency lock on sync
  • 06d385e feat(linear): add type mappings for decision, spike, story, milestone (#3651)
  • ac15e09 feat(linear): adopt issueBatchCreate/issueBatchUpdate for 50x efficiency (#3654)
  • a845bc4 feat(linear): parse Retry-After headers and add rate-limit circuit breaker
  • e90f980 feat(setup): omit bd dolt push from template when no remote configured
  • 7358de6 feat: add -C flag to change directory before running (#3442)
  • 0bc4c72 feat: add JSONL bulk dep add (#3530)

Bug Fixes

  • 60cbf83 fix(cli): swap CommandStyle LightDark arguments for light terminals (GH#3611) (#3643)
  • 1ebee7f fix(cli): swap CommandStyle colors for correct light/dark contrast (GH#3611)
  • 0338534 fix(close): adapt routed close to current main
  • 564bd1e fix(close): route ID resolution like show/update (beads-0km)
  • 0c51997 fix(comments): helpful error for misplaced bd comments list (GH#3542) (#3641)
  • 74b107a fix(config): check ~/.config/bd/config.yaml on macOS
  • 4fbfd97 fix(config): consult config.yaml for dolt.host (#3471)
  • 10bf490 fix(config): format OAuth config changes
  • 860ddb2 fix(config): format wisp privacy changes
  • 918eb8e fix(config): refuse to write secret keys to git-tracked config.yaml (#3652)
  • a6f2d8d fix(config): remove dead dolt.idle-timeout key (GH#2452-followup)
  • 21c55f4 fix(create): handle dependency aliases in --deps
  • 2183499 fix(dep): only show [BLOCKED] for genuine blocking deps in dep tree (GH#3565) (#3675)
  • f0b6d49 fix(dep): show dependency type in bd dep tree output (GH#3565) (#3647)
  • ccfb97f fix(dep): tolerate unresolved IDs in batch dep list (#3620)
  • be65f59 fix(dolt): batch wisp-ID partition in bulk hydrators (GH#3414)
  • 4affe45 fix(dolt): distinguish fsck open-failures from integrity failures (#3465)
  • fbcdb90 fix(dolt): preserve label hydration wisp-set callers
  • 607919f fix(dolt): skip git hooks on internal push of refs/dolt/data (GH#3724) (#3740)
  • 7596369 fix(embeddeddolt): pass DOLT_REMOTE_USER to push/pull/fetch
  • 7978fae fix(export): exclude ephemeral wisps from bd export by default (GH#3649)
  • 61e85bc fix(export): exclude memories from bd export by default (GH#3650)
  • 226e7f2 fix(export): include NoHistory beads when Ephemeral=&false filter is active
  • 651a52a fix(export): sort memory keys for deterministic JSONL output (GH#3474) (#3482)
  • c67e41e fix(federation): respect ephemeral/wisp type filters during sync
  • 7fb4c31 fix(formula): carry step labels through cook and pour
  • 7e8766d fix(gate): drop removed 'merged' field from gh pr view call (GH#3411) (#3488)
  • b324166 fix(github): map decision, spike, story, milestone GitHub type labels (GH#3604) (#3639)
  • dccfa20 fix(graph): emit [] not null for empty links in HTML output (GH#3592)
  • a028506 fix(graph): merge components for bd graph --all --html (GH#3592) (#3648)
  • b5d8c46 fix(history): respect --json flag when issue has no history (#3503)
  • 3be9f00 fix(hooks): auto-import .beads/issues.jsonl after pull/checkout (GH#3729) (#3730)
  • ad8d6de fix(hooks): inject BEADS INTEGRATION above trailing exec block (GH#3537) (#3556)
  • 0db2a66 fix(hooks): preserve user content when migrating v0.62.x → v1.0.x (GH#3536) (#3557)
  • 2efac71 fix(hooks): use BeadsDirPerm (0700) for .beads/hooks directory (#3616)
  • bcd5763 fix(init): add FixBeadsDirPermissions stub for Windows build
  • a0cf5e6 fix(init): chmod existing .beads/ to 0700 instead of only warning (GH#3391)
  • 7d3dc1a fix(init): only strip world-accessible bits, preserve group perms
  • f34ab80 fix(init): repair existing .beads permissions to 0700
  • c9eb8ec fix(init): sanitize dotted prefixes consistently (beads-oko)
  • e643e94 fix(linear): add done/deferred/pinned/hooked aliases to ParseBeadsStatus (#3718)
  • b8e7562 fix(linear): address maintainer blockers on idempotency PR
  • 46584d8 fix(linear): address maintainer feedback on OAuth client-credentials PR
  • 3e804cd fix(linear): address maintainer feedback on PR #3655
  • dc4cd8b fix(linear): clean rate-limit lint
  • d336874 fix(linear): clean staleness lint
  • cb1a070 fix(linear): clean sync lock lint
  • f172b97 fix(linear): correct issueBatchCreate GraphQL variable type (#3703)
  • 175bc23 fix(linear): keep lock file stable across Release cycles
  • 3d9a012 fix(list): --deferred returns complete deferred set (GH#3571)
  • 7e3c7fb fix(list): deduplicate issues with multiple blocks dependencies (GH#3567) (#3673)
  • d648b6a fix(list): emphasize truncation warning with WarnStyle (GH#3580) (#3739)
  • 22e9ca3 fix(list): format deferred filter tests
  • 7d4bf5a fix(makefile): use /dev/null instead of nul to silence stderr on windows
  • 229f214 fix(mol): clear root Ephemeral on bd mol squash (#3696)
  • bbd4e4d fix(mol): recognize TypeMolecule roots in findParentMolecules (#3719) (#3721)
  • ae0fc1d fix(nix): use proxy vendor for pure-go package
  • 1cfb6e5 fix(plugin): move claude agent out of shared codex dir to fix plugin install
  • 02bdb4c fix(prime): surface memories before hook truncation (#3692)
  • 7a1f7e4 fix(release): harden shipped release formula adoption (#3668)
  • f3d57da fix(release): ship beads-release formula (#3631)
  • c9ae42b fix(setup): align Claude PreCompact hook docs
  • 059d729 fix(setup): drop bd sync from Mux fallback; warn on stale Claude hooks (GH#3546) (#3642)
  • 261fdbb fix(setup): format conditional push template
  • 3fa0e23 fix(setup): prevent doubled BEGIN/END markers from CRLF embedded template (#3553)
  • 2cfbe4e fix(setup): removeHookCommand drops sibling commands on first match
  • c5961c4 fix(sort): natural numeric sort for issue IDs with dotted suffixes (GH#3477) (#3486)
  • 8475f8b fix(test): thread -tags gms_pure_go to subprocess build in embeddeddolt concurrency test
  • 5a180ed fix(where): avoid live reopen for server-mode selection (beads-gekl.3)
  • 4fbb332 fix(where): keep bd where on the no-db path (beads-bgu)
  • 555173e fix(where): restore prefix without the old slowdown (beads-ayf)
  • cb3ef71 fix: ApplyCLIAutoStart respects ServerModeExternal (#3473)
  • 57ddb0b fix: bd admin commands fail with 'embedded mode' error in server mode (#3438)
  • eef21de fix: remove duplicate wisp query in bd export (#3352) (#3372)
  • 5a2fc61 fix: repair shared-server bootstrap and doctor metadata drift (#3242)
  • 4a25937 fix: replace deprecated --force flag with --reinit-local in init error messages (#3695)

Others

  • adb0cc1 /cmd/bd/db_proxy_child.go: cleanup
  • 5e66b2a /cmd/bd/db_proxy_child.go: rebase main
  • e5bebbd /cmd/bd/dolt.go: revert message flag requirement
  • 1ad7009 /cmd/bd/main.go: default auto-commit on
  • a58228d /cmd/bd/main.go: remove promote gate
  • 2f1cd4f /cmd/{cmd, internal}: make exports atomic writes
  • f4c46d9 /go.{mod,sum}: bump dolt driver (#3435)
  • 916c163 /internal/atomicfile/atomicfile.go: use io.Copy
  • 2529780 /internal/beads: maybe fix worktree server bug
  • 6e0b6b8 /internal/storage/db/doltserver.go: wip
  • a9cbf96 /internal/storage/db/proxy/server.go: more cleanup
  • e774926 /internal/storage/db/proxy/server.go: pr feedback fix
  • 42b38d2 /internal/storage/db/proxy/server_test.go: fix test bug
  • d7d1b31 /internal/storage/db/server/doltserver.go: ready for tests
  • 04de2f7 /internal/storage/db/server/doltserver.go: some fixes
  • 312b5bc /internal/storage/db/server/doltserver.go: wip, dial
  • 54b25a4 /internal/storage/db/server/doltserver.go: wip, implement start
  • 5a205fb /internal/storage/db/server/doltserver.go: wip, ping
  • aa76c4e /internal/storage/db/server/doltserver.go: wip, running
  • 18ff81c /internal/storage/db/server/doltserver.go: wip, stop
  • e83e98c /internal/storage/db/server/doltserver_test.go: add socket test
  • 9e49d13 /internal/storage/db/server/doltserver_test.go: keep config in tests
  • 106e106 /internal/storage/db/server/testserver_test.go: add test server test
  • 83813b2 /internal/storage/db/server: add wait to server start
  • d3e8377 /internal/storage/db/server: concurrency test
  • a4dc3f2 /internal/storage/db/server: remote status check
  • 65a8f42 /internal/storage/db/server: remove restart
  • efb4151 /internal/storage/db/server: use abs root dir
  • 5a39aae /internal/storage/db/server: wip, need to test tests
  • cd4a226 /internal/storage/db: change to endpoint
  • 8f16bab /internal/storage/db: fix tests
  • 227c74a /internal/storage/db: some additional fixes
  • 40bb251 /internal/storage/db: update to kill and remove dolt sql-server
  • 3667dde /internal/storage/db: wip implement dsn
  • e3dd665 /internal/storage/db: wip, making DoltServer
  • 6e0f3c2 /internal/storage/db: write pid of dolt sql-server
  • dd2cd02 /internal/storage/doltserver/store.go: dolt server store
  • 4151d85 /internal/storage/doltserver/store.go: get test passing
  • 79c6899 /internal/storage/doltserver/store.go: wip
  • 273ff65 /internal/storage/doltserver/store.go: wip, need proxy
  • c7f1456 /internal/storage/doltserver/store.go: wip, need schema stuff
  • ac0f6e6 /internal/storage/doltserver/store.go: wip, new store
  • 57d3c8b /internal/storage/doltserver: get test how i want it
  • ed3a43a /internal/storage/doltserver: get test how i want it
  • 3969115 /internal/storage/{db,doltserver}: add shutdown helper for tests
  • e8c5d60 /internal/storage/{db,doltutil}: linting
  • e8d4d69 /internal/storage: remove Ping from DatabaseServer
  • dcc683e /internal/storage: some lint
  • a05e06c /internal/storage: wip, need to create db if not exists
  • 6a2f851 /{.github,internal}: remove comments, install dolt in ci
  • 58dc2e1 /{beads_cgo,cmd,internal}: cache open embedded stores deterministically to prevent deadlocking when multiple store open attempts are made against an opened store
  • d0fd475 /{cmd,internal}: add test server
  • e211188 /{cmd,internal}: fix import jsonl
  • dad89ea /{cmd,internal}: fix linting
  • 73f2ab6 /{cmd,internal}: maybe fix tool tip closed store bug
  • 05251d1 /{cmd,internal}: some cleanup
  • b0a3330 /{cmd,internal}: some cleanup
  • b83fdbf /{cmd,internal}: some fixes
  • bed5e5f /{cmd,internal}: wire up db proxy child
  • 7e0d09c /{internal,cmd}: fix CommitPending
  • e97532a :remove uneccessary locking
  • dcb105a Add Linear state_map dotted config regressions (#3500)
  • f7269b6 Add Linear state_map dotted key regressions (bd-cba)
  • a97eec9 Add atomic ready claim (GH-3570)
  • 112be87 Add bd init --remote bootstrap path (#3527)
  • 4f1c296 Add explicit Codex skill setup (#3670)
  • 0fffa44 Add external server CLI dir override (bd-fn9) (#3498)
  • 46be559 Add maintainer PR guidelines (bd-k0j) (#3665)
  • 43715ad Add shared Beads plugin package
  • 3e56f0b Document Linear external_ref pre-linking (#3517)
  • e2e4975 Document supported go install modes (bd-o5a) (#3480)
  • d33799e Drop redundant trailing comments on Labels and Metadata copies
  • e9ebb2b Fix Nix CI Go toolchain selection (bd-7mh.6)
  • b5448ef Fix Nix lock hash (bd-7mh.6)
  • 52fc26a Fix gate and cook regressions (bd-r2l)
  • bb6b8f2 Fix ready/list UX regressions (#3481)
  • 2f60a10 Import Linear relations as dependencies (#3519)
  • f481b76 Keep Nix CI smoke test local (bd-7mh.6)
  • 16c0cd1 Merge PR #3483: fix init permissions repair
  • 425ae20 Merge main into OAuth client credentials branch
  • f118303 Merge main into OAuth client credentials branch
  • f4a1a21 Merge main into staleness signal branch
  • ef3c991 Merge remote-tracking branch 'origin/main' into bd-where-is-slow
  • f993aa6 Merge remote-tracking branch 'origin/main' into bd-where-is-slow
  • ea9fa3e Merge remote-tracking branch 'origin/main' into fix/export-exclude-memories
  • 69cd8af Merge remote-tracking branch 'upstream/main' into bd-where-is-slow
  • cc31c60 Rebalance embedded cmd CI shards (bd-8zg) (#3499)
  • b0ab39e Refresh Nix lock target (bd-7mh.6)
  • e93d42a Repair ignored wisp dependency table bootstrap (bd-8e8) (#3497)
  • 42064c4 Sync Linear milestones as local epics (#3528)
  • 85cbdea Update Nix vendor hash for Go 1.26 (bd-7mh.6)
  • a2db80a auto-import: don't print progress message before confirming import needed
  • 275bdb5 auto-import: remove redundant commandDidWrite in fallback path
  • 6c93841 changelog: document OpenBestAvailable breaking change and flock removal
  • 24486d1 chore(deps): bump DeterminateSystems/determinate-nix-action (#3635)
  • 3323572 chore(deps): bump actions/setup-go from 5.6.0 to 6.4.0 (#3636)
  • 2841d90 chore(deps): bump pydantic in /integrations/beads-mcp (#3467)
  • 7d94c2d chore(deps): bump pydantic-settings in /integrations/beads-mcp
  • 87e698a ci(docs): add --fallback-extensions html to lychee link check (#3736)
  • 73507cf ci(regression): pull Dolt sql-server image so tests use shared container (#3737)
  • 2cd8864 ci: mint Homebrew tap token from GitHub App (#3472)
  • e19e31c docs(agents): add Storage Boundary section to AGENTS.md (#3617)
  • 51f8fae docs(changelog): note bd close routing fix (beads-5wr, GH#3608)
  • 8b7cbfc docs(claude): make root agent guide a source pointer (#3795)
  • 2e1a0dd docs(codex): add skill path hint and marker-coexistence note (#3735)
  • f7b797a docs(doctor): align interactions.jsonl policy with bd audit (GH#3622) (#3645)
  • 45c7a61 docs(templates): prepend architecture summary to bd-init AGENTS.md (GH#3683) (#3727)
  • 56cc30e docs(website): config.toml → config.yaml in git-integration.md (GH#3683-followup)
  • 8694c53 doctor: detect AGENTS.md / CLAUDE.md user-authored divergence (#3600)
  • 4fcad21 fix(auto-export): surface git add stderr in failure warning
  • cc34fbd fix(storage/dolt): apply ExcludeLabels in GetReadyWork (#3479)
  • b78a62c github: classify rate-limit 403s and stop the push loop when one hits (#3624)
  • b9e16ac init: harden --remote error path and broaden test coverage (#3558)
  • c61f97a refactor(where-tests): share JSON assertions for selected-db cases (beads-yi0o)
  • 6745613 schema: make DROP COLUMN migrations idempotent (fixes migration 0032 loop) (#3418)
  • ba9d250 test(close): table-driven routing-fallback tests (beads-bn1)
  • 539fb64 test(cmd/bd): build-tag cgo-only test helpers so pure-go tests compile (#3716)
  • c27aa2b test(config): add XDG config path tests for macOS
  • 609dce0 test(export): add export globals to saveAndRestoreGlobals for isolation
  • 195ee65 test(init): cover config-sourced dotted prefix normalization (beads-gekl.2)
  • 759456e test(permissions): add regression coverage for FixBeadsDirPermissions
  • 911137c test(where): cover BEADS_DB precedence over BD_DB (beads-gekl.1)
  • d71a3aa test(where): cover no-db command selection
  • f95430f test(where): cover prefix fallback decisions (beads-53zb)
  • 2514d2b test(where): cover remaining prefix resolution branches (beads-454u)
  • ac98e6c {cmd,internal}: wip, proxy database server

Don't miss a new beads release

NewReleases is sending notifications on new releases.