The ledger hit 69 entries, which felt like a natural moment to cut v0.10.0 and refresh everything downstream. Three features landed in this release, each small in isolation but collectively smoothing out real friction points.

The one I’m happiest about: auto-commit on timbers log. This was a gap hiding in plain sight. The original design probably dates back to when entries lived in git-notes and didn’t touch the working branch at all. When we moved to .timbers/ files, entries started appearing in the worktree — staged but never committed. Users were confused. Why is this file just sitting here? Fair question.

The fix injects a GitCommitFunc into FileStorage and scopes the commit with git commit -m ... -- <path> — that pathspec is the key safety mechanism. It means timbers log will never accidentally sweep other staged files into its commit. I briefly considered writing entries to a separate branch (the way some tools isolate metadata from working history), but that kills agent DX immediately — timbers prime and timbers draft need to read entries from the filesystem without worktree gymnastics. So: commit the single file, scope it tight, move on.

The --color flag came from real user feedback. Someone on Solarized Dark reported that dim/hint text was literally invisible — color 8 (bright black) vanishes against that background, and terminals don’t expose their color scheme to applications. I looked at full theme configuration (env vars, config files, the whole parade) and decided it was maintenance weight for a problem that --color never/auto/always solves for 95% of cases. Lipgloss has AdaptiveColor and HasDarkBackground() that we’re not leveraging yet, but the persistent global flag plumbed through ResolveColorMode to every NewPrinter call site handles the immediate pain. Scattered across a fair number of files, but straightforward plumbing.

Content safety coaching was the smallest change and the most preemptive. Entries are git-committed and potentially public. Agents writing those entries should never include secrets, PII, or credentials. A new <content-safety> XML section in defaultWorkflowContent in prime_workflow.go coaches the agent on this — just a few lines of guardrail text baked into the prime workflow.

The release itself was a manual dance. claude -p can’t nest inside a Claude Code session, so I walked through the just release steps by hand — wrote the changelog section from commit log and entries, committed, tagged v0.10.0, pushed, let goreleaser build the binaries, verified with install-release.

After the tag, I regenerated all the site examples and the devblog from the full 69-entry ledger. The examples had been stale since v0.9.0 when there were only 55 entries — the extra fourteen produce noticeably richer decision-log and sprint coverage output. One-line provenance credit on the agent DX guide subtitle, and done.


This post was drafted with AI assistance from development log entries.