@@ -13,6 +13,8 @@ parallel copies under `docs/` or `scripts/notes/`. At cut time: rename
1313
1414## [ Unreleased]
1515
16+ ## [ 0.3.19] - 2026-09-10
17+
1618### Security
1719
1820- Reactor-gated tool middleware still blocks policy denials. A ` decide() ` deny
@@ -22,6 +24,12 @@ parallel copies under `docs/` or `scripts/notes/`. At cut time: rename
2224 not a second copy of ` env.authorize ` : it consumes the prior verdict when the
2325 same call (id, name, and arguments) is cached, and decides on a cache miss.
2426
27+ ### Added
28+
29+ - ` run_shell ` can return immediately with a ` shell_id ` when ` background ` is
30+ true, so long commands do not hold the parent turn. Collect or cancel later
31+ with ` shell_collect ` .
32+
2533### Fixed
2634
2735- The slash menu exposes ` /mcp ` only. ` /mcps ` is no longer an alias for
@@ -56,13 +64,24 @@ parallel copies under `docs/` or `scripts/notes/`. At cut time: rename
5664- Leftover exec dispose is reported as a failed run (stderr + status failed), and
5765 parent toolset dispose finishes remaining workers and posix teardown before
5866 surfacing leftover-child failure.
67+ - MCP OAuth tokens persist after browser auth across overlapping session
68+ writes. Sibling ` resetAuthorization ` does not wipe tokens another session
69+ just saved.
70+ - MCP authorization recovery no longer loops reconnects after a failed or
71+ timed-out browser re-auth.
72+ - OAuth callback servers bind ephemeral ports and re-read disk state across
73+ MCP sessions so stale ports and in-memory token copies cannot collide.
74+ - Rate-limit retries honor the Retry-After header and the terminal message
75+ names the wait.
76+ - Parked director questions wake the parent so ` ask_director ` does not stall
77+ behind an idle orchestrator.
78+ - Occupancy resumes the parent when the fleet goes dry with open tasks.
5979
6080### Changed
6181
6282- oxfmt formats the tree and oxlint is the lint gate. Prettier and ESLint are
6383 gone. Dummy CI job names ` prettier ` and ` eslint ` stay for protect-main.
6484 Empty functions and non-null assertions are errors.
65-
6685- Skywalker may spawn one successor with a changed brief after a failed or
6786 incomplete-report fleet worker. A parent-initiated interrupt
6887 (` stop_reason: interrupted ` ) is a resumable pause — ` resume_agent ` or
@@ -71,6 +90,11 @@ parallel copies under `docs/` or `scripts/notes/`. At cut time: rename
7190 stay refused at the prompt / spawn-handoff layer. ` wait_agents ` JSON
7291 includes ` stop_reason ` so interrupt vs cancelled vs incomplete-report stay
7392 distinct. This reverses the 0.3.15 fail-path idle, not operator-cancel.
93+ - Session git and workflow lifecycle run outside the TUI. The shell renders
94+ state and forwards commands; the native workflow host owns child execution.
95+ - The test suite drops content-pin and cosmetic assertions, closes coverage
96+ gaps on load-bearing paths, and CI shards the same path union for faster
97+ feedback.
7498
7599## [ 0.3.18] - 2026-09-08
76100
0 commit comments