Skip to content

Commit 018d18e

Browse files
committed
chore: bump version to 0.59.0
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Executed-By: beads/crew/emma Rig: beads Role: crew
1 parent df1e6bb commit 018d18e

File tree

10 files changed

+141
-166
lines changed

10 files changed

+141
-166
lines changed

.beads/formulas/beads-release.formula.toml

Lines changed: 51 additions & 158 deletions
Original file line numberDiff line numberDiff line change
@@ -339,159 +339,33 @@ Focus on workflow-impacting changes agents need to know.
339339
"""
340340

341341
[[steps]]
342-
id = "bump-version-go"
343-
title = "Bump version in version.go"
342+
id = "bump-all-versions"
343+
title = "Bump version in all files"
344344
needs = ["update-info-go"]
345345
description = """
346-
Update the Go version constant.
346+
Run the version bump script to update ALL version files at once.
347347
348348
```bash
349-
# macOS
350-
sed -i '' 's/Version = "[^"]*"/Version = "{{version}}"/' cmd/bd/version.go
351-
352-
# Linux
353-
sed -i 's/Version = "[^"]*"/Version = "{{version}}"/' cmd/bd/version.go
354-
```
355-
356-
Verify:
357-
```bash
358-
grep 'Version = ' cmd/bd/version.go
359-
```
360-
"""
361-
362-
[[steps]]
363-
id = "bump-plugin-json"
364-
title = "Bump version in plugin JSON files"
365-
needs = ["bump-version-go"]
366-
description = """
367-
Update Claude plugin manifest versions.
368-
369-
```bash
370-
# macOS/Linux with jq
371-
jq '.version = "{{version}}"' .claude-plugin/plugin.json > tmp && mv tmp .claude-plugin/plugin.json
372-
jq '.plugins[0].version = "{{version}}"' .claude-plugin/marketplace.json > tmp && mv tmp .claude-plugin/marketplace.json
373-
```
374-
375-
Verify:
376-
```bash
377-
jq -r '.version' .claude-plugin/plugin.json
378-
jq -r '.plugins[0].version' .claude-plugin/marketplace.json
379-
```
380-
"""
381-
382-
[[steps]]
383-
id = "bump-mcp-python"
384-
title = "Bump version in MCP Python package"
385-
needs = ["bump-plugin-json"]
386-
description = """
387-
Update the beads-mcp Python package version.
388-
389-
```bash
390-
# macOS
391-
sed -i '' 's/version = "[^"]*"/version = "{{version}}"/' integrations/beads-mcp/pyproject.toml
392-
sed -i '' 's/__version__ = "[^"]*"/__version__ = "{{version}}"/' integrations/beads-mcp/src/beads_mcp/__init__.py
393-
394-
# Linux
395-
sed -i 's/version = "[^"]*"/version = "{{version}}"/' integrations/beads-mcp/pyproject.toml
396-
sed -i 's/__version__ = "[^"]*"/__version__ = "{{version}}"/' integrations/beads-mcp/src/beads_mcp/__init__.py
349+
bash scripts/update-versions.sh {{version}}
397350
```
398351
399-
Verify:
400-
```bash
401-
grep 'version = ' integrations/beads-mcp/pyproject.toml | head -1
402-
grep '__version__ = ' integrations/beads-mcp/src/beads_mcp/__init__.py
403-
```
404-
"""
352+
This updates: version.go, plugin.json, marketplace.json, pyproject.toml,
353+
__init__.py, package.json, README badge, default.nix, and Windows resources
354+
(winres.json, manifest.xml).
405355
406-
[[steps]]
407-
id = "bump-npm-package"
408-
title = "Bump version in npm package"
409-
needs = ["bump-mcp-python"]
410-
description = """
411-
Update the npm package version.
412-
413-
```bash
414-
# macOS/Linux with jq
415-
jq '.version = "{{version}}"' npm-package/package.json > tmp && mv tmp npm-package/package.json
416-
```
356+
Hook templates no longer exist — hook versions are derived from version.go
357+
at runtime.
417358
418-
Verify:
359+
Verify with:
419360
```bash
420-
jq -r '.version' npm-package/package.json
421-
```
422-
"""
423-
424-
[[steps]]
425-
id = "bump-hook-templates"
426-
title = "Bump version in hook templates"
427-
needs = ["bump-npm-package"]
428-
description = """
429-
Update version comment in git hook templates.
430-
431-
```bash
432-
# macOS
433-
for f in cmd/bd/templates/hooks/pre-commit cmd/bd/templates/hooks/post-merge cmd/bd/templates/hooks/pre-push cmd/bd/templates/hooks/post-checkout; do
434-
sed -i '' 's/# bd-hooks-version: .*/# bd-hooks-version: {{version}}/' "$f"
435-
done
436-
437-
# Linux
438-
for f in cmd/bd/templates/hooks/pre-commit cmd/bd/templates/hooks/post-merge cmd/bd/templates/hooks/pre-push cmd/bd/templates/hooks/post-checkout; do
439-
sed -i 's/# bd-hooks-version: .*/# bd-hooks-version: {{version}}/' "$f"
440-
done
441-
```
442-
443-
Verify:
444-
```bash
445-
grep '# bd-hooks-version:' cmd/bd/templates/hooks/pre-commit
446-
```
447-
"""
448-
449-
[[steps]]
450-
id = "bump-readme"
451-
title = "Bump version in README badge"
452-
needs = ["bump-hook-templates"]
453-
description = """
454-
Update the Alpha version badge in README.md.
455-
456-
```bash
457-
# macOS
458-
sed -i '' 's/Alpha (v[^)]*)/Alpha (v{{version}})/' README.md
459-
460-
# Linux
461-
sed -i 's/Alpha (v[^)]*)/Alpha (v{{version}})/' README.md
462-
```
463-
464-
Verify:
465-
```bash
466-
grep 'Alpha (v' README.md
467-
```
468-
"""
469-
470-
[[steps]]
471-
id = "bump-default-nix"
472-
title = "Bump version in default.nix"
473-
needs = ["bump-readme"]
474-
description = """
475-
Update the Nix package version.
476-
477-
```bash
478-
# macOS
479-
sed -i '' 's/version = "[^"]*";/version = "{{version}}";/' default.nix
480-
481-
# Linux
482-
sed -i 's/version = "[^"]*";/version = "{{version}}";/' default.nix
483-
```
484-
485-
Verify:
486-
```bash
487-
grep 'version = ' default.nix
361+
bash scripts/check-versions.sh
488362
```
489363
"""
490364

491365
[[steps]]
492366
id = "update-vendorhash"
493367
title = "Update Nix vendorHash if needed"
494-
needs = ["bump-default-nix"]
368+
needs = ["bump-all-versions"]
495369
description = """
496370
Update vendorHash if go.mod/go.sum changed since last release.
497371
@@ -550,14 +424,11 @@ description = """
550424
Confirm all versions match {{version}}.
551425
552426
```bash
553-
grep 'Version = ' cmd/bd/version.go
554-
jq -r '.version' .claude-plugin/plugin.json
555-
jq -r '.version' npm-package/package.json
556-
grep 'version = ' integrations/beads-mcp/pyproject.toml
557-
grep 'version = ' default.nix
427+
bash scripts/check-versions.sh
558428
```
559429
560-
All should show {{version}}.
430+
This checks version.go, plugin.json, marketplace.json, pyproject.toml,
431+
__init__.py, and package.json. All should show {{version}}.
561432
"""
562433

