| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| beads-v1.3.2.spdx.json | 2026-10-24 | 2.2 MB | |
| checksums.txt | 2026-10-24 | 881 Bytes | |
| beads_1.3.2_darwin_amd64.tar.gz | 2026-10-24 | 53.6 MB | |
| beads_1.3.2_darwin_arm64.tar.gz | 2026-10-24 | 48.5 MB | |
| beads_1.3.2_contract_corpus.tar.gz | 2026-10-24 | 4.1 kB | |
| beads_1.3.2_windows_amd64.zip | 2026-10-24 | 54.2 MB | |
| beads_1.3.2_android_arm64.tar.gz | 2026-10-24 | 31.4 MB | |
| beads_1.3.2_linux_arm64.tar.gz | 2026-10-24 | 49.4 MB | |
| beads_1.3.2_linux_amd64.tar.gz | 2026-10-24 | 53.3 MB | |
| beads_1.3.2_freebsd_amd64.tar.gz | 2026-10-24 | 32.0 MB | |
| beads_1.3.2_windows_arm64.zip | 2026-10-24 | 30.5 MB | |
| README.md | 2026-10-24 | 14.0 kB | |
| v1.3.2 source code.tar.gz | 2026-10-24 | 10.0 MB | |
| v1.3.2 source code.zip | 2026-10-24 | 12.3 MB | |
| Totals: 14 Items | 377.5 MB | 0 | |
Beads v1.3.2
v1.3.2 — the second patch release on the 1.3 line. Released 2026-10-24, cut from
hotfix/1.3.1 at 9b65b9e19. It ships exactly the code that was qualified as v1.3.2-rc.3; the
only change since that candidate is the version stamp.
There is no schema migration, and the embedded Dolt engine is unchanged (Dolt 2.2.0). Upgrading from v1.3.1 or any v1.3.2 release candidate is a binary swap. If you are coming from v1.3.0 or earlier, read the v1.3.1 release notes first — everything in them applies, and this release adds to it.
This is a fix-only release. It closes two ways v1.3.1's new retention and backup paths could lose data, makes the post-commit blocked-state recheck safe under concurrent writes, lets a least-privilege Dolt user write again, removes an export stall on large wisp sets, and rebuilds with Go 1.26.10 and patched dependencies. It also carries an upgrade note for every store that crossed migration 0059 under bd 1.3.0 or later: read it before you upgrade.
Highlights
bd purgeno longer deletes the closed root of a chain that still has live work under it (#7041, fixes [#7031]). v1.3.1's live-dependent protection only covered a closed bead a live bead pointed at directly, so an orchestrator'sbd purge --wisps-plane --older-than ...retention sweep could delete a closed root above a closed child above an open grandchild, orphaning both. Protection now propagates up the whole closed chain.- Auto-backup never claims a commit the snapshot does not contain (#7044, fixes [#7032]). The watermark is read before the sync, so a commit that lands mid-sync stays pending for the next backup instead of being skipped as "no changes".
- The fan-in recheck no longer reverts concurrent writes (#7146, backport of [#6876], fixes [#7030]). On the Dolt server backend, the post-commit blocked-state recheck could write rows other sessions had just committed back to their earlier values. It now runs in its own transaction and publishes its Dolt commit after that transaction commits.
- A least-privilege Dolt user can write again (#7786, backport of [#7322]).
bd create --graph,bd mol wisp,bd historyandbd recompute-blockedno longer fail withcommand deniedfor a server user granted EXECUTE on onlydolt_add/dolt_commit. bd export --allno longer stalls on workspaces with many wisps (#7603, backport of [#6444], with [#7785]). Bulk readers read at most 200 ids per statement, and a repeated id is read once.- Security rebuild. Release binaries build with Go 1.26.10 (#7732), and
x/net,x/crypto,grpcandthriftare raised past every fixable advisory that reaches the binary (#6355, [#7495]).
Upgrading Notes
- After upgrading from bd 1.3.0 or earlier, run
bd recompute-blockedonce per workspace (#7037). Migration 0059, first shipped in v1.3.0, recomputes the storedis_blockedflag with a recursive query. On Dolt servers older than 2.4.0, and on the embedded engine, a query-planner bug ([dolthub/dolt#11886](https://github.com/dolthub/dolt/issues/11886), fixed in Dolt 2.4.0) drops the query'sparent-childedge filter, so blockedness spreads across every dependency type, includingrelates-to,discovered-fromandtracks. Beads that are not blocked are marked blocked and silently disappear frombd readyandbd list --ready. The flag is stored, so the damage persists until it is recomputed, and nothing in v1.3.2 repairs it automatically. This applies to every workspace whose store crossed migration 0059 under bd 1.3.0 or later, which includes a workspace now on v1.3.1 that was first created by 1.2.x or earlier. The command is idempotent, reportsrows_corrected, and changes nothing on a workspace that was not affected. bd purgekeeps more closed beads (#7041). Every closed bead in a chain above a live bead is now kept and counted inlive_dependent_skipped, on every backend. A retention sweep that used to delete such a root no longer does, so its purged count can drop.- The
bd purge --limit Nconfirmation suggests a--forcecommand that keeps--limit(#7540, fixes [#7534]). The suggested command used to drop--limit, so running it as printed deleted every eligible row instead of N. If you copied that suggestion into a script, check it. - A negative
--older-thanthat overflows is refused onbd purgeandbd prune(#7540, fixes [#7524]). A large negative day count, such as--older-than=-213503d, used to wrap to a small positive age and purge. bd exportfails when it cannot classify wisp-plane rows (#7603). When thewispstable exists but its membership cannot be read, export now fails withfailed to classify wisp-plane rowsinstead of silently exporting without wisp markers. Only a missingwispstable is tolerated.
Fixed
bd purgekeeps the whole closed chain above a live bead (#7041, fixes [#7031]). Take a closed root R, a closed child S1 and an open grandchild S2. v1.3.1 protected S1, because S2 is live, but not R, because its only dependent S1 is closed, so purge deleted R and orphaned S1 and S2;--dry-runreported the same deletion. Protection now propagates through closed candidates until nothing changes, on the Dolt server, embedded and proxied backends.- The auto-backup watermark no longer runs ahead of the snapshot (#7044, fixes [#7032]).
Auto-backup read Dolt HEAD after the sync and recorded it as the newest commit backed up, so a
commit that landed during the sync was recorded as backed up although the snapshot lacked it, and
auto-backup then reported "no changes since last backup" until HEAD moved again. Only opted-in
auto-backup (
backup.enabled: true) was affected;bd backup syncrecords no commit watermark. - The post-commit blocked-state recheck no longer reverts concurrent writes (#7146, backport of
[#6876], fixes [#7030]). v1.3.1's [#6716] fan-in fix minted its Dolt commit while its own SQL
transaction was still open.
DOLT_ADDstages the table from the session's BEGIN-time root, so the commit could writeissuesrows that other sessions had just committed back to their BEGIN-time values. The recheck runs only when unblocking writes (closes, dependency removals, deletes) race, which is exactly when this matters. The recompute now runs alone in its own retried transaction and the Dolt commit is published after it. A failed trailing commit is counted aspost_tx_commit_droppedand logged, instead of being reported as a recheck failure, because the flag repair itself is already committed. - A least-privilege Dolt user can write again (#7786, backport of [#7322]). Two fresh-connection
paths ran
CALL DOLT_CHECKOUTeven when the session was already on the requested branch: the fallback for the ignored-tables transaction, and the pinned connection used by long-timeout versioned reads and the blocked recompute. A server user granted EXECUTE on onlydolt_add/dolt_commitis denied even that no-op checkout. The checkout now runs only when the session is on a different branch. bd export --allno longer stalls on workspaces with many wisps (#7603, backport of [#6444]). The bulk label, comment, dependency and issue readers sent every id in oneIN (...)list, and Dolt's cost grows faster than linearly in the list length; one reported workspace stopped completing exports past about 21k wisps. The readers now read at most 200 ids per statement, and export reads the wisp-plane relations only for ids that are wisps. A repeated id is read once, so batching never duplicates or drops a row (#7785).bd purge --limit Nconfirmation and--older-thanoverflow (#7784, backport of [#7540], fixes [#7534] and [#7524]). See Upgrading Notes.
Security
- Release binaries build with Go 1.26.10 (#7787, backport of [#7732]), which distrusts the
compromised eMudhra intermediate CAs in
crypto/x509.release.ymluses uv 0.13.4, which ships the same distrust. - Dependency floors raised (#7787):
golang.org/x/netv0.60.0 andgolang.org/x/cryptov0.57.0 (backport of [#6355]), andgoogle.golang.org/grpcv1.83.2 andgithub.com/apache/thriftv0.24.0 (backport of [#7495]).govulncheckreported 16 reachable advisories on rc.2's module set and none on rc.3's, which is the v1.3.2 module set.
Validation
- v1.3.2 is the qualified rc.3 code. The tag (
9b65b9e19) differs fromv1.3.2-rc.3(0dee73e43) only in the version stamp, the CHANGELOG, thebd infodigest, and package and plugin version metadata. - Every fix landed on
hotfix/1.3.1as acherry-pick -xPR of a commit already onmain, tested at its head. The backport PRs (#7220, [#7146], [#7786], [#7784], [#7603], [#7787]) and the three RC prep PRs (#7221, [#7461], [#7788]) each passed the full PR matrix of 120–122 checks, including the requiredCI Gate / Requiredgate that PRs intohotfix/**now run (#7198, ported in [#7217]). The promotion PR (#7809) passed 121 checks plus the Nightly Full Tests workflow by dispatch, once for the full test suite (40042534271) and once for the PR Linux command suite (40042536408). - The release pipeline completed green (run
40044707863):
verify-version-consistency, both goreleaser legs (linux and macOS), both package gates (MCP and npm),publish-pypi,publish-npmand release attestation. The tag-triggered Migration Test Harness (40044708076) and Cross-Version Smoke Tests (40044707912) also passed. 11 assets were published: linux amd64/arm64, darwin amd64/arm64, windows amd64/arm64, freebsd amd64, android arm64, the contract corpus, an SPDX SBOM and checksums. All three release candidates also completed their release pipelines. - Qualified against a real downstream consumer before the tag. Gas City's
hotfix/1.5.1branch, pinned tov1.3.2-rc.3, passed its full RC Gate on the first attempt: 40034407401, at9d970f7cc8. No job failed: the Linux CI parity tiers (including the beads topology acceptance, the bd CLI contract jobs against the current and minimum-supported bd, and a contract radar against beadsmain), acceptance A, B and C, all integration shards, tutorial goldens 1–6, the four worker-core providers, the goreleaser snapshot, and the full macOS regression set.
Installing
Pre-compiled binaries for Linux, macOS (Intel & Apple Silicon), Windows (AMD64 & ARM64), Android/Termux (ARM64), and FreeBSD are attached to this release.
Homebrew (macOS/Linux):
:::bash
brew install beads
Quick Install (macOS/Linux/FreeBSD):
:::bash
curl -sSL https://raw.githubusercontent.com/gastownhall/beads/main/scripts/install.sh | bash
Windows (PowerShell):
:::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.
Whichever method you use, run which -a bd afterwards. A second, older bd earlier in PATH is
the mixed-version fleet problem described in the v1.3.0 upgrading notes. Then run
bd recompute-blocked once per workspace if the first upgrading note applies to you.
Contributors
Thanks to everyone who contributed to v1.3.2 (between v1.3.1 and v1.3.2):
@bee-ghosttrack, @bourgois, @brandonmartin, @julianknutsen, @rjgeng
Full Changelog: https://github.com/gastownhall/beads/compare/v1.3.1...v1.3.2