1 min lesson
Inline diffs and accept/reject
Use "Reject deserves as much design care as accept" to describe the practical rule.
Step 1 of 3
Inline diffs and accept/rejectmake AI edits legible and reversible
Legibility and reversibility are the two rows of the figure that an inline diff lives on. Reject deserves as much design care as accept. If dismissing an AI suggestion is slow or leaves the buffer altered, users stop trusting the feature and stop inviting the AI in at all.
Learn more
Full explanation
Tab / ghost-text prediction
Tab / ghost-text predictionlatency, dismissal and trust
Ghost text is a high-frequency interaction. It fires on nearly every keystroke, so its rules are unforgiving. It must be visually distinct from real code, it must never block typing and it must vanish the instant the user types something else. Non-blocking and calibration are rows of the figure above; these two are the rest.
- Distinct
- Dimmed/styled so it never reads as committed code
- Instant dismissal
- Keep typing and it's gone. No modal, no confirm
Agent and chat UIsstreaming, tool calls, interruption, context
An agent runs over time and takes actions, which is a harder UI problem than a chat bubble. The user needs to follow what it's doing, trust the steps and stop it the moment it goes wrong.
- Streaming so the user sees thinking arrive token by token. Silence reads as a hang, even when work is happening.
- Tool-call surfaces that make each action visible: which file it read, what command it ran, what it's about to change.
Interruption and visible context are rows 2 and 4 of the figure above.