563434
[[steps]]
@@ -733,14 +604,40 @@ Should show {{version}}.
733604
Note: PyPI may have a small propagation delay (1-2 min).
734605
"""
735606

607+
[[steps]]
608+
id = "verify-homebrew"
609+
title = "Verify Homebrew tap updated"
610+
needs = ["await-ci"]
611+
description = """
612+
Confirm the Homebrew tap was updated by goreleaser.
613+
614+
```bash
615+
# Check the tap repo for the updated formula
616+
gh api repos/steveyegge/homebrew-beads/contents/Formula/bd.rb \
617+
--jq '.content' | base64 -d | grep 'version "'
618+
```
619+
620+
Or check locally if the tap is already installed:
621+
```bash
622+
brew update
623+
brew info bd 2>/dev/null | head -3
624+
```
625+
626+
Should show {{version}}.
627+
628+
Note: goreleaser pushes to steveyegge/homebrew-beads automatically via the
629+
`brews` section in .goreleaser.yml. If the formula wasn't updated, check the
630+
goreleaser logs in the release workflow for errors.
631+
"""
632+
736633
# =============================================================================
737634
# Phase 3: Installation (Fan-in)
738635
# =============================================================================
739636

740637
[[steps]]
741638
id = "local-install"
742639
title = "Update local installation"
743-
needs = ["verify-github", "verify-npm", "verify-pypi"]
640+
needs = ["verify-github", "verify-npm", "verify-pypi", "verify-homebrew"]
744641
description = """
745642
Update local bd to the new version.
746643
@@ -790,22 +687,18 @@ All should show {{version}}.
790687
"""
791688

792689
[[steps]]
793-
id = "restart-daemons"
794-
title = "Restart daemons"
690+
id = "verify-local-install"
691+
title = "Verify local installation"
795692
needs = ["local-install"]
796693
description = """
797-
Restart bd daemons to pick up new version.
694+
Confirm the installed binary is the correct version.
798695
799696
```bash
800-
bd daemons killall
697+
bd --version
801698
```
802699
803-
Daemons will auto-restart with new version on next bd command.
804-
805-
Verify:
806-
```bash
807-
bd daemons list
808-
```
700+
Should show {{version}}. The bd daemon was removed in v0.59.0 — bd is now
701+
purely CLI-driven, so no daemon restart is needed.
809702
"""
810703

811704
[[steps]]
@@ -836,15 +729,15 @@ needs the tag to exist, not the CI artifacts.
836729
[[steps]]
837730
id = "release-complete"
838731
title = "Release complete"
839-
needs = ["restart-daemons", "generate-newsletter"]
732+
needs = ["verify-local-install", "generate-newsletter"]
840733
description = """
841734
Release v{{version}} is complete!
842735
843736
Summary:
844-
- All version files updated
737+
- All version files updated (via scripts/update-versions.sh)
845738
- Git tag pushed
846739
- CI artifacts built (via gate)
847-
- npm and PyPI packages verified
740+
- npm, PyPI, and Homebrew packages verified
848741
- Local installation updated
849742
- Daemons restarted
850743
- Newsletter generated

