Copied from the repo’s CHANGELOG.md, which is generated by just release using timbers draft changelog | claude -p --model opus.
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.21.0 - 2026-05-17
Changed
- Scoped the post-commit pending-work gate to the first-parent line so parallel agents sharing
.timbers/no longer block each other on undocumented commits from sibling branches.
Added
- Added
TIMBERS_SKIP_CROSS_AGENT_DEBTenvironment variable as an escape hatch for cases where a merge commit on the first-parent line touched source files (e.g. conflict resolution).
0.20.1 - 2026-05-10
Fixed
- Fixed post-commit hook nudging users to document commits that
timbers logwould refuse (e.g..beads/issues.jsonl-only commits), by routing both pre-commit and post-commit hooks through a shared actionable-pending check.
0.20.0 - 2026-05-07
Added
- Added
.timbersignoresupport, expanded skip-rule configurability, and a revert auto-skip behavior to relax enforcement on a per-repo basis (v0.19.0 batch). - Added a PR-authoring nudge to
timbers primeoutput.
Changed
- BREAKING:
timbers primenow emits compact session-start output by default; the full operating guide moved behind--full/guide. Runtimbers prime --full(or update Claude hooks to use the new hook mode) to restore prior verbosity. - Compact
timbers primenow prints fulltb_<ts>_<sha>entry IDs (resolvable bytimbers show), surfaces a hint whenPRIME.mdoverrides workflow content, and aligns health-line truncation to 96 chars to match entries. timbers prime --jsonnow honors the requested mode (no longer hardcoded to compact) and exposes acustom_workflowfield whenPRIME.mdis present.- Aligned stale-anchor
primeoutput withpendingfor consistent reporting. - Sharpened all seven built-in
drafttemplates with anti-fabrication guards (v0.19.0 batch). - Refreshed Anthropic, OpenAI, and Gemini provider model aliases to current official IDs; corrected Gemini Flash-Lite to the stable 3.1 model.
- Surfaced
statusvisibility improvements (v0.19.0 batch).
Internal
- Dropped the unused Dolt remote in favor of the embedded JSONL transport;
AGENTS.mdnow documents the single sync channel, JSONL drift-recovery viabd export | diff, and removesbd dolt pushfrom the session-close workflow. - Replaced the minimal agent note with the full operating guide and made
CLAUDE.mda symlink toAGENTS.mdto reduce drift across agent environments.
0.19.0 - 2026-05-02
Added
- Added per-repo
.timbersignoreat the repo root that extends the built-in skip-rule set with prefix, exact-path, and suffix patterns for housekeeping files likevendor/and*.lock. - Added auto-skip for revert commits whose original SHA is already documented in an existing entry, avoiding ledger noise for revert-of-documented work.
- Added
infra_skipped_since_entrytotimbers status --jsonand a matching line intimbers status --verboseto surface how many commits were skipped since the latest entry.
Changed
- Expanded the default skip-rule set to relax pending checks on housekeeping files (
.gitignore,.editorconfig, narrowly-scoped.github/metadata) and added default suffix skips for major-ecosystem lockfiles (package-lock.json,pnpm-lock.yaml,yarn.lock,go.sum,Cargo.lock,Gemfile.lock); manifest changes (package.json,go.mod,Cargo.toml) remain pending. - Fixed an exact-path matching bug where
.gitignorewould incorrectly match.gitignoresdue to prefix-only comparison. - Tuned the seven built-in
drafttemplates (changelog, decision-log, devblog, pr-description, release-notes, sprint-report, standup) for artifact-appropriate signal — including ADRStatus/Date/supersession fields, changelog Added-vs-Changed disambiguation and consolidation rules, PR-description size adaptation and test-plan honesty, release-notes user-observable filtering with breaking-change migration hints, and devblog operator/collaborator voice with anti-fabrication guards. - Coached
timbers primeto nudge agents toward operator-voice in narrative drafts and to draft PR bodies from ledger entries via thepr-descriptiontemplate by default when entries cover the branch range. - Refined six templates after second-opinion review to harden them against soft fabrication (emotion, theme, vague benefit) while preserving literary scaffolding.
0.18.0 - 2026-04-29
Fixed
- Renamed ledger files to drop colons from filenames so
go install ...@latestworks on tagged versions; colons in.timbers/*.jsonbroke Go’s module zip format and proxy.
Added
IDToFilenameandFilenameToIDhelpers that flipHH:MM:SSseparators to dashes for filesystem encoding while preserving canonical ISO 8601 timestamps in entry IDs.FileStorage.MigrateLegacyFilenamesfor bulk migration of existing entries.timbers doctor --fixsupport for migrating legacy colon-named ledger files.
Changed
entryPathnow emits canonical dashed filenames; reads transparently fall back tolegacyEntryPathfor colon-named files written by older binaries.- On-write cleanup transparently removes legacy sibling files when canonical names are written.
Technical
- Indefinite backward-compat reads preserved so forks and downstream consumers with older entries don’t need to upgrade in lockstep.
- Migrated 146 existing entries in this repo to the new dashed filename format.
0.17.0 - 2026-04-20
Added
- Added
--var key=valueflag totimbers draftfor caller-supplied template variables, namespaced under{{vars.key}}to avoid shadowing built-ins. - Added
vars:map to template frontmatter for per-template default variables, applied after caller-supplied vars. - Added durable ADR numbering to the
decision-logtemplate via{{vars.starting_number}}, with caller-owned offset for stable identifiers across regenerations. - Added
just decision-logrecipe that derives the next ADR number by grepping the target file and passes it via--var.
Changed
- Hardened
parseVarswith a duplicate-key check to prevent silent last-wins behavior under scripting. - Changed the
just decision-logpipeline to use|| echo ""inside the command substitution for unambiguous empty-file and no-match handling underpipefail.
Technical
- Extracted
prepareRenderhelper inrunDraftRenderto stay under the cyclop complexity limit. - Threaded caller variables through
RenderContext.Vars, substituted after built-in tokens ininternal/draft/render.go; unknown keys remain literal.
0.16.5 - 2026-03-31
Changed
- Upgraded beads to 0.63.3, replacing Dolt push/pull sync with auto-flush to
.beads/issues.jsonlfor simpler git-native sync
Fixed
- Fixed timbers-on-timbers loop caused by
.beads/issues.jsonlappearing in pending commits after beads auto-stage hook - Broadened
isLedgerOnlyCommittoisInfrastructureOnlyCommitwith configurable prefix list (.timbers/,.beads/)
0.16.4 - 2026-03-31
Added
- Added How It Works section to README covering commit design, filter command, and link to design decisions
- Added design decision documentation explaining why separate commits for ledger entries is by design (council-evaluated, two rounds)
Changed
- Updated README to clarify pre-commit hook enforcement of 1:1 commit cadence and ~2x commit count
- Added batch mode fallback note to README for graceful degradation when hooks are bypassed
Fixed
- Fixed stale anchor detection to use reachability check (
git merge-base --is-ancestor) instead of SHA existence — prevents phantom pending commits after rebase when old objects linger in the object store - Fixed pre-commit hook to skip gracefully when
.timbers/directory is absent at worktree root
Technical
- Added
IsAncestorOfmethod toGitOpsinterface for commit reachability checks - Added
git merge-base --is-ancestorguard inGetPendingCommitsbefore invokinggit log
0.16.3 - 2026-03-28
Fixed
- Fixed
doctor --fixtargeting wrong settings scope when cleaning up stale Claude hooks —Detect()found stale hooks in global settings butInstall(true)always wrote to project-local, so retired hooks in global settings survived--fix
Changed
- Released v0.16.2 changelog, regenerated site examples, and cleaned leaked LLM commentary from prior release notes
0.16.2 - 2026-03-28
Fixed
- Fixed hook deadlock during rebase, merge, cherry-pick, and revert where agents were blocked by pending-commit checks and couldn’t log or continue
- Fixed
--rangesilently dropping entries when only some anchor commits were stale; v0.15.3 fallback only triggered on zero anchor matches, missing the partial-stale case
Technical
- Added
git.IsInteractiveGitOp()that detects in-progress interactive git operations by checking.gitstate files; all hooks early-return during these operations - Changed
--rangeentry discovery to run both anchor-based and diff-based discovery unconditionally and union results by entry ID
0.16.0 - 2026-03-23
Fixed
- Fixed
query --rangereturning empty results after squash merge, where entryanchor_commitSHAs from feature branches disappear from main history - Added fallback discovery via
git diff --name-onlywhen commit-ancestry matching finds zero entries in a range
Technical
- Added
DiffNameOnlytoGitOpsinterface to support file-based entry discovery ingetEntriesByRange
0.15.3 - 2026-03-22
Fixed
- Fixed
query --rangereturning empty results after squash merge by falling back to file-based entry discovery when anchor commit SHAs are no longer in main’s history
0.14.4 - 2026-03-05
Fixed
- Respected
core.hooksPathgit config for hook installation instead of hardcoding.git/hooks/, fixing compatibility with tools like beads that set a custom hooks directory - Updated
GeneratePreCommitHookto accept a dynamichooksDirparameter for correct--chainbackup paths
0.14.3 - 2026-03-05
Fixed
- Fixed chained pre-commit hook silently overriding
timbersexit code, allowing commits to succeed even when pending entries should have blocked them
0.14.2 - 2026-03-05
Fixed
- Expanded stop hook reason to include full
timbers logsyntax with--why/--howflags so agents receive an actionable command instead of a baretimbers logthat would fail
0.14.0 - 2026-03-04
Changed
- Simplified hook enforcement by dropping
PreToolUsehandler in favor of pre-commit blocking, which works universally across all git clients - Kept
Stophook as a session-end backstop for agents that bypass pre-commit - Updated
hooks installhelp text from “warns” to “blocks” to reflect actual behavior
Fixed
- Fixed
uninstallleaving retired hooks (PostToolUse,PreToolUse) in settings by addingretiredEventscleanup loop
Removed
- Removed
PreToolUsehandler, dispatch case, and associated tests from hook enforcement
0.13.2 - 2026-03-03
Fixed
- Fixed
timbers loghard-erroring on stale anchor after squash merge, now warns and proceeds with fallback commits - Fixed
timbers log --batchtreatingErrStaleAnchoras fatal, matching the graceful degradation already used bypending,prime, and MCP
0.13.1 - 2026-03-03
Added
- Added quick health check to
timbers primeoutput that surfaces missing hooks and integration issues at session start runQuickHealthCheckvalidates post-commit hook and agent environment, displaying aHealthsection withdoctor --fixhint when issues are found
0.13.0 - 2026-03-02
Added
- Added
timbers hook run post-commitcommand that prints a one-line reminder to runtimbers logafter commits - Added
timbers init --hooksflag to install the post-commit git hook - Added
timbers doctorcheck for post-commit hook presence, with--fixto auto-install it
Fixed
- Fixed slice capacity mismatch (5→6) in post-commit hook setup
- Added missing
IsRepoguard to prevent hook operations outside git repositories
Technical
- Added unit tests for hook
Generate,Check, andInstallfunctions - Added integration tests for
init --hookspost-commit workflow
0.12.2 - 2026-03-02
Fixed
- Fixed
timbers pendingtreating all pre-timbers commit history as undocumented work in new installations - Fixed
timbers doctorreporting false warnings about pending commits when no ledger entries exist yet
Changed
timbers pendingandtimbers doctornow detect first-use state (no entries) at the display layer and show a friendly onboarding message instead of listing every historical commit- Added
statusfield totimbers pending --jsonoutput to distinguishpending,clean, andno_entriesstates timbers initnow suggests runningtimbers log --batchto document recent work as a catchup tip
0.12.1 - 2026-02-28
Added
- Added LLM output sanitization (
SanitizeLLMOutput()) to strip thought-process leakage from--modeloutput, plus “output discipline” prompting added to all 7 built-in templates - Added
notesfield to site landing page marketing content - Added static example generation for dense date ranges to avoid redundant LLM calls on every release
Changed
- Replaced auth examples with cursor-based pagination examples across README and landing page
- Split site example generation into dynamic (per-release) and static (fixed date range) justfile recipes
- Parallelized site example generation
- Replaced
declare -Awith parallel arrays in example recipes for macOS bash 3.2 compatibility - Updated standup examples to use
--since 1d - Bumped
go-sdkto v1.3.1 for CVE-2026-27896 (case-insensitive JSON parsing)
Fixed
- Removed leaked LLM commentary and duplicate sections from
CHANGELOG.mdand site examples
0.12.0 - 2026-02-28
Added
- Added
--modelsflag totimbers draftto list supported LLM providers, model aliases, and required API keys - Added
--jsonsupport fortimbers draft --modelsfor agent consumption - Added
internal/llmpackage with provider metadata and alias resolution
Changed
- Updated README, tutorial, and
docs/llm-commands.mdwith verified piping syntax for all three supported LLM CLIs (claude,gemini,codex)
Fixed
- Fixed Codex CLI flag placement in docs —
-mbelongs tocodex exec, not the rootcodexcommand - Fixed release dirty-tree check to exclude
CHANGELOG.mdandsite/content/examples/(outputs of the release process) - Fixed release recipe to skip already-modified site examples, avoiding redundant LLM calls on partial reruns
- Fixed defensive alias copy in
ProviderInfos()usingmaps.Copyto prevent callers from mutating package state
0.11.0 - 2026-02-27
Added
- Added
govulncheckas a Go tool dependency withjust vulncheckrecipe for vulnerability scanning - Added automatic landing page version update during
just release - Added generation capability check to
timbers doctorwith CLI/API key detection viallm.APIKeyEnvVars() - Added
just examplesrecipe to justfile
Changed
- Renamed
exec-summarytemplate tostandupfor better discoverability - Rewrote
pr-descriptiontemplate (v4) to focus on intent and decisions rather than diff review - Updated prime workflow coaching to recommend pipe-first generation defaults for subscription users
Fixed
- Fixed devblog workflow generating empty “apology” posts when no entries exist by adding entry count check before LLM invocation
- Fixed terminal colors invisible on dark backgrounds (e.g., Solarized Dark) by replacing hardcoded
lipgloss.ColorwithAdaptiveColoracross all output formatting
0.10.2 - 2026-02-26
Fixed
- Fixed
timbers primetreating stale anchor as fatal error after squash merges — now handlesErrStaleAnchorgracefully likependingand MCP already do - Improved stale anchor warning messages in CLI and MCP to be actionable: explains that squash-merged branches with timbers entries are already documented, advises against catch-up logging, and notes that the anchor self-heals on next
timbers log - Synced MCP
defaultWorkflowContentwith CLI version — MCP had a stale 4-line checklist instead of the full coaching content
Added
- Added
<stale-anchor>coaching section to prime workflow, guiding agents through the correct response when anchor commits are missing from history after squash merges
0.10.1 - 2026-02-16
Changed
- Regenerated site examples and devblog from 69-entry ledger, replacing stale content from v0.9.0
- Added provenance note to agent DX guide subtitle crediting pattern origins
- Updated landing page to v0.10.0 with terminal indentation fix
Fixed
- Removed
PostToolUsehook that fired but whose stdout was not surfaced by Claude Code —Stophook already covers the same case viatimbers pendingat session end
Technical
- Added retired event cleanup list for graceful hook removal on upgrade
0.10.0 - 2026-02-14
Added
- Added
--colorflag (never/auto/always) as a global persistent flag for terminal color control, fixing invisible text on Solarized Dark and other non-standard themes — allNewPrintercall sites plumbed throughuseColor(cmd) - Added auto-commit in
timbers log— entry files are now staged and committed atomically usinggit commit -m "timbers: document <id>" -- <path>, eliminating the gap where.timbers/*.jsonfiles were staged but never committed - Added
<content-safety>coaching section to prime workflow warning agents not to include PII, secrets, or sensitive data in ledger entries - Added marketing landing page for Hugo site homepage with dark theme, terminal-styled code blocks, and GSAP ScrollTrigger animations
Fixed
- Fixed
PostToolUsehook to read JSON from stdin instead of empty$TOOL_INPUTenvironment variable, which was always empty and made the post-commit reminder a no-op since creation - Fixed landing page terminal block alignment, continuation indentation, and quick start container width
Technical
- Added legacy hook detection and upgrade logic via
hasExactHookCommandandremoveTimbersHooksFromEventfor replacing stale hooks automatically - Added daily devblog automation at 9am UTC with workflow_dispatch chain to pages deploy
0.9.0 - 2026-02-13
Changed
- Rewrote agent coaching text with motivated rules — each instruction now explains why it exists, enabling models to generalize correctly instead of overtriggering on imperative language
- Replaced 11 instances of MUST/CRITICAL/MANDATORY with calm, motivated framing — when everything is critical, nothing is
- Replaced vague
--notesguidance (“use when you made a real choice”) with concrete 5-point trigger criteria: 2+ approaches evaluated, obvious approach rejected, surprise encountered, future lock-in, non-obvious to teammates - Structured coaching with XML section tags (
<protocol>,<why-coaching>,<notes-coaching>,<commands>) for cleaner model parsing - Deleted redundant “Core Rules (MANDATORY)” block that restated instructions already covered above
- Updated tutorial: added
decision-logto template list, recommended install script overgo install, updated model recommendations to recommendopusfor quality content
Fixed
- Fixed Hugo site
baseURLfromrbergman.github.iotogorewood.github.ioafter org migration - Fixed devblog CI workflow failing on stale
git fetch refs/notes/timbers— timbers uses.timbers/directory storage, not git notes - Fixed devblog posts not triggering site rebuild —
GITHUB_TOKENpushes don’t fireon:pushworkflows, added explicitworkflow_dispatchchain from devblog to pages workflow
Technical
- Switched devblog CI from weekly to daily schedule (9am UTC,
--since 1d) - Regenerated all site example artifacts from 55 real ledger entries with notes, replacing old 30-entry backfilled set
0.8.0 - 2026-02-13
Added
- Added
--notesflag totimbers logfor capturing deliberation context — the journey to a decision, distinct from--whywhich captures the verdict - Added notes coaching to
primeoutput with BAD/GOOD examples teaching “thinking out loud” style over mechanical summaries - Added
AgentEnvinterface with registry pattern for agent-environment-neutral integrations, enabling single-file additions for new agent environments (Gemini, Cursor, Windsurf, Codex) - Added
ClaudeEnvas reference implementation ofAgentEnv, wrapping existing Claude Code setup/teardown functions
Changed
- Refactored
init,doctor,setup, anduninstallcommands to iterateAllAgentEnvs()instead of hardcoding Claude-specific logic - Replaced
--no-claudeflag with generic--no-agent(deprecated alias preserved for backward compatibility) - Tightened
--whycoaching to explicitly differentiate from--notes: why is the verdict, notes is the journey - Preserved backward-compatible JSON keys (
claude_installed,claude_removed) while generalizing step names and flags
Fixed
- Fixed
TestCommitFilesto use an isolated temp repo instead of live HEAD, which fails on merge commits wherediff-treereturns empty - Fixed
TestRepoRootto be worktree-compatible by replacing hardcoded directory name assertion with absolute path check
Technical
- Extracted
defaultWorkflowContenttoprime_workflow.goto stay under 350-line file-length lint limit - Extracted
outputPrimeRecentWorkfromoutputPrimeHumanto stay under cognitive complexity limit of 15 - Added
AgentEnvStateslice pattern foruninstallto gather and remove all detected environments
0.7.0 - 2026-02-12
Added
- Added MCP server with 6 tools (
pending,prime,query,show,status,log) over stdio transport viatimbers servesubcommand, enabling integration with Claude Code, Cursor, Windsurf, Gemini CLI, and other MCP-compatible editors - Added
idempotentHintannotation to MCP read tools, allowing clients to optimize with caching and retry logic
Changed
- Updated
timbers onboardsnippet withcommand -vguard and install URL for graceful degradation when timbers is not installed - Replaced all git notes references across documentation with
.timbers/file-based storage
Fixed
- Filtered ledger-only commits from
GetPendingCommitsto resolve chicken-and-egg problem where.timbers/entry commits were always reported as undocumented
Technical
- Moved filter functions to
internal/ledger/for sharing between CLI and MCP server - Added
git.CommitFiles()usingdiff-treeand expandedGitOpsinterface withisLedgerOnlyCommithelper - Added
validateLogInputto catch empty strings that the MCP SDK’s required-field check does not
0.6.0 - 2026-02-11
Changed
- Pivoted storage from git notes to flat directory files (
.timbers/<id>.json), enabling atomic writes and eliminating merge conflicts in concurrent worktrees - Simplified
GitOpsinterface from 8 methods to 4 (HEAD,Log,CommitsReachableFrom,GetDiffstat) - Adopted
YYYY/MM/DDdirectory layout for.timbers/entries to scale beyond flat-directory limits at high commit volumes - Replaced
ReadDirwithWalkDirfor recursive entry discovery across date-bucketed directories - Rewrote
uninstallcommand to clean up.timbers/directory with recursive cleanup
Removed
- Removed all git notes code and references (
notes.go,notes_configured,remote_configfields,timbers notes push/fetchcommands)
Technical
- Migrated 37 existing ledger entries from git notes to
.timbers/flat files - Extracted
atomicWritehelper using temp-file-plus-rename pattern for crash-safe writes - Added 14 integration tests proving file-per-entry storage is inherently merge-safe across branches
0.5.0 - 2026-02-11
Added
- Multi-event Claude Code hooks covering the full session lifecycle:
SessionStart,PreCompact,Stop, andPostToolUse - Upgrade path that preserves existing hooks when adding new reinforcement points
Changed
- Expanded hook configuration from single
SessionStarthook to four reinforcement points, addressing 0% compliance for undocumented commits with single-hook approach - Generalized hook management via
timbersHookConfigslice withaddTimbersHooks/removeTimbersHooksfunctions
0.4.0 - 2026-02-10
Changed
- Rewrote Claude Code hook integration from shell scripts to JSON settings, fixing session-start context injection that previously had 0% adoption due to format mismatch
- Renamed
internal/promptpackage tointernal/draftto match thedraftcommand name - Updated agent DX guide with v0.3+ learnings, JSON hook format documentation, and shell-script anti-pattern section
Fixed
- Added graceful degradation when
timbersis not installed — Claude Code hook now warns with install URL instead of erroring, unblocking adoption for team members without timbers - Added
isTimbersPrimeCommand()for backward-compatible detection of both legacy shell-script and new JSON hook formats
Removed
- Removed legacy
.claude/hooks/user_prompt_submit.shshell script hook in favor of JSON settings - Removed
history/artifacts from version control
0.3.0 - 2026-02-10
Added
- Added
git.InitNotesRef()to create an empty notes namespace duringinit, soprimeworks immediately without requiring a manual first note - Added tests for the
primeguard silent-exit path anddoctor --fixauto-install path - Added TTY-aware lipgloss style sets to
doctorandinitoutput, following the existinguninstallpattern - Added
NotesRefExistsguard toprimeto prevent no-op runs in uninitialized repos
Changed
- Switched Claude hooks from global to project-level by default; global install is now behind the
--globalflag - Changed git hooks from default-on (
--no-hooksto skip) to opt-in (--hooksto enable), avoiding conflicts with tools like beads that rely onpre-commit - Renamed
warnstyle toskipininitoutput styles for consistency - Renamed
gpt-5model alias togpt - Updated
agent-dx-guidedocumentation to reflect opt-in hooks and project-level defaults
0.2.0 - 2026-02-10
Added
- Added
--tagfiltering totimbers querycommand with OR semantics, supporting both repeated flags and comma-separated values - Added
timbers changelogcommand that generates markdown changelogs from ledger entries, grouped by tag - Added
timbers draftcommand (renamed fromprompt) for document generation, with decision-log template in ADR format - Added
.env.localsupport for API keys via newinternal/envfilepackage, loaded as fallback in rootPersistentPreRunE - Added cross-platform config directory support via new
internal/configpackage withDir()function, respectingTIMBERS_CONFIG_HOME,XDG_CONFIG_HOME, and Windows AppData - Added CONFIG section to
doctorcommand with checks for config dir, env files, API keys, and templates - Added version check to
doctorthat queries GitHub releases API with graceful failure for dev builds and network errors - Added draft status hint and stderr routing for errors/warnings when stdout is piped via
output.PrinterWithStderr() - Added goreleaser configuration, GitHub Actions release workflow, and
install.shwith checksum verification - Added robustness for non-timbers git notes with
ErrNotTimbersNote, schema validation, andListEntriesWithStats() - Added Configuration section to README documenting env file resolution, API key setup, and custom templates
- Added Installation section to README with
curl|bashandgo installmethods - Added MIT LICENSE, CONTRIBUTING.md, and CI workflow for test and lint
Changed
- Renamed
promptcommand todraftand propagated rename across docs, justfile, and CI - Surfaced
draftcommand inprimeoutput under a new Generating Documents section - Rewrote README for open-source audience with badges and dogfood caveat
- Updated agent DX guide with v0.2 learnings
- Fixed org owner references from
rbergmantogorewoodin goreleaser and install script
Fixed
- Fixed global state issue in
status.goby switching to closure pattern - Fixed
amend.gooutput inconsistency - Fixed
uninstall.goicon usage - Fixed
ListTemplatesoverride bug - Fixed piped output corruption caused by errors and warnings being written to stdout instead of stderr
0.1.0 - 2026-02-10
Initial public release.
Added
- Core CLI with
log,pending,show,status,query, andexportcommands logcommand for recording work with structured what/why/how fields,--automode for extracting from commit messages,--batchmode for grouping by work-item trailerspendingcommand showing undocumented commits since last ledger entryquerycommand with--last,--since,--until,--tags, and--onelinefilteringexportcommand for JSON and Markdown output, with--tagfiltering and directory output via--outdraftcommand (document generation) rendering templates with ledger entries for LLM consumption or direct execution via--model- Built-in templates:
changelog,decision-log,devblog,exec-summary,pr-description,release-notes,sprint-report generatecommand as a composable LLM completion primitive with multi-provider support (Anthropic, OpenAI, Google, local)catchupcommand for auto-generating entries from undocumented commits using LLMs, with--batch-size,--parallel, and--dry-runsupportamendcommand for updating existing ledger entries (what/why/how/tags)primecommand for agent session context injection with--verboseflag for recent entry detailsnotessubcommands (init,push,fetch,status) for Git notes sync managementinitcommand for full setup including notes, hooks, and Claude integrationonboardcommand for generating CLAUDE.md integration snippetsdoctorcommand for health checks and diagnosticsuninstallcommand for clean removal from repos- Multi-provider LLM client supporting Anthropic, OpenAI, Google, and local (LM Studio/Ollama) models
--jsonflag on all commands for structured output--dry-runflag on all write operations- Structured error JSON with recovery hints and consistent exit codes (0/1/2/3)
- Lipgloss terminal styling with TTY-aware rendering
- Pipe-safe output: errors and warnings routed to stderr when stdout is piped
- Goreleaser configuration for cross-platform binary releases (Linux, macOS, Windows)
- Install script (
install.sh) with checksum verification - GitHub Actions workflows for releases, dev blog generation, and CI (test + lint)
- Comprehensive documentation: tutorial, agent reference, LLM commands guide, publishing artifacts guide, agent DX guide, and spec