diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 19c48bce..e44454cc 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -9,7 +9,7 @@ "name": "beads", "source": "./claude-plugin", "description": "AI-supervised issue tracker for coding workflows", - "version": "0.46.0" + "version": "0.47.0" } ] } diff --git a/CHANGELOG.md b/CHANGELOG.md index fb7d216f..dfa2345b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,129 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.47.0] - 2026-01-11 + +## [0.47.0] - 2026-01-11 + +### Added + +- **Pull-first sync with 3-way merge** - Major sync improvement (#918) + - Reconciles local changes with remote updates before pushing + - Field-level conflict merging reduces manual intervention + - Base state tracking for better change detection + +- **`bd resolve-conflicts` command** - Resolve JSONL merge conflict markers (bd-7e7ddffa) + - Mechanical mode uses updated_at timestamps for deterministic resolution + - Closed status wins over open, higher priority wins + - Notes concatenated, dependencies unioned + - Dry-run mode and JSON output for agent integration + +- **`bd create --dry-run`** - Preview issue creation without side effects (bd-0hi7) + - Shows what would be created in human-readable or JSON format + - Works with --rig/--prefix flags + +- **Gate auto-discovery** - Auto-discover workflow run ID in `bd gate check` (bd-fbkd) + - Queries GitHub directly when await_id is a workflow name hint + - ZFC-compliant: takes most recent run deterministically + +- **Linear project filter** - `linear.project_id` config for sync (#938) + - Fetch only issues from a specific project instead of all team issues + +- **`bd ready --gated`** - Gate-resume discovery for molecules (bd-lhalq) + - Find molecules waiting on gates for automatic resumption + +- **Multi-repo custom types** - Trust and discover types across repositories (bd-62g22, bd-9ji4z) + - `bd doctor` discovers custom types from multiple repos + - Non-built-in types trusted during hydration + +- **Visual UX improvements** - Enhanced display for list tree, graph, and show commands + - Better formatting and readability + +- **Stale database handling** - AllowStale option in List API (bd-dpkdm) + - Read-only commands auto-import on stale DB (#977, #982) + - Cold-start bootstrap for read commands + +- **Batch molecule operations** - `bd mol burn` supports multiple molecules (feat(mol)) + +- **Redirect health checks** - `bd doctor` validates redirect configurations + +- **Schema extensions** - New fields for HOP integration + - `crystallizes` column in sqlite storage + - `attests` edge type for skill attestations + - `owner` field for human attribution + - `actor` fallback includes git user.name (#994) + +### Fixed + +- **Daemon mode completeness** - Several daemon mode gaps closed (GH#952) + - `--due` and `--defer` flags now work in daemon mode (#953) + - `bd dep add/remove --json` returns proper JSON output (#961) + - `DeferUntil` field parsed correctly in daemon handleCreate (#950) + - Silence deprecation warnings in `--json` mode (#1039a691) + +- **Sync robustness** + - Canonicalize dbPath to fix filepath.Rel errors (GH#959, #960) + - Validate custom types in batch issue creation (#943) + - Force-add .beads in worktree for contributor mode (#947) + - Initialize store after daemon disconnect (GH#984) + - `sync --import-only` works when daemon was connected + +- **Windows fixes** + - Infinite loop in findLocalBeadsDir/findOriginalBeadsDir (GH#996) + - `bd init` no longer hangs when not in a git repo (#991) + - Daemon stop/kill uses proper Windows API (GH#992) + - SQLite uses DELETE mode on WSL2 Windows filesystem (GH#920) + +- **Daemon socket handling** - Long workspace paths now work (GH#1001, #1008) + - Socket path shortening for deep directory structures + - Relocate daemon socket for deep paths + +- **Prevent data corruption** + - FK constraint failures on batch/concurrent issue creation (GH#956) + - Prevent closing issues with open blockers (GH#962) + - Nil pointer panic in dep --json mode (GH#998) + +- **Doctor improvements** + - Recognize bd shims when external manager config exists (GH#946) + - Detect lefthook jobs syntax (GH#981) + - Add .sync.lock and sync_base.jsonl to gitignore (#980) + +- **Prime command** - Use flush-only workflow when no git remote configured (#940) + +- **Install safety** - Stop existing daemons before binary replacement (#945) + +- **Git hooks** - Add `--no-daemon` to sync commands to prevent inline import failures (#948) + +- **Linear sync** - Use project_id when creating issues via `sync --push` (GH#973, #1012) + +- **Team wizard** - Validate sync.branch in wizard and migrate commands (GH#923) + +- **Worktree fixes** + - Skip beads restore when directory is redirected (bd-lmqhe) + - Migrate sync works in git worktree environments (#970) + +- **Misc fixes** + - `bd edit` parses EDITOR with args (GH#987) + - Use SearchIssues for ID resolution (GH#942) + - Respect hierarchy.max-depth config setting (GH#995, #997) + - Add timeout to daemon request context to prevent hangs + - Avoid null values in Claude settings hooks (GH#955) + - Restore Gas Town types (agent, role, rig, convoy, slot) (GH#941) + - Add TypeRig constant and IsBuiltIn method (GH#1002) + +### Changed + +- **Daemon CLI refactor** - Consolidated to subcommands with semantic styling (#1006) + +- **Release formula refactor** - Bump script broken into individual version-update steps (bd-a854) + - More durable: can resume from specific step if interrupted + - Better visibility in activity feed + +### Documentation + +- Add lazybeads (Bubble Tea TUI by @codegangsta) to community tools (#951) +- Fix `bd quickstart` link to database extension documentation (#939) + ## [0.46.0] - 2026-01-06 ### Added diff --git a/claude-plugin/.claude-plugin/plugin.json b/claude-plugin/.claude-plugin/plugin.json index 1e4296af..d68d5cb9 100644 --- a/claude-plugin/.claude-plugin/plugin.json +++ b/claude-plugin/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "beads", "description": "AI-supervised issue tracker for coding workflows. Manage tasks, discover work, and maintain context with simple CLI commands.", - "version": "0.46.0", + "version": "0.47.0", "author": { "name": "Steve Yegge", "url": "https://github.com/steveyegge" diff --git a/cmd/bd/info.go b/cmd/bd/info.go index 1403313e..4deaaf05 100644 --- a/cmd/bd/info.go +++ b/cmd/bd/info.go @@ -296,6 +296,27 @@ type VersionChange struct { // versionChanges contains agent-actionable changes for recent versions var versionChanges = []VersionChange{ + { + Version: "0.47.0", + Date: "2026-01-11", + Changes: []string{ + "NEW: Pull-first sync with 3-way merge - Reconciles local/remote before push (#918)", + "NEW: bd resolve-conflicts command - Mechanical JSONL conflict resolution (bd-7e7ddffa)", + "NEW: bd create --dry-run - Preview issue creation without side effects (bd-0hi7)", + "NEW: bd ready --gated - Find molecules waiting on gates (bd-lhalq)", + "NEW: Gate auto-discovery - Auto-discover workflow run ID in bd gate check (bd-fbkd)", + "NEW: Multi-repo custom types - bd doctor discovers types across repos (bd-62g22)", + "NEW: Stale DB handling - Read-only commands auto-import on stale DB (#977, #982)", + "NEW: Linear project filter - linear.project_id config for sync (#938)", + "FIX: Windows infinite loop in findLocalBeadsDir (GH#996)", + "FIX: bd init hangs on Windows when not in git repo (#991)", + "FIX: Daemon socket for deep paths - Long workspace paths now work (GH#1001)", + "FIX: Prevent closing issues with open blockers (GH#962)", + "FIX: bd edit parses EDITOR with args (GH#987)", + "FIX: Worktree/redirect handling - Skip restore when redirected (bd-lmqhe)", + "CHANGE: Daemon CLI refactored to subcommands (#1006)", + }, + }, { Version: "0.46.0", Date: "2026-01-06", diff --git a/cmd/bd/templates/hooks/post-checkout b/cmd/bd/templates/hooks/post-checkout index e10bfd19..508aabd5 100755 --- a/cmd/bd/templates/hooks/post-checkout +++ b/cmd/bd/templates/hooks/post-checkout @@ -1,6 +1,6 @@ #!/usr/bin/env sh # bd-shim v1 -# bd-hooks-version: 0.46.0 +# bd-hooks-version: 0.47.0 # # bd (beads) post-checkout hook - thin shim # diff --git a/cmd/bd/templates/hooks/post-merge b/cmd/bd/templates/hooks/post-merge index 7f302e65..a7f08d0e 100755 --- a/cmd/bd/templates/hooks/post-merge +++ b/cmd/bd/templates/hooks/post-merge @@ -1,6 +1,6 @@ #!/usr/bin/env sh # bd-shim v1 -# bd-hooks-version: 0.46.0 +# bd-hooks-version: 0.47.0 # # bd (beads) post-merge hook - thin shim # diff --git a/cmd/bd/templates/hooks/pre-commit b/cmd/bd/templates/hooks/pre-commit index c520c9ff..1c840507 100755 --- a/cmd/bd/templates/hooks/pre-commit +++ b/cmd/bd/templates/hooks/pre-commit @@ -1,6 +1,6 @@ #!/usr/bin/env sh # bd-shim v1 -# bd-hooks-version: 0.46.0 +# bd-hooks-version: 0.47.0 # # bd (beads) pre-commit hook - thin shim # diff --git a/cmd/bd/templates/hooks/pre-push b/cmd/bd/templates/hooks/pre-push index 1572609b..da898fe0 100755 --- a/cmd/bd/templates/hooks/pre-push +++ b/cmd/bd/templates/hooks/pre-push @@ -1,6 +1,6 @@ #!/usr/bin/env sh # bd-shim v1 -# bd-hooks-version: 0.46.0 +# bd-hooks-version: 0.47.0 # # bd (beads) pre-push hook - thin shim # diff --git a/cmd/bd/version.go b/cmd/bd/version.go index 804e5944..2e343284 100644 --- a/cmd/bd/version.go +++ b/cmd/bd/version.go @@ -14,7 +14,7 @@ import ( var ( // Version is the current version of bd (overridden by ldflags at build time) - Version = "0.46.0" + Version = "0.47.0" // Build can be set via ldflags at compile time Build = "dev" // Commit and branch the git revision the binary was built from (optional ldflag) diff --git a/integrations/beads-mcp/pyproject.toml b/integrations/beads-mcp/pyproject.toml index e8244587..539c6a1a 100644 --- a/integrations/beads-mcp/pyproject.toml +++ b/integrations/beads-mcp/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "beads-mcp" -version = "0.46.0" +version = "0.47.0" description = "MCP server for beads issue tracker." readme = "README.md" requires-python = ">=3.10" diff --git a/integrations/beads-mcp/src/beads_mcp/__init__.py b/integrations/beads-mcp/src/beads_mcp/__init__.py index 31b95ccf..429d74c1 100644 --- a/integrations/beads-mcp/src/beads_mcp/__init__.py +++ b/integrations/beads-mcp/src/beads_mcp/__init__.py @@ -4,4 +4,4 @@ This package provides an MCP (Model Context Protocol) server that exposes beads (bd) issue tracker functionality to MCP Clients. """ -__version__ = "0.46.0" +__version__ = "0.47.0" diff --git a/npm-package/package.json b/npm-package/package.json index cca19018..163fa806 100644 --- a/npm-package/package.json +++ b/npm-package/package.json @@ -1,6 +1,6 @@ { "name": "@beads/bd", - "version": "0.46.0", + "version": "0.47.0", "description": "Beads issue tracker - lightweight memory system for coding agents with native binary support", "main": "bin/bd.js", "bin": {