Documentation Index
Fetch the complete documentation index at: https://docs.trytrellis.app/llms.txt
Use this file to discover all available pages before exploring further.
Beta.16 is a compatibility patch for template hash portability, task archive inputs, and Claude Code statusLine upgrades after beta.15.
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:
{
"__version": 2,
"hashes": {
".trellis/scripts/task.py": "<sha256>"
}
}
| Area | beta.16 behavior |
|---|
| Hash keys | Stored with / separators on every host |
| Hash input | CRLF content is normalized to LF before SHA256 |
| Legacy flat hash file | Discarded and regenerated from installed templates |
| Directory safety checks | path.relative() output is normalized before template/hash lookups |
| OpenCode templates | Collector stores .opencode/* keys in POSIX form |
This fixes Windows checkout cases where backslash hash keys or CRLF line endings made unchanged templates look modified.
task.py archive now accepts the same task inputs as the other task-directory commands.
| Input form | Example |
|---|
| Bare task name | python3 .trellis/scripts/task.py archive 04-27-example |
| Relative task path | python3 .trellis/scripts/task.py archive .trellis/tasks/04-27-example |
| Absolute task path | python3 .trellis/scripts/task.py archive /repo/.trellis/tasks/04-27-example |
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 Code statusLine for new projects. That default is unchanged.
The upgrade path is now more conservative:
| Case | beta.16 behavior |
|---|
| New project | Trellis does not create .claude/hooks/statusline.py and does not add statusLine to .claude/settings.json |
Existing project with .claude/hooks/statusline.py | trellis update preserves the file |
Existing project with .claude/settings.json statusLine | trellis update carries that entry into the updated settings file |
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.
The non-Claude statusline.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:
No --migrate flag is required for this patch.