Catch up on replies missed while the app was in the background

The reply catch-up read the page's stale face, so after an interim
message it stopped while the thinking row stayed up. It now reads the
live face, checks at once when the page comes back into view or online,
and replays the bot's face and task too, so a reply that ended silently
can't leave the bot working on screen.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
2026-10-28 04:14:13 +01:00
co-authored by Claude Opus 5.5
parent 4061a317bc
commit e51f2aa9a4
5 changed files with 74 additions and 25 deletions
@@ -197,11 +197,13 @@ export default function Conversation() {
const last_thread_message = thread_messages[thread_messages.length - 1];
/**
* A session moved on from gets no reply here: the bot answered in the
* new one.
* new one. The face is the live one, as the thinking row reads it: the
* page's is from when it rendered, so after an interim message the
* catch-up would stop while the row stays up.
*/
const awaiting_reply =
!moved_to_session_id &&
isAwaitingReply({ last_message: last_thread_message, face: bot?.face });
isAwaitingReply({ last_message: last_thread_message, face: live_bot?.face });
const reply_progress = useReplyProgress({
bot_id: bot?.id || 0,