Release v0.40.0
New commands and features: - bd worktree for parallel development - bd slot commands for agent bead slot management - bd agent state for ZFC-compliant state reporting - bd doctor --deep for full graph integrity validation - Agent bead support (type=agent, type=role, migration 030) - Computed .parent field in JSON output - Auto-bypass daemon for wisp operations - Pour warning for vapor-phase formulas Performance: - O(2^n) → O(V+E) cycle detection (GH#775) Fixes: - Import hash mismatch warnings - Test updates for version tracking thresholds - Migration test updated for new agent schema fields 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
57
CHANGELOG.md
57
CHANGELOG.md
@@ -5,6 +5,63 @@ All notable changes to the beads project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [0.40.0] - 2025-12-28
|
||||
|
||||
### Added
|
||||
|
||||
- **`bd worktree` command** - Parallel development support
|
||||
- Manage git worktrees with beads integration
|
||||
- Enables working on multiple issues simultaneously
|
||||
|
||||
- **`bd slot` commands** - Agent bead slot management
|
||||
- Track agent assignments with dedicated slot operations
|
||||
- Supports Gas Town multi-agent workflows
|
||||
|
||||
- **`bd agent state` command** - ZFC-compliant state reporting
|
||||
- Report agent state in standardized format
|
||||
- Enables machine-readable status checks
|
||||
|
||||
- **`bd doctor --deep`** - Full graph integrity validation
|
||||
- Deep validation of bead dependency graphs
|
||||
- Includes agent bead integrity checks
|
||||
|
||||
- **Agent bead support** - New bead types
|
||||
- `type=agent` and `type=role` for agent tracking
|
||||
- Agent-specific fields in schema (migration 030)
|
||||
- Agent ID pattern validation on create
|
||||
|
||||
- **Computed `.parent` field** - JSON output enhancement
|
||||
- Parent field included in JSON for convenience
|
||||
- Simplifies integration with external tools
|
||||
|
||||
- **Auto-bypass daemon for wisp operations** - Performance
|
||||
- Ephemeral wisp operations skip daemon overhead
|
||||
- Faster patrol cycle processing
|
||||
|
||||
- **Pour warning for vapor-phase formulas** - Safety
|
||||
- Warning when pouring formulas designed for wisps
|
||||
- Prevents accidental persistent molecule creation
|
||||
|
||||
### Fixed
|
||||
|
||||
- **O(2^n) → O(V+E) cycle detection** (GH#775) - Performance
|
||||
- Replaced exponential algorithm with linear DFS
|
||||
- Dramatic speedup for large dependency graphs
|
||||
|
||||
- **Import hash mismatch warnings** - Data integrity
|
||||
- Update jsonl_file_hash on import operations
|
||||
- Prevents spurious hash mismatch warnings
|
||||
|
||||
### Changed
|
||||
|
||||
- **Community tools documentation** (GH#772, GH#776)
|
||||
- Consolidated into dedicated docs page
|
||||
- Added opencode-beads to community tools list
|
||||
|
||||
- **Activity feed improvements** - Better context
|
||||
- Shows title and assignee in activity entries
|
||||
- More informative `bd activity` output
|
||||
|
||||
## [0.39.1] - 2025-12-27
|
||||
|
||||
### Added
|
||||
|
||||
@@ -935,7 +935,7 @@ func TestCheckMetadataVersionTracking(t *testing.T) {
|
||||
name: "slightly outdated version",
|
||||
setupVersion: func(beadsDir string) error {
|
||||
// Use a version that's less than 10 minor versions behind current
|
||||
return os.WriteFile(filepath.Join(beadsDir, ".local_version"), []byte("0.30.0\n"), 0644)
|
||||
return os.WriteFile(filepath.Join(beadsDir, ".local_version"), []byte("0.35.0\n"), 0644)
|
||||
},
|
||||
expectedStatus: doctor.StatusOK,
|
||||
expectWarning: false,
|
||||
@@ -944,7 +944,7 @@ func TestCheckMetadataVersionTracking(t *testing.T) {
|
||||
name: "very old version",
|
||||
setupVersion: func(beadsDir string) error {
|
||||
// Use a version that's 10+ minor versions behind current (triggers warning)
|
||||
return os.WriteFile(filepath.Join(beadsDir, ".local_version"), []byte("0.24.0\n"), 0644)
|
||||
return os.WriteFile(filepath.Join(beadsDir, ".local_version"), []byte("0.29.0\n"), 0644)
|
||||
},
|
||||
expectedStatus: doctor.StatusWarning,
|
||||
expectWarning: true,
|
||||
|
||||
@@ -14,7 +14,7 @@ import (
|
||||
|
||||
var (
|
||||
// Version is the current version of bd (overridden by ldflags at build time)
|
||||
Version = "0.39.1"
|
||||
Version = "0.40.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)
|
||||
|
||||
@@ -466,7 +466,7 @@ func TestMigrateContentHashColumn(t *testing.T) {
|
||||
notes TEXT NOT NULL DEFAULT '',
|
||||
status TEXT NOT NULL CHECK (status IN ('open', 'in_progress', 'blocked', 'closed', 'tombstone')),
|
||||
priority INTEGER NOT NULL,
|
||||
issue_type TEXT NOT NULL CHECK (issue_type IN ('bug', 'feature', 'task', 'epic', 'chore', 'message')),
|
||||
issue_type TEXT NOT NULL CHECK (issue_type IN ('bug', 'feature', 'task', 'epic', 'chore', 'message', 'agent', 'role')),
|
||||
assignee TEXT,
|
||||
estimated_minutes INTEGER,
|
||||
created_at DATETIME NOT NULL,
|
||||
@@ -496,9 +496,15 @@ func TestMigrateContentHashColumn(t *testing.T) {
|
||||
await_id TEXT DEFAULT '',
|
||||
timeout_ns INTEGER DEFAULT 0,
|
||||
waiters TEXT DEFAULT '',
|
||||
hook_bead TEXT DEFAULT '',
|
||||
role_bead TEXT DEFAULT '',
|
||||
agent_state TEXT DEFAULT '',
|
||||
last_activity DATETIME,
|
||||
role_type TEXT DEFAULT '',
|
||||
rig TEXT DEFAULT '',
|
||||
CHECK ((status = 'closed') = (closed_at IS NOT NULL))
|
||||
);
|
||||
INSERT INTO issues SELECT id, title, description, design, acceptance_criteria, notes, status, priority, issue_type, assignee, estimated_minutes, created_at, '', updated_at, closed_at, external_ref, compaction_level, compacted_at, original_size, compacted_at_commit, source_repo, '', NULL, '', '', '', '', 0, 0, 0, '', '', '', '', '', '', 0, '' FROM issues_backup;
|
||||
INSERT INTO issues SELECT id, title, description, design, acceptance_criteria, notes, status, priority, issue_type, assignee, estimated_minutes, created_at, '', updated_at, closed_at, external_ref, compaction_level, compacted_at, original_size, compacted_at_commit, source_repo, '', NULL, '', '', '', '', 0, 0, 0, '', '', '', '', '', '', 0, '', '', '', '', NULL, '', '' FROM issues_backup;
|
||||
DROP TABLE issues_backup;
|
||||
`)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user