feelsfast.fyi
Scenarios

Agentic workflow

Long-running agents — Deep Research, Devin, Cursor agent runs, browse-and-summarise tools, multi-step refactors — push past the 10-second wall Nielsen 1993 Nielsen 1993 placed at the edge of attention. By minute two the user is in another tab, has switched contexts, has half-forgotten what they asked for. The perception layer's job is no longer to compress the wait — the wait is the work — but to keep the agent legible to a user who is no longer looking.

The two perception levers at this scale are (1) phase-level transparency that lets a returning user understand what the agent has done and where it currently is, and (2) cancellation that does not feel like flushing a hostage. Both are absent from the naive "Running agent…" spinner. Both are central to the tuned design.

This scenario is in the 10 S+ band Miller 1968 Miller 1968 placed past the unit-task limit. The Card-Moran-Newell Card, Moran & Newell 1983 ~100 ms perceptual frame is the budget for each individual phase-state transition — when "Synthesise findings" turns from pending to running, that change has to land within a perceptual frame of the previous phase finishing. Myers 1985 Myers 1985 covers the per-phase determinate progress where the agent has measurable units (sources read, citations verified). Harrison et al. 2010 Harrison et al. 2010 covers the perceptual speed-up the per-phase bar can claim from a backwards-decelerating animation.

Agentic workflow

A multi-step agent — plan, research, synthesise, verify, write — runs for ~20 s. Naive: "Running agent…" for the duration. Tuned: timeline of phases with current step highlighted, sub-step progress within each phase, and cancellation always available.

10 S+

Off

Press Run to start

On

Press Run to start

What is happening in the demo

A simulated agent runs five phases — Plan, Research sources, Synthesise findings, Verify citations, Write report — at gamma-jittered durations totalling ~20 seconds. Two of the phases (Research, Verify) have measurable unit counts (12 sources, 8 citations); the other three are duration-only. Click Run agent on either side.

The naive side disables the button, shows a generic Loader2 spinner with "Running agent…" text for the full duration, then renders "Report ready." There is no signal of what phase the agent is in, no per-phase progress, no cancellation. A user who comes back after 30 seconds has no way to tell the agent stalled vs. finished — the spinner looks the same in both cases.

The tuned side renders each phase as its own row. The currently-running phase has a primary-coloured spinner, a primary-coloured border, and (where the phase has units) a determinate sub-step bar with a "7 / 12 sources" counter. Phases already done have a green check, the final unit count, and a neutral border. Phases not yet started are dimmed circles. A cancel button appears next to Run agent while the agent is running. Cancellation discards partial work — the message is honest about what happens.

The unit-counts on the determinate phases turn the wait into understood work. "Reading 7 of 12 sources" tells the user the agent is two thirds of the way through the research phase; the user can decide whether to keep watching or come back later. That decision is the real perception payoff at this scale — the user gets agency over their own attention.

What to tune

  1. Pre-action — submit button echo within ~50 ms; thinking state covers the gap to the first phase row.
  2. First 1 s — the plan or first phase row appears. No spinner; the timeline is the affordance.
  3. 1 – 10 s — each phase row streams in as it activates. Determinate sub-step counter where units exist ("7 of 12 sources").
  4. Past 10 s — phase labels carry the engagement; no filler copy. Cancellation always visible with honest partial-work disposition.
  5. Completion / hand-off — explicit "Report ready" affordance. For multi-minute agents, pair with background sync + notification so the user can leave the tab.

When perceived performance hurts you here

The phase labels lie if they do not match what the agent is actually doing. An agent that surfaces "Verifying citations" while it is silently re-running the entire research phase shows the user the wrong abstraction — and unlike the tool-execution scenario where every tool call is a real boundary, agentic workflows often have the same model context spanning several phases and the model deciding internally what to do next. The phase decomposition has to come from the agent's plan, not from a fixed UI scaffold.

The other failure mode is the over-decomposed timeline. Twenty rows of micro-phases for a thirty-second run is unreadable; the user gets the same opacity as a single spinner because they cannot parse the rows fast enough to track which is current. Five-to-seven phases is the comfortable upper bound; past that, group phases into sections.

Cancellation honesty is the load-bearing trust mechanism. If "Cancel" actually means "stop after the current phase," say that. If partial work is preserved (the research phase results survive even though the verify phase was cut short), say that. If the agent's tool calls are irreversible — files written to disk, transactions committed — surface the irreversibility before cancellation, not after.

Background hand-off is the right escape past two minutes. A "Notify me when done" pill that converts the foreground task into a notification subscription is the equivalent of the email-when-ready pattern from data-export-download. Past the threshold where the user genuinely cannot keep watching, the perception layer's job is to gracefully release their attention, not to demand it.

Accessibility

  1. aria-live="polite" on the timeline so each phase transition is announced to screen readers.
  2. role="progressbar" with aria-valuenow / aria-valuemax on the running phase's determinate bar.
  3. aria-busy on the running row, removed when it completes — same shape as a single determinate progress bar but per-phase.
  4. Cancellation must be keyboard-accessible and announced when activated. The "Stopping after current phase…" message should be role="status".
  5. prefers-reduced-motion — the spinner becomes a static dot, the bar's width transition becomes instantaneous, the cross-row state changes happen without animation. The information remains; only the motion is suppressed.
  6. Long-running agent + tab-blur — pair with a Web Notification (with explicit user permission) for users who navigate away. The notification text should mirror the final phase's status: "Report ready" not "Process completed."

References

References · 5

  1. Miller 1968

    Miller, R. B. (1968). Response time in man-computer conversational transactions. Proceedings of the AFIPS Fall Joint Computer Conference, 33(I), 267–277. The 10 S+ wall multi-step agent execution pushes past — beyond which engagement, not raw progress, is the perception lever.

  2. Nielsen 1993

    Nielsen, J. (1993). Response Times: The 3 Important Limits. From Usability Engineering, Ch. 5. Morgan Kaufmann. The 10-second wall — past it, the user's attention is no longer reliably on the task and a hand-off (notification, background work) is the right register.

  3. Myers 1985

    Myers, B. A. (1985). The importance of percent-done progress indicators for computer-human interfaces. Proceedings of CHI '85, 11–17. ~86 % preferred a percent-done progress bar — directly applicable to per-phase determinate sub-step progress where the agent has measurable units.

  4. Harrison et al. 2010

    Harrison, C., Yeo, Z., & Hudson, S. E. (2010). Faster progress bars: Manipulating perceived duration with visual augmentations. Proceedings of CHI '10, 1545–1548. ~11–12 % perceived speed-up from animation pattern — the per-phase bar can use the same backwards-decelerating treatment.

  5. Card, Moran & Newell 1983

    Card, S. K., Moran, T. P., & Newell, A. (1983). The Psychology of Human-Computer Interaction. Lawrence Erlbaum. The ~100 ms perceptual frame each phase-state transition needs to clear so the timeline reads as live work.