- Replaced time-based sleeps and polling loops with event-driven promise resolvers and fake timers across agent and tool tests.
- Migrated test suites to share in-memory auth storage and fixtures using lifecycle hooks.
- Updated catalog model definitions, metadata, and configurations.
clearTransientSessionUi zeroed the command count and disposed the
preview container but left the queued components and their session id in
place, so a command run after a same-session reset previewed the stale
panel alongside the new one. Clear all three together.
Follow-up to the queued-count hint: show the panel itself, not just a count.
Since 17.0.1 (d3f4830ce, fixing #4806) panel commands queued their output
until the turn settled, so /usage and /advisor status could not answer while
the agent worked. Issue #4806's reporter explicitly offered two acceptable
fixes - output once, or show it in a separate overlaying window during
streaming - and only the first was built.
The panel now renders in the anchored container above the editor, which is
outside the transcript and therefore cannot duplicate rows in native
scrollback, and the full output still mounts in the transcript at the settle.
Capped at 40% of the viewport (min 6 rows) so a tall report cannot push the
prompt off screen.
/usage, /advisor status and every other panel command already queued their
output until the agent settled, but the deferral was silent, so mid-turn the
command was indistinguishable from a dead one.
The acknowledgment reverted in d9d911a58 used showStatus, which mounts into
the transcript; any mid-turn transcript mount re-renders rows below the
growing live block and duplicates them in native scrollback (#4806/#6767).
This uses an anchored container above the editor instead, cleared and rebuilt
in place, which is the same surface the ctrl+p role-cycle track uses for
exactly that reason.