{
  "version": "0.5.0-beta.14",
  "description": "Patch follow-up to beta.13: SessionStart hooks now emit a one-shot `<first-reply-notice>` block so the first visible assistant reply announces that Trellis context has been injected (proof-of-load for noisy or summarized hosts). READY-state breadcrumbs across shared/opencode/codex/copilot hooks + `trellis/workflow.md` replace the soft \"Continue with implement or check\" wording with an explicit \"Next required action: dispatch `trellis-implement` … do NOT edit code in the main session\" directive, closing a loophole where agent-capable sessions would still hand-edit code in the main thread. Windows statusline no longer crashes on typed stdout/stderr streams: `sys.stdout.detach() + TextIOWrapper(...)` is replaced with `reconfigure(encoding='utf-8', errors='replace')`. No src/ runtime-code changes outside templates; `trellis update` is a straight content refresh.",
  "breaking": false,
  "recommendMigrate": false,
  "changelog": "**Enhancements:**\n- feat(hooks): SessionStart emits a one-shot `<first-reply-notice>` block instructing the model to open its first visible reply with one short Chinese sentence confirming Trellis context has been injected (workflow, task status, developer identity, git status, active tasks, spec index). Applied to `shared-hooks/session-start.py`, `codex/hooks/session-start.py`, `opencode/plugins/session-start.js`. Notice is explicitly one-shot — not repeated on later turns in the same session. Closes the visibility gap on hosts that collapse or summarize hook output.\n- feat(hooks): READY-state breadcrumbs now say \"Next required action: dispatch `trellis-implement` per Phase 2.1. For agent-capable platforms, do NOT edit code in the main session. After implementation, dispatch `trellis-check` per Phase 2.2 before reporting completion.\" Replaces the old \"Next: Continue with implement or check\" wording that let the main thread silently hand-edit code. Applied uniformly across `shared-hooks/session-start.py` + `inject-workflow-state.py`, `opencode/plugins/session-start.js` + `inject-workflow-state.js`, `codex/hooks/session-start.py`, `copilot/hooks/session-start.py`, and the `[workflow-state:in_progress]` block in `trellis/workflow.md`. `<ready>` directive also drops the \"ask whether to continue\" prompt in favor of \"execute its Next required action\".\n\n**Bug Fixes:**\n- fix(statusline): Windows UTF-8 setup replaces `sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding='utf-8')` with `stream.reconfigure(encoding='utf-8', errors='replace')`. The old pattern crashed on hosts that wrap stdout/stderr with typed streams (Copilot / certain Codex environments) because `detach()` is not available on typed wrappers. `reconfigure` is the supported API on Python 3.7+ text streams and is a no-op when unavailable. Fix applied to `shared-hooks/statusline.py`.\n- fix(hooks): Codex and Copilot SessionStart hooks now invoke a shared `configure_project_encoding(project_dir)` helper before emitting JSON, loading `.trellis/scripts/common.configure_encoding()` when present. Prevents stray mojibake in hook stdout on Windows Codex/Copilot runs that haven't already wrapped stdout.\n- docs(copilot): `copilot/hooks/session-start.py` docstring + `systemMessage` text now state plainly that GitHub Copilot currently ignores `sessionStart` hook output. The JSON shape is kept for protocol parity and future host support, but users should rely on `UserPromptSubmit` breadcrumbs and hook logs for Copilot today.",
  "migrations": [],
  "notes": "Pure content refresh. Existing tasks, jsonl files, and `.current-task` are preserved. After `trellis update`, fresh sessions across Claude Code / Codex / Copilot / OpenCode will prepend a one-line Chinese confirmation of SessionStart context on the first assistant reply, and the main thread will no longer be nudged to hand-edit code when a task is READY. Windows statusline stops crashing on Copilot/Codex typed stdout. No action needed beyond `trellis update`."
}
