feat(glance): morph a live agent node into its terminal for check-in (#2401) - #2402
Merged
Conversation
…2401) Clicking a live agent node in Glance now grows it IN PLACE into that agent's live CLI session — the real PTY stream + a "message the agent" input — and morphs back on close. The graph stays the whole UI; a node just gains a second state (no new panel/tab/dock). - GlanceStreamMorph: a portal overlay that morphs from the clicked node's on-screen rect (`[data-glance-node]`) to an expanded panel, animating GEOMETRY not scale so the terminal text stays crisp. Esc / scrim / the dock ✕ morphs it back. Reduced motion → instant. Closing unmounts TerminalView, which keeps its PTY alive (cleanup is kill-free), so the agent is untouched. - Reuses GlanceChatDock verbatim as the panel body (its TerminalView + the send input); made the dock fill its container (the panel owns the frame) — replaces the fixed bottom stream dock. - GlanceWorkspace: clicking a LIVE agent opens the morph; a non-live agent still selects → inspector. - Tests: morph hosts the agent's terminal + morphs-back-then-onClose (✕ / Esc). No resume (live output only) and no on/off/delete/modify controls yet — follow-ups. Closes #2401
…point terminal mock - glance.css: the drill transition moved to the shared .graph-drill-anim (shared/ui/layouts/graphCanvas.css, #2418) and GlanceWorkspace already uses it — dropped this file's now-dead .glance-drill-anim copy; kept the #2401 morph CSS. - GlanceStreamMorph.test.tsx: the dock renders TerminalSlot since the single Terminal Host landed (#2378/#2399), so the old TerminalView mock intercepted nothing — mock the slot, mirroring the dock's test. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Clicking a live agent node in Glance grows it in place into that agent's live CLI session — the real PTY stream + a "message the agent" input — and morphs back on close. The graph stays the whole UI; a node just gains a second state (no new panel/tab/dock). Replaces the fixed bottom stream dock (#2369).
Changes
GlanceStreamMorph(new): a portal overlay that morphs from the clicked node's on-screen rect ([data-glance-node]) to an expanded panel, animating geometry (left/top/width/height), never a scale — so the terminal text stays crisp. Esc / scrim / the dock ✕ morphs it back; reduced-motion → instant swap.GlanceChatDockverbatim as the panel body (itsTerminalView+ the send input); made the dock fill its container (the panel owns the frame).GlanceCanvas:data-glance-nodemarks each node as the morph origin.GlanceWorkspace: a live agent click opens the morph (check-in); a non-live agent still selects → inspector.onCloseon ✕ / Esc.Safe: closing unmounts
TerminalView, whose cleanup is kill-free (PTY kept alive), so open/close never touches the running agent.Live output only (no resume) and no on/off/delete/modify node controls yet — follow-ups. Typecheck clean, lint 0 errors.
Closes #2401
🤖 Generated with Claude Code