beads_rust 0.2.13

Agent-first issue tracker (SQLite + JSONL)
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
# Changelog

All notable changes to **br** (beads\_rust) -- a local-first, non-invasive git issue tracker built in Rust.

Project inception: 2026-01-15. Repository: <https://github.com/Dicklesworthstone/beads_rust>.

This changelog is organized by capability rather than diff order. Each version section groups changes into what they mean for users, not how they fell out of the commit graph. Commit links are live and point to the canonical GitHub URL.

**Notation**

- **Release** = published GitHub Release with pre-built binaries attached.
- **Tag** = git tag only (no binaries; used for rapid stabilization cuts during CI iteration).
- Commit links: `https://github.com/Dicklesworthstone/beads_rust/commit/<HASH>`
- Release links: `https://github.com/Dicklesworthstone/beads_rust/releases/tag/<TAG>`

---

## v0.2.11 -- 2026-05-21 (Release)

This version stops the ephemeral "in-memory" storage path from leaking
temporary database files into `TMPDIR`.

### Fixes

- `SqliteStorage::open_memory()` is backed by a real temp file
  (`beads_mem_<pid>_<count>.db`) rather than `:memory:`, because FrankenSQLite
  requires real file paths for WAL and schema operations. That file -- and any
  `-wal`/`-shm`/`-journal` sidecars SQLite created next to it -- was never
  cleaned up, so JSONL-only / in-memory paths (`br sync --import-only`, `br
  ready --no-db`, `br list --no-db`, and similar) left stale `beads_mem_*`
  files in the user temp directory on every invocation. Under high-frequency
  agent/CI use these accumulated into real disk pressure
  ([#299](https://github.com/Dicklesworthstone/beads_rust/issues/299)).
- The storage layer now tracks the ephemeral temp path and removes the base
  file plus all sidecars on `Drop` (including the signal-induced shutdown
  path), and also cleans up if construction fails partway through. Persistent
  databases are never touched.

### Validation

- Reproduced the issue's exact scenario against a release build and confirmed
  zero `beads_mem_*` files remain in `TMPDIR` after each command exits.
- Added regression tests asserting the temp file exists while the storage is
  open and is gone (with sidecars) after drop.

## v0.2.10 -- 2026-05-14 (Release)

This version supersedes `v0.2.9` by fixing the remaining Windows release-build
portability issue in the doctor subsystem and tightening installer integrity
failure handling.

### Release Fixes

- Kept the `mimalloc` Windows exclusion from `v0.2.9`, which removed the
  MinGW `libmimalloc-sys` C build failure.
- Gated POSIX-only doctor permission checks behind Unix `cfg`s and added
  conservative non-Unix handling for repair backups, chmod-style operations,
  symlink creation, and undo artifact permissions so the Windows release target
  compiles again.
- Re-cut the release after `v0.2.9` had already been published to crates.io,
  because crates.io package versions are immutable and the Windows doctor
  portability fix changes the release source.
- Installer checksum mismatches now fail closed instead of falling back to a
  source build after artifact verification fails; the regression test now uses
  a local file URL so release-preparation runs do not block on network fallback
  behavior.
- Package-manager manifest templates now track the DSR-published
  `br-<version>-<platform>` archive names and current `v0.2.10` checksums, so
  future manifest automation does not keep looking for stale `br-v...` assets.
- The installer and release workflow now keep the tag name (`vX.Y.Z`) separate
  from package asset names (`br-X.Y.Z-...`), preventing future binary installs
  and manifest updates from disagreeing about release artifact URLs.

### Validation

- `v0.2.10` validation includes the dependency-update checks from `v0.2.8`, the
  allocator fix from `v0.2.9`, and a focused
  `cargo check --target x86_64-pc-windows-gnu --release` pass covering the
  Windows doctor portability fix.
- Post-release fresh-eyes validation also checked the Homebrew/Scoop/AUR
  manifest templates against the published DSR assets.
- Follow-up validation traced the same asset naming rule through `install.sh`,
  `br upgrade`, and the release workflow fragment harness.

## v0.2.9 -- 2026-05-14 (Crates.io, superseded)

This version superseded `v0.2.8` by removing the dependency-level Windows
allocator failure after the dependency refresh, but was itself superseded by
`v0.2.10` for a separate doctor portability fix.

### Release Fixes

- Kept `mimalloc` enabled for Linux and macOS builds, but removed it from
  Windows builds so the MinGW release target no longer fails inside
  `libmimalloc-sys`' bundled C build.
- Re-cut the release after `v0.2.8` had already been published to crates.io,
  because crates.io package versions are immutable and the Windows build fix
  changes the release source.

### Validation

- `v0.2.9` validation includes the same dependency-update checks as `v0.2.8`,
  plus a Windows release-build retry proving the MinGW allocator failure was
  replaced by a separate doctor portability issue.

## v0.2.8 -- 2026-05-14 (Crates.io, superseded)

This version refreshes the dependency stack, including the local `/dp` FastMCP and frankensqlite libraries now published on crates.io, and tightens storage reliability around the updated SQLite engine.

### Dependency Updates

- Updated the fsqlite stack used by storage and sync paths to the latest published local versions: `fsqlite*` `0.1.3` and `fsqlite-vfs` `0.1.4`.
- Confirmed the direct dependency set is otherwise current with `cargo outdated --root-deps-only`.
- Updated `fastmcp-rust` and its FastMCP crate family to `0.3.1`.

### Reliability

- Kept explicit `--lock-timeout` reads on the conservative storage-open path, so users asking for lock-aware behavior do not accidentally route through the read-only fast-open bypass.
- Reduced noisy expected fsqlite diagnostics during transient WAL tail-read fallback while preserving warnings for unexpected blocked-cache failures.
- Tightened concurrency and doctor chokepoint tests around the updated storage behavior.

### Validation

- Passed `cargo check --all-targets --all-features`.
- Passed `cargo clippy --all-targets --all-features -- -D warnings`.
- Passed `cargo fmt --check` and `git diff --check`.
- Passed `cargo test --all-features --no-fail-fast`, including doctests.
- Passed `cargo publish --dry-run --locked --allow-dirty` for `beads_rust v0.2.8`.

## [v0.1.33](https://github.com/Dicklesworthstone/beads_rust/releases/tag/v0.1.33) -- 2026-03-23 (Release)

This release supersedes the partial `v0.1.32` fallback build by fixing release automation so `dsr` can produce installer-compatible assets deterministically.

### Release and CI

- **Rust cache pinning** was updated across all GitHub workflows to the current signed `Swatinem/rust-cache` v2.9.1 commit after the prior pinned SHA stopped resolving and broke fallback builds.
- **Release builds now fail closed on missing artifacts**: Linux ARM64 and Windows AMD64 are treated as required release outputs instead of being silently omitted from a published release.
- **Cross-platform fallback coverage improved** by moving Linux ARM64 and Windows AMD64 fallback builds onto Linux-based cross-compilation paths, reducing dependence on specialized remote runners for those targets.

### Testing

- **Single-issue graph rendering** now preserves DFS subtree order in plain output so dependents render contiguously instead of visually nesting under later siblings.
- **List output regression coverage** now reflects the actual plain-output behavior for unknown custom statuses, keeping release validation aligned with user-visible CLI output.

## [v0.1.32](https://github.com/Dicklesworthstone/beads_rust/releases/tag/v0.1.32) -- 2026-03-23 (Release)

This release extends cross-project routing coverage, hardens storage for frankensqlite compatibility, and tightens the release pipeline around version and installer correctness.

### Cross-Project Routing

- **Route-aware dependency operations** now auto-flush correctly and enforce cross-project guards when adding or removing dependencies ([`4682499`](https://github.com/Dicklesworthstone/beads_rust/commit/4682499)).
- **Graph, delete, audit log, and lint** now respect external workspace routing instead of assuming the main project database only ([`5a983bc`](https://github.com/Dicklesworthstone/beads_rust/commit/5a983bc), [`d63f56c`](https://github.com/Dicklesworthstone/beads_rust/commit/d63f56c), [`4f232bb`](https://github.com/Dicklesworthstone/beads_rust/commit/4f232bb), [`d231bce`](https://github.com/Dicklesworthstone/beads_rust/commit/d231bce), [`d4df28f`](https://github.com/Dicklesworthstone/beads_rust/commit/d4df28f)).
- **Auto-import propagation** now reaches all routing callsites, fixing path normalization and reducing stale cross-workspace reads ([`506b6cf`](https://github.com/Dicklesworthstone/beads_rust/commit/506b6cf), [`911b793`](https://github.com/Dicklesworthstone/beads_rust/commit/911b793)).

### Storage and Config Hardening

- **Prefix normalization** is now integrated through config, storage, and ID handling so runtime issue prefix mismatches resolve consistently ([`bdc0243`](https://github.com/Dicklesworthstone/beads_rust/commit/bdc0243), [`0575380`](https://github.com/Dicklesworthstone/beads_rust/commit/0575380)).
- **Normalized prefixes** now drop trailing separator characters before ID generation, preventing malformed runtime prefixes from producing awkward double-separator IDs.
- **Frankensqlite compatibility** improved again: batched `DELETE` and other remaining batched `IN`-clause operations were replaced with row-by-row queries to avoid engine-specific breakage ([`ba71494`](https://github.com/Dicklesworthstone/beads_rust/commit/ba71494), [`b9a0f25`](https://github.com/Dicklesworthstone/beads_rust/commit/b9a0f25), [`45b2a4e`](https://github.com/Dicklesworthstone/beads_rust/commit/45b2a4e)).
- **Tombstone state handling** now keeps `closed_at` separate from `deleted_at`, records delete metadata when creating or importing tombstoned issues, and clears delete fields when an issue leaves tombstone state.
- **Doctor** now gives better guidance around root `.gitignore` conflicts and partial-index repair behavior ([`44d47e6`](https://github.com/Dicklesworthstone/beads_rust/commit/44d47e6), [`e6ef576`](https://github.com/Dicklesworthstone/beads_rust/commit/e6ef576)).
- **Agents command** handling is more robust for marker-block parsing, project-scoped search, and JSON output on mutating operations ([`1cf1aa9`](https://github.com/Dicklesworthstone/beads_rust/commit/1cf1aa9)).

### Release and CI

- **Release verification** now asserts that the built binary version exactly matches the release tag, closing a class of silent mis-versioning failures ([`3315bf5`](https://github.com/Dicklesworthstone/beads_rust/commit/3315bf5), [`b2a9ef5`](https://github.com/Dicklesworthstone/beads_rust/commit/b2a9ef5)).
- Packaging metadata and cache pinning were refreshed for release automation, and the Intel macOS build moved to the correct runner label ([`e137852`](https://github.com/Dicklesworthstone/beads_rust/commit/e137852), [`9f9f183`](https://github.com/Dicklesworthstone/beads_rust/commit/9f9f183)).

### Testing

- Added fresh regression coverage around blocked-cache close behavior, fresh-db behavior, custom status snapshots, lint routing, and the CI fixes required to keep those suites green ([`9869aca`](https://github.com/Dicklesworthstone/beads_rust/commit/9869aca), [`86f9c98`](https://github.com/Dicklesworthstone/beads_rust/commit/86f9c98), [`b657c0e`](https://github.com/Dicklesworthstone/beads_rust/commit/b657c0e), [`a1e893e`](https://github.com/Dicklesworthstone/beads_rust/commit/a1e893e), [`4cec0bb`](https://github.com/Dicklesworthstone/beads_rust/commit/4cec0bb), [`fe2ae0a`](https://github.com/Dicklesworthstone/beads_rust/commit/fe2ae0a)).

## [v0.1.31](https://github.com/Dicklesworthstone/beads_rust/releases/tag/v0.1.31) -- 2026-03-21 (Release)

Focused hardening for concurrent agent workflows, plus a release-process cleanup pass.

### Storage and Reliability

- **Atomic config writes** using PID-scoped temp files to prevent partial-write corruption ([`e3a00e3`](https://github.com/Dicklesworthstone/beads_rust/commit/e3a00e3)).
- **Graceful missing-dependency fallback** in storage and graph code paths -- dangling dep references no longer crash ([`617572f`](https://github.com/Dicklesworthstone/beads_rust/commit/617572f), [`a1b63dd`](https://github.com/Dicklesworthstone/beads_rust/commit/a1b63dd)).
- **Blocked-cache hardening**: single-row inserts, deferred invalidation, INSERT OR REPLACE semantics, graceful read fallbacks ([`ad27f47`](https://github.com/Dicklesworthstone/beads_rust/commit/ad27f47), [`acedf9d`](https://github.com/Dicklesworthstone/beads_rust/commit/acedf9d), [`f687166`](https://github.com/Dicklesworthstone/beads_rust/commit/f687166)).
- **Lazy config loading** and reduced sync lock contention, with checkpoint-on-close opt-out ([`a690d58`](https://github.com/Dicklesworthstone/beads_rust/commit/a690d58)).
- **Ready-query/storage fast path**: column-projected ready queries, compare-and-set claims, and JSONL size witnesses improve concurrency correctness and reduce unnecessary work ([`9550859`](https://github.com/Dicklesworthstone/beads_rust/commit/9550859)).
- Switch test storage from `:memory:` to temp files for better parity with production ([`5e8f91c`](https://github.com/Dicklesworthstone/beads_rust/commit/5e8f91c)).

### Sync and Concurrency

- **Best-effort JSONL witness refresh**: opportunistic startup witness backfills no longer fail freshness probes when the JSONL file races away mid-refresh.
- **Auto-import SyncConflict downgraded to warning** for concurrent multi-agent writes ([`4bc6681`](https://github.com/Dicklesworthstone/beads_rust/commit/4bc6681)).
- Centralized ID resolution into `resolve_issue_id(s)` helpers across all commands ([`94c9138`](https://github.com/Dicklesworthstone/beads_rust/commit/94c9138)).
- Redundant index removal, simplified event inserts, added dependency thread index ([`311225e`](https://github.com/Dicklesworthstone/beads_rust/commit/311225e)).

### Diagnostics

- **Doctor** now warns when root `.gitignore` hides `.beads/.gitignore` ([`5f1da48`](https://github.com/Dicklesworthstone/beads_rust/commit/5f1da48)).
- LazyLock regex in agents command, defer-first blocked-cache invalidation ([`87e0fe6`](https://github.com/Dicklesworthstone/beads_rust/commit/87e0fe6)).

### Testing

- Concurrent close/update/reopen blocked-cache integrity stress test ([`30d95b4`](https://github.com/Dicklesworthstone/beads_rust/commit/30d95b4)).
- Replace `DirGuard` with explicit db path overrides and extract JSON array test helper ([`95deac1`](https://github.com/Dicklesworthstone/beads_rust/commit/95deac1)).

### Documentation

- Rebuilt `CHANGELOG.md` from git history with live commit links ([`53fef3a`](https://github.com/Dicklesworthstone/beads_rust/commit/53fef3a)).

### CI

- Renamed release body file to `RELEASE_NOTES.md` ([`9689bd2`](https://github.com/Dicklesworthstone/beads_rust/commit/9689bd2)).

---

## [v0.1.30](https://github.com/Dicklesworthstone/beads_rust/releases/tag/v0.1.30) -- 2026-03-20 (Release)

A wide capability expansion: richer stats, paginated list JSON, deferred blocked-cache, MCP refinements, and mixed-prefix support.

### New Capabilities

- **Mixed issue ID prefixes**: projects can contain issues from multiple prefix namespaces; prefix enforcement is deferred to an explicit `--rename-prefix` flag ([`d012e19`](https://github.com/Dicklesworthstone/beads_rust/commit/d012e19)).
- **Paginated JSON envelope** for `list` output (`{issues, total, limit, offset, has_more}`) with updated jq documentation ([`580d281`](https://github.com/Dicklesworthstone/beads_rust/commit/580d281), [`3b46f33`](https://github.com/Dicklesworthstone/beads_rust/commit/3b46f33)).
- **Deferred blocked-cache refresh** for dependency mutations to reduce DB lock contention under concurrent writes ([`45232f6`](https://github.com/Dicklesworthstone/beads_rust/commit/45232f6)).
- **Batched mutation commands** with stale-cache pre-marking and routing test coverage ([`cdd9cb4`](https://github.com/Dicklesworthstone/beads_rust/commit/cdd9cb4)).
- **Expanded stats command** with many additional aggregate metrics, formatting improvements, and storage query expansions ([`ac4ff74`](https://github.com/Dicklesworthstone/beads_rust/commit/ac4ff74), [`4703dff`](https://github.com/Dicklesworthstone/beads_rust/commit/4703dff), [`b634768`](https://github.com/Dicklesworthstone/beads_rust/commit/b634768)).
- **Expanded blocked/count/stale/epic/lint commands** with richer output, storage query methods, and E2E test suites ([`0987d6e`](https://github.com/Dicklesworthstone/beads_rust/commit/0987d6e), [`3126725`](https://github.com/Dicklesworthstone/beads_rust/commit/3126725), [`c4f861c`](https://github.com/Dicklesworthstone/beads_rust/commit/c4f861c), [`0333b98`](https://github.com/Dicklesworthstone/beads_rust/commit/0333b98)).
- **Close command** expanded with additional status transitions and simplified label handling ([`0f4f094`](https://github.com/Dicklesworthstone/beads_rust/commit/0f4f094)).
- **Batched blocked-cache refresh** with stale-marking fallback and update command error resilience ([`afa8d06`](https://github.com/Dicklesworthstone/beads_rust/commit/afa8d06)).

### Bug Fixes

- Correct `list` offset after client-side filtering for correct pagination ([`36a5ff8`](https://github.com/Dicklesworthstone/beads_rust/commit/36a5ff8)).
- Resolve concurrent DB corruption false positives in doctor ([`3a1feef`](https://github.com/Dicklesworthstone/beads_rust/commit/3a1feef)).
- Fix `show --json` jq accessor to use array index ([`0d0fc38`](https://github.com/Dicklesworthstone/beads_rust/commit/0d0fc38)).
- Only add `unalias br` when an actual alias definition exists ([`0b7b070`](https://github.com/Dicklesworthstone/beads_rust/commit/0b7b070)).

### Documentation

- Implement community PRs #73, #163, #166: body alias confirmed, RUST_LOG=error docs, broken link fixed ([`144070e`](https://github.com/Dicklesworthstone/beads_rust/commit/144070e)).

### CI

- Clone asupersync in all workflows (path dependency of fsqlite-core) ([`ce2ebe4`](https://github.com/Dicklesworthstone/beads_rust/commit/ce2ebe4)).

---

## [v0.1.29](https://github.com/Dicklesworthstone/beads_rust/releases/tag/v0.1.29) -- 2026-03-18 (Release)

Headlined by a major performance upgrade and the introduction of MCP server support.

### Performance

- **Frankensqlite upgraded to v0.1.1** delivering approximately 100x write performance improvement ([`39f3e0e`](https://github.com/Dicklesworthstone/beads_rust/commit/39f3e0e)).

### New Capabilities

- **MCP server** (`br serve`): optional Model Context Protocol server for direct AI agent integration, with hardened tool validation and prompt quality ([`2195144`](https://github.com/Dicklesworthstone/beads_rust/commit/2195144), [`8f35a53`](https://github.com/Dicklesworthstone/beads_rust/commit/8f35a53), [`7a1c17a`](https://github.com/Dicklesworthstone/beads_rust/commit/7a1c17a)).
- **TOON output format** added to graph command ([`02c3bde`](https://github.com/Dicklesworthstone/beads_rust/commit/02c3bde)).
- **Closed-at consistency** enforced in issue validation ([`0e805c4`](https://github.com/Dicklesworthstone/beads_rust/commit/0e805c4)).
- **Updated-before/updated-after filters** for `search_issues` ([`f327da2`](https://github.com/Dicklesworthstone/beads_rust/commit/f327da2)).
- **Default prefix changed** from `bd` to `br` ([`e6e7dcb`](https://github.com/Dicklesworthstone/beads_rust/commit/e6e7dcb)).
- **Delete --hard** now properly purges issues from JSONL ([`e6e7dcb`](https://github.com/Dicklesworthstone/beads_rust/commit/e6e7dcb)).

### Bug Fixes

- Fix hyphenated issue ID prefix parsing via `split_prefix_remainder` ([`8fa3edf`](https://github.com/Dicklesworthstone/beads_rust/commit/8fa3edf)).
- Suppress human output for sync subcommands under `--quiet` ([`3c7961e`](https://github.com/Dicklesworthstone/beads_rust/commit/3c7961e)).
- Orphans command now manages its own JSONL freshness via allow-stale plumbing ([`6c7fb5d`](https://github.com/Dicklesworthstone/beads_rust/commit/6c7fb5d)).
- Propagate subcommand `--robot` flag through OutputContext ([`3cb1741`](https://github.com/Dicklesworthstone/beads_rust/commit/3cb1741)).
- Atomic config writes, empty-comment validation, MCP ID-check ordering ([`1796519`](https://github.com/Dicklesworthstone/beads_rust/commit/1796519)).
- Unicode-width-aware truncation in `dep tree` ([`72b8560`](https://github.com/Dicklesworthstone/beads_rust/commit/72b8560)).
- Exclude deferred issues from `--overdue` listing ([`d4cff76`](https://github.com/Dicklesworthstone/beads_rust/commit/d4cff76)).
- Exclude `in_progress` issues from ready work queue ([`f226f66`](https://github.com/Dicklesworthstone/beads_rust/commit/f226f66)).
- Auto-register ParentChild dependency during import when parent is resolved ([`1290385`](https://github.com/Dicklesworthstone/beads_rust/commit/1290385)).
- Show full transitive cascade closure in delete dry-run preview ([`94c3486`](https://github.com/Dicklesworthstone/beads_rust/commit/94c3486)).

### Security

- **CSV formula injection mitigation** and log permission error handling ([`ab5356d`](https://github.com/Dicklesworthstone/beads_rust/commit/ab5356d)).
- Whitelist table/column pairs in `has_missing_issue_reference` ([`014e676`](https://github.com/Dicklesworthstone/beads_rust/commit/014e676)).

### Storage Hardening

- Harden schema and query paths for fsqlite compatibility ([`47fa201`](https://github.com/Dicklesworthstone/beads_rust/commit/47fa201)).
- Doctor: use `typeof()` instead of `IS NULL` for NULL detection ([`841c49b`](https://github.com/Dicklesworthstone/beads_rust/commit/841c49b)).
- Replace local path deps with git URLs in `[patch.crates-io]` ([`988d5c7`](https://github.com/Dicklesworthstone/beads_rust/commit/988d5c7)).
- Fix schema default, `_beads` support, init env vars ([`758f895`](https://github.com/Dicklesworthstone/beads_rust/commit/758f895)).
- Server-side unassigned filter in MCP instead of post-filtering ([`87cfaa4`](https://github.com/Dicklesworthstone/beads_rust/commit/87cfaa4)).
- Force-flush fix applied to CLI export path ([`6501dff`](https://github.com/Dicklesworthstone/beads_rust/commit/6501dff)).

### Refactoring

- OrphanRenderMode enum replaces ad-hoc if-else output chain ([`f00a2be`](https://github.com/Dicklesworthstone/beads_rust/commit/f00a2be)).
- Remove redundant dependencies fallback for blockers in close ([`847c045`](https://github.com/Dicklesworthstone/beads_rust/commit/847c045)).
- Comprehensive rustfmt and clippy passes across CLI, MCP, storage, config, and format modules ([`36dcf1d`](https://github.com/Dicklesworthstone/beads_rust/commit/36dcf1d), [`aaf383d`](https://github.com/Dicklesworthstone/beads_rust/commit/aaf383d), [`d0ca56f`](https://github.com/Dicklesworthstone/beads_rust/commit/d0ca56f)).

---

## [v0.1.28](https://github.com/Dicklesworthstone/beads_rust/releases/tag/v0.1.28) -- 2026-03-13 (Release)

A stabilization release after v0.1.27's large feature landing. Cleaned up stale test artifacts.

- Remove stale `.rebuild-failed` recovery artifacts from test fixtures ([`cd546f9`](https://github.com/Dicklesworthstone/beads_rust/commit/cd546f9)).

---

## [v0.1.27](https://github.com/Dicklesworthstone/beads_rust/releases/tag/v0.1.27) -- 2026-03-12 (Release)

Major architecture release: cross-project routing, TOON output everywhere, quiet mode, workspace failure resilience, and database snapshot infrastructure.

### Cross-Project Routing

- **Issue routing** with batched dispatch -- commands can now operate on issues in other workspaces via redirect configuration ([`be49fef`](https://github.com/Dicklesworthstone/beads_rust/commit/be49fef), [`9b43240`](https://github.com/Dicklesworthstone/beads_rust/commit/9b43240)).
- Routing extended to all mutation commands ([`9b43240`](https://github.com/Dicklesworthstone/beads_rust/commit/9b43240)).

### TOON Output Format

- TOON (Token-Optimized Object Notation) output support added to audit, lint, version, count, epic, stale, history, orphans, and query commands ([`9565af0`](https://github.com/Dicklesworthstone/beads_rust/commit/9565af0), [`6a1618c`](https://github.com/Dicklesworthstone/beads_rust/commit/6a1618c)).
- Complete quiet mode support across all commands ([`9b43240`](https://github.com/Dicklesworthstone/beads_rust/commit/9b43240)).

### Database Resilience

- **Database family snapshot infrastructure** with sidecar quarantine and JSONL safety model ([`e430d4c`](https://github.com/Dicklesworthstone/beads_rust/commit/e430d4c)).
- **Automatic database recovery** during issue mutation commands ([`21a1031`](https://github.com/Dicklesworthstone/beads_rust/commit/21a1031)).
- `probe_issue_mutation_write_path()` diagnostic helper distinguishes corruption from application errors ([`ca701a7`](https://github.com/Dicklesworthstone/beads_rust/commit/ca701a7)).
- Generalized JSONL recovery across all mutation commands with expanded doctor diagnostics ([`1e163ed`](https://github.com/Dicklesworthstone/beads_rust/commit/1e163ed)).
- Deferred blocked-cache refresh with stale-marker protocol ([`674b9bd`](https://github.com/Dicklesworthstone/beads_rust/commit/674b9bd)).

### Storage Engine

- **Incremental blocked-cache updates** with bulk cycle-check adjacency loading ([`d3d3e64`](https://github.com/Dicklesworthstone/beads_rust/commit/d3d3e64)).
- Blocked cache rewritten as atomic DELETE+INSERT with ForeignKeyGuard RAII ([`0a9609e`](https://github.com/Dicklesworthstone/beads_rust/commit/0a9609e)).
- `mutate()` rewritten to delegate to `with_write_transaction` ([`0320d07`](https://github.com/Dicklesworthstone/beads_rust/commit/0320d07)).
- Consolidated `resolve_issue_id`, hardened ID parsing, fixed blocked cache and transaction API ([`9c02816`](https://github.com/Dicklesworthstone/beads_rust/commit/9c02816)).
- Multi-issue update validation, FK handling refactor, improved test isolation ([`a63769f`](https://github.com/Dicklesworthstone/beads_rust/commit/a63769f)).

### Sync

- Deterministic export ordering, streaming git log, simplified import FK handling ([`6e7ea09`](https://github.com/Dicklesworthstone/beads_rust/commit/6e7ea09)).
- Cycle detection switched to lazy per-node BFS, fixed duplicate event recording ([`f2e20d4`](https://github.com/Dicklesworthstone/beads_rust/commit/f2e20d4)).
- Symlink/gitdir invariant bypass prevented via early canonicalization ([`3a878c2`](https://github.com/Dicklesworthstone/beads_rust/commit/3a878c2)).
- Dirty-issue marking optimized with INSERT OR REPLACE, intra-JSONL collision detection fixed ([`ebf0783`](https://github.com/Dicklesworthstone/beads_rust/commit/ebf0783)).

### Import

- Markdown file import now supports `--parent` and `--dry-run` ([`c1b8541`](https://github.com/Dicklesworthstone/beads_rust/commit/c1b8541)).

### Testing

- Workspace failure replay tests and evolution plan framework ([`046c311`](https://github.com/Dicklesworthstone/beads_rust/commit/046c311)).
- Expanded concurrency E2E coverage with interleaved command families ([`66ee59e`](https://github.com/Dicklesworthstone/beads_rust/commit/66ee59e)).
- Git commit detection improvements in dataset registry ([`1910db4`](https://github.com/Dicklesworthstone/beads_rust/commit/1910db4)).

### CI

- Frankensqlite checkout switched from actions/checkout to git clone ([`5b35a80`](https://github.com/Dicklesworthstone/beads_rust/commit/5b35a80)).

---

## [v0.1.26](https://github.com/Dicklesworthstone/beads_rust/releases/tag/v0.1.26) -- 2026-03-11 (Release)

### Cross-Project Routing (First Landing)

- **Cross-project issue routing** with batched dispatch for show, blocked, ready, and stats commands ([`be49fef`](https://github.com/Dicklesworthstone/beads_rust/commit/be49fef), [`7391be3`](https://github.com/Dicklesworthstone/beads_rust/commit/7391be3)).

### Bug Fixes

- Re-read JSONL before flush in no-db mode to prevent clobbering concurrent writes ([`968d2e0`](https://github.com/Dicklesworthstone/beads_rust/commit/968d2e0)).
- Improve archive-tar error message and expand init `.gitignore` ([`22366ea`](https://github.com/Dicklesworthstone/beads_rust/commit/22366ea)).
- Minor cleanups across close, comments, defer, delete, dep, epic, label, q, reopen ([`dc62fff`](https://github.com/Dicklesworthstone/beads_rust/commit/dc62fff)).

---

## [v0.1.25](https://github.com/Dicklesworthstone/beads_rust/releases/tag/v0.1.25) -- 2026-03-11 (Release)

A dense release with deep improvements across nearly every subsystem.

### New Capabilities

- **`sync_equals()` implementation** for semantic 3-way merge comparison replacing timestamp/content-hash heuristics ([`caace45`](https://github.com/Dicklesworthstone/beads_rust/commit/caace45), [`a05462d`](https://github.com/Dicklesworthstone/beads_rust/commit/a05462d)).
- **Bidirectional dep traversal** and improved cycle detection ([`004bab8`](https://github.com/Dicklesworthstone/beads_rust/commit/004bab8)).
- **SyncConflict error** to prevent silent data loss on auto-import ([`1017b00`](https://github.com/Dicklesworthstone/beads_rust/commit/1017b00)).
- **Assignee defaults** and stats overhaul with richer output ([`47c0c89`](https://github.com/Dicklesworthstone/beads_rust/commit/47c0c89)).
- **Long/pretty output modes** with box-drawing tree connectors ([`a81fa2b`](https://github.com/Dicklesworthstone/beads_rust/commit/a81fa2b)).
- **Today/yesterday time keywords**, DST-safe helpers, and multiline markdown import ([`7e0d26d`](https://github.com/Dicklesworthstone/beads_rust/commit/7e0d26d)).
- **Exclude `in_progress` issues** from ready output ([`2a409df`](https://github.com/Dicklesworthstone/beads_rust/commit/2a409df)).
- **ID resolution refactoring**, search regex optimization, update/audit improvements ([`4fe1e6a`](https://github.com/Dicklesworthstone/beads_rust/commit/4fe1e6a)).
- **Create command enhancements** and merge bug test improvements ([`5cc9d1f`](https://github.com/Dicklesworthstone/beads_rust/commit/5cc9d1f)).
- Track sync created/updated counts separately, fix comment collision safety ([`6c92895`](https://github.com/Dicklesworthstone/beads_rust/commit/6c92895)).

### Performance

- **Streaming hash update** replaces allocating null-byte substitution ([`7bdedbc`](https://github.com/Dicklesworthstone/beads_rust/commit/7bdedbc)).
- **`to_writer` with reusable buffer** for JSONL serialization ([`8d3c9bf`](https://github.com/Dicklesworthstone/beads_rust/commit/8d3c9bf)).
- **Fast-path SQL limit push-down** when no external dependencies exist ([`9d3473d`](https://github.com/Dicklesworthstone/beads_rust/commit/9d3473d)).
- Move blocked-by computation to Rust, reduce allocations ([`8a5522f`](https://github.com/Dicklesworthstone/beads_rust/commit/8a5522f)).
- Eliminate write contention from read-only CLI commands ([`33335b3`](https://github.com/Dicklesworthstone/beads_rust/commit/33335b3)).
- Named chunk constants, bulk dirty-id inserts, sync import pipeline hardening ([`c059e07`](https://github.com/Dicklesworthstone/beads_rust/commit/c059e07)).

### Storage

- **External-ref uniqueness enforcement** and atomic blocked-cache migration ([`fc656d9`](https://github.com/Dicklesworthstone/beads_rust/commit/fc656d9)).
- Push label filtering into SQL, add timestamp-safe dirty clearing, harden JSONL reader ([`0b88b36`](https://github.com/Dicklesworthstone/beads_rust/commit/0b88b36)).
- Schema v3 migration for NOT NULL filter columns and transient retry in config/metadata writes ([`092fdc2`](https://github.com/Dicklesworthstone/beads_rust/commit/092fdc2)).
- Phased startup lifecycle, child counters, ID collision retry, and storage hardening ([`eb3d0c0`](https://github.com/Dicklesworthstone/beads_rust/commit/eb3d0c0)).
- Enforce tombstone validation and remove dead helpers ([`53df4d4`](https://github.com/Dicklesworthstone/beads_rust/commit/53df4d4)).

### Bug Fixes

- Parse typed YAML values instead of storing everything as strings ([`d393bee`](https://github.com/Dicklesworthstone/beads_rust/commit/d393bee)).
- Handle empty labels array as "(no labels)" in group counts ([`fbe2003`](https://github.com/Dicklesworthstone/beads_rust/commit/fbe2003)).
- Treat Closed-to-Tombstone transition as update, not reopen ([`984f480`](https://github.com/Dicklesworthstone/beads_rust/commit/984f480)).
- Resolve assignee/unassigned mutual exclusion in saved filter merging ([`30d33f1`](https://github.com/Dicklesworthstone/beads_rust/commit/30d33f1)).
- Enforce ID length limit on base hash only, not full hierarchical ID ([`cbacff8`](https://github.com/Dicklesworthstone/beads_rust/commit/cbacff8)).
- Tighten markdown list prefix detection and skip marker-only tokens ([`e384e08`](https://github.com/Dicklesworthstone/beads_rust/commit/e384e08)).
- Preserve blank lines in implicit descriptions and trim dependency whitespace ([`ce42b14`](https://github.com/Dicklesworthstone/beads_rust/commit/ce42b14)).
- DST-safe time parsing fixes ([`fa1fdf8`](https://github.com/Dicklesworthstone/beads_rust/commit/fa1fdf8)).
- Deduplicate parent-child dependencies and harden `get_parent_id` ([`18cfeca`](https://github.com/Dicklesworthstone/beads_rust/commit/18cfeca)).
- Default `RUST_LOG` to `error` for quiet operation ([`94b4347`](https://github.com/Dicklesworthstone/beads_rust/commit/94b4347)).
- Pipe-safety wrap for `curl|bash` truncation edge case in installer ([`bb24002`](https://github.com/Dicklesworthstone/beads_rust/commit/bb24002)).

---

## [v0.1.24](https://github.com/Dicklesworthstone/beads_rust/releases/tag/v0.1.24) -- 2026-03-08 (Release)

### New Capabilities

- **InheritedOutputMode** for consistent output format propagation across subcommands ([`b1b9d67`](https://github.com/Dicklesworthstone/beads_rust/commit/b1b9d67)).
- **Enhanced dependency tree visualization** with theming, quiet mode, and search/history improvements ([`e30be1e`](https://github.com/Dicklesworthstone/beads_rust/commit/e30be1e)).
- **SQLite journal support**, git context fixes, atomic ops hardening, quiet mode expansion ([`02a75ec`](https://github.com/Dicklesworthstone/beads_rust/commit/02a75ec)).

### Bug Fixes

- Replace silent depth cap with convergence-based blocked-cache propagation ([`d5f124c`](https://github.com/Dicklesworthstone/beads_rust/commit/d5f124c)).
- Use SQL-aware statement splitter instead of naive `split(';')` ([`45015bc`](https://github.com/Dicklesworthstone/beads_rust/commit/45015bc)).

### Packaging

- Add crates.io exclude list and readme field ([`32c0fb2`](https://github.com/Dicklesworthstone/beads_rust/commit/32c0fb2)).

---

## [v0.1.23](https://github.com/Dicklesworthstone/beads_rust/releases/tag/v0.1.23) -- 2026-03-07 (Release)

### New Capabilities

- **`--db` override** respected across all subcommands with graceful fallback ([`b91ee46`](https://github.com/Dicklesworthstone/beads_rust/commit/b91ee46)).
- **Enhanced diff output** for history, CLI help styling, and config validation ([`f81055a`](https://github.com/Dicklesworthstone/beads_rust/commit/f81055a)).

### Bug Fixes

- Remove non-functional musl binary attempt on Linux x86_64 in installer ([`0c9f1de`](https://github.com/Dicklesworthstone/beads_rust/commit/0c9f1de)).

---

## [v0.1.22](https://github.com/Dicklesworthstone/beads_rust/releases/tag/v0.1.22) -- 2026-03-07 (Release)

Major robustness release focused on error propagation, transactional safety, and doctor/repair capabilities.

### New Capabilities

- **`doctor --repair`**: rebuild DB from JSONL and harden import pipeline ([`3150f9e`](https://github.com/Dicklesworthstone/beads_rust/commit/3150f9e)).
- **Automatic SQLite database recovery** from JSONL export ([`4d35e55`](https://github.com/Dicklesworthstone/beads_rust/commit/4d35e55)).
- **Windows/zip support** in installer ([`bbf674f`](https://github.com/Dicklesworthstone/beads_rust/commit/bbf674f)).
- Add `-d`, `--parent`, `-e` flags to `br q`; warn on list truncation ([`fe18252`](https://github.com/Dicklesworthstone/beads_rust/commit/fe18252)).
- Config prefix inference from JSONL in `load_config` to prevent `bd-*` fallback ([`382832d`](https://github.com/Dicklesworthstone/beads_rust/commit/382832d)).

### Error Propagation and Safety

- Comprehensive error propagation, transactional imports, and safety hardening ([`f93df50`](https://github.com/Dicklesworthstone/beads_rust/commit/f93df50)).
- Record Reopened event when transitioning from terminal to non-terminal status ([`30ee737`](https://github.com/Dicklesworthstone/beads_rust/commit/30ee737)).
- Label dedup and rename hardening, comment parsing safety, transactional export finalization ([`887e6f7`](https://github.com/Dicklesworthstone/beads_rust/commit/887e6f7)).
- Preserve existing deps/labels when bulk query returns incomplete results ([`9bda6ca`](https://github.com/Dicklesworthstone/beads_rust/commit/9bda6ca)).
- Wire up `--hard` flag to actually purge issues from DB ([`e11f18f`](https://github.com/Dicklesworthstone/beads_rust/commit/e11f18f)).
- Skip full schema rebuild on runtime-compatible legacy databases ([`440b1dc`](https://github.com/Dicklesworthstone/beads_rust/commit/440b1dc)).
- Default busy timeout, coalesce optional text on import ([`f183d90`](https://github.com/Dicklesworthstone/beads_rust/commit/f183d90)).

### Bug Fixes

- Map musl target to correct artifact name for self-update ([`d1c564a`](https://github.com/Dicklesworthstone/beads_rust/commit/d1c564a)).
- Ensure self-update archive extraction works in release builds ([`a555c9e`](https://github.com/Dicklesworthstone/beads_rust/commit/a555c9e)).
- Add musl static build for Linux portability ([`15ca9c9`](https://github.com/Dicklesworthstone/beads_rust/commit/15ca9c9)).
- Restrict raw SQL API surface and improve doctor repair robustness ([`71b83cb`](https://github.com/Dicklesworthstone/beads_rust/commit/71b83cb)).
- Runtime-compatible schema repair and hardened table rebuild safety ([`23ef6bf`](https://github.com/Dicklesworthstone/beads_rust/commit/23ef6bf)).
- Fix config command syntax in README ([`718f6f3`](https://github.com/Dicklesworthstone/beads_rust/commit/718f6f3)).

---

## [v0.1.21](https://github.com/Dicklesworthstone/beads_rust/releases/tag/v0.1.21) -- 2026-03-04 (Release)

Frankensqlite stabilization, parallel write safety, blocked cache fixes, and Claude Code skill.

### New Capabilities

- **Official Claude Code skill** for br ([`578d02f`](https://github.com/Dicklesworthstone/beads_rust/commit/578d02f)).
- **Rust 2024 let-chains** adopted across codebase with idiomatic clippy patterns ([`070d149`](https://github.com/Dicklesworthstone/beads_rust/commit/070d149)).
- Auto-flush and auto-import flags resolved from merged config layers ([`d4586cb`](https://github.com/Dicklesworthstone/beads_rust/commit/d4586cb)).

### Bug Fixes

- **Fix parallel write data loss** from dead `busy_timeout` ([`f83a9b0`](https://github.com/Dicklesworthstone/beads_rust/commit/f83a9b0)).
- Refresh blocked cache after dep changes, fix cycle detection, atomicity, and perf ([`84e71cd`](https://github.com/Dicklesworthstone/beads_rust/commit/84e71cd)).
- Repair 4 bugs in `rebuild_issues_table` schema migration ([`3a4faf2`](https://github.com/Dicklesworthstone/beads_rust/commit/3a4faf2)).
- Address 5 community-reported bugs: #104, #105, #106, #107, #108 ([`c6529f4`](https://github.com/Dicklesworthstone/beads_rust/commit/c6529f4)).
- Remove PRIMARY KEY from config/metadata tables and clean up migrations ([`648d46b`](https://github.com/Dicklesworthstone/beads_rust/commit/648d46b)).
- Add frankensqlite compatibility for schema checks and SQL queries ([`ce0b143`](https://github.com/Dicklesworthstone/beads_rust/commit/ce0b143)).
- Bump fsqlite to 7ca6ff1 fixing B-tree cursor and page-count header ([`0e4b5df`](https://github.com/Dicklesworthstone/beads_rust/commit/0e4b5df)).

---

## [v0.1.20](https://github.com/Dicklesworthstone/beads_rust/releases/tag/v0.1.20) -- 2026-02-26 (Release)

### New Capabilities

- **Draft status variant** for pre-execution issues ([`82560a5`](https://github.com/Dicklesworthstone/beads_rust/commit/82560a5)).

### Bug Fixes

- Resolve 6 community-reported issues: #85, #86, #87, #88, #91, #92 ([`75dd6f1`](https://github.com/Dicklesworthstone/beads_rust/commit/75dd6f1)).
- Update fsqlite for macOS `c_short` VFS lock fix ([`cd5bc27`](https://github.com/Dicklesworthstone/beads_rust/commit/cd5bc27)).
- Update fsqlite for macOS type mismatch fix ([`6a7678c`](https://github.com/Dicklesworthstone/beads_rust/commit/6a7678c)).

### CI

- Switch to gnu targets, pin fsqlite to GitHub HEAD for pure-Rust UnixVfs ([`4adeb86`](https://github.com/Dicklesworthstone/beads_rust/commit/4adeb86)).
- Validate required artifacts before release ([`cb8d822`](https://github.com/Dicklesworthstone/beads_rust/commit/cb8d822)).

---

## [v0.1.19](https://github.com/Dicklesworthstone/beads_rust/releases/tag/v0.1.19) -- 2026-02-23 (Release)

CI stabilization release.

- Allow partial release and temporarily disable linux\_arm64 ([`e67031b`](https://github.com/Dicklesworthstone/beads_rust/commit/e67031b)).

---

## v0.1.18 -- 2026-02-23 (Tag)

- Switch Linux release builds from musl to gnu for GLIBC compatibility ([`bec2a3f`](https://github.com/Dicklesworthstone/beads_rust/commit/bec2a3f)).

---

## v0.1.17 -- 2026-02-23 (Tag)

- Fix CI target installation for all platforms ([`2292139`](https://github.com/Dicklesworthstone/beads_rust/commit/2292139)).

---

## v0.1.16 -- 2026-02-23 (Tag)

- Bump version for release attempt ([`729edf8`](https://github.com/Dicklesworthstone/beads_rust/commit/729edf8)).

---

## v0.1.15 -- 2026-02-23 (Tag)

### New Capabilities

- **`agents --dry-run --json`** produces distinct output with `dry_run`/`would_action` fields ([`312b40d`](https://github.com/Dicklesworthstone/beads_rust/commit/312b40d)).
- GITHUB\_TOKEN support for self-update ([`a0993d5`](https://github.com/Dicklesworthstone/beads_rust/commit/a0993d5)).
- Map Rust target triples to release asset names for self-update ([`b687c5a`](https://github.com/Dicklesworthstone/beads_rust/commit/b687c5a)).
- Mark children of deferred epics as blocked in ready cache ([`3867e97`](https://github.com/Dicklesworthstone/beads_rust/commit/3867e97)).

### Licensing

- Updated to MIT with OpenAI/Anthropic Rider ([`b91c42b`](https://github.com/Dicklesworthstone/beads_rust/commit/b91c42b)).

### Dependencies

- Switch toon\_rust from git to crates.io (tru v0.2.0) ([`b483206`](https://github.com/Dicklesworthstone/beads_rust/commit/b483206)).
- Switch fsqlite deps from local paths to crates.io v0.1.0 ([`6c6ade6`](https://github.com/Dicklesworthstone/beads_rust/commit/6c6ade6)).

---

## [v0.1.14](https://github.com/Dicklesworthstone/beads_rust/releases/tag/v0.1.14) -- 2026-02-14 (Release)

The "frankensqlite migration" release -- the entire storage backend was migrated from rusqlite to frankensqlite.

### Storage Migration

- **Full migration from rusqlite to frankensqlite** -- a pure-Rust SQLite implementation ([`d3d9bce`](https://github.com/Dicklesworthstone/beads_rust/commit/d3d9bce), [`c269721`](https://github.com/Dicklesworthstone/beads_rust/commit/c269721), [`8d9d3e7`](https://github.com/Dicklesworthstone/beads_rust/commit/8d9d3e7), [`bee3172`](https://github.com/Dicklesworthstone/beads_rust/commit/bee3172)).
- Batch upsert, FTS5 search, and migration framework for SQLite backend ([`61920c6`](https://github.com/Dicklesworthstone/beads_rust/commit/61920c6)).
- Skip DDL/migration when SQLite schema is already current ([`ee23dc2`](https://github.com/Dicklesworthstone/beads_rust/commit/ee23dc2)).

### New Capabilities

- **Atomic claim guard** with `claim.exclusive` config and IMMEDIATE transaction ([`0a52ac7`](https://github.com/Dicklesworthstone/beads_rust/commit/0a52ac7), [`8df2de9`](https://github.com/Dicklesworthstone/beads_rust/commit/8df2de9)).
- **Show command** now displays design, notes, acceptance\_criteria, external\_ref fields ([`e727f6c`](https://github.com/Dicklesworthstone/beads_rust/commit/e727f6c)).
- **NothingToDo exit code** for idempotent operations ([`e727f6c`](https://github.com/Dicklesworthstone/beads_rust/commit/e727f6c)).
- **Sync preflight guardrails** for JSONL import validation ([`e539185`](https://github.com/Dicklesworthstone/beads_rust/commit/e539185)).
- **History subcommand** enhanced with session timeline and storage improvements ([`d569adc`](https://github.com/Dicklesworthstone/beads_rust/commit/d569adc)).

### Bug Fixes

- Windows path canonicalization using `dunce` to strip `\\?\` prefix ([`4cf7717`](https://github.com/Dicklesworthstone/beads_rust/commit/4cf7717)).
- Fix `IssueUpdate::is_empty` to account for `expect_unassigned` flag ([`2fb071c`](https://github.com/Dicklesworthstone/beads_rust/commit/2fb071c)).
- Log warning on malformed `blocked_by` JSON instead of silent fallback ([`1444e29`](https://github.com/Dicklesworthstone/beads_rust/commit/1444e29)).
- Use UNION instead of UNION ALL in recursive descendant CTE ([`1a3976d`](https://github.com/Dicklesworthstone/beads_rust/commit/1a3976d)).
- Complete self\_update feature gates for `--no-default-features` ([`3fa391a`](https://github.com/Dicklesworthstone/beads_rust/commit/3fa391a)).
- Eliminate silent error fallbacks in storage and sync ([`44edef1`](https://github.com/Dicklesworthstone/beads_rust/commit/44edef1)).
- Streamline release preflight to version-tag check only ([`79e26c9`](https://github.com/Dicklesworthstone/beads_rust/commit/79e26c9)).

---

## [v0.1.13](https://github.com/Dicklesworthstone/beads_rust/releases/tag/v0.1.13) -- 2026-02-01 (Release)

### New Capabilities

- **Shell completions** for all CLI arguments using clap\_complete ([`603c53b`](https://github.com/Dicklesworthstone/beads_rust/commit/603c53b), [`4c2f107`](https://github.com/Dicklesworthstone/beads_rust/commit/4c2f107), [`676f7fb`](https://github.com/Dicklesworthstone/beads_rust/commit/676f7fb)).
- **`ready --parent` and `--recursive`** flags for scoped issue filtering ([`ab56d79`](https://github.com/Dicklesworthstone/beads_rust/commit/ab56d79)).
- **`--rename-prefix`** sync option ([`70ec1de`](https://github.com/Dicklesworthstone/beads_rust/commit/70ec1de)).
- Config key completion and enriched completion candidates ([`70ec1de`](https://github.com/Dicklesworthstone/beads_rust/commit/70ec1de)).
- BEADS\_CACHE\_DIR expanded to SQLite database files ([`e764632`](https://github.com/Dicklesworthstone/beads_rust/commit/e764632)).

### Bug Fixes

- Detect and warn about conflicting br installations ([`bc7341d`](https://github.com/Dicklesworthstone/beads_rust/commit/bc7341d)).
- Prevent claiming blocked issues ([`e45fa66`](https://github.com/Dicklesworthstone/beads_rust/commit/e45fa66)).
- Normalize labels during JSONL export for consistent round-trip hashing ([`b5e83fd`](https://github.com/Dicklesworthstone/beads_rust/commit/b5e83fd)).
- Allow rename-prefix import and clean prefixes ([`e648e0b`](https://github.com/Dicklesworthstone/beads_rust/commit/e648e0b)).
- Clear duplicate external refs when renaming prefixes ([`bbffe2c`](https://github.com/Dicklesworthstone/beads_rust/commit/bbffe2c)).
- Honor `--json` flag in flush, import, and status output ([`df184e1`](https://github.com/Dicklesworthstone/beads_rust/commit/df184e1), [`4827a7e`](https://github.com/Dicklesworthstone/beads_rust/commit/4827a7e)).
- Flush storage after undefer to persist state changes ([`57d0528`](https://github.com/Dicklesworthstone/beads_rust/commit/57d0528)).
- Add `is_template` column migration and update ready index ([`ef9a19f`](https://github.com/Dicklesworthstone/beads_rust/commit/ef9a19f)).
- Replace panics with safe fallbacks ([`b5a687b`](https://github.com/Dicklesworthstone/beads_rust/commit/b5a687b)).
- Backfill dependency type column ([`1439290`](https://github.com/Dicklesworthstone/beads_rust/commit/1439290)).
- Legacy schema column backfill ([`1518fe1`](https://github.com/Dicklesworthstone/beads_rust/commit/1518fe1)).

### Performance

- Optimize hot SQL paths and add performance PRAGMAs ([`a97fac5`](https://github.com/Dicklesworthstone/beads_rust/commit/a97fac5)).

### CI

- Use musl for Linux builds to fix GLIBC compatibility ([`7217ae0`](https://github.com/Dicklesworthstone/beads_rust/commit/7217ae0)).
- Architecture-appropriate minisign binary on ARM64 ([`f0c72b5`](https://github.com/Dicklesworthstone/beads_rust/commit/f0c72b5)).

---

## [v0.1.12](https://github.com/Dicklesworthstone/beads_rust/releases/tag/v0.1.12) -- 2026-01-28 (Release)

### Bug Fixes

- Escape LIKE pattern special characters in search queries ([`81266c8`](https://github.com/Dicklesworthstone/beads_rust/commit/81266c8)).

### Testing

- Comprehensive JSON output snapshot tests ([`dcaf4e0`](https://github.com/Dicklesworthstone/beads_rust/commit/dcaf4e0)).
- E2E output mode consistency tests ([`4e564ac`](https://github.com/Dicklesworthstone/beads_rust/commit/4e564ac)).
- CSV escaping and saved query override tests ([`4933e1b`](https://github.com/Dicklesworthstone/beads_rust/commit/4933e1b)).

---

## v0.1.11 -- 2026-01-28 (Tag)

### New Capabilities

- **`--wrap` flag** for `br blocked` command ([`1652796`](https://github.com/Dicklesworthstone/beads_rust/commit/1652796)).
- Structured error validation and error parity tests ([`153aa06`](https://github.com/Dicklesworthstone/beads_rust/commit/153aa06)).
- Storage ID hash parity test ([`b6f02f2`](https://github.com/Dicklesworthstone/beads_rust/commit/b6f02f2)).

### Bug Fixes

- Fix label test isolation and ID parsing for new output format ([`b9cf078`](https://github.com/Dicklesworthstone/beads_rust/commit/b9cf078)).

---

## v0.1.10 -- 2026-01-28 (Tag)

### New Capabilities

- **TOON output format** for token-optimized serialization ([`b1882b8`](https://github.com/Dicklesworthstone/beads_rust/commit/b1882b8)).
- **Schema command** for emitting JSON Schema documents ([`9da03ba`](https://github.com/Dicklesworthstone/beads_rust/commit/9da03ba)).
- **Nix flake support** ([`d5e9821`](https://github.com/Dicklesworthstone/beads_rust/commit/d5e9821)).
- **BEADS\_CACHE\_DIR** for monorepo transient file support ([`fc747cb`](https://github.com/Dicklesworthstone/beads_rust/commit/fc747cb)).
- **VCS Integration guide** for non-git version control systems ([`7596071`](https://github.com/Dicklesworthstone/beads_rust/commit/7596071)).
- **`--wrap` flag** for text output ([`a122c1b`](https://github.com/Dicklesworthstone/beads_rust/commit/a122c1b)).
- ACFS lesson registry sync via GitHub Actions ([`8d5908d`](https://github.com/Dicklesworthstone/beads_rust/commit/8d5908d)).

### Bug Fixes

- Fix clippy nightly lints for CI compatibility ([`5f7b306`](https://github.com/Dicklesworthstone/beads_rust/commit/5f7b306)).
- Make `semver` dep non-optional to fix `--no-default-features` build ([`33e4968`](https://github.com/Dicklesworthstone/beads_rust/commit/33e4968)).

---

## v0.1.9 -- 2026-01-23 (Tag)

### New Capabilities

- **`--status` flag** for `br create` command ([`cac47de`](https://github.com/Dicklesworthstone/beads_rust/commit/cac47de)).
- Enhanced CLI commands with improved output and filtering ([`af40d04`](https://github.com/Dicklesworthstone/beads_rust/commit/af40d04)).
- Extended storage layer with improved schema and operations ([`f8577aa`](https://github.com/Dicklesworthstone/beads_rust/commit/f8577aa)).
- Improved sync operations and output formatting ([`e58e90b`](https://github.com/Dicklesworthstone/beads_rust/commit/e58e90b)).

### Bug Fixes

- Fix `blocked_issues_cache` reference in `get_ready_issues` SQL ([`27fa5dd`](https://github.com/Dicklesworthstone/beads_rust/commit/27fa5dd)).
- Allow dots in ID prefixes and skip prefix check with `--force` ([`6d5d0a1`](https://github.com/Dicklesworthstone/beads_rust/commit/6d5d0a1)).
- Update install shell script for improved reliability ([`64d86fb`](https://github.com/Dicklesworthstone/beads_rust/commit/64d86fb)).

---

## v0.1.8 -- 2026-01-22 (Tag)

The largest single version by commit count. Introduced rich terminal output, self-update, conformance testing, and numerous foundational features.

### Rich Terminal Output

- **Rich output foundation** with components and themed panels ([`d85e89a`](https://github.com/Dicklesworthstone/beads_rust/commit/d85e89a), [`736a5ca`](https://github.com/Dicklesworthstone/beads_rust/commit/736a5ca)).
- Rich output integrated across all major commands: stats, dep, sync, label, comments, delete, and more ([`eb6b57a`](https://github.com/Dicklesworthstone/beads_rust/commit/eb6b57a), [`2df0736`](https://github.com/Dicklesworthstone/beads_rust/commit/2df0736), [`f3055cc`](https://github.com/Dicklesworthstone/beads_rust/commit/f3055cc), [`6a95245`](https://github.com/Dicklesworthstone/beads_rust/commit/6a95245), [`6f2d1f0`](https://github.com/Dicklesworthstone/beads_rust/commit/6f2d1f0)).
- OutputContext pattern for JSON mode detection ([`741bd50`](https://github.com/Dicklesworthstone/beads_rust/commit/741bd50)).

### Self-Update

- **`br upgrade`** command with self-update infrastructure ([`b8cf57e`](https://github.com/Dicklesworthstone/beads_rust/commit/b8cf57e)).
- Signature verification for self-update ([`22b04e6`](https://github.com/Dicklesworthstone/beads_rust/commit/22b04e6)).

### Conformance Testing

- **bd/br conformance test harness** for verifying compatibility with the original beads ([`2634839`](https://github.com/Dicklesworthstone/beads_rust/commit/2634839), [`fcfe04e`](https://github.com/Dicklesworthstone/beads_rust/commit/fcfe04e)).
- Benchmark regression detection scripts ([`98a8a92`](https://github.com/Dicklesworthstone/beads_rust/commit/98a8a92)).

### New Capabilities

- **CSV output format** for list command ([`2f008ac`](https://github.com/Dicklesworthstone/beads_rust/commit/2f008ac), [`c04507f`](https://github.com/Dicklesworthstone/beads_rust/commit/c04507f)).
- **Orphans command** to find stale referenced issues ([`0a22a2b`](https://github.com/Dicklesworthstone/beads_rust/commit/0a22a2b)).
- **Markdown bulk import** parser for `br create --file` ([`2b601db`](https://github.com/Dicklesworthstone/beads_rust/commit/2b601db), [`60cdfb7`](https://github.com/Dicklesworthstone/beads_rust/commit/60cdfb7)).
- **No-db JSONL mode** for operating without SQLite ([`2a424b2`](https://github.com/Dicklesworthstone/beads_rust/commit/2a424b2)).
- **3-way merge algorithm** and CLI integration for sync ([`ee50802`](https://github.com/Dicklesworthstone/beads_rust/commit/ee50802), [`246475a`](https://github.com/Dicklesworthstone/beads_rust/commit/246475a)).
- **External dependency resolution** for cross-project coordination ([`4522ca3`](https://github.com/Dicklesworthstone/beads_rust/commit/4522ca3)).
- **Lint command** implementation wired into CLI ([`b891454`](https://github.com/Dicklesworthstone/beads_rust/commit/b891454)).
- **`source_repo` field** for multi-repo support ([`30b668c`](https://github.com/Dicklesworthstone/beads_rust/commit/30b668c)).
- Gate columns and DATETIME type migration ([`7990eae`](https://github.com/Dicklesworthstone/beads_rust/commit/7990eae)).
- Configurable width for IssueTable component ([`953010e`](https://github.com/Dicklesworthstone/beads_rust/commit/953010e)).
- Auto-detect issue prefix from JSONL during migration ([`3a38b45`](https://github.com/Dicklesworthstone/beads_rust/commit/3a38b45)).
- AI coding skills auto-installation via installer ([`18d3e28`](https://github.com/Dicklesworthstone/beads_rust/commit/18d3e28)).
- `--allow-stale` workaround for prefix validation on read-only commands ([`2eea2e1`](https://github.com/Dicklesworthstone/beads_rust/commit/2eea2e1)).

### Storage

- Lazy DB lookups in show/update commands for performance ([`5934996`](https://github.com/Dicklesworthstone/beads_rust/commit/5934996)).
- Deterministic event ordering and ID collision handling improvements ([`ba82e32`](https://github.com/Dicklesworthstone/beads_rust/commit/ba82e32)).
- Content\_hash computed on create ([`6163410`](https://github.com/Dicklesworthstone/beads_rust/commit/6163410)).
- Optimized list command to avoid N+1 count queries ([`8a8c5f9`](https://github.com/Dicklesworthstone/beads_rust/commit/8a8c5f9)).
- Removed redundant blocked cache rebuilds in close/reopen ([`c998026`](https://github.com/Dicklesworthstone/beads_rust/commit/c998026)).

### Sync Safety

- Sync JSONL allowlist and opt-in flag ([`cc605b2`](https://github.com/Dicklesworthstone/beads_rust/commit/cc605b2)).
- Structured sync safety logging ([`90544e2`](https://github.com/Dicklesworthstone/beads_rust/commit/90544e2)).
- Path validation hardening ([`6d30f92`](https://github.com/Dicklesworthstone/beads_rust/commit/6d30f92)).
- Export error policies ([`6d30f92`](https://github.com/Dicklesworthstone/beads_rust/commit/6d30f92)).

### Bug Fixes

- BFS depth limit to prevent infinite loops in cyclic graphs ([`88e4c96`](https://github.com/Dicklesworthstone/beads_rust/commit/88e4c96)).
- Correct dep tree test to verify dependency traversal direction ([`1579204`](https://github.com/Dicklesworthstone/beads_rust/commit/1579204)).
- Hash collision vulnerability fix and dep tree logic ([`458a77b`](https://github.com/Dicklesworthstone/beads_rust/commit/458a77b)).
- Path traversal check fix to allow valid filenames with dots ([`76abe36`](https://github.com/Dicklesworthstone/beads_rust/commit/76abe36)).
- Exclude tombstoned issues from label counts ([`b8e210f`](https://github.com/Dicklesworthstone/beads_rust/commit/b8e210f)).
- Correct `desperate fallback` ID format to be parseable ([`368d804`](https://github.com/Dicklesworthstone/beads_rust/commit/368d804)).
- Skip auto-flush when `--no-db` mode is active ([`9d0e93c`](https://github.com/Dicklesworthstone/beads_rust/commit/9d0e93c)).
- History backup parsing and test robustness ([`2479c97`](https://github.com/Dicklesworthstone/beads_rust/commit/2479c97)).
- Enable auto-import for mutating commands to prevent data loss ([`24fd16c`](https://github.com/Dicklesworthstone/beads_rust/commit/24fd16c)).
- Allow custom issue types and fix routing test ([`e1d5175`](https://github.com/Dicklesworthstone/beads_rust/commit/e1d5175)).
- Improve parsing for hyphenated prefixes with word-like hashes ([`eef627c`](https://github.com/Dicklesworthstone/beads_rust/commit/eef627c)).
- Create empty `issues.jsonl` on init for bv compatibility ([`18d214d`](https://github.com/Dicklesworthstone/beads_rust/commit/18d214d)).
- Fix dep add message direction and orphans robot mode JSON ([`b59632d`](https://github.com/Dicklesworthstone/beads_rust/commit/b59632d)).

---

## [v0.1.7](https://github.com/Dicklesworthstone/beads_rust/releases/tag/v0.1.7) -- 2026-01-18 (Release)

First release with pre-built binaries across all six platforms.

### New Capabilities

- **Bulletproof installer** with fallback to source build ([`f09877d`](https://github.com/Dicklesworthstone/beads_rust/commit/f09877d)).
- **AGENTS.md blurb detection** and management ([`cbd9e95`](https://github.com/Dicklesworthstone/beads_rust/commit/cbd9e95)).
- Cache buster added to all install URLs ([`0837c63`](https://github.com/Dicklesworthstone/beads_rust/commit/0837c63)).

### Bug Fixes

- Use `shasum` on macOS for checksum generation ([`d2e6131`](https://github.com/Dicklesworthstone/beads_rust/commit/d2e6131)).
- Handle `BASH_SOURCE` unbound when piped to bash ([`f978117`](https://github.com/Dicklesworthstone/beads_rust/commit/f978117)).
- Normalize usernames and version numbers in test snapshots ([`0154711`](https://github.com/Dicklesworthstone/beads_rust/commit/0154711)).
- Fix `macos-13` retired runner ([`3742b50`](https://github.com/Dicklesworthstone/beads_rust/commit/3742b50)).

### CI

- Skip conformance tests when bd binary unavailable ([`0f08f0b`](https://github.com/Dicklesworthstone/beads_rust/commit/0f08f0b), [`55c355b`](https://github.com/Dicklesworthstone/beads_rust/commit/55c355b)).

### Platforms

| Platform | Architecture | Asset |
|----------|-------------|-------|
| Linux | x86\_64 (glibc) | `br-v0.1.7-linux_amd64.tar.gz` |
| Linux | x86\_64 (musl, static) | `br-v0.1.7-linux_amd64_musl.tar.gz` |
| Linux | ARM64 | `br-v0.1.7-linux_arm64.tar.gz` |
| macOS | x86\_64 (Intel) | `br-v0.1.7-darwin_amd64.tar.gz` |
| macOS | ARM64 (Apple Silicon) | `br-v0.1.7-darwin_arm64.tar.gz` |
| Windows | x86\_64 | `br-v0.1.7-windows_amd64.zip` |

---

## v0.1.6 -- 2026-01-18 (Tag)

- Fix import order for `cargo fmt` in CI ([`16c7f36`](https://github.com/Dicklesworthstone/beads_rust/commit/16c7f36)).

---

## v0.1.5 -- 2026-01-18 (Tag)

- Add bd skip check to all conformance test files ([`66518a9`](https://github.com/Dicklesworthstone/beads_rust/commit/66518a9)).

---

## v0.1.4 -- 2026-01-18 (Tag)

- Add bd skip check to conformance tests ([`9f51da7`](https://github.com/Dicklesworthstone/beads_rust/commit/9f51da7)).

---

## v0.1.3 -- 2026-01-18 (Tag)

- Add bd skip check to benchmark\_datasets tests ([`641374e`](https://github.com/Dicklesworthstone/beads_rust/commit/641374e)).

---

## v0.1.2 -- 2026-01-18 (Tag)

- Skip benchmark tests when bd binary unavailable ([`21ec1ad`](https://github.com/Dicklesworthstone/beads_rust/commit/21ec1ad)).

---

## v0.1.1 -- 2026-01-18 (Tag)

- Consolidate target patterns in `.gitignore` ([`609cb9f`](https://github.com/Dicklesworthstone/beads_rust/commit/609cb9f)).
- Remove accidentally committed build artifacts ([`34444b4`](https://github.com/Dicklesworthstone/beads_rust/commit/34444b4)).

---

## [v0.1.0](https://github.com/Dicklesworthstone/beads_rust/releases/tag/v0.1.0) -- 2026-01-18 (Release, Draft)

Initial public release. A Rust port of [Steve Yegge's beads](https://github.com/steveyegge/beads), frozen at the "classic" SQLite + JSONL architecture.

### Core Feature Set

- **Full CLI** with all classic beads commands: init, create, list, show, update, close, reopen, delete, dep, blocked, ready, search, stale, count, stats, sync, doctor, q (quick capture).
- **SQLite + JSONL hybrid storage**: SQLite for fast local queries, JSONL for git-friendly collaboration.
- **Non-invasive design**: never executes git commands, never touches files outside `.beads/`, never auto-commits.
- **Agent-first**: every command supports `--json` for AI coding agent integration.
- **Dependency tracking** with cycle detection, blocked/ready issue management, and dependency trees.
- **Label system** with add/remove/list/list-all operations.
- **Comments** with add/list operations.
- **Config system** with layered precedence: CLI flags > env vars > project config > user config > defaults.

### Architecture (Built During Pre-v0.1.0 Development)

259 commits from project inception (2026-01-15) built the entire system from documentation and planning through to a fully functional CLI. Key milestones:

- Comprehensive porting plan and legacy architecture documentation ([`38cd152`](https://github.com/Dicklesworthstone/beads_rust/commit/38cd152), [`a376186`](https://github.com/Dicklesworthstone/beads_rust/commit/a376186)).
- Behavioral specs for all classic bd commands ([`15e4908`](https://github.com/Dicklesworthstone/beads_rust/commit/15e4908), [`76eb243`](https://github.com/Dicklesworthstone/beads_rust/commit/76eb243)).
- Core model types ([`562e021`](https://github.com/Dicklesworthstone/beads_rust/commit/562e021)).
- Classic CLI command scaffold ([`16c98b8`](https://github.com/Dicklesworthstone/beads_rust/commit/16c98b8)).
- Search, comments, doctor, sync commands ([`5444b9b`](https://github.com/Dicklesworthstone/beads_rust/commit/5444b9b), [`43b523b`](https://github.com/Dicklesworthstone/beads_rust/commit/43b523b), [`229ec5a`](https://github.com/Dicklesworthstone/beads_rust/commit/229ec5a)).
- E2E and conformance test suites ([`5304ba7`](https://github.com/Dicklesworthstone/beads_rust/commit/5304ba7)).
- Sync safety hardening with JSONL allowlist, path validation, and export error policies ([`cc605b2`](https://github.com/Dicklesworthstone/beads_rust/commit/cc605b2), [`6d30f92`](https://github.com/Dicklesworthstone/beads_rust/commit/6d30f92)).

### Platforms

Cross-platform binaries: Linux (x86\_64, aarch64), macOS (x86\_64, Apple Silicon), Windows.

### Installation

```bash
curl -fsSL "https://raw.githubusercontent.com/Dicklesworthstone/beads_rust/main/install.sh?$(date +%s)" | bash
```