@@ -11,7 +11,7 @@ matching `## [X.Y.Z]` section (plus install instructions). Do not maintain
1111parallel copies under ` docs/ ` or ` scripts/notes/ ` . At cut time: rename
1212` ## [Unreleased] ` to ` ## [X.Y.Z] - YYYY-MM-DD ` , then run the release script.
1313
14- ## [ Unreleased ]
14+ ## [ 0.2.104 ] - 2026-08-23
1515
1616### Sub-agents
1717
@@ -29,12 +29,81 @@ parallel copies under `docs/` or `scripts/notes/`. At cut time: rename
2929 unchanged. Assistant mid-turn text continues to grow the open streaming
3030 assistant row from ` inference.text.delta ` .
3131
32- ### Fixed
32+ - ** Live agents sit in a chrome strip above the prompt.** Running and
33+ finished workers no longer compete with the transcript for vertical
34+ space; the strip stays parked over the input, finished rows linger
35+ briefly, then it clears when idle. Transcript task-row rewrites pause
36+ while the strip owns live status.
37+
38+ ### Tools
39+
40+ - ** ` edit_file ` filler args no longer count as a second mode.** Models pad
41+ the unused mode with ` start_line: 0 ` / ` end_line: 0 ` / ` old_string: "" ` .
42+ Those now count as absent, so substring vs line-range is chosen from the
43+ real fields. Mixed-mode calls still reject, and the error names exactly
44+ which fields to drop so a retry can differ.
45+
46+ - ** ` task ` rejections name only the missing field.** A typed brief that
47+ omitted ` prompt ` used to be told both ` description ` and ` prompt ` were
48+ required, so the model retried the identical call. The error now names
49+ the actual gap and echoes the valid field back.
50+
51+ - ** Truncation no longer promises a retrievable remainder.** Tool results
52+ cut at 80,000 chars now say the discarded tail is gone and re-running
53+ yields the same cut, instead of pointing at a ` tool-output:/// ` blob that
54+ only held the truncated text.
55+
56+ ### Sub-agents
57+
58+ - ** Parents and the TUI see why a child stopped.** Forced stops (repetition,
59+ stall, deadline, turn-budget, no-progress, operator cancel, thrash) carry
60+ a machine-readable ` Stopped: ` line on the report and a reason on the
61+ child's session. Fleet rows announce ` <lane> stopped — <reason> ` instead
62+ of a silent done/cancelled.
63+
64+ - ** Repetition detection covers short-phrase, counter, emoji, and
65+ zero-width floods.** The periodic window floor drops to 8 chars (with a
66+ higher repeat bar so healthy lists stay quiet). A digit-folded pass
67+ catches incrementing counters and fence/emoji floods; a contentless-growth
68+ check flags streams of invisibles that used to normalize to healthy text.
69+
70+ ### Providers
71+
72+ - ** Cross-provider replay no longer 400s the rest of the session.**
73+ Switching model/provider mid-session used to replay foreign thinking
74+ signatures and output-only blocks the new adapter cannot encode. Every
75+ adapter now sanitizes persisted history before ` buildRequest ` : drop
76+ unmappable blocks, strip foreign signatures, and synthesize dangling
77+ ` tool_result ` s.
78+
79+ - ** Grok and OpenAI Responses set ` prompt_cache_key ` per session.** Codex
80+ already did; xAI and Go Responses did not, so Grok threads cached at
81+ ~ 66–72% versus Codex's 92%+. Parent and each sub-agent thread get a
82+ stable, distinct key.
83+
84+ - ** TUI first inference waits for Codex instructions refresh.** The TUI
85+ used to fire the refresh un-awaited, so turn 2's request prefix could
86+ change under a live cache key and force a full miss. Delivery now waits
87+ for that promise (non-Codex profiles skip it; a failed refresh still
88+ falls back to cached/bundled copy).
3389
3490- ** Codex Responses no longer sends ` reasoning.summary: "auto" ` .** ChatGPT
3591 Codex rejects that value for gpt-5.6-terra / gpt-5.3-codex family models
3692 (HTTP 400 at turn 0). The adapter now sends ` { effort } ` only, matching
37- Codex CLI catalog ` default_reasoning_summary=none ` (CL-6893).
93+ Codex CLI catalog ` default_reasoning_summary=none ` .
94+
95+ - ** Codex native tools proxy onto Corbits tools.** ` apply_patch ` ,
96+ ` exec_command ` , and ` update_plan ` from Codex-family models land on the
97+ real file, shell, and ` manage_tasks ` handlers instead of being rejected
98+ as unknown names.
99+
100+ ### CI
101+
102+ - ** Required checks are ` prettier ` , ` eslint ` , ` typecheck ` , and
103+ ` build-and-test ` .** The old combined ` lint ` job (cached, continue-on-error)
104+ never reported the status contexts the main ruleset required, so every PR
105+ sat blocked. Lint result caches are gone in CI; local ` bun run lint ` still
106+ uses ` --cache ` .
38107
39108## [ 0.2.103] - 2026-08-23
40109
0 commit comments