beads v1.1.0-rc.1
Pre-compiled binaries for Linux, macOS (Intel & Apple Silicon), Windows (AMD64 & ARM64), Android/Termux (ARM64), and FreeBSD.
Installation (release candidate)
This is a prerelease for validation. The stable install channels —
Homebrew, theinstall.sh/install.ps1scripts, npm, and PyPI —
intentionally keep serving the latest stable release, so they will not
install this RC. Use one of the methods below.
Manual download (recommended):
Download the archive for your platform from the Assets below, extract it,
and place bd on your PATH.
Go install (pinned to this RC):
go install github.com/steveyegge/beads/cmd/bd@v1.1.0-rc.1
# For embedded Dolt support:
CGO_ENABLED=1 GOFLAGS=-tags=gms_pure_go go install github.com/steveyegge/beads/cmd/bd@v1.1.0-rc.1When you are done validating, return to the stable release through your normal
channel (e.g. brew upgrade beads).
Changelog
Features
- e8ae7a2 feat(count): add --include-infra for exact bd list cardinality parity (#4389)
- 9187152 feat(doctor): detect and repair rekey-backfill leftovers in dependency keys (bd-6dnrw.17)
- a749fbb feat(doctor): detect migration content skew vs the cached remote ref (#4259)
- 8cd6503 feat(import): add --allow-stale to restore older snapshots past the stale guard (bd-6dnrw.9)
- d585928 feat(init): add --init-if-missing for idempotent init (#3490) (#4332)
- 00d317d feat(metrics): add
bd metricscommand + friendly first-run consent notice - f4ae5cd feat(schema): gate silent in-place migration of remote-backed databases (#4259)
- b938832 feat(schema): record a per-migration content hash in schema_migrations (#4259)
Bug Fixes
- 6a1e7af fix(audit): sand down the P3 sharp edges from the June 9-11 audit (bd-578h9.17)
- d2b6cc5 fix(autocommit): dirty-working-set safety net behind commandDidWrite (bd-6dnrw.11)
- f483ac2 fix(bootstrap): fail loudly with tailored guidance when the remote-migrate gate trips during warmup (bd-6dnrw.31)
- 26be6aa fix(cli): handle unchecked output-helper errors + regen metrics CLI docs (#4482)
- 37db355 fix(cli): honor shared-server mode when no project config is found
- a006a33 fix(cli): implement children pretty and defer reason
- 81489b8 fix(cli): keep the autocommit sweep off read-only and inspection commands; attribute sweeps distinctly (bd-578h9.7)
- 8095e4f fix(cli): no-remote push/pull skip also checks on-disk persisted remotes (bd-578h9.10)
- 1192508 fix(cli): render markdown with terminal capability gates (#3881)
- a0f9b88 fix(cli): skip redundant server-mode write auto-commits (#4141)
- d101e0f fix(codex): correct hook path to resolve from plugin root (#4377)
- 889ade6 fix(compact): archive content before destructive compaction; make restore work (#4464)
- b4d999f fix(compact): stop advertising the unimplemented Tier 2 compaction (#4465)
- 2d5f11e fix(config): never rewrite committed metadata.json on shared-server/embedded mismatch (bd-6dnrw.5)
- 4e32258 fix(create): normalize trailing hyphen in dbPrefix before prefix validation (#4233)
- 49a8030 fix(dep): bulk --no-cycle-check keeps a hard in-transaction cycle gate (bd-6dnrw.8)
- 9264f0e fix(deps): bulk cycle gate blocks only cycles that traverse a new edge (bd-578h9.9)
- 1851ad8 fix(deps): deterministic dependency primary keys for cross-clone merge-safety (#4259)
- dfa8ea4 fix(docgen): generate CLI docs in one process (#4474)
- 928f9ff fix(doctor): make the migration content skew check actually run (bd-6dnrw.27)
- da59f13 fix(doctor): migration-content-skew check now runs for embedded workspaces (bd-578h9.13)
- 33e71d2 fix(doctor): untrack already-committed .beads/last_pull (bd-578h9.6)
- ccadfce fix(dolt): auto-resolve mixed-vintage schema_migrations conflicts on pull (bd-6dnrw.29)
- 1f8331d fix(dolt): cascade-repair FK constraint violations on pull merges (bd-6dnrw.4)
- d80ed81 fix(dolt): confirm dolt_remotes is empty before push/pull exit-0 no-remote skip (bd-6dnrw.7)
- f97fd4a fix(dolt): detect Dolt ancestor-PK merge refusals and print bootstrap-canonical-clone recovery (bd-6dnrw.1)
- 3879596 fix(dolt): pre-pull commit must include config (kv.memory.* pull-wedge) (#4412)
- f1c72db fix(dolt): read persisted remotes from repo_state.json; never swallow gate probe failures (bd-6dnrw.33)
- a12e5fa fix(dolt): retire idle pool conns before server reaps + retry reads (#4382)
- 0664ee7 fix(dolt): run the remote-migrate gate inside the schema retry loop (bd-6dnrw.30)
- a768035 fix(doltserver): gate corrupt-manifest .dolt reinit behind explicit bd doctor --fix (bd-6dnrw.6)
- 27bbecb fix(domain): Seam A parity tests + the two domain/db bugs they pin (bd-6dnrw.45)
- 914ac3c fix(domain): dep insert runs the classic affected-set is_blocked maintenance (bd-6dnrw.44 item 3)
- 341c7a5 fix(domain): hoist descendants filter preds into named CTEs (dolt 2.1.6 analyzer workaround)
- 9f53171 fix(domain): share classic issue scan so string timestamps can't hard-fail proxied reads (bd-6dnrw.44 item 12)
- 8a92dac fix(embedded): OpenReadOnly rejects behind-schema DBs; read-only stores refuse VC mutations (bd-578h9.12)
- 3f2b4e0 fix(embeddeddolt): give read-only opens a real read-only path (bd-6dnrw.32)
- 7171f8f fix(federation): capture operator conflicts before the settle abort so PullFrom can report them (bd-578h9.15)
- c708e00 fix(federation): route server-mode PullFrom through the pull settle machinery (bd-578h9.3)
- 3fa29e3 fix(fetch): drop session-killing DOLT_GC from failed-fetch path (bd-6dnrw.10)
- 969e27e fix(gate): exempt embedded read-only commands from the remote-migrate gate; make the unlock guidance real (bd-578h9.5)
- 1fe4993 fix(import): enforce the stale guard inside the upsert transaction (bd-pkim8)
- 33bf6d0 fix(import): equal-timestamp upsert keeps the local row; report what import changed (bd-hj85c)
- e94d15f fix(import): honor imported dependency created_by (#4432)
- 173b139 fix(import): stale-rejected rows no longer persist aux data or count as Created (bd-578h9.8)
- 439fb4e fix(init): bootstrap from a behind-schema remote finalizes the workspace and prints migrator guidance (bd-4mpy7)
- 37c97e0 fix(init): guard JSONL init against remote history
- 0da7f51 fix(init): initialize planning Dolt schema in fork auto-config (be-wqt8) (#4290)
- 4e460b4 fix(is_blocked): cross-mode full recompute repair for stale is_blocked (bd-6dnrw.37) (#4423)
- 7ebf4df fix(linear): unwire staleness hook from core; gitignore last_pull (bd-6dnrw.12)
- de7d3ae fix(lint): exclude fmt.Fprint from errcheck like its Fprintf/Fprintln siblings (#4360)
- f3d31e4 fix(list): counts path honors SkipWisps and SortBy (bd-6dnrw.42, bd-6dnrw.43)
- 1d4dbb5 fix(list): disable default truncation when stdout is piped (#4094) (#4158)
- 6d7eb5b fix(mcp): tolerate current bd JSON shapes (#4253)
- 05b29ca fix(metrics): maintainer adoption fixes for usage-metrics + RunE refactor
- 3d7e25c fix(metrics): review fixes for the usage-metrics cherry-pick
- f880a98 fix(proxied): corrupt sidecar/config aborts instead of silent fresh-DB fallback (bd-6dnrw.44 item 6)
- b5cdb70 fix(proxied): guard unsupported commands instead of nil-store panic (bd-6dnrw.44 item 1)
- 8866e5b fix(proxied): reap orphaned dolt after proxy SIGKILL; discovery stops trusting stale pidfiles (bd-6dnrw.44 items 9+10)
- 1825cf3 fix(proxied): tree walk picks up dotted-ID orphans and wisp parents (bd-6dnrw.44 item 11)
- d00b890 fix(remote): remove cli invocations of 'dolt remote' and exclusively use store method and sql (#4236)
- 8ffcf69 fix(schema): consult BD_ALLOW_REMOTE_MIGRATE only when the gate would fire; accept boolean values (bd-6dnrw.34)
- 12a4794 fix(schema): converge 0037's per-clone-random history-table PKs via one-time content-derived rekey (bd-6dnrw.2)
- 81b3308 fix(schema): crash mid-aux-rekey no longer strands rows behind the 0009 marker (bd-578h9.16)
- 1be8989 fix(schema): detect on-disk remotes in server-mode remote-migrate gate (#4268)
- 1d799ae fix(schema): drop dormant DEFAULT (UUID()) from aux and wisp table ids (bd-2rd37)
- 6640ef7 fix(schema): generate CLI-compatible migration SQL (#4256)
- e4f0407 fix(schema): install content_hash on already-up-to-date databases
- 152795d fix(schema): stop fresh clones from replaying the aux-row rekey over converged history tables (bd-578h9.4)
- 064009b fix(sec): harden isPathInSafeBoundary home-dir check (SEC-003) (#4343)
- d5fe7d6 fix(security): allow /Users/Shared in BEADS_DIR safe-boundary (SEC-003) (#4319)
- f6dba5b fix(setup): match beads plugin name exactly, not by substring (#4252)
- 9c306ee fix(stealth): keep --stealth out of the tracked .gitignore (#4375)
- 29df600 fix(storage): bd-6dnrw.44 P3 batch 2 — use-after-commit errors, inheritance/remote/ready fixes, dead filter impl deleted
- 55914fb fix(storage): phase-aware retries for Dolt server-mode write tx (#4462)
- dc0561a fix(storage): set explicit app-side ids at every events/comments insert site (bd-6dnrw.18)
- 8892799 fix(sync): close the is_blocked recompute gaps: Merge/Sync/resolution hooks + failed-recompute retry marker (bd-578h9.11)
- 59ba57f fix(sync): commit auto-resolved conflicts only after FK cascade repair (bd-578h9.14)
- d1a2fc7 fix(sync): gate the merge-abort hard reset on pre-merge cleanliness (bd-578h9.2)
- 001c6c2 fix(sync): give embedded pulls merge auto-resolution and FK cascade repair (bd-6dnrw.40)
- 99ed06b fix(sync): recompute is_blocked after dolt pull/merge (bd-6dnrw.3)
- 6f70427 fix(sync): recompute is_blocked for working-set merges HEAD never advanced (bd-6dnrw.39)
- 03cdc6c fix(sync): stop the is_blocked recompute from stamping per-clone wall clock into issues.updated_at (bd-578h9.19)
- 792260c fix(tracker): repair sync engine bugs unmasked by born-failing engine tests (bd-578h9.1)
- 794ff07 fix(uow): failed commit/rollback no longer returns an open-tx session to the pool (bd-6dnrw.44 item 7)
- 4b0509c fix(uow): warmup retries dial/handshake transients instead of backoff.Permanent (bd-6dnrw.44 item 8)
- 99c7090 fix(uow): wire the #4268 remote-migrate gate into the proxied-server open path (bd-6dnrw.28)
- ad41872 fix(where): read prefix from active beads dir (#4254)
- d10250c fix(worktree): reuse canonical beads dir resolution (#4255)
- f5a70d3 fix: anchor jj-secondary role resolution at repoPath, not cwd
- fde9e94 fix: complete proxied-server rebase repair
- 5252195 fix: create .beads/.gitignore after remote bootstrap (#4309)
- 78a2b4a fix: honor jj secondary workspaces in path discovery
- 7d7ff50 fix: honor no-db target precedence consistently (#4277)
- 6fc1db1 fix: honor storage flags for graph create (#4276)
- 72d095c fix: prefer wisp on cross-table dup; add CGO-free duplicate check (be-iabdi) (#4163)
- 45ad2e4 fix: rebind target workspace for db commands (#4275)
- 848d0d7 fix: restore dolt target workspace rebind (bd-y45) (#4280)
- b0a01c0 fix: restore no-db target selection semantics (#4278)
- 27e01d6 fix: restore proxied-server rebase repair
- 2bde0ca fix: support jj secondary workspaces for .beads/ discovery and role detection
Others
- 61b96e0 /cmd/bd/close_proxied_server.go: pr feedback
- 3963064 /cmd/bd/delete: error on cascade flag
- 5fef5ae /cmd/bd/delete: more wisp tests
- 61d0402 /cmd/bd/dep_proxied_server.go: lint
- 293055f /cmd/bd/init.go: hard gate
- 761df60 /cmd/bd/init.go: hard-gate
- 4f16ebd /cmd/bd/init.go: regate
- 37f2dfc /cmd/bd/init.go: restore gate
- 5ca4f67 /cmd/bd/init.go: restore proxied-server init gate
- f587462 /cmd/bd/query_proxied_integration_test.go: more tests
- 9683a72 /cmd/bd: address Copilot review on query --offset
- 99cf8c7 /cmd/bd: pr feedback
- 23055e1 /cmd/bd: query command
- 6d8c063 /docs: regen CLI reference for bd query --offset flag
- 84379c5 /internal/storage/domain: address pr feedback
- 41b43bb /internal/storage/domain: cleanup
- cf27c9e /internal/storage: method implementations for bd list
- 90b090f /website/static/llms-full.txt: more doc gen
- 9a1c88b /{.github,docs,go,internal,scripts}: bump driver/dolt version to 2.1.4 (#4326)
- 04a65cc /{cmd,docs,internal,website}: more ci fixes
- 0c0039b /{cmd,internal}: bd close proxied-server
- 2175c87 /{cmd,internal}: bd config proxied-server
- 2a5fbb1 /{cmd,internal}: bd context proxied-server support
- 0394021 /{cmd,internal}: bd delete support proxied-server mode
- f74cce9 /{cmd,internal}: bd dep proxied-server
- 7933f74 /{cmd,internal}: bd list support proxied server mode
- 911ff80 /{cmd,internal}: bd ready proxied-server
- d9e538e /{cmd,internal}: bd show proxied-server mode
- c58b009 /{cmd,internal}: bd update proxied-server
- e3898c6 /{cmd,internal}: handle wisps
- 242b275 /{cmd,internal}: more refactor
- edfbcb3 /{cmd,internal}: pr feedback
- 924d959 /{cmd,internal}: pr feedback
- 7543024 /{cmd,internal}: reopen
- 5d1960f /{cmd,internal}: support pages
- f9a6f50 /{docs,website,scripts}: holy fuck again
- 14322af /{docs,website,scripts}: holy fuck again
- a143374 /{docs,website}: again
- f783cbb /{docs,website}: gen docs
- d7d7a34 : refactor to use RunE, emit usage metrics, skip metrics in CI
- 4e8cedc Add Jira custom field support for push (#3678)
- 9e8d411 Add PR CI wrapper command surface (#4211)
- 7b43aea Add bd-board to community tools (#4349)
- 4d3a552 Fix rig bead durability (#4373)
- 8cdb83d Merge PR #4419: anonymous CLI usage metrics + RunE refactor
- eb872d3 Preflight graph apply blocking cycles (#4384)
- c86acb0 Retire legacy Homebrew tap publishing (#4478)
- a59e753 Triage and clean up an unreviewed automated commit stream on main (#4418)
- df13905 build(deps): bump DeterminateSystems/determinate-nix-action (#4459)
- 823b0ed build(deps): bump actions/checkout from 6.0.2 to 7.0.0 (#4456)
- 92203a8 build(deps): bump codecov/codecov-action from 6.0.0 to 7.0.0 (#4458)
- c57bcc8 build(deps): bump golangci/golangci-lint-action from 9.2.0 to 9.2.1 (#4111)
- 463debd build(deps): bump peter-evans/create-pull-request from 8.1.0 to 8.1.1 (#4262)
- 1de3727 ci(docs): blame-scoped CLI docs freshness gate + fix patch artifact (#4301)
- 5bdc8bc ci(migrations): enforce migration hygiene: dup versions, nondeterministic SQL, frozen shipped files (bd-6dnrw.15)
- 801fb95 ci(release): guard against version/docs drift on release (#4247)
- 262b0af ci: actually run internal/tracker tests in the docker-backed test job (bd-578h9.1)
- 352bdb3 commit federation peer metadata before sync (#4190)
- 00e5a8a db: address Copilot feedback on loadStatusByID
- 749cc63 docs(list): warn that repeated -s/--status silently overwrites (#3916) (#3917)
- 11537f9 docs(llms): drop removed
bd backup fetch-gitfrom recovery tips (#4330) - 9a9da38 docs(maintainer): add Merge Discipline and Review Requirements section (bd-6dnrw.23)
- 3bf890c docs(metadata): document portability of execution model/effort hints (#4358)
- d4d5896 docs(prime): note --parent for hierarchical bd create
- 1a83cb0 fix(cmd,lockfile): bd-6dnrw.44 P3s — proxied store-factory errors, init provider lifecycle, errors.Is
- eca62a2 fix(issueops/dependencies): wrap EXISTS subquery in derived table for MySQL 8+ compat (#4168)
- f214fc9 flake.lock: Update (#4279)
- 4529688 flake.lock: Update (#4466)
- 894cbf6 merge: bring feat/cli-usage-metrics current with main for #4419 land
- 0268ba8 perf(schema): D4v2 composite (status, updated_at) + defer_until indexes (#3662)
- 1f8f1ff refactor(storage): extract shared SQL builders into internal/storage/sqlbuild (bd-6dnrw.46)
- 5aa4474 revert: back out v1.1.0-rc.1 release prep (re-land after maintainer review) (#4477)
- 45ea810 style: gofmt after rebase conflict resolution
- 1425e73 test(ci): restore test-proxied-server-cmd lane behind a test-only init ungate (bd-6dnrw.44)
- 93b186d test(cmd/bd): Seam B cross-mode list parity — embedded vs proxied CLI (bd-6dnrw.45)
- b6994bb test(cmd/bd): isolate TestCommitBeadsConfigSkipsGitHooks from ambient git config (#4448)
- bc90983 test(cmd/bd): preserve GOMODCACHE across the test HOME re-home
- f9d3165 test(deps): pin insert-vs-backfill id agreement for #4259 (#4411)
- fae194f test(dolt): add TestNoPushSkipsDoltPush for push guard coverage (#4323)
- d121061 test(dolt): fix t.Setenv-before-t.Parallel panic in TestCheckForwardDrift_EscapeHatch (#4269)
- eefbbcc test(dolt): pin cross-upgrade-boundary merge semantics with a pre-0041 ancestor (bd-6dnrw.16)
- 814b4f7 test(dolt): supply explicit ids where 0051 dropped the comments/events DB-side default (bd-578h9.18)
- 70cd62e test(domain/db): isolate readyOffsetSkipsLeadingRows with unique label
- 4d08edb test(mcp): make validation baseline hermetic (#4195)
- 0dcd589 test(ready proxied): cover --limit 0 (gascity's invocation)
- 26630c8 test(ready): cover include-ephemeral assigned no-history work (#4140)