Stop existing daemons before binary replacement during install
Prevents file lock race condition by gracefully stopping bd daemons
before replacing the binary. Safe for fresh installs (skips if bd not found).
Cherry-picked website/, scripts/generate-llms-full.sh, and deploy-docs.yml
from joyshmitz's PR. Fixed workflow to trigger on main branch instead of
docs/docusaurus-site.
Features:
- Docusaurus documentation site with llms.txt support
- Environment-variable driven config (defaults to steveyegge org)
- Automated llms-full.txt generation from docs
- GitHub Pages deployment workflow
Co-authored-by: joyshmitz <joyshmitz@users.noreply.github.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Executed-By: beads/crew/dave
Rig: beads
Role: crew
When running the release workflow, users often stage CHANGELOG.md and info.go
changes before running bump-version.sh. Previously, the script would error
on uncommitted changes with --commit.
Now:
- --allow-staged permits pre-staged CHANGELOG.md and cmd/bd/info.go
- Script detects these as expected release files and includes them in commit
- Provides helpful error message if other files are staged
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Analysis found these commands are dead code:
- gt never calls `bd pin` - uses `bd update --status=pinned` instead
- Beads.Pin() wrapper exists but is never called
- bd hook functionality duplicated by gt mol status
- Code comment says "pinned field is cosmetic for bd hook visibility"
Removed:
- cmd/bd/pin.go
- cmd/bd/unpin.go
- cmd/bd/hook.go
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Without codesigning, the binary gets 'Killed: 9' on macOS due to
Gatekeeper security. This adds xattr -cr and codesign -f -s - after
building and after each copy to install locations.
Adds chaos and E2E test running to the release process:
- New --run-chaos-tests flag runs chaos/corruption recovery tests
- Runs both chaos and e2e tagged tests before commit/tag
- Updated quick start to recommend chaos tests for releases
- Tests use 10m timeout for thorough coverage
Part of PR #752 integration.
Implements Authenticode signing for Windows binaries to reduce AV false positives.
Changes:
- Add scripts/sign-windows.sh for osslsigncode-based signing
- Update .goreleaser.yml with post-build signing hook
- Update release.yml to install osslsigncode and pass secrets
- Update docs/ANTIVIRUS.md with signing verification instructions
- Update scripts/README.md with signing script documentation
The signing is gracefully degraded - releases continue without signing
if the certificate secrets are not configured.
Required secrets for signing:
- WINDOWS_SIGNING_CERT_PFX_BASE64: base64-encoded PFX certificate
- WINDOWS_SIGNING_CERT_PASSWORD: certificate password
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Adds manual publishing options for releases:
- --publish-npm: Publish @beads/bd to npm registry
- --publish-pypi: Publish beads-mcp to PyPI
- --publish-all: Shorthand for both
Note: CI already handles publishing automatically when tags are pushed.
These flags are for manual releases or when CI publishing fails.
Improves the version bump workflow with missing local installation steps:
- --install: Now installs bd to BOTH ~/go/bin AND ~/.local/bin
- --mcp-local: Install beads-mcp from local source via uv/pip
- --restart-daemons: Restart all bd daemons to pick up new version
- --all: Shorthand for --install --mcp-local --restart-daemons
Also updated RELEASING.md with flag documentation and recommended workflow.
Closes bd-of2p
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Learned during v0.32.1 release: running version bumps from crew clones
causes git conflicts with bd sync, which commits from mayor/rig.
Added note to always run releases from the rig root where beads lives.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Document that version bumps should be done via molecule bonding for
guided, resumable releases. The bd-6s61 template creates child beads
for each release step.
Until bd mol bond is implemented (bd-usro), use bd template instantiate.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Adds winget manifest files for publishing beads to Windows Package Manager:
- winget/SteveYegge.beads.yaml (version manifest)
- winget/SteveYegge.beads.installer.yaml (installer config)
- winget/SteveYegge.beads.locale.en-US.yaml (package metadata)
- scripts/update-winget.sh (helper script for updating manifests)
Once submitted to microsoft/winget-pkgs, users can install with:
winget install SteveYegge.beads
The update-winget.sh script automates manifest updates for new releases.
Closes#524🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The 0.30.2 bump was done manually and missed several files:
- .claude-plugin/plugin.json (was 0.30.0)
- .claude-plugin/marketplace.json (was 0.30.0)
- npm-package/package.json (was 0.30.1)
- integrations/beads-mcp/pyproject.toml (was 0.30.1)
- integrations/beads-mcp/src/beads_mcp/__init__.py (was 0.30.1)
Added scripts/check-versions.sh and CI job to prevent this in future.
Always use scripts/bump-version.sh for version bumps.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Closes#566
There might be some further work to ensure that bd version still reports branch and commit hash. That'll be a separate PR.
Co-authored-by: Matt Wilkie <matt.wilkie@yukon.ca>
Adds comprehensive Git worktree support for beads issue tracking:
Core changes:
- New internal/git/gitdir.go package for worktree detection
- GetGitDir() returns proper .git location (main repo, not worktree)
- Updated all hooks to use git.GetGitDir() instead of local helper
- BeadsDir() now prioritizes main repository's .beads directory
Features:
- Hooks auto-install in main repo when run from worktree
- Shared .beads directory across all worktrees
- Config option no-install-hooks to disable auto-install
- New bd worktree subcommand for diagnostics
Documentation:
- New docs/WORKTREES.md with setup instructions
- Updated CHANGELOG.md and AGENT_INSTRUCTIONS.md
Testing:
- Updated tests to use exported git.GetGitDir()
- Added worktree detection tests
Co-authored-by: Claude <noreply@anthropic.com>
Closes: #478
On macOS, downloaded binaries with ad-hoc signatures from other machines
trigger Gatekeeper malware checks on every invocation, causing slowness.
Re-signing with a local ad-hoc signature avoids this.
Fixes#466🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Automatically moves [Unreleased] section to [version] - date
- Creates new empty [Unreleased] section at top
- Includes CHANGELOG.md in version bump commit
- Follows Keep a Changelog format properly
- Adds automatic beads-mcp upgrade during version bumps
- Tries pip first, falls back to uv tool
- Warns if version mismatch (normal before PyPI publish)
- Updates RELEASING.md Post-Release section with usage
- Adds reminders in 'Next steps' output if not used
Overview: Added comprehensive test infrastructure to handle the large
test suite (41K LOC, 313 tests in cmd/bd alone) with automatic skipping
of known broken tests.
Changes:
- .test-skip: List of broken tests to skip (with GH issue references)
- scripts/test.sh: Smart test runner that auto-skips broken tests
- docs/TESTING.md: Comprehensive testing guide
- .claude/test-strategy.md: Quick reference for AI agents
- Updated Makefile to use new test script
Known Issues Filed:
- GH #355: TestFallbackToDirectModeEnablesFlush (database deadlock)
- GH #356: TestFindJSONLPathDefault (wrong JSONL filename)
Performance: 3min total (180s compilation, 3.8s execution)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Cleaned up scripts/ directory by removing:
- Investigation/one-off tools (collision-calculator, latency benchmarks)
- Test cleanup utilities (cleanup-test-pollution)
- Nix packaging support (update-nix-hash)
- Agent Mail server management scripts (4 scripts, will be replaced)
Retains only actively-used scripts:
- release.sh, bump-version.sh, update-homebrew.sh
- install.sh, install-hooks.sh, hooks/
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- docs/AGENT_MAIL_DEPLOYMENT.md: 10-step deployment plan for 13 workspaces
- docs/AGENT_MAIL_MULTI_WORKSPACE_SETUP.md: Architecture and configuration guide
- scripts/setup-agent-mail-workspace.sh: Auto-configure .envrc per workspace
- scripts/start-agent-mail-server.sh: Start Agent Mail server
- scripts/stop-agent-mail-server.sh: Stop Agent Mail server
- scripts/agent-mail-status.sh: Monitor server and all channels
Supports 3-channel setup: beads.dev, vc.dev, wyvern.dev
Ready for 0.23.0 deployment with Agent Mail integration
Amp-Thread-ID: https://ampcode.com/threads/T-bc960efb-3ddc-4635-8c8e-a42a6e9e67d9
Co-authored-by: Amp <amp@ampcode.com>
- Created lib/beads_mail_adapter.py with AgentMailAdapter class
- Automatic health check on initialization
- Graceful degradation when server unavailable
- Methods: reserve_issue(), release_issue(), notify(), check_inbox()
- Environment-based configuration (AGENT_MAIL_URL, AGENT_MAIL_TOKEN)
- Comprehensive unit tests (15 tests, 100% passing)
- Full documentation in lib/README.md
Closes bd-m9th
Amp-Thread-ID: https://ampcode.com/threads/T-caa26228-0d18-4b35-b98a-9f95f6a099fe
Co-authored-by: Amp <amp@ampcode.com>
* Add script to automate Nix vendorHash updates
- Create update-nix-hash.sh to automate vendorHash calculation
- Update vendorHash (to be usedafter recent Go dependency changes)
- Script uses ed for OS agnostic in-place editing and extracts hash from nix output
Co-Authored-By: Claude <noreply@anthropic.com>
* Fix Test Nix Flake CI job
* Revert CI change - bd outputs help by default without 'help' arg
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Steve Yegge <stevey@sourcegraph.com>
This addresses confusion where version bump doesn't trigger release.
The script now supports:
- --commit: Create git commit
- --tag: Create annotated git tag (requires --commit)
- --push: Push commit and tag (requires --tag)
Updated RELEASING.md to use: ./scripts/bump-version.sh X.Y.Z --commit --tag --push
Fixes the gap between version bump and actual release trigger.
- Start with 4-char IDs for small databases (0-500 issues)
- Scale to 5-char at 500-1500 issues, 6-char at 1500+
- Configurable via max_collision_prob, min/max_hash_length
- Birthday paradox math ensures collision probability stays under threshold
- Comprehensive tests and documentation
- Collision calculator tool for analysis
Also filed bd-aa744b to remove sequential ID code path.