NODE · node_browser18 Oct 2026In main · unreleased
The research agent’s newest step is revealed in fourteen even jumps instead of fading in, so the pane reads like a terminal.
NODE’s research agent works in the background, and its list of steps is the only sign of what it is doing. renderAgent() cleared the list and rebuilt it on every new step, so every line was redrawn each time and nothing marked which line was new. The whole pane changed in order to say one thing, and the one thing you wanted to read — the newest line — arrived without announcement.
renderAgent() keeps the lines it has already drawn and appends only the new ones. Each new line is revealed with clip-path: inset(0 100% 0 0) to inset(0 0 0 0) over 160ms with steps(14, end). Fourteen even jumps rather than a smooth wipe: a fade says something appeared, and the steps say this is being written. Only the newest line moves, so the earlier steps stay readable while new ones arrive. Starting a new run clears the list; reopening the pane on a finished run shows its lines with no typing at all. Under reduced motion each new line fades in over 120ms instead.
Recorded from the approval prototype, not the running app. The prototype runs the same CSS on copies of NODE’s own controls; app recordings replace these when they are made.
The system allows four exceptions, and clip-path is the one written for this: it may animate only for the type-out of a single line of text. Nothing else on the line moves.
steps(14, end) has no curve at all — fourteen flat jumps and a stop. The point is a terminal writing, not a thing arriving.
The whole line is revealed in 160ms, short enough that it never holds up reading. Earlier lines stay still while new ones arrive.
Each new line fades in whole over 120ms with no reveal. A line already drawn never types again, so reopening the pane on a finished run is silent either way.
A line long enough to wrap onto two rows is revealed left to right on both rows at once. It still reads as one line being written, but it is not what a terminal would do.