Skip to content

Commit 4772e32

Browse files
committed
Write the 0.2.91 changelog and release notes
1 parent 57f465d commit 4772e32

2 files changed

Lines changed: 167 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

24111
The interactive TUI is now OpenTUI. The Ink renderer is deleted, not

docs/release-notes-0.2.91.md

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
## Twenty-five fixes on the OpenTUI cutover
2+
3+
Most of these had no visible symptom. Sessions that hung with no way out,
4+
memory that grew until the process slowed, and session state that quietly
5+
corrupted itself — the kind of thing you feel as "it got weird" long before
6+
you can name it.
7+
8+
### The mouse changes again
9+
10+
0.2.90 gave the mouse to your terminal so drag-select and copy worked
11+
normally. That turned out to break scrolling: with mouse reporting off, a
12+
terminal translates a wheel tick into arrow-key bytes that are
13+
indistinguishable from a real keypress, and arrows drive prompt history. So
14+
scrolling moved through your old messages instead of the chat.
15+
16+
The main session shell now takes the mouse.
17+
18+
- **The wheel scrolls the transcript.** Arrows still cycle prompt history.
19+
- **Click-to-expand on tool rows and drag-to-scroll work immediately**, with
20+
no need to press Alt+M first.
21+
- **Native drag-select in the transcript is gone.** Alt+M hands the mouse back
22+
when you want to select text, and Alt+C copies a message, tool output or
23+
diff without the mouse at all.
24+
- **The onboarding and session pickers keep native selection** either way.
25+
26+
### Sessions could hang with no way out
27+
28+
- Pressing Esc on a permission prompt abandoned the request the agent was
29+
waiting on. The session hung permanently, and Ctrl+C did not recover it —
30+
the interrupt never reached that promise. Dismissing now denies the request.
31+
- An unattended goal run could park on a permission prompt forever. The
32+
auto-deny timeout and the tool-watchdog abort were both being sent and
33+
silently discarded before they reached the prompt.
34+
- A permission prompt raised before anything else had rendered showed its
35+
title and footer but clipped its options — the layout reserved room for
36+
exactly one choice however many there were.
37+
- Messages typed while the agent was working were queued and never sent. The
38+
queue drained on a signal that fires once at shutdown rather than at the end
39+
of each turn.
40+
- A crash left the process alive with the terminal held. It now writes a crash
41+
report next to the session's own files and exits.
42+
43+
### Memory and state drifted
44+
45+
- Transcript rows were kept for the life of the process. They are bounded
46+
again, and history past 500 rows can be scrolled to instead of collapsing
47+
into an unreachable marker.
48+
- Appending a row in a long session no longer rebuilds the whole visible
49+
transcript.
50+
- A late progress write can no longer resurrect a finished session as still
51+
running.
52+
- Resuming a session no longer resets its turn count to zero or forgets which
53+
MCP servers were connected.
54+
- Quitting during an @-mention lookup or a clipboard read could write into
55+
freed memory.
56+
57+
### The context meter told you the wrong thing
58+
59+
The meter read only what the provider reported, with no fallback — so a
60+
provider that omitted usage left it frozen while the real number climbed. It
61+
now falls back to a local estimate and marks the figure approximate when it is.
62+
63+
The meter and the compaction governor were also measuring different things and
64+
could disagree by the entire size of the prompt cache. They now share one
65+
definition, the system prompt and tool schemas are counted, and compaction can
66+
actually act at the point it decides to.
67+
68+
### Input and rendering
69+
70+
- Pasting several lines into a terminal that does not negotiate bracketed
71+
paste sent each line as a separate message.
72+
- Markdown headings no longer flicker while text below them streams.
73+
- Three sub-agents dispatched at once could resolve each other's results into
74+
the wrong rows. Results are matched by call id.
75+
76+
### Sub-agents run unbounded
77+
78+
The concurrency cap is removed, along with the `maxConcurrentSubAgents`
79+
setting. An existing settings file containing it still loads. Setting it to
80+
`0` used to disable sub-agents entirely; that switch is gone with it.

0 commit comments

Comments
 (0)