A new session briefly kept the previous session's mode value until the
ready event delivered the real one, so leaving an Auto-approve session
posted its banner into the fresh transcript, then a stray marker. The
notice logic now lives in a pure modeNoticeStep that is a no-op until
ready confirms which session the mode belongs to; tests replay the
reported sequence and the restored-session banner case.
Copy: "Auto-approve" sentence-cased like its sibling entries; picker
description recast as an imperative (owner wording); banner opens with
"classifies each action" to match. Stale approvalSlot comment rewritten.
The Testing chip froze forever on guarded servers — the page never refetched
after the probe settled server-side. Opener renamed to Add custom MCP server.
Browser sign-in on the registered loopback port; tokens in the SecretStore profile.
Rides the Responses provider for conversion/streaming; refresh-on-expiry and on-401.
REST: signin (background + status poll), status, signout; oauth rows in providers list.
Canvas/chrome surface tokens (content brightest, chrome tinted; dark lifts canvas).
Sweep of off-scale font sizes in styles.css and Tailwind arbitrary values.
Light-mode contrast fixes for muted/faint/warn ink.
Deep links (artifact/board chips, Access) force-show transiently without touching the pref.
Topbar Artifacts chip drops its cowork-only gate (artifacts are universal now).
Copy contents is the primary copy; path/open/reveal live in the labeled menu.
Access footer: '+ Add a source · Manage →'; mute explainer moves to the toggle tooltip.
Auto-collapse is edge-triggered now: stable callback identity + the rail notifies
only on real open/close transitions, so a manual toggle is never fought.
First session after a server breaks (or breaks differently) gets the transcript notice;
unchanged-broken stays quiet (Connectors carries it). Personas declaring the server keep
the every-session notice. Dedupe persists across restarts; recovery re-arms it.
verify() replaces cached-yes ensure for explicit tests; dead connections tear down and reconnect.
Connected rows show 'tested ⟨when⟩' so the click has a visible result.
Storage reports remaining token lifetime (issued_at persisted) and blanks stale access
tokens so the SDK refreshes before the request; discovered AS metadata is persisted and
seeded so refresh targets the real token endpoint, not <origin>/token.
Fast-fail with a shell steer before any prompt; docstring names the closed catalog
and stops citing semgrep (pip/brew, deliberately unmanaged) as an example.
More fold gains a Files section listing workspace/scratch/granted roots.
Roots open in the artifact viewer (Files breadcrumb); folder click-through was already there.