Bug Fixes
Template hash portability
Template hash storage now uses POSIX path keys and LF-normalized content hashes. The.trellis/.template-hashes.json file now uses a versioned envelope:
This fixes Windows checkout cases where backslash hash keys or CRLF line endings made unchanged templates look modified.
task.py archive input contract
task.py archive now accepts the same task inputs as the other task-directory commands.
Previously,
archive was the only dir-style task command that used slug-only lookup. Passing .trellis/tasks/<slug> failed with Task not found even though other task commands accepted that form.
Existing Claude Code statusLine installs are preserved
Beta.15 stopped installing Claude CodestatusLine for new projects. That default is unchanged.
The upgrade path is now more conservative:
This means beta.16 no longer treats Claude Code statusLine as a cleanup target. Users who no longer want it can delete the file and settings entry manually.
Shared-hook cleanup still applies to orphan platform files
The non-Claudestatusline.py cleanup entries remain hash-verified safe deletes. Those platforms have no statusLine event, so the files were never invoked:
.cursor/hooks/statusline.py.codex/hooks/statusline.py.gemini/hooks/statusline.py.qoder/hooks/statusline.py.github/copilot/hooks/statusline.py.codebuddy/hooks/statusline.py.factory/hooks/statusline.py.kiro/hooks/statusline.py
Upgrade
Existing projects:--migrate flag is required for this patch.