@beads/bd 0.22.1 → 0.24.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/CHANGELOG.md +711 -2
- package/bin/README.md +187 -26
- package/bin/bd +0 -0
- package/package.json +1 -1
package/bin/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,712 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
### Improved
|
|
11
|
+
|
|
12
|
+
- **Daemon Log Rotation**: Increased default rotation limits for better production use (bd-t7ds)
|
|
13
|
+
- Max size increased from 10MB to 50MB per file
|
|
14
|
+
- Max backups increased from 3 to 7 files
|
|
15
|
+
- Max age increased from 7 to 30 days
|
|
16
|
+
- Added comprehensive documentation in CONFIG.md
|
|
17
|
+
- Better handles long-running daemons with high log output
|
|
18
|
+
|
|
19
|
+
- **Git Pre-Push Hook**: Better error messaging and auto-sync option
|
|
20
|
+
- Error message now suggests `bd sync` instead of manual git commands
|
|
21
|
+
- Interactive prompt offers to run `bd sync` automatically
|
|
22
|
+
- Falls back to manual instructions in non-interactive terminals or when bd is unavailable
|
|
23
|
+
- Improves user experience when beads JSONL has uncommitted changes
|
|
24
|
+
|
|
25
|
+
## [0.24.2] - 2025-11-22
|
|
26
|
+
|
|
27
|
+
### Fixed
|
|
28
|
+
|
|
29
|
+
- **Test Stability**: Complete rootCtx initialization fix for all hanging tests (issue #355, b8db5ab)
|
|
30
|
+
- Fixed TestGetAssignedStatus missing rootCtx initialization (a517ec9)
|
|
31
|
+
- Prevents test hangs from uninitialized context
|
|
32
|
+
- Improved test reliability and isolation
|
|
33
|
+
|
|
34
|
+
- **JSONL Configuration**: Improved bd doctor JSONL checks to focus on real problems (87ee3a6)
|
|
35
|
+
- Reduces false positives in JSONL validation
|
|
36
|
+
- Better detection of actual configuration issues
|
|
37
|
+
|
|
38
|
+
### Changed
|
|
39
|
+
|
|
40
|
+
- **JSONL Filename Default**: Changed default JSONL filename from `beads.jsonl` to `issues.jsonl` (c4c5c80)
|
|
41
|
+
- Updated TestFindJSONLPathDefault to match new default (5eefec7)
|
|
42
|
+
- Removed stale `issues.jsonl` in favor of configured `beads.jsonl` (d918e47)
|
|
43
|
+
- More intuitive default filename for new users
|
|
44
|
+
|
|
45
|
+
## [0.24.1] - 2025-11-22
|
|
46
|
+
|
|
47
|
+
### Added
|
|
48
|
+
|
|
49
|
+
- **bd search**: Date and priority filters (787fb4e)
|
|
50
|
+
- `--created-after`, `--created-before` for date filtering
|
|
51
|
+
- `--priority-min`, `--priority-max` for priority range filtering
|
|
52
|
+
- Enables more precise search queries
|
|
53
|
+
|
|
54
|
+
- **bd count**: New command for counting and grouping issues (d7f4189)
|
|
55
|
+
- Count issues by status, priority, type, or labels
|
|
56
|
+
- Helpful for generating statistics and reports
|
|
57
|
+
|
|
58
|
+
- **Test Infrastructure**: Automatic skip list for tests (0040e80)
|
|
59
|
+
- Improves test reliability and maintenance
|
|
60
|
+
- Automatically manages flaky or environment-specific tests
|
|
61
|
+
|
|
62
|
+
### Fixed
|
|
63
|
+
|
|
64
|
+
- **Test Stability**: Fixed hanging tests by initializing rootCtx (822baa0, bd-n25)
|
|
65
|
+
- Prevents test hangs from context cancellation issues
|
|
66
|
+
- Better test isolation and cleanup
|
|
67
|
+
|
|
68
|
+
- **Git Merge Driver**: Corrected placeholders from %L/%R to %A/%B (ddd209e)
|
|
69
|
+
- Fixes merge driver configuration for proper conflict resolution
|
|
70
|
+
- Uses correct git merge driver variable names
|
|
71
|
+
|
|
72
|
+
- **Database Paths**: Deduplicate database paths when symlinks present (#354, f724b61)
|
|
73
|
+
- Prevents duplicate database detection when symlinks are involved
|
|
74
|
+
- Improves reliability in complex filesystem setups
|
|
75
|
+
|
|
76
|
+
### Changed
|
|
77
|
+
|
|
78
|
+
- **bd list**: Accept both integer and P-format for priority flags (2e2b8d7)
|
|
79
|
+
- `--priority 1` and `--priority P1` now both work
|
|
80
|
+
- More flexible CLI input for priority filtering
|
|
81
|
+
|
|
82
|
+
- **bd update**: Added `--body` flag as alias for `--description` (bb5a480)
|
|
83
|
+
- More intuitive flag name for updating issue descriptions
|
|
84
|
+
- Both flags work identically for backward compatibility
|
|
85
|
+
|
|
86
|
+
- **bd update**: Added label operations (3065db2)
|
|
87
|
+
- `--add-labels` and `--remove-labels` flags
|
|
88
|
+
- Simplifies label management in update operations
|
|
89
|
+
|
|
90
|
+
- **GitHub Copilot Support**: Added `.github/copilot-instructions.md` (605fff1)
|
|
91
|
+
- Provides project-specific guidance for GitHub Copilot
|
|
92
|
+
- Improves AI-assisted development experience
|
|
93
|
+
|
|
94
|
+
- **Documentation**: Moved design/audit docs from cmd/bd to docs/ (ce433bb)
|
|
95
|
+
- Better organization of project documentation
|
|
96
|
+
- Clearer separation of code and documentation
|
|
97
|
+
|
|
98
|
+
### Performance
|
|
99
|
+
|
|
100
|
+
- **Test Suite**: Deleted 7 redundant tests from main_test.go (fa727c7)
|
|
101
|
+
- 3x speedup in test execution
|
|
102
|
+
- Improved CI/CD performance
|
|
103
|
+
|
|
104
|
+
- **Test Coverage**: Tagged 16 slow integration tests with build tags (8290243)
|
|
105
|
+
- Faster local test runs with `-short` flag
|
|
106
|
+
- CI can still run full test suite
|
|
107
|
+
|
|
108
|
+
### Testing
|
|
109
|
+
|
|
110
|
+
- **Security Tests**: Added security and error handling tests for lint warnings (74f3844)
|
|
111
|
+
- Improved code quality and safety
|
|
112
|
+
- Better coverage of edge cases
|
|
113
|
+
|
|
114
|
+
- **Shared Database Pattern**: Refactored multiple test files to use shared DB pattern (bd-1rh)
|
|
115
|
+
- compact_test.go, integrity_test.go, validate_test.go, epic_test.go, duplicates_test.go
|
|
116
|
+
- Improved test consistency and maintainability
|
|
117
|
+
- Faster test execution through better resource sharing
|
|
118
|
+
|
|
119
|
+
## [0.24.0] - 2025-11-20
|
|
120
|
+
|
|
121
|
+
### Added
|
|
122
|
+
|
|
123
|
+
- **bd doctor --fix**: Automatic repair functionality (bd-ykd9, 7806937)
|
|
124
|
+
- Automatically fixes issues detected by `bd doctor`
|
|
125
|
+
- Repairs common database inconsistencies without manual intervention
|
|
126
|
+
|
|
127
|
+
- **bd clean**: Remove temporary merge artifacts (e8355c2)
|
|
128
|
+
- Cleans up `.base`, `.ours`, `.theirs` snapshot files
|
|
129
|
+
- Helps maintain clean `.beads/` directory after merges
|
|
130
|
+
|
|
131
|
+
- **bd cleanup**: Enhanced bulk deletion command
|
|
132
|
+
- Delete multiple closed issues efficiently
|
|
133
|
+
- Improved from previous versions with better performance
|
|
134
|
+
|
|
135
|
+
- **.beads/README.md Generation**: Auto-generated during `bd init` (bd-m7ge, e1c8853)
|
|
136
|
+
- Provides project-specific beads documentation
|
|
137
|
+
- Helps new contributors understand the setup
|
|
138
|
+
|
|
139
|
+
- **blocked_issues_cache Table**: Performance optimization for GetReadyWork (62c1f42, ed23f8f)
|
|
140
|
+
- Caches blocked issue relationships
|
|
141
|
+
- Dramatically improves `bd ready` performance on large databases
|
|
142
|
+
|
|
143
|
+
- **Commit Hash in Version Output**: Enhanced version reporting (bd-hpt5, 7c96142)
|
|
144
|
+
- `bd version` now shows git commit hash
|
|
145
|
+
- Helps identify exact build for debugging
|
|
146
|
+
|
|
147
|
+
- **Auto-detection of Issue Prefix**: Scans git history to detect prefix (#277, 8f37904)
|
|
148
|
+
- Automatically discovers project's issue prefix
|
|
149
|
+
- Reduces manual configuration needed
|
|
150
|
+
|
|
151
|
+
- **external_ref Support in Daemon RPC**: Full daemon mode support (#304, 57b6ea6)
|
|
152
|
+
- MCP server can now set external references in daemon mode
|
|
153
|
+
- Parity with CLI functionality
|
|
154
|
+
|
|
155
|
+
- **Context Optimization Features**: AI agent improvements (#297, f7e80dd)
|
|
156
|
+
- Context propagation with graceful cancellation (bd-rtp, bd-yb8, bd-2o2, 57253f9)
|
|
157
|
+
- Better memory management for long-running agent sessions
|
|
158
|
+
|
|
159
|
+
### Fixed
|
|
160
|
+
|
|
161
|
+
- **Critical: Auto-import Resurrection Bug** (bd-khnb, 0020eb4, e28e3ea, 7b6370f)
|
|
162
|
+
- Fixed critical bug where deleted issues were resurrected during auto-import
|
|
163
|
+
- Cleaned up 497+ resurrected issues from production database
|
|
164
|
+
- Prevents data corruption from improper JSONL replay
|
|
165
|
+
|
|
166
|
+
- **Critical: bd sync Auto-resolves Conflicts** (bd-ca0b, a1e5075)
|
|
167
|
+
- `bd sync` now automatically resolves conflicts instead of failing
|
|
168
|
+
- Dramatically improves multi-agent workflow reliability
|
|
169
|
+
- Eliminates manual conflict resolution in most cases
|
|
170
|
+
|
|
171
|
+
- **Critical: Content-based Timestamp Skew Prevention** (bd-lm2q, d0e7047)
|
|
172
|
+
- Fixed false-positive "JSONL is newer than database" warnings
|
|
173
|
+
- Uses content-based comparison instead of timestamp-only
|
|
174
|
+
- Prevents unnecessary imports that would corrupt state
|
|
175
|
+
|
|
176
|
+
- **Critical: bd sync DB Changes After Import** (81c741b)
|
|
177
|
+
- Ensures database changes are properly applied after import
|
|
178
|
+
- Fixes desync issues between JSONL and database
|
|
179
|
+
|
|
180
|
+
- **Critical: Context Propagation Lifecycle Bugs** (bd-rtp, bd-yb8, bd-2o2, 57253f9, a17e4af)
|
|
181
|
+
- Fixed multiple context propagation issues causing crashes
|
|
182
|
+
- Graceful cancellation support for long-running operations
|
|
183
|
+
- Improved stability for AI agent workflows
|
|
184
|
+
|
|
185
|
+
- **Critical: Race Condition in Auto-flush** (bd-52, a9b2f9f)
|
|
186
|
+
- Fixed race condition in auto-flush mechanism
|
|
187
|
+
- Prevents data loss during concurrent operations
|
|
188
|
+
|
|
189
|
+
- **Critical: Resource Leaks and Error Handling** (#327, fb65163)
|
|
190
|
+
- Fixed critical resource leaks in daemon mode
|
|
191
|
+
- Improved error handling throughout codebase
|
|
192
|
+
|
|
193
|
+
- **Critical: In-memory Database Deadlock** (bd-yvlc, 944ed10)
|
|
194
|
+
- Fixed deadlock in migrations when using in-memory database
|
|
195
|
+
- Improves test reliability
|
|
196
|
+
|
|
197
|
+
- **MCP Schema Generation Recursion Bug** (GH#346, f3a678f)
|
|
198
|
+
- Fixed infinite recursion in MCP schema generation
|
|
199
|
+
- Prevents stack overflow crashes
|
|
200
|
+
|
|
201
|
+
- **FK Constraint Failures** (bd-5arw, 345766b)
|
|
202
|
+
- Fixed foreign key constraint failures in AddComment and ApplyCompaction
|
|
203
|
+
- Improved data integrity
|
|
204
|
+
|
|
205
|
+
- **--parent Flag Behavior** (b9919fe)
|
|
206
|
+
- Now correctly creates parent-child dependency relationships
|
|
207
|
+
- Previously was creating wrong dependency type
|
|
208
|
+
|
|
209
|
+
- **Exact ID Matching Priority** (gh-316, 934ae04)
|
|
210
|
+
- Prefers exact ID matches over prefix matches
|
|
211
|
+
- Prevents ambiguous ID resolution
|
|
212
|
+
|
|
213
|
+
- **Daemon Lifetime on macOS** (GH#278, 68f9bef)
|
|
214
|
+
- Fixed daemon exiting after 5s on macOS due to PID 1 parent monitoring
|
|
215
|
+
- Daemon now runs reliably on macOS
|
|
216
|
+
|
|
217
|
+
- **Daemon Export/JSONL Sync** (GH#301, #321, 04a1996)
|
|
218
|
+
- Fixed daemon export leaving JSONL newer than database
|
|
219
|
+
- Ensures proper sync between export and database state
|
|
220
|
+
|
|
221
|
+
- **bd doctor Hash ID Detection** (GH#322, 8c1f865)
|
|
222
|
+
- Fixed doctor incorrectly diagnosing hash IDs as sequential
|
|
223
|
+
- Improved detection logic for ID format validation
|
|
224
|
+
|
|
225
|
+
- **ResolvePartialID Handling** (GH#336, 4432af0)
|
|
226
|
+
- Improved ResolvePartialID / ResolveID handling for `bd show`
|
|
227
|
+
- Better partial ID matching and error messages
|
|
228
|
+
|
|
229
|
+
- **bd sync Windows Upstream Detection** (#281, 1deaad1)
|
|
230
|
+
- Fixed upstream branch detection on Windows
|
|
231
|
+
- Improved cross-platform compatibility
|
|
232
|
+
|
|
233
|
+
- **Compact Command Daemon Mode** (#294, d9904a8)
|
|
234
|
+
- Fixed compact command failing with 'SQLite DB needed' error when daemon running
|
|
235
|
+
- Removed premature store check, uses ensureDirectMode
|
|
236
|
+
|
|
237
|
+
- **DB mtime Update After Import** (#296, 9dff345)
|
|
238
|
+
- Fixed DB mtime not being updated after import with 0 changes
|
|
239
|
+
- Prevents false staleness warnings
|
|
240
|
+
|
|
241
|
+
- **FOREIGN KEY Constraint on Non-existent Issues** (09666b4)
|
|
242
|
+
- Fixed constraint failures when operating on non-existent issues
|
|
243
|
+
- Better error handling and validation
|
|
244
|
+
|
|
245
|
+
- **Monitor WebUI Daemon Detection** (e36baee)
|
|
246
|
+
- Fixed monitor-webui failure to detect running daemon
|
|
247
|
+
- Improved daemon health checking
|
|
248
|
+
|
|
249
|
+
- **Onboard Test Deadlock on Windows** (4e22214)
|
|
250
|
+
- Fixed deadlock in onboard tests on Windows
|
|
251
|
+
- Improved test stability
|
|
252
|
+
|
|
253
|
+
- **Windows Concurrent Issue Creation** (4cd26c8)
|
|
254
|
+
- Fixed concurrent issue creation failures on Windows
|
|
255
|
+
- Better file locking on Windows
|
|
256
|
+
|
|
257
|
+
- **Missing Git Hook Message** (#306, 92f3af5)
|
|
258
|
+
- Improved messaging when git hooks are missing
|
|
259
|
+
- Clearer instructions for users
|
|
260
|
+
|
|
261
|
+
- **Prefix Detection for Hyphenated Apps** (83472ac, bd-fasa)
|
|
262
|
+
- Fixed prefix detection to only use first hyphen
|
|
263
|
+
- Handles hyphenated application names correctly
|
|
264
|
+
|
|
265
|
+
- **External Ref Migration Failures** (8be792a)
|
|
266
|
+
- Fixed external_ref migration failure on old databases
|
|
267
|
+
- Backward compatibility improvements
|
|
268
|
+
|
|
269
|
+
- **Duplicate Function Declaration** (#328, 167ab67)
|
|
270
|
+
- Fixed compilation failure from duplicate computeJSONLHash declaration
|
|
271
|
+
- Removed old version, kept simpler implementation
|
|
272
|
+
- Updated test to match new API
|
|
273
|
+
|
|
274
|
+
### Changed
|
|
275
|
+
|
|
276
|
+
- **Performance Improvements** (#319, 690c73f):
|
|
277
|
+
- Optimized GetReadyWork to use blocked_issues_cache (ed23f8f)
|
|
278
|
+
- Replaced N+1 label queries with bulk fetch in `bd list` (968d9e2)
|
|
279
|
+
- Cache invalidation for blocked_issues_cache (614ba8a)
|
|
280
|
+
- Significant speedup for large databases
|
|
281
|
+
|
|
282
|
+
- **FlushManager Improvements** (445857f)
|
|
283
|
+
- Added constants for magic numbers
|
|
284
|
+
- Enhanced error logging
|
|
285
|
+
- Comprehensive functional tests
|
|
286
|
+
|
|
287
|
+
- **Auto-upgrade .beads/.gitignore** (#300, f4a2f87)
|
|
288
|
+
- Automatically upgrades .gitignore on bd operations
|
|
289
|
+
- Ensures latest patterns are always applied
|
|
290
|
+
|
|
291
|
+
- **Code Refactoring**:
|
|
292
|
+
- Extract duplicated validation logic to internal/validation (d5239ee)
|
|
293
|
+
- Centralize error handling patterns in storage layer (bd-bwk2, 3b2cac4)
|
|
294
|
+
- Extract duplicated validation and flag logic (bd-g5p7, bbfedb0)
|
|
295
|
+
- Improved code organization and maintainability
|
|
296
|
+
|
|
297
|
+
- **Documentation Improvements**:
|
|
298
|
+
- Document files created by bd init and clarify .gitattributes (721274b, e7fd1dd)
|
|
299
|
+
- How to resolve merge conflicts in .beads/beads.jsonl (4985a68)
|
|
300
|
+
- Document MCP tools loading issue in Claude Code (GH#346, 79b8dbe)
|
|
301
|
+
- Add uv prerequisite to Claude Code plugin docs (#293, a020c6c)
|
|
302
|
+
- Don't auto-install Go in Windows installer (#302, 0cba73b)
|
|
303
|
+
|
|
304
|
+
- **Improved Error Messages** (#349, 27c0c33)
|
|
305
|
+
- Compact error messages
|
|
306
|
+
- Remove bogus merge suggestion
|
|
307
|
+
- Add daemon/maintenance docs
|
|
308
|
+
|
|
309
|
+
- **AGENTS.md Refactoring** (21a0656)
|
|
310
|
+
- Extracted detailed instructions to prevent context pollution
|
|
311
|
+
- Better organization for AI agent consumption
|
|
312
|
+
|
|
313
|
+
- **Type Safety Improvements** (9e57cb6)
|
|
314
|
+
- Improved type safety in beads-mcp
|
|
315
|
+
- Fixed minor type issues
|
|
316
|
+
|
|
317
|
+
- **Test Improvements**:
|
|
318
|
+
- Fix CI regressions and stabilize tests (7b63b5a)
|
|
319
|
+
- Fix parallel test deadlock (1fc9bf6)
|
|
320
|
+
- Annotate gosec-safe file accesses (bf9b2c8)
|
|
321
|
+
|
|
322
|
+
- **Local-only Git Repo Support** (bd-biwp, 4de9f01)
|
|
323
|
+
- Support repositories without remote origin
|
|
324
|
+
- Better handling of local development workflows
|
|
325
|
+
|
|
326
|
+
- **Version Marker in Post-checkout Hook** (ad2154b)
|
|
327
|
+
- Add version marker to post-checkout hook
|
|
328
|
+
- Include in CheckGitHooks for better version tracking
|
|
329
|
+
|
|
330
|
+
### Performance
|
|
331
|
+
|
|
332
|
+
- **GetReadyWork Optimization** (bd-5qim, 690c73f, 62c1f42, ed23f8f)
|
|
333
|
+
- Introduced blocked_issues_cache table
|
|
334
|
+
- Eliminated expensive recursive queries
|
|
335
|
+
- Dramatically faster for large dependency graphs
|
|
336
|
+
|
|
337
|
+
- **bd list N+1 Query Elimination** (968d9e2)
|
|
338
|
+
- Replaced per-issue label queries with bulk fetch
|
|
339
|
+
- Significant speedup when listing many labeled issues
|
|
340
|
+
|
|
341
|
+
### Community
|
|
342
|
+
|
|
343
|
+
- **Pull Requests**:
|
|
344
|
+
- #338: Prevent daemon from exiting when launcher process exits (@cpdata)
|
|
345
|
+
- #337: Improve ResolvePartialID handling (@cpdata)
|
|
346
|
+
- #333: Fix doctor incorrectly diagnosing hash IDs (@cpdata)
|
|
347
|
+
- #327: Address critical resource leaks and error handling
|
|
348
|
+
- #306: Improve missing git hook message
|
|
349
|
+
- #304: Add external_ref support to daemon mode RPC
|
|
350
|
+
- #302: Windows installer improvements
|
|
351
|
+
- #300: Automatic .beads/.gitignore upgrade
|
|
352
|
+
- #297: Context optimization features for AI agents
|
|
353
|
+
- #296: Fix DB mtime update after import
|
|
354
|
+
- #294: Fix compact command in daemon mode
|
|
355
|
+
- #293: Add uv prerequisite documentation
|
|
356
|
+
- #281: Fix bd sync Windows upstream detection
|
|
357
|
+
- #277: Auto-detection of issue prefix from git history
|
|
358
|
+
|
|
359
|
+
- **Dependency Updates**:
|
|
360
|
+
- Bump github.com/anthropics/anthropic-sdk-go from 1.17.0 to 1.18.0 (#330)
|
|
361
|
+
- Bump golang.org/x/mod from 0.29.0 to 0.30.0 (#331)
|
|
362
|
+
- Bump fastmcp from 2.13.0.2 to 2.13.1 (#332)
|
|
363
|
+
- Bump pydantic from 2.12.0 to 2.12.4 (#285)
|
|
364
|
+
- Bump pydantic-settings from 2.11.0 to 2.12.0 (#286)
|
|
365
|
+
- Bump golangci/golangci-lint-action from 8 to 9 (#287)
|
|
366
|
+
- Bump golang.org/x/sys from 0.36.0 to 0.38.0 (#288)
|
|
367
|
+
- Bump github.com/ncruces/go-sqlite3 from 0.29.1 to 0.30.1 (#290)
|
|
368
|
+
- Bump github.com/google/go-cmp from 0.6.0 to 0.7.0 (#291)
|
|
369
|
+
|
|
370
|
+
### Notes
|
|
371
|
+
|
|
372
|
+
This release represents a major stability and performance improvement with **179 commits** since 0.23.1. Key themes:
|
|
373
|
+
- **Reliability**: Fixed critical auto-import resurrection bug and multiple daemon issues
|
|
374
|
+
- **Performance**: Significant optimizations for `bd ready` and `bd list`
|
|
375
|
+
- **AI Agent Support**: Improved context propagation and error handling
|
|
376
|
+
- **Cross-platform**: Better Windows and macOS support
|
|
377
|
+
- **Developer Experience**: Auto-detection, better error messages, improved docs
|
|
378
|
+
|
|
379
|
+
## [0.23.1] - 2025-11-08
|
|
380
|
+
|
|
381
|
+
### Fixed
|
|
382
|
+
|
|
383
|
+
- **#263: Database mtime not updated after import causing false `bd doctor` warnings**
|
|
384
|
+
- When `bd sync --import-only` completed, SQLite WAL mode wouldn't update the main database file's mtime
|
|
385
|
+
- This caused `bd doctor` to incorrectly warn "JSONL is newer than database" even when perfectly synced
|
|
386
|
+
- Now updates database mtime after imports to prevent false warnings
|
|
387
|
+
|
|
388
|
+
- **#261: SQLite URI missing 'file:' prefix causing version detection failures**
|
|
389
|
+
- Without 'file:' scheme, SQLite treated `?mode=ro` as part of filename instead of connection option
|
|
390
|
+
- Created bogus files like `beads.db?mode=ro`
|
|
391
|
+
- Caused `bd doctor` to incorrectly report "version pre-0.17.5 (very old)" on modern databases
|
|
392
|
+
|
|
393
|
+
- **bd-17d5: Conflict marker false positives on JSON-encoded content**
|
|
394
|
+
- Issues containing JSON strings with `<<<<<<<` would trigger false conflict marker detection
|
|
395
|
+
- Now checks raw bytes before JSON decoding to avoid false positives
|
|
396
|
+
|
|
397
|
+
- **bd-ckvw: Schema compatibility probe prevents silent migration failures**
|
|
398
|
+
- Migrations could fail silently, causing cryptic "no such column" and UNIQUE constraint errors later
|
|
399
|
+
- Now probes schema after migrations, retries once if incomplete, and fails fast with clear error
|
|
400
|
+
- Daemon refuses RPC if client has newer minor version to prevent schema mismatches
|
|
401
|
+
|
|
402
|
+
- **#264/#262: Remove stale `--resolve-collisions` references**
|
|
403
|
+
- Docs/error messages still referenced `--resolve-collisions` flag (removed in v0.20)
|
|
404
|
+
- Fixed post-merge hook error messages and git-hooks README
|
|
405
|
+
|
|
406
|
+
### Changed
|
|
407
|
+
|
|
408
|
+
- **bd-auf1: Auto-cleanup snapshot files after successful merge**
|
|
409
|
+
- `.beads/` no longer accumulates orphaned `.base`, `.ours`, `.theirs` snapshot files after merges
|
|
410
|
+
|
|
411
|
+
- **bd-ky74: Optimize CLI tests with in-process testing**
|
|
412
|
+
- Converted exec.Command() tests to in-process rootCmd.Execute() calls
|
|
413
|
+
- **Dramatically faster: 10+ minutes → just a few seconds**
|
|
414
|
+
- Improved test coverage from 20.2% to 23.3%
|
|
415
|
+
|
|
416
|
+
- **bd-6uix: Message system improvements**
|
|
417
|
+
- 30s HTTP timeout prevents hangs, full message reading, --importance validation, server-side filtering
|
|
418
|
+
|
|
419
|
+
- **Remove noisy version field from metadata.json**
|
|
420
|
+
- Eliminated redundant version mismatch warnings on every bd upgrade
|
|
421
|
+
- Daemon version checking via RPC is sufficient
|
|
422
|
+
|
|
423
|
+
### Added
|
|
424
|
+
|
|
425
|
+
- Go agent example with Agent Mail support
|
|
426
|
+
- Agent Mail multi-workspace deployment guide and scripts
|
|
427
|
+
|
|
428
|
+
## [0.23.0] - 2025-11-08
|
|
429
|
+
|
|
430
|
+
### Added
|
|
431
|
+
|
|
432
|
+
- **Agent Mail Integration**: Complete Python adapter library with comprehensive documentation and multi-agent coordination tests
|
|
433
|
+
- Python adapter library in `integrations/agent-mail-python/`
|
|
434
|
+
- Agent Mail quickstart guide and comprehensive integration docs
|
|
435
|
+
- Multi-agent race condition tests and failure scenario tests
|
|
436
|
+
- Automated git traffic benchmark showing **98.5% reduction in git traffic** compared to git-only sync
|
|
437
|
+
- Bash-agent integration example
|
|
438
|
+
|
|
439
|
+
- **bd info --whats-new** (bd-eiz9): Agent version awareness for quick upgrade summaries
|
|
440
|
+
- Shows last 3 versions with workflow-impacting changes
|
|
441
|
+
- Supports `--json` flag for machine-readable output
|
|
442
|
+
- Helps agents understand what changed without re-reading full docs
|
|
443
|
+
|
|
444
|
+
- **bd hooks install** (bd-908z): Embedded git hooks command
|
|
445
|
+
- Replaces external install script with native command
|
|
446
|
+
- Git hooks now embedded in bd binary
|
|
447
|
+
- Works for all bd users, not just source repo users
|
|
448
|
+
|
|
449
|
+
- **bd cleanup**: Bulk deletion command for closed issues (bd-buol)
|
|
450
|
+
- Agent-driven compaction for large databases
|
|
451
|
+
- Removes closed issues older than specified threshold
|
|
452
|
+
|
|
453
|
+
### Fixed
|
|
454
|
+
|
|
455
|
+
- **3-way JSONL Merge** (bd-jjua): Auto-invoked on conflicts
|
|
456
|
+
- Automatically triggers intelligent merge on JSONL conflicts
|
|
457
|
+
- No manual intervention required
|
|
458
|
+
- Warning message added to zombie issues.jsonl file
|
|
459
|
+
|
|
460
|
+
- **Auto-import on Missing Database** (ab4ec90): `bd import` now auto-initializes database when missing
|
|
461
|
+
- **Daemon Crash Recovery** (bd-vcg5): Panic handler with socket cleanup prevents orphaned processes
|
|
462
|
+
- **Stale Database Exports** (bd-srwk): ID-based staleness detection prevents exporting stale data
|
|
463
|
+
- **Windows MCP Subprocess Timeout** (bd-r79z): Fix for git detection on Windows
|
|
464
|
+
- **Daemon Orphaning** (a6c9579): Track parent PID and exit when parent dies
|
|
465
|
+
- **Test Pollution Prevention** (bd-z528, bd-2c5a): Safeguards to prevent test issues in production database
|
|
466
|
+
- **Client Self-Heal** (a236558): Auto-recovery for stale daemon.pid files
|
|
467
|
+
- **Post-Merge Hook Error Messages** (abb1d1c): Show actual error messages instead of silent failures
|
|
468
|
+
- **Auto-import During Delete** (bd-8kde): Disable auto-import during delete operations to prevent conflicts
|
|
469
|
+
- **MCP Workspace Context** (bd-8zf2): Auto-detect workspace from CWD
|
|
470
|
+
- **Import Sync Warning** (bd-u4f5): Warn when import syncs with working tree but not git HEAD
|
|
471
|
+
- **GH#254** (bd-tuqd): `bd init` now detects and chains with existing git hooks
|
|
472
|
+
- **GH#249**: Add nil storage checks to prevent RPC daemon crashes
|
|
473
|
+
- **GH#252**: Fix SQLite driver name mismatch causing "unknown driver" errors
|
|
474
|
+
- **Nested .beads Directories** (bd-eqjc): Prevent creating nested .beads directories
|
|
475
|
+
- **Windows SQLite Support**: Fix SQLite in releases for Windows
|
|
476
|
+
|
|
477
|
+
### Changed
|
|
478
|
+
|
|
479
|
+
- **Agent Affordances** (observations from agents using beads):
|
|
480
|
+
- **bd new**: Added as alias for `bd create` command (agents often tried this)
|
|
481
|
+
- **bd list**: Changed default to one-line-per-issue format to prevent agent miscounting; added `--long` flag for previous detailed format
|
|
482
|
+
|
|
483
|
+
- **Developer Experience**:
|
|
484
|
+
- Extracted supplemental docs from AGENTS.md for better organization
|
|
485
|
+
- Added warning for working tree vs git HEAD sync mismatches
|
|
486
|
+
- Completion commands now work without database
|
|
487
|
+
- Config included in `bd info` JSON output
|
|
488
|
+
- Python cache files added to .gitignore
|
|
489
|
+
- RPC diagnostics available via `BD_RPC_DEBUG` env var
|
|
490
|
+
- Reduced RPC dial timeout from 2s to 200ms for fast-fail (bd-expt)
|
|
491
|
+
- Standardized daemon detection with tryDaemonLock probe (bd-wgu4)
|
|
492
|
+
- Improved internal/daemon test coverage to 60%
|
|
493
|
+
|
|
494
|
+
- **Code Organization**:
|
|
495
|
+
- Refactored snapshot management into dedicated module (bd-urob)
|
|
496
|
+
- Documented external_ref in content hash behavior (bd-9f4a)
|
|
497
|
+
- Added MCP server functions for repair commands (bd-7bbc4e6a)
|
|
498
|
+
- Added version number to beads-mcp startup log
|
|
499
|
+
- Added system requirements section for glibc compatibility in docs
|
|
500
|
+
|
|
501
|
+
- **Release Automation**:
|
|
502
|
+
- Automatic Homebrew formula update in release workflow
|
|
503
|
+
- Gitignore Formula/bd.rb (auto-generated, real source is homebrew-beads tap)
|
|
504
|
+
|
|
505
|
+
- **Other**:
|
|
506
|
+
- Added `docs/` directory to links (#242)
|
|
507
|
+
- RPC monitoring solution with web UI as implementation example (#244)
|
|
508
|
+
- Remove old install.sh script, replaced by `bd hooks install`
|
|
509
|
+
- Remove vc.db exclusion from FindDatabasePath filter
|
|
510
|
+
|
|
511
|
+
## [0.22.1] - 2025-11-06
|
|
512
|
+
|
|
513
|
+
### Added
|
|
514
|
+
|
|
515
|
+
- **Vendored beads-merge by @neongreen** (bd-bzfy): Native `bd merge` command for intelligent JSONL merging
|
|
516
|
+
- Vendored beads-merge algorithm into `internal/merge/` with full attribution and MIT license
|
|
517
|
+
- New `bd merge` command as native wrapper (no external binary needed)
|
|
518
|
+
- Same field-level 3-way merge algorithm, now built into bd
|
|
519
|
+
- Auto-configured during `bd init` (both interactive and `--quiet` modes)
|
|
520
|
+
- Thanks to @neongreen for permission to vendor: https://github.com/neongreen/mono/issues/240
|
|
521
|
+
- Original tool: https://github.com/neongreen/mono/tree/main/beads-merge
|
|
522
|
+
|
|
523
|
+
- **Git Hook Version Detection** (bd-iou5, 991c624): `bd info` now detects outdated git hooks
|
|
524
|
+
- Adds version markers to all git hook templates (pre-commit, post-merge, pre-push)
|
|
525
|
+
- Warns when installed hooks are outdated or missing
|
|
526
|
+
- Suggests running `examples/git-hooks/install.sh` to update
|
|
527
|
+
- Prevents issues like the `--resolve-collisions` flag error after updates
|
|
528
|
+
|
|
529
|
+
- **Public API for External Extensions** (8f676a4): Extensibility improvements for third-party tools
|
|
530
|
+
- **Multi-Repo Patterns Documentation** (e73f89e): Comprehensive guide for AI agents working across multiple repositories
|
|
531
|
+
- **Snapshot Versioning** (a891ebe): Add versioning and timestamp validation for snapshots
|
|
532
|
+
- `--clear-duplicate-external-refs` flag for `bd import` command (9de98cf)
|
|
533
|
+
|
|
534
|
+
### Fixed
|
|
535
|
+
|
|
536
|
+
- **Multi-Workspace Deletion Tracking** (708a81c, e5a6c05, 4718583): Proper deletion tracking across multiple workspaces
|
|
537
|
+
- Fixes issue where deletions in one workspace weren't propagated to others
|
|
538
|
+
- Added `DeleteIssue` to Storage interface for backend extensibility (e291ee0)
|
|
539
|
+
- **Import/Export Deadlock** (a0d24f3): Prevent import/export from hanging when daemon is running
|
|
540
|
+
- **Pre-Push Hook** (3ba245e): Fix pre-push hook blocking instead of exporting
|
|
541
|
+
- **Hash ID Recognition** (c924731, 055f1d9): Fix `isHashID` to recognize Base36 hash IDs and IDs without a-f letters
|
|
542
|
+
- **Git Merge Artifacts** (41b1a21): Ignore merge artifacts in `.beads/.gitignore`
|
|
543
|
+
- **bd status Command** (1edf3c6): Now uses git history for recent activity detection
|
|
544
|
+
- **Performance**: Add raw string equality short-circuit before jsonEquals (5c1f441)
|
|
545
|
+
|
|
546
|
+
### Changed
|
|
547
|
+
|
|
548
|
+
- **Code Organization**:
|
|
549
|
+
- Extract SQLite migrations into separate files (b655b29)
|
|
550
|
+
- Centralize BD_DEBUG logging into `internal/debug` package (95cbcf4)
|
|
551
|
+
- Extract `normalizeLabels` to `internal/util/strings.go` (9520e7a)
|
|
552
|
+
- Reorganize project structure: move Go files to `internal/beads`, docs to `docs/` (584c266)
|
|
553
|
+
- Remove unused `internal/daemonrunner/` package (~1,500 LOC) (a7ec8a2)
|
|
554
|
+
|
|
555
|
+
- **Testing**:
|
|
556
|
+
- Optimize test suite with `testing.Short()` guards for faster local testing (11fa142, 0f4b03e)
|
|
557
|
+
- Add comprehensive tests for merge driver auto-config (6424ebd)
|
|
558
|
+
- Add comprehensive tests for 3-way merge functionality (14b2d34)
|
|
559
|
+
- Add edge case tests for `getMultiRepoJSONLPaths()` (78c9d74)
|
|
560
|
+
|
|
561
|
+
- **CI/CD**:
|
|
562
|
+
- Separate Homebrew update workflow with PAT support (739786e)
|
|
563
|
+
- Add manual trigger to Homebrew workflow for testing (563c12b)
|
|
564
|
+
- Fix Linux checksums extraction in Homebrew workflow (c47f40b)
|
|
565
|
+
- Add script to automate Nix vendorHash updates (#235)
|
|
566
|
+
|
|
567
|
+
### Performance
|
|
568
|
+
|
|
569
|
+
- Cache `getMultiRepoJSONLPaths()` to avoid redundant calls (7afb143)
|
|
570
|
+
|
|
571
|
+
## [0.22.0] - 2025-11-05
|
|
572
|
+
|
|
573
|
+
### Added
|
|
574
|
+
|
|
575
|
+
- **Intelligent Merge Driver** (bd-omx1, 52c5059): Auto-configured git merge driver for JSONL conflict resolution
|
|
576
|
+
- Vendors beads-merge algorithm for field-level 3-way merging
|
|
577
|
+
- Automatically configured during `bd init` (both interactive and `--quiet` modes)
|
|
578
|
+
- Matches issues by identity (id + created_at + created_by)
|
|
579
|
+
- Smart field merging: timestamps→max, dependencies→union, status/priority→3-way
|
|
580
|
+
- Eliminates most git merge conflicts in `.beads/beads.jsonl`
|
|
581
|
+
|
|
582
|
+
- **Onboarding Wizards** (b230a22): New `bd init` workflows for different collaboration models
|
|
583
|
+
- `bd init --contributor`: OSS contributor wizard (separate planning repo)
|
|
584
|
+
- `bd init --team`: Team collaboration wizard (branch-based workflow)
|
|
585
|
+
- Interactive setup with fork detection and remote configuration
|
|
586
|
+
- Auto-configures sync settings for each workflow
|
|
587
|
+
|
|
588
|
+
- **Migration Tools** (349817a): New `bd migrate-issues` command for cross-repo issue migration
|
|
589
|
+
- Migrate issues between repositories while preserving dependencies
|
|
590
|
+
- Source filtering (by label, priority, status, type)
|
|
591
|
+
- Automatic remote repo detection and push
|
|
592
|
+
- Complete multi-repo workflow documentation
|
|
593
|
+
|
|
594
|
+
- **Multi-Phase Development Guide** (3ecc16e): Comprehensive workflow examples
|
|
595
|
+
- Multi-phase development (feature → integration → deployment)
|
|
596
|
+
- Multiple personas (designer, frontend dev, backend dev)
|
|
597
|
+
- Best practices for complex projects
|
|
598
|
+
|
|
599
|
+
- **Dependency Status** (3acaf1d): Show blocker status in `bd show` output
|
|
600
|
+
- Displays "Blocked by N open issues" when dependencies exist
|
|
601
|
+
- Shows "Ready to work (no blockers)" when unblocked
|
|
602
|
+
|
|
603
|
+
- **DevContainer Support** (247e659): Automatic bd setup in GitHub Codespaces
|
|
604
|
+
- Pre-configured Go environment with bd pre-installed
|
|
605
|
+
- Auto-detects existing `.beads/` and imports on startup
|
|
606
|
+
|
|
607
|
+
- **Landing the Plane Protocol** (095e40d): Session-ending checklist for AI agents
|
|
608
|
+
- Quality gates, sync procedures, git cleanup
|
|
609
|
+
- Ensures clean handoff between sessions
|
|
610
|
+
|
|
611
|
+
### Fixed
|
|
612
|
+
|
|
613
|
+
- **SearchIssues N+1 Query** (bd-5ots, e90e485): Eliminated N+1 query bug in label loading
|
|
614
|
+
- Batch-loads labels for all issues in one query
|
|
615
|
+
- Significant performance improvement for `bd list` with many labeled issues
|
|
616
|
+
|
|
617
|
+
- **Sync Validation** (bd-9bsx, 5438485): Prevent infinite dirty loop in auto-sync
|
|
618
|
+
- Added export verification to detect write failures
|
|
619
|
+
- Ensures JSONL line count matches database after export
|
|
620
|
+
|
|
621
|
+
- **bd edit Direct Mode** (GH #227, d4c73c3): Force `bd edit` to always use direct mode
|
|
622
|
+
- Prevents daemon interference with interactive editor sessions
|
|
623
|
+
- Resolves hang issues when editing in terminals
|
|
624
|
+
|
|
625
|
+
- **SQLite Driver on arm64 macOS** (f9771cd): Fixed missing SQLite driver in arm64 builds
|
|
626
|
+
- Explicitly imports CGO-enabled sqlite driver
|
|
627
|
+
- Resolves "database driver not found" errors on Apple Silicon
|
|
628
|
+
|
|
629
|
+
- **external_ref Type Handling** (e1e58ef): Handle both string and *string in UpdateIssue RPC
|
|
630
|
+
- Fixes type mismatch errors in MCP server
|
|
631
|
+
- Ensures consistent API behavior
|
|
632
|
+
|
|
633
|
+
- **Windows Test Stability** (2ac28b0, 8c5e51e): Skip flaky concurrent tests on Windows
|
|
634
|
+
- Prevents false failures in CI/CD
|
|
635
|
+
- Improves overall test suite reliability
|
|
636
|
+
|
|
637
|
+
### Changed
|
|
638
|
+
|
|
639
|
+
- **Test Suite Performance** (0fc4da7): Optimized test suite for 15-18x speedup
|
|
640
|
+
- Reduced redundant database operations
|
|
641
|
+
- Parallelized independent test cases
|
|
642
|
+
- Faster CI/CD builds
|
|
643
|
+
|
|
644
|
+
- **Priority Format** (b8785d3): Added support for P-prefix priority format (P0-P4)
|
|
645
|
+
- Accepts both `--priority 1` and `--priority P1`
|
|
646
|
+
- More intuitive for GitHub/Jira users
|
|
647
|
+
|
|
648
|
+
- **--label Alias** (85ca8c3): Added `--label` as alias for `--labels` in `bd create`
|
|
649
|
+
- Both singular and plural forms now work
|
|
650
|
+
- Improved CLI ergonomics
|
|
651
|
+
|
|
652
|
+
- **--parent Flag in Daemon Mode** (fc89f15): Added `--parent` support in daemon RPC
|
|
653
|
+
- MCP server can now set parent relationships
|
|
654
|
+
- Parity with CLI functionality
|
|
655
|
+
|
|
656
|
+
### Documentation
|
|
657
|
+
|
|
658
|
+
- **Multi-Repo Migration Guide** (9e60ed1): Complete documentation for multi-repo workflows
|
|
659
|
+
- OSS contributors, teams, multi-phase development
|
|
660
|
+
- Addresses common questions about fork vs branch workflows
|
|
661
|
+
|
|
662
|
+
- **beads-merge Setup Instructions** (527e491): Enhanced merge driver documentation
|
|
663
|
+
- Installation guide for standalone binary
|
|
664
|
+
- Jujutsu configuration examples
|
|
665
|
+
|
|
666
|
+
## [0.21.9] - 2025-11-05
|
|
667
|
+
|
|
668
|
+
### Added
|
|
669
|
+
|
|
670
|
+
- **Epic/Child Filtering** (bd-zkl, fbe790a): New `bd list` filters for hierarchical issue queries
|
|
671
|
+
- `--ancestor <id>`: Filter by ancestor issue (shows all descendants)
|
|
672
|
+
- `--parent <id>`: Filter by direct parent issue
|
|
673
|
+
- `--epic <id>`: Alias for `--ancestor` (more intuitive for epic-based workflows)
|
|
674
|
+
- `ancestor_id` field added to issue type for efficient epic hierarchy queries
|
|
675
|
+
|
|
676
|
+
- **Advanced List Filters**: Pattern matching, date ranges, and empty checks
|
|
677
|
+
- **Pattern matching**: `--title-contains`, `--desc-contains`, `--notes-contains` (case-insensitive substring)
|
|
678
|
+
- **Date ranges**: `--created-after/before`, `--updated-after/before`, `--closed-after/before`
|
|
679
|
+
- **Empty checks**: `--empty-description`, `--no-assignee`, `--no-labels`
|
|
680
|
+
- **Priority ranges**: `--priority-min`, `--priority-max`
|
|
681
|
+
|
|
682
|
+
- **Database Migration** (bd-bb08, 3bde4b0): Added `ON DELETE CASCADE` to `child_counters` table
|
|
683
|
+
- Prevents orphaned child counter records when issues are deleted
|
|
684
|
+
- Comprehensive migration tests ensure data integrity
|
|
685
|
+
|
|
686
|
+
### Fixed
|
|
687
|
+
|
|
688
|
+
- **Import Timestamp Preservation** (8b9a486): Fixed critical bug where `closed_at` timestamps were lost during sync
|
|
689
|
+
- Ensures closed issues retain their original completion timestamps
|
|
690
|
+
- Prevents issue resurrection timestamps from overwriting real closure times
|
|
691
|
+
|
|
692
|
+
- **Import Config Respect** (7292c85): Import now respects `import.missing_parents` config setting
|
|
693
|
+
- Previously ignored config for parent resurrection behavior
|
|
694
|
+
- Now correctly honors user's preference for handling missing parents
|
|
695
|
+
|
|
696
|
+
- **GoReleaser Homebrew Tap** (37ed10c): Fixed homebrew tap to point to `steveyegge/homebrew-beads`
|
|
697
|
+
- Automated homebrew formula updates now work correctly
|
|
698
|
+
- Resolves brew installation issues
|
|
699
|
+
|
|
700
|
+
- **npm Package Versioning** (626d51d): Added npm-package to version bump script
|
|
701
|
+
- Ensures `@beads/bd` npm package stays in sync with CLI releases
|
|
702
|
+
- Prevents version mismatches across distribution channels
|
|
703
|
+
|
|
704
|
+
- **Linting** (52cf2af): Fixed golangci-lint errors
|
|
705
|
+
- Added proper error handling
|
|
706
|
+
- Added gosec suppressions for known-safe operations
|
|
707
|
+
|
|
708
|
+
### Changed
|
|
709
|
+
|
|
710
|
+
- **RPC Filter Parity** (510ca17): Comprehensive test coverage for CLI vs RPC filter behavior
|
|
711
|
+
- Ensures MCP server and CLI have identical filtering semantics
|
|
712
|
+
- Validates all new filters work correctly in both modes
|
|
713
|
+
|
|
714
|
+
## [0.21.8] - 2025-11-05
|
|
715
|
+
|
|
10
716
|
### Added
|
|
11
717
|
|
|
12
718
|
- **Parent Resurrection** (bd-58c0): Automatic resurrection of deleted parent issues from JSONL history
|
|
@@ -24,6 +730,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
24
730
|
### Fixed
|
|
25
731
|
|
|
26
732
|
- **JSONL Resurrection Logic**: Fixed to use LAST occurrence instead of FIRST (append-only semantics)
|
|
733
|
+
- **Version Bump Script**: Added `--tag` and `--push` flags to automate release tagging
|
|
734
|
+
- Addresses confusion where version bump doesn't trigger GitHub release
|
|
735
|
+
- New usage: `./scripts/bump-version.sh X.Y.Z --commit --tag --push`
|
|
27
736
|
|
|
28
737
|
## [0.21.7] - 2025-11-04
|
|
29
738
|
|
|
@@ -531,9 +1240,9 @@ See README.md for hash ID format details and birthday paradox collision analysis
|
|
|
531
1240
|
- Includes comprehensive test coverage
|
|
532
1241
|
- **Log Rotation**: Automatic daemon log rotation with configurable limits (bd-154)
|
|
533
1242
|
- Prevents unbounded log file growth for long-running daemons
|
|
534
|
-
- Configurable via environment variables: `BEADS_DAEMON_LOG_MAX_SIZE`, `BEADS_DAEMON_LOG_MAX_BACKUPS`, `BEADS_DAEMON_LOG_MAX_AGE`
|
|
1243
|
+
- Configurable via environment variables: `BEADS_DAEMON_LOG_MAX_SIZE`, `BEADS_DAEMON_LOG_MAX_BACKUPS`, `BEADS_DAEMON_LOG_MAX_AGE`, `BEADS_DAEMON_LOG_COMPRESS`
|
|
535
1244
|
- Optional compression of rotated logs
|
|
536
|
-
- Defaults:
|
|
1245
|
+
- Defaults: 50MB max size, 7 backups, 30 day retention, compression enabled
|
|
537
1246
|
- **Batch Deletion**: Enhanced `bd delete` command with batch operations (bd-127)
|
|
538
1247
|
- Delete multiple issues at once: `bd delete bd-1 bd-2 bd-3 --force`
|
|
539
1248
|
- Read from file: `bd delete --from-file deletions.txt --force`
|
package/bin/README.md
CHANGED
|
@@ -58,6 +58,7 @@ Agents report that they enjoy working with Beads, and they will use it spontaneo
|
|
|
58
58
|
- 🤖 **Agent-friendly** - `--json` flags for programmatic integration
|
|
59
59
|
- 📦 **Git-versioned** - JSONL records stored in git, synced across machines
|
|
60
60
|
- 🌍 **Distributed by design** - Agents on multiple machines share one logical database via git
|
|
61
|
+
- 🚀 **Optional Agent Mail** - Real-time multi-agent coordination (<100ms vs 2-5s git sync, 98.5% reduction in git traffic)
|
|
61
62
|
- 🔐 **Protected branch support** - Works with GitHub/GitLab protected branches via separate sync branch
|
|
62
63
|
- 🏗️ **Extensible** - Add your own tables to the SQLite database
|
|
63
64
|
- 🔍 **Multi-project isolation** - Each project gets its own database, auto-discovered by directory
|
|
@@ -67,6 +68,22 @@ Agents report that they enjoy working with Beads, and they will use it spontaneo
|
|
|
67
68
|
- ⚡ **High performance** - Batch operations for bulk imports (1000 issues in ~950ms)
|
|
68
69
|
- 🗜️ **Memory decay** - Semantic compaction gracefully reduces old closed issues
|
|
69
70
|
|
|
71
|
+
## Requirements
|
|
72
|
+
|
|
73
|
+
**Linux users:** Beads requires **glibc 2.32+** (Ubuntu 22.04+, Debian 11+, RHEL 9+, or equivalent).
|
|
74
|
+
|
|
75
|
+
- ✅ **Supported:** Ubuntu 22.04+ (Jammy), Debian 11+ (Bullseye), Fedora 34+, RHEL 9+
|
|
76
|
+
- ❌ **Not supported:** Ubuntu 20.04 (glibc 2.31), Debian 10 (glibc 2.28), CentOS 7, RHEL 8
|
|
77
|
+
|
|
78
|
+
**Ubuntu 20.04 users:** Standard support ended April 2025. Please upgrade to Ubuntu 22.04+ or build from source:
|
|
79
|
+
```bash
|
|
80
|
+
git clone https://github.com/steveyegge/beads.git
|
|
81
|
+
cd beads
|
|
82
|
+
go build -o bd ./cmd/bd
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**macOS/Windows:** No special requirements.
|
|
86
|
+
|
|
70
87
|
## Installation
|
|
71
88
|
|
|
72
89
|
**npm (Node.js environments, Claude Code for Web):**
|
|
@@ -74,20 +91,23 @@ Agents report that they enjoy working with Beads, and they will use it spontaneo
|
|
|
74
91
|
npm install -g @beads/bd
|
|
75
92
|
```
|
|
76
93
|
|
|
77
|
-
**Quick install (
|
|
94
|
+
**Quick install (macOS / Linux):**
|
|
78
95
|
```bash
|
|
79
96
|
curl -fsSL https://raw.githubusercontent.com/steveyegge/beads/main/scripts/install.sh | bash
|
|
80
97
|
```
|
|
81
98
|
|
|
99
|
+
**Quick install (Windows - PowerShell):**
|
|
100
|
+
```powershell
|
|
101
|
+
irm https://raw.githubusercontent.com/steveyegge/beads/main/install.ps1 | iex
|
|
102
|
+
```
|
|
103
|
+
|
|
82
104
|
**Homebrew (macOS/Linux):**
|
|
83
105
|
```bash
|
|
84
106
|
brew tap steveyegge/beads
|
|
85
107
|
brew install bd
|
|
86
108
|
```
|
|
87
109
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
**IDE Integration:** See [INSTALLING.md](INSTALLING.md) for Claude Code plugin and MCP server setup.
|
|
110
|
+
For full, platform-specific instructions (Windows, Arch Linux, manual builds, IDE integrations, etc.) see the canonical guide in [docs/INSTALLING.md](docs/INSTALLING.md).
|
|
91
111
|
|
|
92
112
|
**Claude Code for Web:** See [npm-package/CLAUDE_CODE_WEB.md](npm-package/CLAUDE_CODE_WEB.md) for SessionStart hook setup.
|
|
93
113
|
|
|
@@ -102,6 +122,12 @@ Beads is designed for **AI coding agents** to use on your behalf. Setup takes 30
|
|
|
102
122
|
# In your project root:
|
|
103
123
|
bd init
|
|
104
124
|
|
|
125
|
+
# For OSS contributors (fork workflow):
|
|
126
|
+
bd init --contributor
|
|
127
|
+
|
|
128
|
+
# For team members (branch workflow):
|
|
129
|
+
bd init --team
|
|
130
|
+
|
|
105
131
|
# For protected branches (GitHub/GitLab):
|
|
106
132
|
bd init --branch beads-metadata
|
|
107
133
|
|
|
@@ -109,6 +135,7 @@ bd init --branch beads-metadata
|
|
|
109
135
|
# - Create .beads/ directory with database
|
|
110
136
|
# - Import existing issues from git (if any)
|
|
111
137
|
# - Prompt to install git hooks (recommended: say yes)
|
|
138
|
+
# - Prompt to configure git merge driver (recommended: say yes)
|
|
112
139
|
# - Auto-start daemon for sync
|
|
113
140
|
|
|
114
141
|
# Then tell your agent about bd:
|
|
@@ -123,10 +150,39 @@ echo "BEFORE ANYTHING ELSE: run 'bd onboard' and follow the instructions" >> AGE
|
|
|
123
150
|
3. Update CLAUDE.md with a note (if present)
|
|
124
151
|
4. Remove the bootstrap instruction
|
|
125
152
|
|
|
126
|
-
**For agents setting up repos:** Use `bd init --quiet` for non-interactive setup (auto-installs git hooks, no prompts).
|
|
153
|
+
**For agents setting up repos:** Use `bd init --quiet` for non-interactive setup (auto-installs git hooks and merge driver, no prompts).
|
|
127
154
|
|
|
128
155
|
**For new repo clones:** Run `bd init` (or `bd init --quiet` for agents) to import existing issues from `.beads/issues.jsonl` automatically.
|
|
129
156
|
|
|
157
|
+
**Git merge driver:** During `bd init`, beads configures git to use `bd merge` for intelligent JSONL merging. This prevents conflicts when multiple branches modify issues. Skip with `--skip-merge-driver` if needed. To configure manually later:
|
|
158
|
+
```bash
|
|
159
|
+
git config merge.beads.driver "bd merge %A %O %A %B"
|
|
160
|
+
git config merge.beads.name "bd JSONL merge driver"
|
|
161
|
+
echo ".beads/beads.jsonl merge=beads" >> .gitattributes
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Files Created by `bd init`
|
|
165
|
+
|
|
166
|
+
**`bd init` creates these files in your repository:**
|
|
167
|
+
|
|
168
|
+
**Should be committed to git:**
|
|
169
|
+
- `.gitattributes` - Configures git merge driver for intelligent JSONL merging (critical for team collaboration)
|
|
170
|
+
- `.beads/beads.jsonl` - Issue data in JSONL format (source of truth, synced via git)
|
|
171
|
+
- `.beads/config.yaml` - Repository configuration template
|
|
172
|
+
- `.beads/README.md` - Documentation about beads for repository visitors
|
|
173
|
+
- `.beads/metadata.json` - Database metadata
|
|
174
|
+
|
|
175
|
+
**Should be in `.gitignore` (local-only):**
|
|
176
|
+
- `.beads/beads.db` - SQLite cache (auto-synced with JSONL)
|
|
177
|
+
- `.beads/beads.db-*` - SQLite journal files
|
|
178
|
+
- `.beads/bd.sock` / `.beads/bd.pipe` - Daemon communication socket
|
|
179
|
+
- `.beads/.exclusive-lock` - Daemon lock file
|
|
180
|
+
- `.git/beads-worktrees/` - Git worktrees (only created when using protected branch workflows)
|
|
181
|
+
|
|
182
|
+
The `.gitignore` entries are automatically created inside `.beads/.gitignore` by `bd init`, but your project's root `.gitignore` should also exclude the database and daemon files if you want to keep your git status clean.
|
|
183
|
+
|
|
184
|
+
**Using devcontainers?** Open the repository in a devcontainer (GitHub Codespaces or VS Code Remote Containers) and bd will be automatically installed with git hooks configured. See [.devcontainer/README.md](.devcontainer/README.md) for details.
|
|
185
|
+
|
|
130
186
|
Most tasks will be created and managed by agents during conversations. You can check on things with:
|
|
131
187
|
|
|
132
188
|
```bash
|
|
@@ -163,6 +219,34 @@ bd update <issue-id> --status in_progress --json
|
|
|
163
219
|
bd close <issue-id> --reason "Implemented" --json
|
|
164
220
|
```
|
|
165
221
|
|
|
222
|
+
## Configuring Your Own AGENTS.md
|
|
223
|
+
|
|
224
|
+
**Recommendation for project maintainers:** Add a session-ending protocol to your project's `AGENTS.md` file to ensure agents properly manage issue tracking and sync the database before finishing work.
|
|
225
|
+
|
|
226
|
+
This pattern has proven invaluable for maintaining database hygiene and preventing lost work. Here's what to include (adapt for your workflow):
|
|
227
|
+
|
|
228
|
+
**1. File/update issues for remaining work**
|
|
229
|
+
- Agents should proactively create issues for discovered bugs, TODOs, and follow-up tasks
|
|
230
|
+
- Close completed issues and update status for in-progress work
|
|
231
|
+
|
|
232
|
+
**2. Run quality gates (if applicable)**
|
|
233
|
+
- Tests, linters, builds - only if code changes were made
|
|
234
|
+
- File P0 issues if builds are broken
|
|
235
|
+
|
|
236
|
+
**3. Sync the issue tracker carefully**
|
|
237
|
+
- Work methodically to ensure local and remote issues merge safely
|
|
238
|
+
- Handle git conflicts thoughtfully (sometimes accepting remote and re-importing)
|
|
239
|
+
- Goal: clean reconciliation where no issues are lost
|
|
240
|
+
|
|
241
|
+
**4. Verify clean state**
|
|
242
|
+
- All changes committed and pushed
|
|
243
|
+
- No untracked files remain
|
|
244
|
+
|
|
245
|
+
**5. Choose next work**
|
|
246
|
+
- Provide a formatted prompt for the next session with context
|
|
247
|
+
|
|
248
|
+
See the ["Landing the Plane"](AGENT_INSTRUCTIONS.md#landing-the-plane) section in this project's documentation for a complete example you can adapt. The key insight: explicitly reminding agents to maintain issue tracker hygiene prevents the common problem of agents creating issues during work but forgetting to sync them at session end.
|
|
249
|
+
|
|
166
250
|
## The Magic: Distributed Database via Git
|
|
167
251
|
|
|
168
252
|
Here's the crazy part: **bd acts like a centralized database, but it's actually distributed via git.**
|
|
@@ -387,6 +471,32 @@ bd list --assignee alice # Filter by assignee
|
|
|
387
471
|
bd list --label=backend,urgent # Filter by labels (AND)
|
|
388
472
|
bd list --label-any=frontend,backend # Filter by labels (OR)
|
|
389
473
|
|
|
474
|
+
# Advanced filters
|
|
475
|
+
bd list --title-contains "auth" # Search title
|
|
476
|
+
bd list --desc-contains "implement" # Search description
|
|
477
|
+
bd list --notes-contains "TODO" # Search notes
|
|
478
|
+
bd list --id bd-123,bd-456 # Specific IDs (comma-separated)
|
|
479
|
+
|
|
480
|
+
# Date range filters (YYYY-MM-DD or RFC3339)
|
|
481
|
+
bd list --created-after 2024-01-01 # Created after date
|
|
482
|
+
bd list --created-before 2024-12-31 # Created before date
|
|
483
|
+
bd list --updated-after 2024-06-01 # Updated after date
|
|
484
|
+
bd list --updated-before 2024-12-31 # Updated before date
|
|
485
|
+
bd list --closed-after 2024-01-01 # Closed after date
|
|
486
|
+
bd list --closed-before 2024-12-31 # Closed before date
|
|
487
|
+
|
|
488
|
+
# Empty/null checks
|
|
489
|
+
bd list --empty-description # Issues with no description
|
|
490
|
+
bd list --no-assignee # Unassigned issues
|
|
491
|
+
bd list --no-labels # Issues with no labels
|
|
492
|
+
|
|
493
|
+
# Priority ranges
|
|
494
|
+
bd list --priority-min 0 --priority-max 1 # P0 and P1 only
|
|
495
|
+
bd list --priority-min 2 # P2 and below
|
|
496
|
+
|
|
497
|
+
# Combine multiple filters
|
|
498
|
+
bd list --status open --priority 1 --label-any urgent,critical --no-assignee
|
|
499
|
+
|
|
390
500
|
# JSON output for agents
|
|
391
501
|
bd info --json
|
|
392
502
|
bd list --json
|
|
@@ -479,7 +589,7 @@ bd list --label backend,auth # AND: must have ALL labels
|
|
|
479
589
|
bd list --label-any frontend,ui # OR: must have AT LEAST ONE
|
|
480
590
|
```
|
|
481
591
|
|
|
482
|
-
**See [LABELS.md](LABELS.md) for complete label documentation and best practices.**
|
|
592
|
+
**See [docs/LABELS.md](docs/LABELS.md) for complete label documentation and best practices.**
|
|
483
593
|
|
|
484
594
|
### Deleting Issues
|
|
485
595
|
|
|
@@ -521,18 +631,28 @@ bd config list --json
|
|
|
521
631
|
bd config unset jira.url
|
|
522
632
|
```
|
|
523
633
|
|
|
524
|
-
**See [CONFIG.md](CONFIG.md) for complete configuration documentation.**
|
|
634
|
+
**See [docs/CONFIG.md](docs/CONFIG.md) for complete configuration documentation.**
|
|
525
635
|
|
|
526
636
|
### Compaction (Memory Decay)
|
|
527
637
|
|
|
528
|
-
Beads
|
|
638
|
+
Beads provides **agent-driven compaction** - your AI agent decides what to compress, no API keys required:
|
|
529
639
|
|
|
530
640
|
```bash
|
|
531
|
-
|
|
532
|
-
bd compact --
|
|
641
|
+
# Agent-driven workflow (recommended)
|
|
642
|
+
bd compact --analyze --json # Get candidates with full content
|
|
643
|
+
bd compact --apply --id bd-42 --summary summary.txt
|
|
644
|
+
|
|
645
|
+
# Legacy AI-powered workflow (requires ANTHROPIC_API_KEY)
|
|
646
|
+
bd compact --auto --dry-run --all # Preview candidates
|
|
647
|
+
bd compact --auto --all # Auto-compact all eligible issues
|
|
533
648
|
```
|
|
534
649
|
|
|
535
|
-
|
|
650
|
+
**How it works:**
|
|
651
|
+
1. Use `--analyze` to export candidates (closed 30+ days) with full content
|
|
652
|
+
2. Summarize the content using any LLM (Claude, GPT, local model, etc.)
|
|
653
|
+
3. Use `--apply` to persist the summary and mark as compacted
|
|
654
|
+
|
|
655
|
+
This is agentic memory decay - your database naturally forgets fine-grained details while preserving essential context. The agent has full control over compression quality.
|
|
536
656
|
|
|
537
657
|
### Export/Import
|
|
538
658
|
|
|
@@ -564,6 +684,10 @@ bd daemons health
|
|
|
564
684
|
bd daemons stop /path/to/workspace
|
|
565
685
|
bd daemons stop 12345 # By PID
|
|
566
686
|
|
|
687
|
+
# Restart a specific daemon
|
|
688
|
+
bd daemons restart /path/to/workspace
|
|
689
|
+
bd daemons restart 12345 # By PID
|
|
690
|
+
|
|
567
691
|
# View daemon logs
|
|
568
692
|
bd daemons logs /path/to/workspace -n 100
|
|
569
693
|
bd daemons logs 12345 -f # Follow mode
|
|
@@ -580,6 +704,39 @@ bd daemons killall --force # Force kill if graceful fails
|
|
|
580
704
|
|
|
581
705
|
See [commands/daemons.md](commands/daemons.md) for complete documentation.
|
|
582
706
|
|
|
707
|
+
### Web Interface
|
|
708
|
+
|
|
709
|
+
A standalone web interface for real-time issue monitoring is available as an example:
|
|
710
|
+
|
|
711
|
+
```bash
|
|
712
|
+
# Build the monitor-webui
|
|
713
|
+
cd examples/monitor-webui
|
|
714
|
+
go build
|
|
715
|
+
|
|
716
|
+
# Start web UI on localhost:8080
|
|
717
|
+
./monitor-webui
|
|
718
|
+
|
|
719
|
+
# Custom port and host
|
|
720
|
+
./monitor-webui -port 3000
|
|
721
|
+
./monitor-webui -host 0.0.0.0 -port 8080 # Listen on all interfaces
|
|
722
|
+
```
|
|
723
|
+
|
|
724
|
+
The monitor provides:
|
|
725
|
+
- **Real-time table view** of all issues with filtering by status and priority
|
|
726
|
+
- **Click-through details** - Click any issue to view full details in a modal
|
|
727
|
+
- **Live updates** - WebSocket connection for real-time changes via daemon RPC
|
|
728
|
+
- **Responsive design** - Mobile-friendly card view on small screens
|
|
729
|
+
- **Statistics dashboard** - Quick overview of issue counts and ready work
|
|
730
|
+
- **Clean UI** - Simple, fast interface styled with milligram.css
|
|
731
|
+
|
|
732
|
+
The monitor is particularly useful for:
|
|
733
|
+
- **Team visibility** - Share a dashboard view of project status
|
|
734
|
+
- **AI agent supervision** - Watch your coding agent create and update issues in real-time
|
|
735
|
+
- **Quick browsing** - Faster than CLI for exploring issue details
|
|
736
|
+
- **Mobile access** - Check project status from your phone
|
|
737
|
+
|
|
738
|
+
See [examples/monitor-webui/](examples/monitor-webui/) for complete documentation.
|
|
739
|
+
|
|
583
740
|
## Examples
|
|
584
741
|
|
|
585
742
|
Check out the **[examples/](examples/)** directory for:
|
|
@@ -594,24 +751,28 @@ Check out the **[examples/](examples/)** directory for:
|
|
|
594
751
|
|
|
595
752
|
For advanced usage, see:
|
|
596
753
|
|
|
597
|
-
- **[ADVANCED.md](ADVANCED.md)** - Prefix renaming, merging duplicates, daemon configuration
|
|
598
|
-
- **[CONFIG.md](CONFIG.md)** - Configuration system for integrations
|
|
599
|
-
- **[EXTENDING.md](EXTENDING.md)** - Database extension patterns
|
|
600
|
-
- **[ADVANCED.md](ADVANCED.md)** - JSONL format and merge strategies
|
|
754
|
+
- **[docs/ADVANCED.md](docs/ADVANCED.md)** - Prefix renaming, merging duplicates, daemon configuration
|
|
755
|
+
- **[docs/CONFIG.md](docs/CONFIG.md)** - Configuration system for integrations
|
|
756
|
+
- **[docs/EXTENDING.md](docs/EXTENDING.md)** - Database extension patterns
|
|
757
|
+
- **[docs/ADVANCED.md](docs/ADVANCED.md)** - JSONL format and merge strategies
|
|
601
758
|
|
|
602
759
|
## Documentation
|
|
603
760
|
|
|
604
761
|
- **[README.md](README.md)** - You are here! Core features and quick start
|
|
605
|
-
- **[INSTALLING.md](INSTALLING.md)** - Complete installation guide for all platforms
|
|
606
|
-
- **[QUICKSTART.md](QUICKSTART.md)** - Interactive tutorial (`bd quickstart`)
|
|
607
|
-
- **[
|
|
608
|
-
- **[
|
|
609
|
-
- **[
|
|
610
|
-
- **[
|
|
611
|
-
- **[
|
|
612
|
-
- **[
|
|
613
|
-
- **[ADVANCED.md](ADVANCED.md)** -
|
|
614
|
-
- **[
|
|
762
|
+
- **[docs/INSTALLING.md](docs/INSTALLING.md)** - Complete installation guide for all platforms
|
|
763
|
+
- **[docs/QUICKSTART.md](docs/QUICKSTART.md)** - Interactive tutorial (`bd quickstart`)
|
|
764
|
+
- **[docs/AGENT_MAIL_QUICKSTART.md](docs/AGENT_MAIL_QUICKSTART.md)** - 5-minute Agent Mail setup guide
|
|
765
|
+
- **[docs/AGENT_MAIL.md](docs/AGENT_MAIL.md)** - Complete Agent Mail integration guide
|
|
766
|
+
- **[docs/MULTI_REPO_MIGRATION.md](docs/MULTI_REPO_MIGRATION.md)** - Multi-repo workflow guide (OSS, teams, multi-phase)
|
|
767
|
+
- **[docs/MULTI_REPO_AGENTS.md](docs/MULTI_REPO_AGENTS.md)** - Multi-repo patterns for AI agents
|
|
768
|
+
- **[docs/FAQ.md](docs/FAQ.md)** - Frequently asked questions
|
|
769
|
+
- **[docs/TROUBLESHOOTING.md](docs/TROUBLESHOOTING.md)** - Common issues and solutions
|
|
770
|
+
- **[docs/ADVANCED.md](docs/ADVANCED.md)** - Advanced features and use cases
|
|
771
|
+
- **[docs/LABELS.md](docs/LABELS.md)** - Complete label system guide
|
|
772
|
+
- **[docs/CONFIG.md](docs/CONFIG.md)** - Configuration system
|
|
773
|
+
- **[docs/EXTENDING.md](docs/EXTENDING.md)** - Database extension patterns
|
|
774
|
+
- **[docs/ADVANCED.md](docs/ADVANCED.md)** - JSONL format analysis
|
|
775
|
+
- **[docs/PLUGIN.md](docs/PLUGIN.md)** - Claude Code plugin documentation
|
|
615
776
|
- **[CONTRIBUTING.md](CONTRIBUTING.md)** - Contribution guidelines
|
|
616
777
|
- **[SECURITY.md](SECURITY.md)** - Security policy
|
|
617
778
|
|
|
@@ -619,7 +780,7 @@ For advanced usage, see:
|
|
|
619
780
|
|
|
620
781
|
### Third-Party Tools
|
|
621
782
|
|
|
622
|
-
- **[
|
|
783
|
+
- **[beads-ui](https://github.com/mantoni/beads-ui)** - Local web interface with live updates, kanban board, and keyboard navigation. Zero-setup launch with `npx beads-ui start`. Built by [@mantoni](https://github.com/mantoni).
|
|
623
784
|
|
|
624
785
|
Have you built something cool with bd? [Open an issue](https://github.com/steveyegge/beads/issues) to get it featured here!
|
|
625
786
|
|
package/bin/bd
CHANGED
|
Binary file
|