@beads/bd 0.24.3 → 0.25.0
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/package.json +1 -1
- package/bin/CHANGELOG.md +0 -1657
- package/bin/LICENSE +0 -21
- package/bin/README.md +0 -814
- package/bin/bd +0 -0
package/bin/CHANGELOG.md
DELETED
|
@@ -1,1657 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to the beads project will be documented in this file.
|
|
4
|
-
|
|
5
|
-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
-
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
-
|
|
8
|
-
## [Unreleased]
|
|
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
|
-
|
|
716
|
-
### Added
|
|
717
|
-
|
|
718
|
-
- **Parent Resurrection** (bd-58c0): Automatic resurrection of deleted parent issues from JSONL history
|
|
719
|
-
- Prevents import failures when parent issues have been deleted
|
|
720
|
-
- Creates tombstone placeholders for missing hierarchical parents
|
|
721
|
-
- Best-effort dependency resurrection from JSONL
|
|
722
|
-
|
|
723
|
-
### Changed
|
|
724
|
-
|
|
725
|
-
- **Error Messages**: Improved error messages for missing parent issues
|
|
726
|
-
- Old: `"parent issue X does not exist"`
|
|
727
|
-
- New: `"parent issue X does not exist and could not be resurrected from JSONL history"`
|
|
728
|
-
- **Breaking**: Scripts parsing exact error messages may need updates
|
|
729
|
-
|
|
730
|
-
### Fixed
|
|
731
|
-
|
|
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`
|
|
736
|
-
|
|
737
|
-
## [0.21.7] - 2025-11-04
|
|
738
|
-
|
|
739
|
-
### Fixed
|
|
740
|
-
|
|
741
|
-
- **Memory Database Connection Pool** (bd-b121): Fixed `:memory:` database handling to use single shared connection
|
|
742
|
-
- Prevents "no such table" errors when using in-memory databases
|
|
743
|
-
- Ensures connection pool reuses the same in-memory instance
|
|
744
|
-
- Critical fix for event-driven daemon mode tests
|
|
745
|
-
|
|
746
|
-
- **Test Suite Stability**: Fixed event-driven test flakiness
|
|
747
|
-
- Added `waitFor` helper for event-driven testing
|
|
748
|
-
- Improved timing-dependent test reliability
|
|
749
|
-
|
|
750
|
-
## [0.21.6] - 2025-11-04
|
|
751
|
-
|
|
752
|
-
### Added
|
|
753
|
-
|
|
754
|
-
- **npm Package** (bd-febc): Created `@beads/bd` npm package for Node.js/Claude Code for Web integration
|
|
755
|
-
- Native binary downloads from GitHub releases
|
|
756
|
-
- Integration tests and release documentation
|
|
757
|
-
- Postinstall script for platform-specific binary installation
|
|
758
|
-
|
|
759
|
-
- **Template Support** (bd-164b): Issue creation from markdown templates
|
|
760
|
-
- Create multiple issues from a single file
|
|
761
|
-
- Structured format for bulk issue creation
|
|
762
|
-
|
|
763
|
-
- **`bd comment` Alias** (bd-d3f0): Convenient shorthand for `bd comments add`
|
|
764
|
-
|
|
765
|
-
### Changed
|
|
766
|
-
|
|
767
|
-
- **Base36 Issue IDs** (GH #213): Switched from hex to Base36 encoding for shorter, more readable IDs
|
|
768
|
-
- Reduces ID length while maintaining uniqueness
|
|
769
|
-
- More human-friendly format
|
|
770
|
-
|
|
771
|
-
### Fixed
|
|
772
|
-
|
|
773
|
-
- **SQLite URI Handling** (bd-c54b): Fixed `file://` URI scheme to prevent query params in filename
|
|
774
|
-
- Prevents database corruption from malformed URIs
|
|
775
|
-
- Fixed `:memory:` database connection strings
|
|
776
|
-
|
|
777
|
-
- **`bd init --no-db` Behavior** (GH #210): Now correctly creates `metadata.json` and `config.yaml`
|
|
778
|
-
- Previously failed to set `no-db: true` flag
|
|
779
|
-
- Improved metadata-only initialization workflow
|
|
780
|
-
|
|
781
|
-
- **Symlink Path Resolution**: Fixed `findDatabaseInTree` to properly resolve symlinks
|
|
782
|
-
- **Epic Hierarchy Display**: Fixed `bd show` command to correctly display epic child relationships
|
|
783
|
-
- **CI Stability**: Fixed performance thresholds, test eligibility, and lint errors
|
|
784
|
-
|
|
785
|
-
### Dependencies
|
|
786
|
-
|
|
787
|
-
- Bumped `github.com/anthropics/anthropic-sdk-go` from 1.14.0 to 1.16.0
|
|
788
|
-
- Bumped `fastmcp` from 2.13.0.1 to 2.13.0.2
|
|
789
|
-
|
|
790
|
-
## [0.21.5] - 2025-11-02
|
|
791
|
-
|
|
792
|
-
### Fixed
|
|
793
|
-
|
|
794
|
-
- **Critical Double JSON Encoding Bug** (bd-1048, bd-4ec8): Fixed widespread bug in daemon RPC calls where `ResolveID` responses were incorrectly converted using `string(resp.Data)` instead of `json.Unmarshal`. This caused IDs to become double-quoted (`"\"bd-1048\""`) and database lookups to fail. Affected commands:
|
|
795
|
-
- `bd show` - nil pointer dereference and 3 instances of double encoding
|
|
796
|
-
- `bd dep add/remove/tree` - 5 instances
|
|
797
|
-
- `bd label add/remove/list` - 3 instances
|
|
798
|
-
- `bd reopen` - 1 instance
|
|
799
|
-
|
|
800
|
-
All 12 instances fixed with proper JSON unmarshaling.
|
|
801
|
-
|
|
802
|
-
## [0.21.4] - 2025-11-02
|
|
803
|
-
|
|
804
|
-
### Added
|
|
805
|
-
|
|
806
|
-
- **New Commands**:
|
|
807
|
-
- `bd status` - Database overview command showing issue counts and stats (bd-28db)
|
|
808
|
-
- `bd comment` - Convenient alias for `bd comments add` (bd-d3f0)
|
|
809
|
-
- `bd daemons restart` - Restart specific daemon without manual kill/start
|
|
810
|
-
- `--json` flag for `bd stale` command
|
|
811
|
-
|
|
812
|
-
- **Protected Branch Workflow**:
|
|
813
|
-
- `BEADS_DIR` environment variable for custom database location (bd-e16b)
|
|
814
|
-
- `sync.branch` configuration for protected branch workflows (bd-b7d2)
|
|
815
|
-
- Git worktree management with sparse checkout for sync branches (bd-a4b5)
|
|
816
|
-
- Only checks out `.beads/` in worktrees, minimal disk usage
|
|
817
|
-
- Only used when `sync.branch` is configured, not for default users
|
|
818
|
-
- Comprehensive protected branch documentation
|
|
819
|
-
|
|
820
|
-
- **Migration & Validation**:
|
|
821
|
-
- Migration inspection tools for AI agents (bd-627d)
|
|
822
|
-
- Conflict marker detection in `bd import` and `bd validate`
|
|
823
|
-
- Git hooks health check in `bd doctor`
|
|
824
|
-
- External reference (`external_ref`) UNIQUE constraint and validation
|
|
825
|
-
- `external_ref` now primary matching key for import updates (bd-1022)
|
|
826
|
-
|
|
827
|
-
### Fixed
|
|
828
|
-
|
|
829
|
-
- **Critical Fixes**:
|
|
830
|
-
- Daemon corruption from git conflicts (bd-8931)
|
|
831
|
-
- MCP `set_context` hangs with stdio transport (GH #153)
|
|
832
|
-
- Double-release race condition in `importInProgress` flag
|
|
833
|
-
- Critical daemon race condition causing stale exports
|
|
834
|
-
|
|
835
|
-
- **Configuration & Migration**:
|
|
836
|
-
- `bd migrate` now detects and sets missing `issue_prefix` config
|
|
837
|
-
- Config system refactored (renamed `config.json` → `metadata.json`)
|
|
838
|
-
- Config version update in migrate command
|
|
839
|
-
|
|
840
|
-
- **Daemon & RPC**:
|
|
841
|
-
- `bd doctor --json` flag not working (bd-6049)
|
|
842
|
-
- `bd import` now flushes JSONL immediately for daemon visibility (bd-47f1)
|
|
843
|
-
- Panic recovery in RPC `handleConnection` (bd-1048)
|
|
844
|
-
- Daemon auto-upgrades database version instead of exiting
|
|
845
|
-
|
|
846
|
-
- **Windows Compatibility**:
|
|
847
|
-
- Windows test failures (path handling, bd binary references)
|
|
848
|
-
- Windows CI: forward slashes in git hook shell scripts
|
|
849
|
-
- TestMetricsSnapshot/uptime flakiness on Windows
|
|
850
|
-
|
|
851
|
-
- **Code Quality**:
|
|
852
|
-
- All golangci-lint errors fixed - linter now passes cleanly
|
|
853
|
-
- All gosec, misspell, and unparam linter warnings resolved
|
|
854
|
-
- Tightened file permissions and added security exclusions
|
|
855
|
-
|
|
856
|
-
### Changed
|
|
857
|
-
|
|
858
|
-
- Daemon automatically upgrades database schema version instead of exiting
|
|
859
|
-
- Git worktree management for sync branches uses sparse checkout (`.beads/` only)
|
|
860
|
-
- Improved test isolation and performance optimization
|
|
861
|
-
|
|
862
|
-
## [0.21.2] - 2025-11-01
|
|
863
|
-
|
|
864
|
-
### Changed
|
|
865
|
-
- Homebrew formula now auto-published in main repo via GoReleaser
|
|
866
|
-
- Deprecated separate homebrew-beads tap repository
|
|
867
|
-
|
|
868
|
-
## [0.21.1] - 2025-10-31
|
|
869
|
-
|
|
870
|
-
### Changed
|
|
871
|
-
- Version bump for consistency across CLI, MCP server, and plugin
|
|
872
|
-
|
|
873
|
-
## [0.20.1] - 2025-10-31
|
|
874
|
-
|
|
875
|
-
### Breaking Changes
|
|
876
|
-
|
|
877
|
-
- **Hash-Based IDs Now Default**: Sequential IDs (bd-1, bd-2) replaced with hash-based IDs (bd-a1b2, bd-f14c)
|
|
878
|
-
- 4-character hashes for 0-500 issues
|
|
879
|
-
- 5-character hashes for 500-1,500 issues
|
|
880
|
-
- 6-character hashes for 1,500-10,000 issues
|
|
881
|
-
- Progressive length extension prevents collisions with birthday paradox math
|
|
882
|
-
- **Migration required**: Run `bd migrate` to upgrade schema (removes `issue_counters` table)
|
|
883
|
-
- Existing databases continue working - migration is opt-in
|
|
884
|
-
- Dramatically reduces merge conflicts in multi-worker/multi-branch workflows
|
|
885
|
-
- Eliminates ID collision issues when multiple agents create issues concurrently
|
|
886
|
-
|
|
887
|
-
### Removed
|
|
888
|
-
|
|
889
|
-
- **Sequential ID Generation**: Removed `SyncAllCounters()`, `AllocateNextID()`, and collision remapping logic (bd-c7af, bd-8e05, bd-4c74)
|
|
890
|
-
- Hash IDs handle collisions by extending hash length, not remapping
|
|
891
|
-
- `issue_counters` table removed from schema
|
|
892
|
-
- `--resolve-collisions` flag removed from import (no longer needed)
|
|
893
|
-
- 400+ lines of obsolete collision handling code removed
|
|
894
|
-
|
|
895
|
-
### Changed
|
|
896
|
-
|
|
897
|
-
- **Collision Handling**: Automatic hash extension on collision instead of ID remapping
|
|
898
|
-
- Much simpler and more reliable than sequential remapping
|
|
899
|
-
- No cross-branch coordination needed
|
|
900
|
-
- Birthday paradox ensures extremely low collision rates
|
|
901
|
-
|
|
902
|
-
### Migration Notes
|
|
903
|
-
|
|
904
|
-
**For users upgrading from 0.20.0 or earlier:**
|
|
905
|
-
|
|
906
|
-
1. Run `bd migrate` to detect and upgrade old database schemas
|
|
907
|
-
2. Database continues to work without migration, but you'll see warnings
|
|
908
|
-
3. Hash IDs provide better multi-worker reliability at the cost of non-numeric IDs
|
|
909
|
-
4. Old sequential IDs like `bd-152` become hash IDs like `bd-f14c`
|
|
910
|
-
|
|
911
|
-
See README.md for hash ID format details and birthday paradox collision analysis.
|
|
912
|
-
|
|
913
|
-
## [0.20.0] - 2025-10-30
|
|
914
|
-
|
|
915
|
-
### Added
|
|
916
|
-
- **Hash-Based IDs**: New collision-resistant ID system (bd-168, bd-166, bd-167)
|
|
917
|
-
- 6-character hash IDs with progressive 7/8-char fallback on collision
|
|
918
|
-
- Opt-in via `.beads/config.toml` with `id_mode = "hash"`
|
|
919
|
-
- Migration tool: `bd migrate --to-hash-ids` for existing databases
|
|
920
|
-
- Prefix-optional ID parsing (e.g., `bd-abc123` or just `abc123`)
|
|
921
|
-
- Hierarchical child ID generation for discovered-from relationships
|
|
922
|
-
- **Substring ID Matching**: All bd commands now support partial ID matching (bd-170)
|
|
923
|
-
- `bd show abc` matches any ID containing "abc" (e.g., `bd-abc123`)
|
|
924
|
-
- Ambiguous matches show helpful error with all candidates
|
|
925
|
-
- **Daemon Registry**: Multi-daemon management for multiple workspaces (bd-07b8c8)
|
|
926
|
-
- `bd daemons list` shows all running daemons across workspaces
|
|
927
|
-
- `bd daemons health` detects version mismatches and stale sockets
|
|
928
|
-
- `bd daemons logs <workspace>` for per-daemon log viewing
|
|
929
|
-
- `bd daemons killall` to restart all daemons after upgrades
|
|
930
|
-
|
|
931
|
-
### Fixed
|
|
932
|
-
- **Test Stability**: Deprecated sequence-ID collision tests
|
|
933
|
-
- Kept `TestFiveCloneCollision` for hash-ID multi-clone testing
|
|
934
|
-
- Fixed `TestTwoCloneCollision` to use merge instead of rebase
|
|
935
|
-
- **Linting**: golangci-lint v2.5.0 compatibility
|
|
936
|
-
- Added `version: 2` field to `.golangci.yml`
|
|
937
|
-
- Renamed `exclude` to `exclude-patterns` for v3 format
|
|
938
|
-
|
|
939
|
-
### Changed
|
|
940
|
-
- **Multiple bd Detection**: Warning when multiple bd binaries in PATH (PR #182)
|
|
941
|
-
- Prevents confusion from version conflicts
|
|
942
|
-
- Shows locations of all bd binaries found
|
|
943
|
-
|
|
944
|
-
## [0.17.7] - 2025-10-26
|
|
945
|
-
|
|
946
|
-
### Fixed
|
|
947
|
-
- **Test Isolation**: Export test failures due to hash caching between subtests
|
|
948
|
-
- Added `ClearAllExportHashes()` method to SQLiteStorage for test isolation
|
|
949
|
-
- Export tests now properly reset state between subtests
|
|
950
|
-
- Fixes intermittent test failures when running full test suite
|
|
951
|
-
|
|
952
|
-
## [0.17.2] - 2025-10-25
|
|
953
|
-
|
|
954
|
-
### Added
|
|
955
|
-
- **Configurable Sort Policy**: `bd ready --sort` flag for work queue ordering (bd-147)
|
|
956
|
-
- `hybrid` (default): Priority-weighted by staleness
|
|
957
|
-
- `priority`: Strict priority ordering for autonomous systems
|
|
958
|
-
- `oldest`: Pure FIFO for long-tail work
|
|
959
|
-
- **Release Automation**: New scripts for streamlined releases
|
|
960
|
-
- `scripts/release.sh`: Full automated release (version bump, tests, tag, Homebrew, install)
|
|
961
|
-
- `scripts/update-homebrew.sh`: Automated Homebrew formula updates
|
|
962
|
-
|
|
963
|
-
### Fixed
|
|
964
|
-
- **Critical**: Database reinitialization test re-landed with CI fixes (bd-130)
|
|
965
|
-
- Windows: Fixed git path handling (forward slash normalization)
|
|
966
|
-
- Nix: Skip test when git unavailable
|
|
967
|
-
- JSON: Increased scanner buffer to 64MB for large issues
|
|
968
|
-
- **Bug**: Stale daemon socket detection (bd-137)
|
|
969
|
-
- MCP server now health-checks cached connections before use
|
|
970
|
-
- Auto-reconnect with exponential backoff on stale sockets
|
|
971
|
-
- Handles daemon restarts/upgrades gracefully
|
|
972
|
-
- **Linting**: Fixed all errcheck warnings in production code (bd-58)
|
|
973
|
-
- Proper error handling for database resources and transactions
|
|
974
|
-
- Graceful EOF handling in interactive input
|
|
975
|
-
- **Linting**: Fixed revive style issues (bd-56)
|
|
976
|
-
- Removed unused parameters, renamed builtin shadowing
|
|
977
|
-
- **Linting**: Fixed goconst warnings (bd-116)
|
|
978
|
-
|
|
979
|
-
## [0.17.0] - 2025-10-24
|
|
980
|
-
|
|
981
|
-
### Added
|
|
982
|
-
- **Git Hooks**: Automatic installation prompt during `bd init` (bd-51)
|
|
983
|
-
- Eliminates race condition between auto-flush and git commits
|
|
984
|
-
- Pre-commit hook: Flushes pending changes immediately before commit
|
|
985
|
-
- Post-merge hook: Imports updated JSONL after pull/merge
|
|
986
|
-
- Optional installation with Y/n prompt (defaults to yes)
|
|
987
|
-
- See [examples/git-hooks/README.md](examples/git-hooks/README.md) for details
|
|
988
|
-
- **Duplicate Detection**: New `bd duplicates` command for finding and merging duplicate issues (bd-119, bd-203)
|
|
989
|
-
- Automated duplicate detection with content-based matching
|
|
990
|
-
- `--auto-merge` flag for batch merging duplicates
|
|
991
|
-
- `--dry-run` mode to preview merges before execution
|
|
992
|
-
- Helps maintain database cleanliness after imports
|
|
993
|
-
- **External Reference Import**: Smart import matching using `external_ref` field (bd-66-74, GH #142)
|
|
994
|
-
- Issues with `external_ref` match by reference first, not content
|
|
995
|
-
- Enables hybrid workflows with Jira, GitHub, Linear
|
|
996
|
-
- Updates existing issues instead of creating duplicates
|
|
997
|
-
- Database index on `external_ref` for fast lookups
|
|
998
|
-
- **Multi-Database Warning**: Detect and warn about nested beads databases (bd-75)
|
|
999
|
-
- Prevents accidental creation of multiple databases in hierarchy
|
|
1000
|
-
- Helps users avoid confusion about which database is active
|
|
1001
|
-
|
|
1002
|
-
### Fixed
|
|
1003
|
-
- **Critical**: Database reinitialization data loss bug (bd-130, DATABASE_REINIT_BUG.md)
|
|
1004
|
-
- Fixed bug where removing `.beads/` and running `bd init` would lose git-tracked issues
|
|
1005
|
-
- Now correctly imports from JSONL during initialization
|
|
1006
|
-
- Added comprehensive tests (later reverted due to CI issues on Windows/Nix)
|
|
1007
|
-
- **Critical**: Foreign key constraint regression (bd-62, GH #144)
|
|
1008
|
-
- Pinned modernc.org/sqlite to v1.38.2 to avoid FK violations
|
|
1009
|
-
- Prevents database corruption from upstream regression
|
|
1010
|
-
- **Critical**: Install script safety (GH #143 by @marcodelpin)
|
|
1011
|
-
- Prevents shell corruption from directory deletion during install
|
|
1012
|
-
- Restored proper error codes for safer installation
|
|
1013
|
-
- **Bug**: Daemon auto-start reliability (bd-137)
|
|
1014
|
-
- Daemon now responsive immediately, runs initial sync in background
|
|
1015
|
-
- Fixes timeout issues when git pull is slow
|
|
1016
|
-
- Skip daemon-running check for forked child process
|
|
1017
|
-
- **Bug**: Dependency timestamp churn during auto-import (bd-45, bd-137)
|
|
1018
|
-
- Auto-import no longer updates timestamps on unchanged dependencies
|
|
1019
|
-
- Eliminates perpetually dirty JSONL from metadata changes
|
|
1020
|
-
- **Bug**: Import reporting accuracy (bd-49, bd-88)
|
|
1021
|
-
- `bd import` now correctly reports "X updated, Y unchanged" instead of "0 updated"
|
|
1022
|
-
- Better visibility into import operation results
|
|
1023
|
-
- **Bug**: Memory database handling
|
|
1024
|
-
- Fixed :memory: database connection with shared cache mode
|
|
1025
|
-
- Proper URL construction for in-memory testing
|
|
1026
|
-
|
|
1027
|
-
### Changed
|
|
1028
|
-
- **Removed**: Deprecated `bd repos` command
|
|
1029
|
-
- Global daemon architecture removed in favor of per-project daemons
|
|
1030
|
-
- Eliminated cross-project database confusion
|
|
1031
|
-
- **Documentation**: Major reorganization and improvements
|
|
1032
|
-
- Condensed README, created specialized docs (QUICKSTART.md, ADVANCED.md, etc.)
|
|
1033
|
-
- Enhanced "Why not GitHub Issues?" FAQ section
|
|
1034
|
-
- Added Beadster to Community & Ecosystem section
|
|
1035
|
-
|
|
1036
|
-
### Performance
|
|
1037
|
-
- Test coverage improvements: 46.0% → 57.7% (+11.7%)
|
|
1038
|
-
- Added tests for RPC, storage, cmd/bd helpers
|
|
1039
|
-
- New test files: coverage_test.go, helpers_test.go, epics_test.go
|
|
1040
|
-
|
|
1041
|
-
### Community
|
|
1042
|
-
- Community contribution by @marcodelpin (install script safety fixes)
|
|
1043
|
-
- Dependabot integration for automated dependency updates
|
|
1044
|
-
|
|
1045
|
-
## [0.16.0] - 2025-10-23
|
|
1046
|
-
|
|
1047
|
-
### Added
|
|
1048
|
-
- **Automated Releases**: GoReleaser workflow for cross-platform binaries (bd-46)
|
|
1049
|
-
- Automatic GitHub releases on version tags
|
|
1050
|
-
- Linux, macOS, Windows binaries for amd64 and arm64
|
|
1051
|
-
- Checksums and changelog generation included
|
|
1052
|
-
- **PyPI Automation**: Automated MCP server publishing to PyPI
|
|
1053
|
-
- GitHub Actions workflow publishes beads-mcp on version tags
|
|
1054
|
-
- Eliminates manual PyPI upload step
|
|
1055
|
-
- **Sandbox Mode**: `--sandbox` flag for Claude Code integration (bd-35)
|
|
1056
|
-
- Isolated environment for AI agent experimentation
|
|
1057
|
-
- Prevents production database modifications during testing
|
|
1058
|
-
|
|
1059
|
-
### Fixed
|
|
1060
|
-
- **Critical**: Idempotent import timestamp churn (bd-84)
|
|
1061
|
-
- Prevents timestamp updates when issue content unchanged
|
|
1062
|
-
- Reduces JSONL churn and git noise from repeated imports
|
|
1063
|
-
- **Bug**: Windows CI test failures (bd-60, bd-99)
|
|
1064
|
-
- Fixed path separator issues and file handling on Windows
|
|
1065
|
-
- Skipped flaky tests to stabilize CI
|
|
1066
|
-
|
|
1067
|
-
### Changed
|
|
1068
|
-
- **Configuration Migration**: Unified config management with Viper (bd-40-44, bd-78)
|
|
1069
|
-
- Migrated from manual env var handling to Viper
|
|
1070
|
-
- Bound all global flags to Viper for consistency
|
|
1071
|
-
- Kept `bd config` independent from Viper for modularity
|
|
1072
|
-
- Added comprehensive configuration tests
|
|
1073
|
-
- **Documentation Refactor**: Improved documentation structure
|
|
1074
|
-
- Condensed main README
|
|
1075
|
-
- Created specialized guides (QUICKSTART.md, CONFIG.md, etc.)
|
|
1076
|
-
- Enhanced FAQ and community sections
|
|
1077
|
-
|
|
1078
|
-
### Testing
|
|
1079
|
-
- Hardened `issueDataChanged` with type-safe comparisons
|
|
1080
|
-
- Improved test isolation and reliability
|
|
1081
|
-
|
|
1082
|
-
## [0.15.0] - 2025-10-23
|
|
1083
|
-
|
|
1084
|
-
### Added
|
|
1085
|
-
- **Configuration System**: New `bd config` command for managing configuration (GH #115)
|
|
1086
|
-
- Environment variable definitions with validation
|
|
1087
|
-
- Configuration file support (TOML/YAML/JSON)
|
|
1088
|
-
- Get/set/list/unset commands for user-friendly management
|
|
1089
|
-
- Validation and type checking for config values
|
|
1090
|
-
- Documentation in CONFIG.md
|
|
1091
|
-
|
|
1092
|
-
### Fixed
|
|
1093
|
-
- **MCP Server**: Smart routing for lifecycle status changes in `update` tool (GH #123)
|
|
1094
|
-
- `update(status="closed")` now routes to `close()` tool to respect approval workflows
|
|
1095
|
-
- `update(status="open")` now routes to `reopen()` tool to respect approval workflows
|
|
1096
|
-
- Prevents bypass of Claude Code approval settings for lifecycle events
|
|
1097
|
-
- bd CLI remains unopinionated; routing happens only in MCP layer
|
|
1098
|
-
- Users can now safely auto-approve benign updates (priority, notes) without exposing closure bypass
|
|
1099
|
-
|
|
1100
|
-
## [0.14.0] - 2025-10-22
|
|
1101
|
-
|
|
1102
|
-
### Added
|
|
1103
|
-
- **Lifecycle Safety Documentation**: Complete documentation for UnderlyingDB() usage (bd-64)
|
|
1104
|
-
- Added tracking guidelines for database lifecycle safety
|
|
1105
|
-
- Documented transaction management best practices
|
|
1106
|
-
- Prevents UAF (use-after-free) bugs in extensions
|
|
1107
|
-
|
|
1108
|
-
### Fixed
|
|
1109
|
-
- **Critical**: Git worktree detection and warnings (bd-73)
|
|
1110
|
-
- Added automatic detection when running in git worktrees
|
|
1111
|
-
- Displays prominent warning if daemon mode is active in worktree
|
|
1112
|
-
- Prevents daemon from committing/pushing to wrong branch
|
|
1113
|
-
- Documents `--no-daemon` flag as solution for worktree users
|
|
1114
|
-
- **Critical**: Multiple daemon race condition (bd-54)
|
|
1115
|
-
- Implemented file locking (`daemon.lock`) to prevent multiple daemons per repository
|
|
1116
|
-
- Uses `flock` on Unix, `LockFileEx` on Windows for process-level exclusivity
|
|
1117
|
-
- Lock held for daemon lifetime, automatically released on exit
|
|
1118
|
-
- Eliminates race conditions in concurrent daemon start attempts
|
|
1119
|
-
- Backward compatible: Falls back to PID check for pre-lock daemons during upgrades
|
|
1120
|
-
- **Bug**: daemon.lock tracked in git
|
|
1121
|
-
- Removed daemon.lock from git tracking
|
|
1122
|
-
- Added to .gitignore to prevent future commits
|
|
1123
|
-
- **Bug**: Regression in Nix Flake (#110)
|
|
1124
|
-
- Fixed flake build issues
|
|
1125
|
-
- Restored working Nix development environment
|
|
1126
|
-
|
|
1127
|
-
### Changed
|
|
1128
|
-
- UnderlyingDB() deprecated for most use cases
|
|
1129
|
-
- New UnderlyingConn(ctx) provides safer scoped access
|
|
1130
|
-
- Reduced risk of UAF bugs in database extensions
|
|
1131
|
-
- Updated EXTENDING.md with migration guide
|
|
1132
|
-
|
|
1133
|
-
### Documentation
|
|
1134
|
-
- Complete release process documentation in RELEASING.md
|
|
1135
|
-
- Enhanced EXTENDING.md with lifecycle safety patterns
|
|
1136
|
-
- Added UnderlyingDB() tracking guidelines
|
|
1137
|
-
|
|
1138
|
-
## [0.11.0] - 2025-10-22
|
|
1139
|
-
|
|
1140
|
-
### Added
|
|
1141
|
-
- **Issue Merging**: New `bd merge` command for consolidating duplicate issues (bd-7, bd-11-17)
|
|
1142
|
-
- Merge multiple source issues into a single target issue
|
|
1143
|
-
- Automatically migrates all dependencies and dependents to target
|
|
1144
|
-
- Updates text references (bd-X mentions) across all issue fields
|
|
1145
|
-
- Closes source issues with "Merged into bd-Y" reason
|
|
1146
|
-
- Supports `--dry-run` for validation without changes
|
|
1147
|
-
- Example: `bd merge bd-42 bd-43 --into bd-41`
|
|
1148
|
-
- **Multi-ID Operations**: Batch operations for increased efficiency (bd-195, #101)
|
|
1149
|
-
- `bd update`: Update multiple issues at once
|
|
1150
|
-
- `bd show`: View multiple issues in single call
|
|
1151
|
-
- `bd label add/remove`: Apply labels to multiple issues
|
|
1152
|
-
- `bd close`: Close multiple issues with one command
|
|
1153
|
-
- `bd reopen`: Reopen multiple issues together
|
|
1154
|
-
- Example: `bd close bd-1 bd-2 bd-3 --reason "Done"`
|
|
1155
|
-
- **Daemon RPC Improvements**: Enhanced sync operations (bd-2)
|
|
1156
|
-
- `bd sync` now works correctly in daemon mode
|
|
1157
|
-
- Export operations properly supported via RPC
|
|
1158
|
-
- Prevents database access conflicts during sync
|
|
1159
|
-
- **Acceptance Criteria Alias**: Added `--acceptance-criteria` flag (bd-228, #102)
|
|
1160
|
-
- Backward-compatible alias for `--acceptance` in `bd update`
|
|
1161
|
-
- Improves clarity and matches field name
|
|
1162
|
-
|
|
1163
|
-
### Fixed
|
|
1164
|
-
- **Critical**: Test isolation and database pollution (bd-1, bd-15, bd-19, bd-52)
|
|
1165
|
-
- Comprehensive test isolation ensuring tests never pollute production database
|
|
1166
|
-
- Fixed stress test issues writing 1000+ test issues to production
|
|
1167
|
-
- Quarantined RPC benchmarks to prevent pollution
|
|
1168
|
-
- Added database isolation canary tests
|
|
1169
|
-
- **Critical**: Daemon cache staleness (bd-49)
|
|
1170
|
-
- Daemon now detects external database modifications via mtime check
|
|
1171
|
-
- Prevents serving stale data after external `bd import`, `rm bd.db`, etc.
|
|
1172
|
-
- Cache automatically invalidates when DB file changes
|
|
1173
|
-
- **Critical**: Counter desync after deletions (bd-49)
|
|
1174
|
-
- Issue counters now sync correctly after bulk deletions
|
|
1175
|
-
- Prevents ID gaps and counter drift
|
|
1176
|
-
- **Critical**: Labels and dependencies not persisted in daemon mode (#101)
|
|
1177
|
-
- Fixed label operations failing silently in daemon mode
|
|
1178
|
-
- Fixed dependency operations not saving in daemon mode
|
|
1179
|
-
- Both now correctly propagate through RPC layer
|
|
1180
|
-
- **Daemon sync support**: `bd sync` command now works in daemon mode (bd-2)
|
|
1181
|
-
- Previously crashed with nil pointer when daemon running
|
|
1182
|
-
- Export operations now properly routed through RPC
|
|
1183
|
-
- **Acceptance flag normalization**: Unified `--acceptance` flag behavior (bd-228, #102)
|
|
1184
|
-
- Added `--acceptance-criteria` as clearer alias
|
|
1185
|
-
- Both flags work identically for backward compatibility
|
|
1186
|
-
- **Auto-import Git conflicts**: Better detection of merge conflicts (bd-270)
|
|
1187
|
-
- Auto-import detects and warns about unresolved Git merge conflicts
|
|
1188
|
-
- Prevents importing corrupted JSONL with conflict markers
|
|
1189
|
-
- Clear instructions for resolving conflicts
|
|
1190
|
-
|
|
1191
|
-
### Changed
|
|
1192
|
-
- **BREAKING**: Removed global daemon socket fallback (bd-231)
|
|
1193
|
-
- Each project now must use its own local daemon (.beads/bd.sock)
|
|
1194
|
-
- Prevents cross-project daemon connections and database pollution
|
|
1195
|
-
- Migration: Stop any global daemon and restart with `bd daemon` in each project
|
|
1196
|
-
- Warning displayed if old global socket (~/.beads/bd.sock) is found
|
|
1197
|
-
- **Database cleanup**: Project database cleaned from 1000+ to 55 issues
|
|
1198
|
-
- Removed accumulated test pollution from stress testing
|
|
1199
|
-
- Renumbered issues for clean ID space (bd-1 through bd-55)
|
|
1200
|
-
- Better test isolation prevents future pollution
|
|
1201
|
-
|
|
1202
|
-
### Deprecated
|
|
1203
|
-
- Global daemon socket support (see BREAKING change above)
|
|
1204
|
-
|
|
1205
|
-
## [0.10.0] - 2025-10-20
|
|
1206
|
-
|
|
1207
|
-
### Added
|
|
1208
|
-
- **Agent Onboarding**: New `bd onboard` command for agent-first documentation (bd-173)
|
|
1209
|
-
- Outputs structured instructions for agents to integrate bd into documentation
|
|
1210
|
-
- Bootstrap workflow: Add 'BEFORE ANYTHING ELSE: run bd onboard' to AGENTS.md
|
|
1211
|
-
- Agent adapts instructions to existing project structure
|
|
1212
|
-
- More agentic approach vs. direct string replacement
|
|
1213
|
-
- Updates README with new bootstrap workflow
|
|
1214
|
-
|
|
1215
|
-
## [0.9.11] - 2025-10-20
|
|
1216
|
-
|
|
1217
|
-
### Added
|
|
1218
|
-
- **Labels Documentation**: Comprehensive LABELS.md guide (bd-159, bd-163)
|
|
1219
|
-
- Complete label system documentation with workflows and best practices
|
|
1220
|
-
- Common label patterns (components, domains, size, quality gates, releases)
|
|
1221
|
-
- Advanced filtering techniques and integration examples
|
|
1222
|
-
- Added Labels section to README with quick reference
|
|
1223
|
-
|
|
1224
|
-
### Fixed
|
|
1225
|
-
- **Critical**: MCP server crashes on None/null responses (bd-172, fixes #79)
|
|
1226
|
-
- Added null safety checks in `list_issues()`, `ready()`, and `stats()` methods
|
|
1227
|
-
- Returns empty arrays/dicts instead of crashing on None responses
|
|
1228
|
-
- Prevents TypeError when daemon returns empty results
|
|
1229
|
-
|
|
1230
|
-
## [0.9.10] - 2025-10-18
|
|
1231
|
-
|
|
1232
|
-
### Added
|
|
1233
|
-
- **Label Filtering**: Enhanced `bd list` command with label-based filtering (bd-161)
|
|
1234
|
-
- `--label` (or `-l`): Filter by multiple labels with AND semantics (must have ALL)
|
|
1235
|
-
- `--label-any`: Filter by multiple labels with OR semantics (must have AT LEAST ONE)
|
|
1236
|
-
- Examples:
|
|
1237
|
-
- `bd list --label backend,urgent`: Issues with both 'backend' AND 'urgent'
|
|
1238
|
-
- `bd list --label-any frontend,backend`: Issues with either 'frontend' OR 'backend'
|
|
1239
|
-
- Works in both daemon and direct modes
|
|
1240
|
-
- Includes comprehensive test coverage
|
|
1241
|
-
- **Log Rotation**: Automatic daemon log rotation with configurable limits (bd-154)
|
|
1242
|
-
- Prevents unbounded log file growth for long-running daemons
|
|
1243
|
-
- Configurable via environment variables: `BEADS_DAEMON_LOG_MAX_SIZE`, `BEADS_DAEMON_LOG_MAX_BACKUPS`, `BEADS_DAEMON_LOG_MAX_AGE`, `BEADS_DAEMON_LOG_COMPRESS`
|
|
1244
|
-
- Optional compression of rotated logs
|
|
1245
|
-
- Defaults: 50MB max size, 7 backups, 30 day retention, compression enabled
|
|
1246
|
-
- **Batch Deletion**: Enhanced `bd delete` command with batch operations (bd-127)
|
|
1247
|
-
- Delete multiple issues at once: `bd delete bd-1 bd-2 bd-3 --force`
|
|
1248
|
-
- Read from file: `bd delete --from-file deletions.txt --force`
|
|
1249
|
-
- Dry-run mode: `--dry-run` to preview deletions before execution
|
|
1250
|
-
- Cascade mode: `--cascade` to recursively delete all dependents
|
|
1251
|
-
- Force mode: `--force` to orphan dependents instead of failing
|
|
1252
|
-
- Atomic transactions: all deletions succeed or none do
|
|
1253
|
-
- Comprehensive statistics: tracks deleted issues, dependencies, labels, and events
|
|
1254
|
-
|
|
1255
|
-
### Fixed
|
|
1256
|
-
- **Critical**: `bd list --status all` showing 0 issues (bd-148)
|
|
1257
|
-
- Status filter now treats "all" as special value meaning "show all statuses"
|
|
1258
|
-
- Previously treated "all" as literal status value, matching no issues
|
|
1259
|
-
|
|
1260
|
-
## [0.9.9] - 2025-10-17
|
|
1261
|
-
|
|
1262
|
-
### Added
|
|
1263
|
-
- **Daemon RPC Architecture**: Production-ready RPC protocol for client-daemon communication (bd-110, bd-111, bd-112, bd-114, bd-117)
|
|
1264
|
-
- Unix socket-based RPC enables faster command execution via long-lived daemon process
|
|
1265
|
-
- Automatic client detection with graceful fallback to direct mode
|
|
1266
|
-
- Serializes SQLite writes and batches git operations to prevent concurrent access issues
|
|
1267
|
-
- Resolves database corruption, git lock contention, and ID counter conflicts with multiple agents
|
|
1268
|
-
- Comprehensive integration tests and stress testing with 4+ concurrent agents
|
|
1269
|
-
- **Issue Deletion**: `bd delete` command for removing issues with comprehensive cleanup
|
|
1270
|
-
- Safely removes issues from database and JSONL export
|
|
1271
|
-
- Cleans up dependencies and references to deleted issues
|
|
1272
|
-
- Works correctly with git-based workflows
|
|
1273
|
-
- **Issue Restoration**: `bd restore` command for recovering compacted/deleted issues
|
|
1274
|
-
- Restores issues from git history when needed
|
|
1275
|
-
- Preserves references and dependency relationships
|
|
1276
|
-
- **Prefix Renaming**: `bd rename-prefix` command for batch ID prefix changes
|
|
1277
|
-
- Updates all issue IDs and text references throughout the database
|
|
1278
|
-
- Useful for project rebranding or namespace changes
|
|
1279
|
-
- **Comprehensive Testing**: Added scripttest-based integration tests (#59)
|
|
1280
|
-
- End-to-end coverage for CLI workflows
|
|
1281
|
-
- Tests for init command edge cases (bd-70)
|
|
1282
|
-
|
|
1283
|
-
### Fixed
|
|
1284
|
-
- **Critical**: Metadata errors causing crashes on first import (bd-663)
|
|
1285
|
-
- Auto-import now treats missing metadata as first import instead of failing
|
|
1286
|
-
- Eliminates initialization errors in fresh repositories
|
|
1287
|
-
- **Critical**: N+1 query pattern in auto-import (bd-666)
|
|
1288
|
-
- Replaced per-issue queries with batch fetching
|
|
1289
|
-
- Dramatically improves performance for large imports
|
|
1290
|
-
- **Critical**: Duplicate issue imports (bd-421)
|
|
1291
|
-
- Added deduplication logic to prevent importing same issue multiple times
|
|
1292
|
-
- Maintains data integrity during repeated imports
|
|
1293
|
-
- **Bug**: Auto-flush missing after renumber/rename-prefix (bd-346)
|
|
1294
|
-
- Commands now properly export to JSONL after completion
|
|
1295
|
-
- Ensures git sees latest changes immediately
|
|
1296
|
-
- **Bug**: Renumber ID collision with UUID temp IDs (bd-345)
|
|
1297
|
-
- Uses proper UUID-based temporary IDs to prevent conflicts during renumbering
|
|
1298
|
-
- ID counter now correctly syncs after renumbering operations
|
|
1299
|
-
- **Bug**: Collision resolution dependency handling (bd-437)
|
|
1300
|
-
- Uses unchecked dependency addition during collision remapping
|
|
1301
|
-
- Prevents spurious cycle detection errors
|
|
1302
|
-
- **Bug**: macOS crashes documented (closes #3, bd-87)
|
|
1303
|
-
- Added CGO_ENABLED=1 workaround documentation for macOS builds
|
|
1304
|
-
|
|
1305
|
-
### Changed
|
|
1306
|
-
- CLI commands now prefer RPC when daemon is running
|
|
1307
|
-
- Improved error reporting and diagnostics for RPC failures
|
|
1308
|
-
- More consistent exit codes and status messages
|
|
1309
|
-
- Internal command architecture refactored for RPC client/server sharing
|
|
1310
|
-
- Reduced code duplication between direct and daemon modes
|
|
1311
|
-
- Improved reliability of background operations
|
|
1312
|
-
- Ready work sort order flipped to show oldest issues first
|
|
1313
|
-
- Helps prioritize long-standing work items
|
|
1314
|
-
|
|
1315
|
-
### Performance
|
|
1316
|
-
- Faster command execution through RPC-backed daemon (up to 10x improvement)
|
|
1317
|
-
- N+1 query elimination in list/show operations
|
|
1318
|
-
- Reduced write amplification from improved auto-flush behavior
|
|
1319
|
-
- Cycle detection performance benchmarks added (bd-311)
|
|
1320
|
-
|
|
1321
|
-
### Testing
|
|
1322
|
-
- Integration tests for daemon RPC request/response flows
|
|
1323
|
-
- End-to-end coverage for delete/restore lifecycles
|
|
1324
|
-
- Regression tests for metadata handling, auto-flush, ID counter sync
|
|
1325
|
-
- Comprehensive tests for collision detection in auto-import (bd-401)
|
|
1326
|
-
|
|
1327
|
-
### Documentation
|
|
1328
|
-
- Release process documentation added (RELEASING.md)
|
|
1329
|
-
- Multiple workstreams warning banner for development coordination
|
|
1330
|
-
|
|
1331
|
-
## [0.9.8] - 2025-10-16
|
|
1332
|
-
|
|
1333
|
-
### Added
|
|
1334
|
-
- **Background Daemon Mode**: `bd daemon` command for continuous auto-sync (#bd-386)
|
|
1335
|
-
- Watches for changes and automatically exports to JSONL
|
|
1336
|
-
- Monitors git repository for incoming changes and auto-imports
|
|
1337
|
-
- Production-ready with graceful shutdown, PID file management, and signal handling
|
|
1338
|
-
- Eliminates manual export/import in active development workflows
|
|
1339
|
-
- **Git Synchronization**: `bd sync` command for automated git workflows (#bd-378)
|
|
1340
|
-
- One-command sync: stage, commit, pull, push JSONL changes
|
|
1341
|
-
- Automatic merge conflict resolution with collision remapping
|
|
1342
|
-
- Status reporting shows sync progress and any issues
|
|
1343
|
-
- Ideal for distributed teams and CI/CD integration
|
|
1344
|
-
- **Issue Compaction**: `bd compact` command to summarize old closed issues (bd-254-264)
|
|
1345
|
-
- AI-powered summarization using Claude Haiku
|
|
1346
|
-
- Reduces database size while preserving essential information
|
|
1347
|
-
- Configurable thresholds for age, dependencies, and references
|
|
1348
|
-
- Compaction status visible in `bd show` output
|
|
1349
|
-
- **Label and Title Filtering**: Enhanced `bd list` command (#45, bd-269)
|
|
1350
|
-
- Filter by labels: `bd list --label bug,critical`
|
|
1351
|
-
- Filter by title: `bd list --title "auth"`
|
|
1352
|
-
- Combine with status/priority filters
|
|
1353
|
-
- **List Output Formats**: `bd list --format` flag for custom output (PR #46)
|
|
1354
|
-
- Format options: `default`, `compact`, `detailed`, `json`
|
|
1355
|
-
- Better integration with scripts and automation tools
|
|
1356
|
-
- **MCP Reopen Support**: Reopen closed issues via MCP server
|
|
1357
|
-
- Claude Desktop plugin can now reopen issues
|
|
1358
|
-
- Useful for revisiting completed work
|
|
1359
|
-
- **Cross-Type Cycle Prevention**: Dependency cycles detected across all types (bd-312)
|
|
1360
|
-
- Prevents A→B→A cycles even when mixing `blocks`, `related`, etc.
|
|
1361
|
-
- Semantic validation for parent-child direction
|
|
1362
|
-
- Diagnostic warnings when cycles detected
|
|
1363
|
-
|
|
1364
|
-
### Fixed
|
|
1365
|
-
- **Critical**: Auto-import collision skipping bug (bd-393, bd-228)
|
|
1366
|
-
- Import would silently skip collisions instead of remapping
|
|
1367
|
-
- Could cause data loss when merging branches
|
|
1368
|
-
- Now correctly applies collision resolution with remapping
|
|
1369
|
-
- **Critical**: Transaction state corruption (bd-221)
|
|
1370
|
-
- Nested transactions could corrupt database state
|
|
1371
|
-
- Fixed with proper transaction boundary handling
|
|
1372
|
-
- **Critical**: Concurrent temp file collisions (bd-306, bd-373)
|
|
1373
|
-
- Multiple `bd` processes would collide on shared `.tmp` filename
|
|
1374
|
-
- Now uses PID suffix for temp files: `.beads/issues.jsonl.tmp.12345`
|
|
1375
|
-
- **Critical**: Circular dependency detection gaps (bd-307)
|
|
1376
|
-
- Some cycle patterns were missed by detection algorithm
|
|
1377
|
-
- Enhanced with comprehensive cycle prevention
|
|
1378
|
-
- **Bug**: False positive merge conflict detection (bd-313, bd-270)
|
|
1379
|
-
- Auto-import would detect conflicts when none existed
|
|
1380
|
-
- Fixed with improved Git conflict marker detection
|
|
1381
|
-
- **Bug**: Import timeout with large issue sets (bd-199)
|
|
1382
|
-
- 200+ issue imports would timeout
|
|
1383
|
-
- Optimized import performance
|
|
1384
|
-
- **Bug**: Collision resolver missing ID counter sync (bd-331)
|
|
1385
|
-
- After remapping, ID counters weren't updated
|
|
1386
|
-
- Could cause duplicate IDs in subsequent creates
|
|
1387
|
-
- **Bug**: NULL handling in statistics for empty databases (PR #37)
|
|
1388
|
-
- `bd stats` would crash on newly initialized databases
|
|
1389
|
-
- Fixed NULL value handling in GetStatistics
|
|
1390
|
-
|
|
1391
|
-
### Changed
|
|
1392
|
-
- Compaction removes snapshot/restore (simplified to permanent decay)
|
|
1393
|
-
- Export file writing refactored to avoid Windows Defender false positives (PR #31)
|
|
1394
|
-
- Error handling improved in auto-import and fallback paths (PR #47)
|
|
1395
|
-
- Reduced cyclomatic complexity in main.go (PR #48)
|
|
1396
|
-
- MCP integration tests fixed and linting cleaned up (PR #40)
|
|
1397
|
-
|
|
1398
|
-
### Performance
|
|
1399
|
-
- Cycle detection benchmarks added (bd-311)
|
|
1400
|
-
- Import optimization for large issue sets
|
|
1401
|
-
- Export uses PID-based temp files to avoid lock contention
|
|
1402
|
-
|
|
1403
|
-
### Community
|
|
1404
|
-
- Merged PR #31: Windows Defender mitigation for export
|
|
1405
|
-
- Merged PR #37: Fix NULL handling in statistics
|
|
1406
|
-
- Merged PR #38: Nix flake for declarative builds
|
|
1407
|
-
- Merged PR #40: MCP integration test fixes
|
|
1408
|
-
- Merged PR #45: Label and title filtering for bd list
|
|
1409
|
-
- Merged PR #46: Add --format flag to bd list
|
|
1410
|
-
- Merged PR #47: Error handling consistency
|
|
1411
|
-
- Merged PR #48: Cyclomatic complexity reduction
|
|
1412
|
-
|
|
1413
|
-
## [0.9.2] - 2025-10-14
|
|
1414
|
-
|
|
1415
|
-
### Added
|
|
1416
|
-
- **One-Command Dependency Creation**: `--deps` flag for `bd create` (#18)
|
|
1417
|
-
- Create issues with dependencies in a single command
|
|
1418
|
-
- Format: `--deps type:id` or just `--deps id` (defaults to blocks)
|
|
1419
|
-
- Multiple dependencies: `--deps discovered-from:bd-20,blocks:bd-15`
|
|
1420
|
-
- Whitespace-tolerant parsing
|
|
1421
|
-
- Particularly useful for AI agents creating discovered-from issues
|
|
1422
|
-
- **External Reference Tracking**: `external_ref` field for linking to external trackers
|
|
1423
|
-
- Link bd issues to GitHub, Jira, Linear, etc.
|
|
1424
|
-
- Example: `bd create "Issue" --external-ref gh-42`
|
|
1425
|
-
- `bd update` supports updating external references
|
|
1426
|
-
- Tracked in JSONL for git portability
|
|
1427
|
-
- **Metadata Storage**: Internal metadata table for system state
|
|
1428
|
-
- Stores import hash for idempotent auto-import
|
|
1429
|
-
- Enables future extensibility for system preferences
|
|
1430
|
-
- Auto-migrates existing databases
|
|
1431
|
-
- **Windows Support**: Complete Windows 11 build instructions (#10)
|
|
1432
|
-
- Tested with mingw-w64
|
|
1433
|
-
- Full CGo support documented
|
|
1434
|
-
- PATH setup instructions
|
|
1435
|
-
- **Go Extension Example**: Complete working example of database extensions (#15)
|
|
1436
|
-
- Demonstrates custom table creation
|
|
1437
|
-
- Shows cross-layer queries joining with issues
|
|
1438
|
-
- Includes test suite and documentation
|
|
1439
|
-
- **Issue Type Display**: `bd list` now shows issue type in output (#17)
|
|
1440
|
-
- Better visibility: `bd-1 [P1] [bug] open`
|
|
1441
|
-
- Helps distinguish bugs from features at a glance
|
|
1442
|
-
|
|
1443
|
-
### Fixed
|
|
1444
|
-
- **Critical**: Dependency tree deduplication for diamond dependencies (bd-85, #1)
|
|
1445
|
-
- Fixed infinite recursion in complex dependency graphs
|
|
1446
|
-
- Prevents duplicate nodes at same level
|
|
1447
|
-
- Handles multiple blockers correctly
|
|
1448
|
-
- **Critical**: Hash-based auto-import replaces mtime comparison (bd-84)
|
|
1449
|
-
- Git pull updates mtime but may not change content
|
|
1450
|
-
- Now uses SHA256 hash to detect actual changes
|
|
1451
|
-
- Prevents unnecessary imports after git operations
|
|
1452
|
-
- **Critical**: Parallel issue creation race condition (PR #8, bd-66)
|
|
1453
|
-
- Multiple processes could generate same ID
|
|
1454
|
-
- Replaced in-memory counter with atomic database counter
|
|
1455
|
-
- Syncs counters after import to prevent collisions
|
|
1456
|
-
- Comprehensive test coverage
|
|
1457
|
-
|
|
1458
|
-
### Changed
|
|
1459
|
-
- Auto-import now uses content hash instead of modification time
|
|
1460
|
-
- Dependency tree visualization improved for complex graphs
|
|
1461
|
-
- Better error messages for dependency operations
|
|
1462
|
-
|
|
1463
|
-
### Community
|
|
1464
|
-
- Merged PR #8: Parallel issue creation fix
|
|
1465
|
-
- Merged PR #10: Windows build instructions
|
|
1466
|
-
- Merged PR #12: Fix quickstart EXTENDING.md link
|
|
1467
|
-
- Merged PR #14: Better enable Go extensions
|
|
1468
|
-
- Merged PR #15: Complete Go extension example
|
|
1469
|
-
- Merged PR #17: Show issue type in list output
|
|
1470
|
-
|
|
1471
|
-
## [0.9.1] - 2025-10-14
|
|
1472
|
-
|
|
1473
|
-
### Added
|
|
1474
|
-
- **Incremental JSONL Export**: Major performance optimization
|
|
1475
|
-
- Dirty issue tracking system to only export changed issues
|
|
1476
|
-
- Auto-flush with 5-second debounce after CRUD operations
|
|
1477
|
-
- Automatic import when JSONL is newer than database
|
|
1478
|
-
- `--no-auto-flush` and `--no-auto-import` flags for manual control
|
|
1479
|
-
- Comprehensive test coverage for auto-flush/import
|
|
1480
|
-
- **ID Space Partitioning**: Explicit ID assignment for parallel workers
|
|
1481
|
-
- `bd create --id worker1-100` for controlling ID allocation
|
|
1482
|
-
- Enables multiple agents to work without conflicts
|
|
1483
|
-
- Documented in CLAUDE.md for agent workflows
|
|
1484
|
-
- **Auto-Migration System**: Seamless database schema upgrades
|
|
1485
|
-
- Automatically adds dirty_issues table to existing databases
|
|
1486
|
-
- Silent migration on first access after upgrade
|
|
1487
|
-
- No manual intervention required
|
|
1488
|
-
|
|
1489
|
-
### Fixed
|
|
1490
|
-
- **Critical**: Race condition in dirty tracking (TOCTOU bug)
|
|
1491
|
-
- Could cause data loss during concurrent operations
|
|
1492
|
-
- Fixed by tracking specific exported IDs instead of clearing all
|
|
1493
|
-
- **Critical**: Export with filters cleared all dirty issues
|
|
1494
|
-
- Status/priority filters would incorrectly mark non-matching issues as clean
|
|
1495
|
-
- Now only clears issues that were actually exported
|
|
1496
|
-
- **Bug**: Malformed ID detection never worked
|
|
1497
|
-
- SQLite CAST returns 0 for invalid strings, not NULL
|
|
1498
|
-
- Now correctly detects non-numeric ID suffixes like "bd-abc"
|
|
1499
|
-
- No false positives on legitimate zero-prefixed IDs
|
|
1500
|
-
- **Bug**: Inconsistent dependency dirty marking
|
|
1501
|
-
- Duplicated 20+ lines of code in AddDependency/RemoveDependency
|
|
1502
|
-
- Refactored to use shared markIssuesDirtyTx() helper
|
|
1503
|
-
- Fixed unchecked error in import.go when unmarshaling JSON
|
|
1504
|
-
- Fixed unchecked error returns in test cleanup code
|
|
1505
|
-
- Removed duplicate test code in dependencies_test.go
|
|
1506
|
-
- Fixed Go version in go.mod (was incorrectly set to 1.25.2)
|
|
1507
|
-
|
|
1508
|
-
### Changed
|
|
1509
|
-
- Export now tracks which specific issues were exported
|
|
1510
|
-
- ClearDirtyIssuesByID() added (ClearDirtyIssues() deprecated with race warning)
|
|
1511
|
-
- Dependency operations use shared dirty-marking helper (DRY)
|
|
1512
|
-
|
|
1513
|
-
### Performance
|
|
1514
|
-
- Incremental export: Only writes changed issues (vs full export)
|
|
1515
|
-
- Regex caching in ID replacement: 1.9x performance improvement
|
|
1516
|
-
- Automatic debounced flush prevents excessive I/O
|
|
1517
|
-
|
|
1518
|
-
## [0.9.0] - 2025-10-12
|
|
1519
|
-
|
|
1520
|
-
### Added
|
|
1521
|
-
- **Collision Resolution System**: Automatic ID remapping for import collisions
|
|
1522
|
-
- Reference scoring algorithm to minimize updates during remapping
|
|
1523
|
-
- Word-boundary regex matching to prevent false replacements
|
|
1524
|
-
- Automatic updating of text references and dependencies
|
|
1525
|
-
- `--resolve-collisions` flag for safe branch merging
|
|
1526
|
-
- `--dry-run` flag to preview collision detection
|
|
1527
|
-
- **Export/Import with JSONL**: Git-friendly text format
|
|
1528
|
-
- Dependencies embedded in JSONL for complete portability
|
|
1529
|
-
- Idempotent import (exact matches detected)
|
|
1530
|
-
- Collision detection (same ID, different content)
|
|
1531
|
-
- **Ready Work Algorithm**: Find issues with no open blockers
|
|
1532
|
-
- `bd ready` command shows unblocked work
|
|
1533
|
-
- `bd blocked` command shows what's waiting
|
|
1534
|
-
- **Dependency Management**: Four dependency types
|
|
1535
|
-
- `blocks`: Hard blocker (affects ready work)
|
|
1536
|
-
- `related`: Soft relationship
|
|
1537
|
-
- `parent-child`: Epic/subtask hierarchy
|
|
1538
|
-
- `discovered-from`: Track issues discovered during work
|
|
1539
|
-
- **Database Discovery**: Auto-find database in project hierarchy
|
|
1540
|
-
- Walks up directory tree like git
|
|
1541
|
-
- Supports `$BEADS_DB` environment variable
|
|
1542
|
-
- Falls back to `~/.beads/default.db`
|
|
1543
|
-
- **Comprehensive Documentation**:
|
|
1544
|
-
- README.md with 900+ lines of examples and FAQs
|
|
1545
|
-
- CLAUDE.md for AI agent integration patterns
|
|
1546
|
-
- SECURITY.md with security policy and best practices
|
|
1547
|
-
- TEXT_FORMATS.md analyzing JSONL approach
|
|
1548
|
-
- EXTENDING.md for database extension patterns
|
|
1549
|
-
- GIT_WORKFLOW.md for git integration
|
|
1550
|
-
- **Examples**: Real-world integration patterns
|
|
1551
|
-
- Python agent implementation
|
|
1552
|
-
- Bash agent script
|
|
1553
|
-
- Git hooks for automatic export/import
|
|
1554
|
-
- Branch merge workflow with collision resolution
|
|
1555
|
-
- Claude Desktop MCP integration (coming soon)
|
|
1556
|
-
|
|
1557
|
-
### Changed
|
|
1558
|
-
- Switched to JSONL as source of truth (from binary SQLite)
|
|
1559
|
-
- SQLite database now acts as ephemeral cache
|
|
1560
|
-
- Issue IDs generated with numerical max (not alphabetical)
|
|
1561
|
-
- Export sorts issues by ID for consistent git diffs
|
|
1562
|
-
|
|
1563
|
-
### Security
|
|
1564
|
-
- SQL injection protection via allowlisted field names
|
|
1565
|
-
- Input validation for all issue fields
|
|
1566
|
-
- File path validation for database operations
|
|
1567
|
-
- Warnings about not storing secrets in issues
|
|
1568
|
-
|
|
1569
|
-
## [0.1.0] - Initial Development
|
|
1570
|
-
|
|
1571
|
-
### Added
|
|
1572
|
-
- Core issue tracking (create, update, list, show, close)
|
|
1573
|
-
- SQLite storage backend
|
|
1574
|
-
- Dependency tracking with cycle detection
|
|
1575
|
-
- Label support
|
|
1576
|
-
- Event audit trail
|
|
1577
|
-
- Full-text search
|
|
1578
|
-
- Statistics and reporting
|
|
1579
|
-
- `bd init` for project initialization
|
|
1580
|
-
- `bd quickstart` interactive tutorial
|
|
1581
|
-
|
|
1582
|
-
---
|
|
1583
|
-
|
|
1584
|
-
## Version History
|
|
1585
|
-
|
|
1586
|
-
- **0.9.8** (2025-10-16): Daemon mode, git sync, compaction, critical bug fixes
|
|
1587
|
-
- **0.9.2** (2025-10-14): Community PRs, critical bug fixes, and --deps flag
|
|
1588
|
-
- **0.9.1** (2025-10-14): Performance optimization and critical bug fixes
|
|
1589
|
-
- **0.9.0** (2025-10-12): Pre-release polish and collision resolution
|
|
1590
|
-
- **0.1.0**: Initial development version
|
|
1591
|
-
|
|
1592
|
-
## Upgrade Guide
|
|
1593
|
-
|
|
1594
|
-
### Upgrading to 0.9.8
|
|
1595
|
-
|
|
1596
|
-
No breaking changes. All changes are backward compatible:
|
|
1597
|
-
- **bd daemon**: New optional background service for auto-sync workflows
|
|
1598
|
-
- **bd sync**: New optional git integration command
|
|
1599
|
-
- **bd compact**: New optional command for issue summarization (requires Anthropic API key)
|
|
1600
|
-
- **--format flag**: Optional new feature for `bd list`
|
|
1601
|
-
- **Label/title filters**: Optional new filters for `bd list`
|
|
1602
|
-
- **Bug fixes**: All critical fixes are transparent to users
|
|
1603
|
-
|
|
1604
|
-
Simply pull the latest version and rebuild:
|
|
1605
|
-
```bash
|
|
1606
|
-
go install github.com/steveyegge/beads/cmd/bd@latest
|
|
1607
|
-
# or
|
|
1608
|
-
git pull && go build -o bd ./cmd/bd
|
|
1609
|
-
```
|
|
1610
|
-
|
|
1611
|
-
**Note**: The `bd compact` command requires an Anthropic API key in `$ANTHROPIC_API_KEY` environment variable. All other features work without any additional setup.
|
|
1612
|
-
|
|
1613
|
-
### Upgrading to 0.9.2
|
|
1614
|
-
|
|
1615
|
-
No breaking changes. All changes are backward compatible:
|
|
1616
|
-
- **--deps flag**: Optional new feature for `bd create`
|
|
1617
|
-
- **external_ref**: Optional field, existing issues unaffected
|
|
1618
|
-
- **Metadata table**: Auto-migrates on first use
|
|
1619
|
-
- **Bug fixes**: All critical fixes are transparent to users
|
|
1620
|
-
|
|
1621
|
-
Simply pull the latest version and rebuild:
|
|
1622
|
-
```bash
|
|
1623
|
-
go install github.com/steveyegge/beads/cmd/bd@latest
|
|
1624
|
-
# or
|
|
1625
|
-
git pull && go build -o bd ./cmd/bd
|
|
1626
|
-
```
|
|
1627
|
-
|
|
1628
|
-
### Upgrading to 0.9.1
|
|
1629
|
-
|
|
1630
|
-
No breaking changes. All changes are backward compatible:
|
|
1631
|
-
- **Auto-migration**: The dirty_issues table is automatically added to existing databases
|
|
1632
|
-
- **Auto-flush/import**: Enabled by default, improves workflow (can disable with flags if needed)
|
|
1633
|
-
- **ID partitioning**: Optional feature, use `--id` flag only if needed for parallel workers
|
|
1634
|
-
|
|
1635
|
-
If you're upgrading from 0.9.0, simply pull the latest version. Your existing database will be automatically migrated on first use.
|
|
1636
|
-
|
|
1637
|
-
### Upgrading to 0.9.0
|
|
1638
|
-
|
|
1639
|
-
No breaking changes. The JSONL export format is backward compatible.
|
|
1640
|
-
|
|
1641
|
-
If you have issues in your database:
|
|
1642
|
-
1. Run `bd export -o .beads/issues.jsonl` to create the text file
|
|
1643
|
-
2. Commit `.beads/issues.jsonl` to git
|
|
1644
|
-
3. Add `.beads/*.db` to `.gitignore`
|
|
1645
|
-
|
|
1646
|
-
New collaborators can clone the repo and run:
|
|
1647
|
-
```bash
|
|
1648
|
-
bd import -i .beads/issues.jsonl
|
|
1649
|
-
```
|
|
1650
|
-
|
|
1651
|
-
The SQLite database will be automatically populated from the JSONL file.
|
|
1652
|
-
|
|
1653
|
-
## Future Releases
|
|
1654
|
-
|
|
1655
|
-
See open issues tagged with milestone markers for planned features in upcoming releases.
|
|
1656
|
-
|
|
1657
|
-
For version 1.0, see: `bd dep tree bd-8` (the 1.0 milestone epic)
|