Repository navigation
fix(next): stop transcript activity jolts and remove running pill #29792
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
78eb279
26f4dc2
f6cf659
2d96db1
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -3516,6 +3516,12 @@ a.cv-sha:focus-visible { | |||||
| .acpmux-row--enter { | ||||||
| animation: cv-enter var(--agent-motion-in, 180ms) var(--agent-ease-out, ease-out) both; | ||||||
| } | ||||||
| /* Live activity is absolutely placed by VirtualTranscript. Its first paint must not slide the | ||||||
| visible transcript when a subagent or command arrives; the row's measured box is already in | ||||||
| the layout, so only its ink fades in. Message rows keep their dedicated presentation motion. */ | ||||||
| .acpmux-row.acpmux-row--enter:not(.acpmux-user):not(.acpmux-assistant) { | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. P2: The Prompt for AI agents
Suggested change
|
||||||
| animation: cv-enter-fade var(--agent-motion-in, 180ms) var(--agent-ease-out, ease-out) both; | ||||||
| } | ||||||
| .acpmux-row__message-presentation { | ||||||
| transform-origin: center bottom; | ||||||
| animation: cv-message-enter var(--agent-motion-in, 180ms) var(--agent-ease-out, ease-out) both; | ||||||
|
|
||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -8,10 +8,10 @@ | |
| // (conversation/BackgroundTaskNote.tsx). | ||
| // | ||
| // Debug Settings `agentPane.debug.subagentTray` (AgentPaneTunables+SubagentTray.swift) turns it off: | ||
| // the transcript then draws the old group card where the subagents started (SubagentGroup.tsx), | ||
| // the agents pill sits above the composer (AgentsPill.tsx) and the running turn's line counts the | ||
| // work (conversation/WorkingFor.tsx). The host sends it with the theme (`subagentTray`); absent | ||
| // means on. | ||
| // the transcript then draws the old group card where the subagents started (SubagentGroup.tsx) and | ||
| // the running turn's line counts the work (conversation/WorkingFor.tsx). The separate running | ||
| // activity pill above the composer is intentionally not rendered. The host sends the setting with | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. P3: Removing the pill leaves the subagents gallery claiming that its Prompt for AI agents |
||
| // the theme (`subagentTray`); absent means on. | ||
| import { useSyncExternalStore } from "react"; | ||
| import type { AcpmuxRow } from "../model"; | ||
| import type { StartedSession } from "../started/startedSessions"; | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,3 @@ | ||
| /* Subagent groups (SubagentGroup.tsx), after the ChatGPT and T3 Code apps. Heights are fixed | ||
| and match model.ts: the group line is 48px with 8px above it, each listed subagent 48px, and | ||
| the list's last row adds 8px below. */ | ||
|
|
@@ -937,24 +937,25 @@ | |
|
|
||
| /* ---------- The tray's motion (trayMotion.tsx, Leo 2026-10-26: "following along with the exact | ||
| same things as everything else") ---------- */ | ||
| /* The card's entrance and its kept copy's exit. Shipped: the new message's own (the gallery's other | ||
| arms, trayMotion.experiment.ts, live in gallery/fixtures/trayMotionArms.css only): a live transcript row's cv-enter (conversation.css) on the same | ||
| tokens, and what leaves on --agent-motion-out. */ | ||
| /* The card's entrance and its kept copy's exit. Shipped: the new message's own opacity-only arrival | ||
| (the gallery's other arms, trayMotion.experiment.ts, live in gallery/fixtures/trayMotionArms.css | ||
| only), and what leaves on --agent-motion-out. */ | ||
| .acpmux-running-tray { | ||
| --acpmux-tray-enter: cv-enter var(--agent-motion-in, 120ms) var(--agent-ease-out, ease-out) both; | ||
| /* The tray's box is part of the transcript's dock. Its arrival must not move visible rows; the | ||
| dock and VirtualTranscript settle their measured height in one frame, then the ink fades in. */ | ||
| --acpmux-tray-enter: cv-enter-fade var(--agent-motion-in, 120ms) var(--agent-ease-out, ease-out) both; | ||
| --acpmux-tray-leave: acpmux-tray-leave var(--agent-motion-out, 80ms) var(--agent-ease-out, ease-out) both; | ||
| /* A line that joins the open list arrives as a live transcript row does (Leo 2026-10-27: "the | ||
| bottom running situation still not animating correctly"): the same cv-enter on the same tokens | ||
| as the card, not the popup's ui-enter (8px on --ui-enter-duration and --ui-enter-ease) that its | ||
| `data-enter` gives it in ui/popupSurface.css. The attribute stays: SubagentTray.tsx listens for | ||
| the line's animationend through it, and trayMotion.tsx's leaving copy holds it where it is drawn. */ | ||
| --acpmux-tray-line-enter: cv-enter var(--agent-motion-in, 120ms) var(--agent-ease-out, ease-out) both; | ||
| /* A line that joins the open list arrives as a live transcript row does: opacity only, so the | ||
| dock can reserve its measured height without moving the rows already on screen. The attribute | ||
| stays: SubagentTray.tsx listens for the line's animationend through it, and trayMotion.tsx's | ||
| leaving copy holds it where it is drawn. */ | ||
| --acpmux-tray-line-enter: cv-enter-fade var(--agent-motion-in, 120ms) var(--agent-ease-out, ease-out) both; | ||
| } | ||
| .acpmux-running-tray__list > li[data-enter] { | ||
| animation: var(--acpmux-tray-line-enter); | ||
| } | ||
| /* Reduce Motion keeps a transcript row's fade without its rise (conversation.css cv-enter-fade); the | ||
| tray marks no arrival then (SubagentTray.tsx), so this only keeps the two in step if one is marked. */ | ||
| /* Reduce Motion keeps the same opacity-only arrival (conversation.css cv-enter-fade); the tray marks | ||
| no arrival then (SubagentTray.tsx), so this only keeps the two in step if one is marked. */ | ||
| @media (prefers-reduced-motion: reduce) { | ||
| .acpmux-running-tray__list > li[data-enter] { | ||
| animation: cv-enter-fade var(--agent-motion-in, 120ms) var(--agent-ease-out, ease-out) both; | ||
|
|
@@ -1009,13 +1010,11 @@ | |
| @keyframes acpmux-tick-in { | ||
| from { | ||
| opacity: 0; | ||
| translate: 0 0.4em; | ||
| } | ||
| } | ||
| @keyframes acpmux-tick-out { | ||
| to { | ||
| opacity: 0; | ||
| translate: 0 -0.4em; | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. P3: The tick keyframes no longer translate, but the comment above Prompt for AI agents |
||
| } | ||
| } | ||
|
|
||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
P3: This comment says the running tray uses the shared entry tokens, but subagents.css overrides the tray to an opacity-only
cv-enter-fadearrival. Drop the tray from this list, or say it is handled in subagents.css.Prompt for AI agents