Gentle Shell v3.3.0 runs reviewer roles in-process through Pi's live model registry, adds a fullscreen live header with an event-driven rail and column-aligned Agents widget, and introduces an opt-in double-Esc model for aborting the prompt and clearing the draft. It also fixes live orchestrator switching on profile apply, the Agents card's per-column degradation, the fullscreen editor's reserved footer row, changes-overlay branch labelling, and enforces ODD's delegated multi-file write rule at runtime. The npm package remains gentle-pi.
Provenance
- Previous stable:
v3.2.1→dce8746852788837fb69545d9fbb5552f07cb307 - Release target:
v3.3.0→7e80e337c4b1cc503d90ff9566b35b2cea45b0ce - Release validation: run 35440120487 passed package verification and published to npm with provenance.
- Pinned Gentle AI:
v3.4.0(82a6de96); review provider contract1.2.0remains unchanged.
What's new
Reviewer roles run in-process through the live model registry (#1214)
The four review lenses, the refuter, and the targeted validator now run in-process through Pi's live model registry instead of a spawned pi --print --no-extensions child process. This fixes Gentleman-Programming/gentle-ai#4611 on the host side: the spawned child could not see providers registered by Pi extensions and stripped env-provided API keys, and the GENTLE_PI_REVIEW_RELAY_EXTENSIONS allowlist needed per-provider manual configuration. Any provider the interactive Pi session can use — core, models.json, extension-registered, or OAuth — can now review. Pairs with Gentle AI v3.4.0 (Gentleman-Programming/gentle-ai#4784), which this release pins, so the status/v9 role submission path is live with the package-local runtime; lenses use the same in-process completion.
Included work: #1214 (issue gentle-ai#4611).
Fullscreen live header, event-driven rail, column-aligned Agents widget (#1194)
A live header row now sits above the fullscreen transcript and rail: brand, cwd/branch/dirty state, and model · effort · profile on the left; context, cost, and usage gauges right-aligned, degrading gracefully under narrow widths. The rail (Project, Changes, TODO) is now event-driven, so a header tick no longer re-renders the whole rail. Agents left the rail in every mode; the above-editor widget lays out model · effort | tokens | cost | elapsed as fixed right-aligned columns so fields line up across rows. Adds an alt+u usage shortcut and a clickable header usage segment, and gives INFO-toned cards a rose frame.
Included work: #1194 (issue #1193).
Double Esc to abort the prompt, and to clear the idle draft (opt-in) (#1222, #1225)
Following Claude Code's Esc model: with double-esc-cancel enabled (off by default, global preference), the first Esc while the prompt is working shows an esc again to cancel hint, and a second Esc within one second falls through to Pi's own abort. Once an Esc aborts a running turn, queued steer/follow-up messages are reconstructed from Pi's own restore and sent as the next turn once the aborted run settles, instead of being dumped back into the editor or dropped. With the prompt idle and a non-empty draft, a first Esc shows esc again to clear and a confirming second Esc within Pi's own 500ms window clears the draft into history; editing in between cancels the pending clear.
Included work: #1222 (issue #1163), #1225 (issue #1218).
Gentle AI v3.4.0 pin
Package-local Gentle AI runtime v3.4.0 on the /v3 module, with signed release archives for Darwin and Linux and a SumDB-verified source build for Windows. See Pinned runtime below for details.
Included work: 1230 (issue #1228).
What was fixed
Live orchestrator switch on profile apply; Agents card degrades per column (#1221)
Applying a profile persisted its orchestrator to Pi's settings.json but did not update the running session, so the session kept its old model while the confirmation note said otherwise. Applying a profile now also resolves the entry through the model registry and switches the live session's model and thinking level, reporting what the session actually did (switched, unavailable, or unauthenticated) without undoing the persisted default. Separately, the Agents card's column layout degraded all metadata columns at once when a single long model id didn't fit; it now drops one column at a time (task text, then model · effort, then tokens, then cost), keeping elapsed as the last column standing.
Included work: #1221 (issues #1143, #1220).
Guard the live thinking-level switch; name the columnar flag (#1224)
Follow-up to #1221: the thinking-level switch is now guarded the same way as the model switch, so a level the switched model rejects keeps the model switch and the persisted default instead of failing the whole apply. The Agents widget's fullMetrics flag was renamed to columnar to describe what it actually controls.
Included work: #1224 (issue #1223).
Reclaim Pi's reserved footer row under the fullscreen editor (#1217)
pi-tui's VStack.render padded a minSize: 1 footer entry into the dock height before layout nodes were consulted, leaving one blank row under the fullscreen editor. While the sidebar is active, the dock is now re-hosted in a VStack with that footer entry at minSize: 0; the no-sidebar path is untouched.
Included work: #1217 (issue #1216).
Label changes-overlay trees with each root's branch (#1206)
/gentle:changes read every tree header as detached once more than one root was open, because it never resolved branches. Each root's HEAD is now resolved once while the overlay is open and used to label its tree: branch name, no commits yet for an unborn branch, or detached for a real detached HEAD. The overlay still runs no status, diff, numstat, or worktree scan.
Included work: #1206 (issue #1205).
Header alignment, usage overlay clicks, agents history, changes labelling, unified hover (#1197)
The fullscreen header now stops at the rail card's right border with a blank row separating it from the first rail card. Usage overlay footer hints are clickable, and a failing refresh no longer escapes as an unhandled rejection. Finished subagents now stay in /gentle:agents as session history (active first, then newest-ended, capped at 200 per session), restored when the same session is reopened. Dropped subagent mutations now name the guard that dropped them. Git's embedded-repository marker no longer counts as a changed file in the Changes overlay. Hover feedback is now shared across the agents panel, usage overlay hints, changes modal rows, and the todo card's collapse control.
Included work: #1197 (issue #1196).
Enforce delegated multi-file writes at runtime (#1200)
ODD's mandatory multi-file delegation rule is now enforced at runtime instead of relying only on prompt compliance: the primary agent may mutate one canonical repository file directly, but a second distinct non-trivial file is refused before mutation and redirected to subagent_run. The gate is provider-independent, exempts delegated child agents and canonical odd/tasks/** tracking writes, and handles symlinked working directories and absolute targets.
Included work: #1200 (issue #1199).
Resolve advisory findings from the #1197/#1206 native reviews (#1215)
Six follow-up commits addressing advisory findings from the native reviews of #1197 and #1206: every hoverable surface now paints through a shared helper; usage overlay hint actions are derived once instead of tracked with a lockstep index; dropped-attribution notes now name the real cause (evidence-missing, evidence-root-mismatch, evidence-path-mismatch, evidence-path-unreadable); history-restore tests poll instead of sleeping; and a root whose HEAD cannot be read is now labelled unknown in the changes overlay, reserving detached for a real detached HEAD.
Included work: #1215 (issue #1213).
Pinned runtime
The package-local runtime is now Gentle AI v3.4.0 on the /v3 module, with signed release archives for Darwin and Linux and the SumDB-verified source build for Windows. The review provider contract stays at 1.2.0. A new NATIVE_CLI_CONTRACTS row was added for 3.4.0, along with the capabilities v2.6 identity. gentle-ai review assess now reports review_due and the exact next transition.
Breaking changes
None. Existing ODD, SDD, review, and package interfaces remain compatible.
Upgrade
pi install npm:gentle-pi@3.3.0Restart Pi, then run gentle-ai sync so the managed orchestrator assets match the pinned runtime.
Numbers
20 non-merge commits, 12 merged pull requests, and 1 unique GitHub PR author since v3.2.1.
Verification
pnpm testgreen on macOS (2880 tests, 2842 pass, 38 skipped, 0 fail); Windows-only suites run in CI.- Package verification (168 files, 69 byte-pinned contract artifacts for the v3.4.0 runtime),
npm pack --dry-run(521 files), and the packed-runner E2E against the published v3.4.0 release assets, digest-verified. - The pin bump went through the native review (high, four lenses, lineage
review-549e197faaddc927) and was approved with eight advisory findings, none blocking; the negotiation fixture for capabilitiesv2.6is a follow-up.
Install
pi install npm:gentle-pi@3.3.0Package: https://www.npmjs.com/package/gentle-pi
Full changelog: v3.2.1...v3.3.0