Make the whole thinking experience feel alive - #23
Conversation
The orb becomes one continuous character: a running tool line now shows the same liquid orb (small) where the anonymous step spinner was, so when the thinking line yields to a running step the orb reads as moving into the work rather than vanishing. The unused step-spinner CSS goes. Around it, five new thinking-surface behaviors: - Tab status (lib/tab-status.ts): a pulsing orb-blue favicon dot and "●" title prefix while a turn runs; if the answer lands in a hidden tab the dot becomes a green check and the title says "✓" until the person next looks. No notification permission involved. - Turn receipt: a long turn no longer collapses into nothing — a quiet "Worked for 47s · 3 steps" line takes the thinking line's slot until the next turn starts. Turns under 10s earn no receipt. - Settle sweep: the answer that just finished gets a one-time soft band of orb-blue light sweeping across it, marking the done moment. - Live stream tail: while scrolled up mid-turn, the scroll-to-end pill quotes the trailing words of the answer currently streaming, so the conversation stays visibly alive from anywhere in history. - Minimap: conversations with six or more of the person's messages get a dot rail along the right edge — hover for the first words, click to jump — sampled down for very long histories, hidden on small screens. The thinking line also enters and exits through AnimatePresence instead of popping between frames. All movement is transform/opacity, and reduced motion is respected on every new piece. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PKhN2rgAuEbGHyiLvpPY52
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 86d11a4ada
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| const answerId = latestAssistantRef.current; | ||
| if (answerId === undefined) return; | ||
| setSettlingId(answerId); |
There was a problem hiding this comment.
Only settle an answer created by the completed turn
When a turn fails, is stopped, or otherwise ends without new assistant text after an earlier successful exchange, latestAssistantRef.current still points to the previous answer, so the falling busy edge applies the new completion sweep to that historical message. Capture the assistant ID at the rising edge and only set settlingId when a different answer appeared during this turn.
Useful? React with 👍 / 👎.
| setTitle("✓"); | ||
| setFavicon(drawDot(DONE_GREEN, "#15803d", true)); |
There was a problem hiding this comment.
Do not show the completion check for failed turns
When a turn rejects, is stopped, or ends without an answer while the tab is hidden, active still transitions from true to false and runs this cleanup, which unconditionally displays a green check and ✓ title. The tab therefore advertises that an answer arrived even though returning to the conversation shows a stopped or failed turn; the hook needs an outcome signal or should reserve the completion check for confirmed successful answers.
Useful? React with 👍 / 👎.
Summary
Scope
Frontend presentation only. Ten app files changed; no server, authentication, policy, database, migration, secret, or deployment configuration changes.
Validation
git diff --checkpassed