Summary
Viewer/UX polish deferred from SPEC-6-4 (PR #82):
- Full-message overlay rebuild churn during live appends — while the full-message overlay is open on a live timeline, every live append triggers
renderShell(), which rebuilds the overlay stack (src/panel/fleet-panel.ts live-subscription callback). Content comes from the stable this.fullMessageEvent, so behavior is correct — but an early-return in the render path when fullMessageEvent is set (and its event is unchanged) avoids the churn.
- Widget conversation tail (original SPEC-6-4 brainstorm garnish) — the above-editor widget could show the last N lines of the selected running run's conversation, consuming the same public fine-tier events (
fleet:child:* / RunLog.subscribe). Only worth doing when a consumer asks; the live overlay covers the need today.
Both are additive polish; no contract impact.
Surfaced during the SPEC-6-4 SDD run (dogfooding).
Summary
Viewer/UX polish deferred from SPEC-6-4 (PR #82):
renderShell(), which rebuilds the overlay stack (src/panel/fleet-panel.ts live-subscription callback). Content comes from the stablethis.fullMessageEvent, so behavior is correct — but an early-return in the render path whenfullMessageEventis set (and its event is unchanged) avoids the churn.fleet:child:*/RunLog.subscribe). Only worth doing when a consumer asks; the live overlay covers the need today.Both are additive polish; no contract impact.
Surfaced during the SPEC-6-4 SDD run (dogfooding).