.claude-plugin/marketplace.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"name": "beads",
1010
"source": "./claude-plugin",
1111
"description": "AI-supervised issue tracker for coding workflows",
12-
"version": "0.58.0"
12+
"version": "0.59.0"
1313
}
1414
]
1515
}

CHANGELOG.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,65 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.59.0] - 2026-03-05
11+
12+
### Added
13+
14+
- **`bd list --tree` default** — tree view is now the default display mode for `bd list` ([GH#2345](https://github.com/steveyegge/beads/issues/2345))
15+
- **OpenCode recipe**`bd setup` now includes an OpenCode integration recipe
16+
- **Fresh clone detection**`bd doctor` detects fresh clones on Dolt server and guides through init ([GH#2372](https://github.com/steveyegge/beads/issues/2372))
17+
- **Config-aware init guard**`bd init` distinguishes server-reachable from DB-exists, with better error messages ([GH#2372](https://github.com/steveyegge/beads/issues/2372))
18+
- **Sync remote hint in errors** — database-not-found errors now surface `sync.git-remote` config for easier troubleshooting
19+
- **Nix flake modernization** — updated flake for nixpkgs-25.11, fix-merge of PR #2314
20+
- **Doctor warning suppression** — suppress specific `bd doctor` warnings via config ([GH#1095](https://github.com/steveyegge/beads/issues/1095))
21+
- **Community Tools** — added fancypantalons/nvim-beads to COMMUNITY_TOOLS.md
22+
23+
### Changed
24+
25+
- **3-way merge config removed**`ConflictStrategy`, `FieldStrategy`, and all associated config/validation removed; Dolt handles merge natively ([GH#2353](https://github.com/steveyegge/beads/pull/2353))
26+
- **Daemon infrastructure removed** — the bd daemon has been fully removed; bd is now purely CLI-driven ([w-bd-001](https://github.com/steveyegge/beads/issues/w-bd-001))
27+
- **Legacy daemon lock infrastructure removed** — cleaned up stale lock files and related code
28+
- **Backup git-push defaults to OFF**`bd backup` git push now requires explicit opt-in ([GH#2363](https://github.com/steveyegge/beads/issues/2363))
29+
- **Test infrastructure modernized** — migrated all tests from `StartTestDoltServer` to container-native API; readiness expanded to 5-state enum; crash detection via standalone functions ([GH#2304](https://github.com/steveyegge/beads/pull/2304))
30+
- **`ExtractPrefix` consolidated** — moved to `types` package for reuse across codebase
31+
32+
### Fixed
33+
34+
- **Hook marker handling**`bd doctor --fix` repairs broken/orphaned hook markers; version added to END marker for future matching ([GH#2344](https://github.com/steveyegge/beads/issues/2344))
35+
- **Legacy hook migration** — warn on user-modified legacy hooks; handle backup sidecar files during migration
36+
- **Dolt push/pull directory** — use correct database subdirectory for CLI push/pull/fetch operations
37+
- **Contributor auto-routing** — add fallback routing for show/update/close commands ([GH#2345](https://github.com/steveyegge/beads/issues/2345))
38+
- **Config-aware prefix detection**`ResolvePartialID` now respects config for prefix routing
39+
- **Doctor command order** — correct `enrichFreshClone` command sequencing
40+
- **Batch IN-clause queries** — prevent full table scans in all IN-clause queries ([GH#2294](https://github.com/steveyegge/beads/issues/2294))
41+
- **Init port resolution** — use `DefaultConfig` for port resolution during init ([GH#2372](https://github.com/steveyegge/beads/issues/2372))
42+
- **Idle monitor** — single-instance lock, port config isolation, project UUID verification ([GH#2367](https://github.com/steveyegge/beads/issues/2367), [GH#2372](https://github.com/steveyegge/beads/issues/2372))
43+
- **Init data safety** — prevent data destruction from misleading error messages ([GH#2363](https://github.com/steveyegge/beads/issues/2363), [GH#2372](https://github.com/steveyegge/beads/issues/2372))
44+
- **Circuit breaker tuning** — reduce cooldown to 5s and add active TCP health probe
45+
- **Deterministic ordering** — add ID tiebreaker to all ORDER BY clauses
46+
- **Backup on feature branches** — skip git commits during hook runs and on feature branches
47+
- **Backup config routing** — route `backup.*` keys to `config.yaml` so overrides are respected
48+
- **Embedded Dolt** — handle context canceled in cleanup, add SQL concurrency test
49+
- **Tombstone entries** — skip tombstone entries in `bd init --from-jsonl`
50+
- **DerivePort** — restore as standalone default in `DefaultConfig`; log fallback on collision
51+
- **Cross-type blocking** — align validation with cross-type blocking rules
52+
- **Cross-prefix dep routing** — extend to dep commands ([GH#2296](https://github.com/steveyegge/beads/pull/2296))
53+
- **Dolt serialization retry** — retry on serialization error in concurrent tests
54+
- **CLI routing** — gate on local remote availability; extend SQL push timeout ([GH#2295](https://github.com/steveyegge/beads/pull/2295))
55+
- **Docker Hub network calls** — skip when Dolt image not cached ([GH#2277](https://github.com/steveyegge/beads/issues/2277))
56+
- **Wisp batch deletes** — commit per batch in `deleteWispBatch` to avoid write timeout
57+
- **Idle monitor watchdog** — kills itself via `Stop()` to prevent zombie processes
58+
59+
### Documentation
60+
61+
- Audit and clean up stale sync mode documentation ([w-bd-004](https://github.com/steveyegge/beads/issues/w-bd-004))
62+
- Network/privacy section added to SECURITY.md
63+
- DerivePort birthday-problem collision recovery documented
64+
- Misleading examples corrected in QUICKSTART.md
65+
- GIT_INTEGRATION.md updated re deprecated beads-merge and Jujutsu
66+
- Circuit breaker and upgrade recovery troubleshooting docs
67+
- Duplicate nvim-beads entry fixed in COMMUNITY_TOOLS.md
68+
1069
## [0.58.0] - 2026-03-02
1170

1271
### Added

claude-plugin/.claude-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "beads",
33
"description": "AI-supervised issue tracker for coding workflows. Manage tasks, discover work, and maintain context with simple CLI commands.",
4-
"version": "0.58.0",
4+
"version": "0.59.0",
55
"author": {
66
"name": "Steve Yegge",
77
"url": "https://github.com/steveyegge"

cmd/bd/info.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,29 @@ type VersionChange struct {
209209

210210
// versionChanges contains agent-actionable changes for recent versions
211211
var versionChanges = []VersionChange{
212+
{
213+
Version: "0.59.0",
214+
Date: "2026-03-05",
215+
Changes: []string{
216+
"NEW: bd list --tree is now the default display mode",
217+
"NEW: bd doctor detects fresh clone state on Dolt server",
218+
"NEW: bd init distinguishes server-reachable from DB-exists",
219+
"NEW: bd setup includes OpenCode recipe",
220+
"NEW: bd doctor warning suppression via config",
221+
"CHANGED: Daemon infrastructure fully removed — bd is purely CLI-driven",
222+
"CHANGED: Backup git-push defaults to OFF (explicit opt-in required)",
223+
"FIX: bd doctor --fix repairs broken/orphaned hook markers (GH#2344)",
224+
"FIX: Legacy hook migration warns on user-modified hooks",
225+
"FIX: Dolt push/pull uses correct database subdirectory",
226+
"FIX: Contributor auto-routing fallback for show/update/close (GH#2345)",
227+
"FIX: Init port resolution uses DefaultConfig (GH#2372)",
228+
"FIX: Idle monitor single-instance lock and port isolation (GH#2367)",
229+
"FIX: Init prevents data destruction from misleading errors (GH#2363)",
230+
"FIX: Circuit breaker cooldown reduced to 5s with TCP probe",
231+
"FIX: Deterministic ordering with ID tiebreaker in all queries",
232+
"FIX: Batch IN-clause queries prevent full table scans",
233+
},
234+
},
212235
{
213236
Version: "0.58.0",
214237
Date: "2026-03-02",

0 commit comments

Comments
 (0)