Skip to main content

max / makenotwork

Add tagtree changelog Records 0.4.0, including the TagError enum conversion that landed in July and sat unreleased under 0.3.1. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-07-17 02:54 UTC
Commit: 648ef706b6251a85a41820637fb159e4c4da8796
Parent: 71c31b9
1 file changed, +40 insertions, -0 deletions
@@ -0,0 +1,40 @@
1 + # Changelog
2 +
3 + Notable changes to tagtree. Versions follow semver.
4 +
5 + ## 0.4.0 (2026-07-16)
6 +
7 + ### Breaking
8 +
9 + - `TagError` is now a seven-variant enum with typed fields (`TooLong { max }`,
10 + `TooDeep { levels, max }`, `InvalidChar(char)`, and others) instead of the
11 + `TagError(pub String)` newtype. Callers matching on the message string need to
12 + match variants instead.
13 + - `subtree("")` returns every tag rather than `[]`. The empty prefix now reads as
14 + the root, which is how `children_at_prefix` has always read it.
15 + - `prefix_at_depth("", n)` and `semantic_prefix("", n)` return `None` rather than
16 + `Some("")`. The empty tag has no segments, so no prefix exists at any depth.
17 +
18 + ### Fixed
19 +
20 + - `merge_tags` no longer orphans descendants. It moved only the exact source tag,
21 + so merging `genre.electronic` into `genre.dance` left `genre.electronic.house`
22 + dangling. It now rewrites the whole subtree's prefix, and colliding tags dedupe
23 + on rebuild.
24 +
25 + ### Changed
26 +
27 + - The separator's ASCII invariant is asserted at compile time. The byte-level
28 + scans slice at the offsets they find, which is only sound while the separator is
29 + ASCII; a non-ASCII separator now fails the build instead of introducing
30 + mid-codepoint slice panics.
31 + - `batch_rename`'s doc now states that the return value sums each operation's
32 + count, so a tag renamed by two operations counts twice. Behavior is unchanged.
33 +
34 + ## 0.3.1 (2026-04-15)
35 +
36 + Blanket patch bump across the shared crates. No functional change to tagtree.
37 +
38 + ## 0.3.0 (2026-04-15)
39 +
40 + First version in the MNW monorepo. Earlier history predates this changelog.