github steveyegge/beads v0.49.2

5 hours ago

beads v0.49.2

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/steveyegge/beads/main/scripts/install.sh | bash

Windows (PowerShell):

irm https://raw.githubusercontent.com/steveyegge/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

  • e02c44d Merge PR #1290: feat: Add GitLab backend for bidirectional issue sync
  • dc8bb7a feat(cli): add bd backend and bd sync mode subcommands
  • 7810c63 feat(config): add env var overrides for Dolt server connection settings
  • 9df801e feat(config): make agent roles configurable (bd-hx8w)
  • 857d2b6 feat(context): add UserRole detection to RepoContext
  • 9e37767 feat(dep): resolve external refs in dep list for cross-rig dependencies
  • e4886a0 feat(doctor): add Dolt-specific diagnostics and performance profiling
  • abbc091 feat(gitlab): implement GitLab REST API client wrapper
  • fc27840 feat(import): process JSONL deletion markers (bd-9qywp)
  • d5a8e0f feat(init): add interactive contributor role prompt
  • a2a94e1 feat(init): auto-detect dolt server and enable server mode (gt-1mf.3)
  • 03ba29f feat(jira): add pull_prefix and push_prefix config options
  • eb07ed9 feat(kv): add key-value store commands
  • 13dbef5 feat(kv): add key-value store commands (#1164)
  • 82a2354 feat(mol): add hint to view step instructions in mol current output (#1403)
  • 9e16f34 feat(role): implement explicit role configuration via git
  • b080961 feat(sync): detect push permission errors during sync
  • 774cc5b feat: add comment_count to issue JSON views (list, ready, search)
  • c23a848 feat: add events JSONL export (opt-in via events.export config)
  • 92fd124 feat: add optional per-issue JSON metadata field (SQLite + Dolt) (#1407)

Bug Fixes

  • 2879554 fix: handle nil pointer dereference in bd restore with invalid issue ID
  • e66b775 fix(build): add CGO build tags to Dolt storage for cross-compilation
  • 9e5ea59 fix(ci): disable CGO for Windows build in goreleaser
  • 051aeb0 fix(cli): address code review feedback for backend/sync mode commands
  • e07ac18 fix(cli): use abstract error messages instead of exposing internals (bd-ats9.3.2)
  • 7448754 fix(config): add YAML config support for daemon auto-sync settings (#1294)
  • 3abec58 fix(create): remove Gas Town-specific --role-type flag (bd-31ajf)
  • 02b445e fix(daemon): make daemon start idempotent (#1334)
  • 9939e71 fix(doctor): add Dolt backend detection to all fix functions (gt-doctor-dolt-fix)
  • cb1a379 fix(doctor): add fix for stale JSONL in dolt-native mode (bd-bbo8)
  • 289512a fix(doctor): address review issues in Dolt diagnostics
  • bf194b7 fix(doctor): skip SQLite-specific checks when using Dolt backend
  • ba3a725 fix(formula): add dev build handling to local-install step
  • 93965b4 fix(formula): ignore undeclared handlebars in description text (gt-ky9loa) (#1394)
  • a907203 fix(gitlab): P0 - conflict detection before push and SyncContext
  • f9f3a03 fix(gitlab): P1 - add pagination limit and context cancellation
  • 745002e fix(gitlab): P2 - fix error handling and type safety
  • 917d8be fix(gitlab): P2-P3 - cleanup deprecated code and improve docs
  • 96a28ee fix(gitlab): address PR review findings for merge readiness
  • 8604c5e fix(gitlab): address code review round 3 feedback
  • a176177 fix(importer): remove dead code with sqlite.IsUniqueConstraintError (bd-2kgr)
  • dbc5f3c fix(kv): add key validation and exit code on missing key
  • d8f5e1f fix(linear): exclude ephemeral issues from sync push by default (#1397)
  • 9d75d41 fix(lint): add gosec nolint for events.jsonl file permissions
  • 18b7baa fix(lint): use 0600 permissions for events.jsonl
  • 7e3b828 fix(main): use GetDoltDatabase() instead of raw cfg.Database for server mode
  • ba8ca25 fix(mcp): Update Stats model to match bd stats --json output (#1392)
  • a5c1664 fix(merge): tombstone should win over closed in resolve_conflicts.go
  • 82f6435 fix(migrate): use storage factory for backend-aware database access
  • 306de3b fix(rpc): handle EINVAL from chmod on Unix sockets in containers (#1399)
  • e880159 fix(state): allow event type in CreateIssue validation (#1398)
  • 1752e58 fix(storage): document SQLite-only API and make FindAllDatabases backend-aware
  • aa663c4 fix(storage): move BatchCreateOptions to storage package for backend-agnostic batch creation
  • de64d81 fix(storage): use factory for backend-aware storage creation (bd-m2jr)
  • e78bcc0 fix(sync): normalize JSONL path in CommitToSyncBranch for sync-branch mode (#1340)
  • 6320e2a fix(sync): respect dolt-native mode in JSONL export paths
  • 1f24187 fix(sync): respect dolt-native mode in daemon_sync_branch.go (bd-ats9.3.1)
  • e22f7d8 fix(sync): set GIT_DIR and GIT_WORK_TREE in GitCmd for worktree support
  • 9d669e0 fix(sync): use store.Path() for database mtime update
  • 704affb fix(types): generalize RoleType comment, file followup (bd-hx8w)
  • c156580 fix(update): use IsValidWithCustom for --type validation (#1356)
  • ed6d21d fix: Auto-stage JSONL files after flush in pre-push hook
  • b1f0774 fix: check rows.Err() in SQLite GetAllEventsSince
  • 1fefbaf fix: code review fixes for bd-hx8w
  • 8afd0a0 fix: correct error message for --gated flag (#1391)
  • a696a36 fix: detect and clean stale Dolt lock files (gt-dolt-lockfiles)
  • 6f707fc fix: ensure sync-branch worktree exists on fresh clone (#1349)
  • 8b3432a fix: exclude tombstones from external_ref uniqueness validation
  • b6b5a0a fix: graceful server-to-embedded fallback when Dolt server unreachable (gt-dolt-fallback)
  • 617d4ac fix: rename events.export config key to events-export
  • 02f889f fix: skip JSONL staleness check in dolt-native mode (gt-dolt-stale-jsonl)
  • bd17093 fix: skip sync when source and destination JSONL paths are identical (#1367)

Others

  • c8abf99 Add GitLab types for beads integration (Issue #4)
  • 04b34b2 Add bd gitlab command with sync, status, projects subcommands
  • 789a0a4 Add export-state/ to gitignore template
  • efe31b4 Add integration tests for GitLab backend (Issue #11)
  • 70e5cc1 Add review fixes: URL encoding, WithEndpoint, FetchIssueByIID, CreateIssueLink
  • f271075 Add unit tests for GitLab backend (Issue #10)
  • b600c47 Fix code review issues: path-based IDs, ID collisions, warnings
  • 78adcf5 Fix daemon to respect BD_SOCKET environment variable
  • 7af8153 Implement GitLab sync (Issue #7): pull, push, conflict detection
  • e8dd9b4 Implement GitLab to beads mapping (Issue #6)
  • 1f5cb9f Implement conflict resolution strategies (Issue #8)
  • 2c7e2d8 Revert Dolt lock cleanup workaround; fix embedded Dolt open via driver retries (#1389)
  • c6bb265 Show blocking dependencies inline in bd list output
  • 5457c1d Update COMMUNITY_TOOLS.md
  • ed3d36d chore(beads): sync after closing bd-7nd6t
  • 379c4c1 chore(deps): bump fastmcp in /integrations/beads-mcp (#1345)
  • b8f4f91 chore(deps): bump github.com/ncruces/go-sqlite3 from 0.30.4 to 0.30.5 (#1346)
  • 922c7f6 docs(kv): add CLI documentation and tests for KV store
  • 100b89a feat(show,comments): display comment timestamps with time and add --local-time flag
  • 6a9de49 refactor(compact): accept interface instead of concrete SQLiteStorage (bd-oa45)
  • 07600dc refactor(hooks): remove Gas Town role detection from beads core
  • 8516436 refactor(hooks): remove all Gas Town role detection from beads
  • 2e6789d refactor(kv): move commands under bd kv subcommand
  • cb1e355 refactor(rpc): fix leaky abstraction - remove direct sqlite imports (bd-oslm)
  • 2d44697 refactor(validation): remove Gas Town actor validation from beads core (bd-741si)
  • 36e1725 review(dolt): complete bd-ats9.4 - Dolt integration review
  • cbf21ea review(sync): complete sync package v3 readiness review (bd-ats9.2)
  • 5f63be2 test(cli): add tests for bd backend and bd sync mode commands (bd-ib7s)

Don't miss a new beads release

NewReleases is sending notifications on new releases.