@@ -19,6 +19,93 @@ Format loosely follows [Keep a Changelog](https://keepachangelog.com/). Versions
1919- Live OTEL collector verify (Phoenix or equivalent) against the merged sink.
2020- Dogfood session migrate: new session under ` ~/.corbits/projects ` , one legacy ` .agent-state ` migrate, write under state root still asks.
2121
22+ ## [ 0.2.91] - 2026-08-07
23+
24+ A bug-fix release on the OpenTUI cutover. Most of these faults had no visible
25+ symptom: sessions that hung with no way out, memory that grew without bound,
26+ and session state that quietly corrupted itself.
27+
28+ ** One behaviour reverses from 0.2.90.** That release gave the mouse to your
29+ terminal so drag-select and copy worked normally. Scrolling then landed in the
30+ prompt instead of the chat, because a terminal with mouse reporting off
31+ translates a wheel tick into arrow-key bytes indistinguishable from a real
32+ keypress — and arrows drive prompt history. The main session shell now takes
33+ the mouse: the wheel scrolls the transcript, arrows still cycle prompt history,
34+ and click-to-expand on tool rows and drag-to-scroll work without pressing
35+ Alt+M first. The cost is native drag-select in the transcript; Alt+M hands the
36+ mouse back when you want to select text, and Alt+C copies a message, tool
37+ output or diff without the mouse at all. The onboarding and session pickers
38+ keep native selection either way.
39+
40+ ### Fixed
41+
42+ ** Sessions could hang with no way out.**
43+
44+ - Pressing Esc on a permission or operator prompt abandoned the request the
45+ agent was waiting on. The session hung permanently and Ctrl+C did not
46+ recover it — the interrupt path never reached that promise. Dismissing now
47+ resolves it as a denial. (CL-5569)
48+ - Goal-mode auto-deny and the tool-watchdog abort were both inert. The
49+ producer sent a timeout and an abort signal; a locally redeclared event type
50+ in the renderer silently dropped both, so an unattended run could park on a
51+ permission prompt forever. (CL-5568)
52+ - A permission or operator prompt raised before any transcript row existed
53+ rendered its title and footer but clipped its choices, because the layout
54+ asked for room for exactly one option regardless of how many there were.
55+ (CL-5560)
56+ - Messages typed while the agent was working were queued and never sent. The
57+ drain waited on a signal that fires once at shutdown rather than at each
58+ turn boundary. (CL-5563)
59+ - A detached throw left the process alive with the event loop held open. Real
60+ ` uncaughtException ` and ` unhandledRejection ` handlers now write a crash
61+ report and exit non-zero. (CL-5565)
62+
63+ ** Memory and state grew or drifted without bound.**
64+
65+ - Transcript rows were retained for the life of the process; a 600-row cap was
66+ lost during the cutover and never restored. (CL-5551)
67+ - History past 500 rows could not be reached by scrolling, and every appended
68+ row rebuilt the whole painted window. (CL-5553)
69+ - Concurrent writes to a session's ` run.json ` are serialized per session, so a
70+ late progress snapshot can no longer resurrect a finished run as ` running ` .
71+ (CL-5567)
72+ - Resuming a session reset ` turnsUsed ` to zero and dropped its connected MCP
73+ servers. (CL-5566)
74+ - Quitting during an @-mention lookup or a clipboard read could write into
75+ freed renderer memory. (CL-5554)
76+
77+ ** The context meter lied, and compaction could not act.**
78+
79+ - The meter read only provider-reported usage with no fallback, so a provider
80+ that omitted usage left it frozen while real occupancy climbed. It now falls
81+ back to a local estimate and marks the number as approximate. (CL-5564)
82+ - The meter and the compaction governor computed context size from different
83+ fields, so they could disagree by the full size of the prompt cache.
84+ - The system prompt and tool schemas are counted, having previously been
85+ omitted from the estimate entirely.
86+ - Compaction armed at a turn count where the compactor was guaranteed to do
87+ nothing, then re-armed, spinning without progress. Both now derive their
88+ floor from one definition.
89+
90+ ** Input and rendering.**
91+
92+ - Pasting several lines into a terminal that does not negotiate bracketed
93+ paste sent each line as a separate message. (CL-5541)
94+ - Markdown headings no longer flicker while the text below them streams.
95+ (CL-5559)
96+ - Parallel ` task ` dispatches paired results to calls by tool name, so three
97+ concurrent sub-agents could resolve the wrong rows and append orphans. They
98+ are keyed by call id. (CL-5562)
99+ - The onboarding and session pickers no longer turn on mouse reporting, so
100+ drag-select works there. (CL-5540)
101+
102+ ### Changed
103+
104+ - The sub-agent concurrency cap is removed. Sub-agents run unbounded, and the
105+ ` maxConcurrentSubAgents ` setting no longer exists — an existing settings
106+ file containing it still loads. Setting it to ` 0 ` previously disabled
107+ sub-agents entirely; that capability is gone with it. (CL-5575)
108+
22109## [ 0.2.90] - 2026-08-07
23110
24111The interactive TUI is now OpenTUI. The Ink renderer is deleted, not
0 commit comments