Skip to content

fix: chat scroll re-stick, text-block joins, topic_worthy rehydrate - #42

Merged
Robbertvermeulen merged 3 commits into
mainfrom
fix/chat-stream-follow-and-block-join
Aug 19, 2026
Merged

Robbertvermeulen merged 3 commits into
mainfrom
fix/chat-stream-follow-and-block-join

Conversation

@Robbertvermeulen

Copy link
Copy Markdown
Contributor

Persona-loop checkpoint, three commits (head f349055):

  • Scroll-freeze was a real user bug: scrolling up once set stick-to-bottom false and nothing ever re-engaged it, freezing every later turn. Sending a message / starting a new conversation now forces re-stick.
  • Text-block join: multiple assistant text blocks concatenated without separator ('…in the meantime.I've stopped.'); blocks now join with a blank line.
  • topic_worthy survives refresh: the 'Turn into topic' affordance is restored from history on rehydrate (was a dead end straight after the crash-recovery path).

assets/dist rebuilt and committed. JS tests green.

🤖 Generated with Claude Code

Robbertvermeulen and others added 3 commits August 19, 2026 11:35
… blank line

Two persona-loop findings:
- Stick-to-bottom died mid-turn: the scroll event of our own programmatic
  bottom-scroll fires after paint, so a fast delta rendering in between made
  the recompute read the grown height as "user scrolled away" and follow
  froze for the rest of the turn. Programmatic scrolls are now counted and
  their events consumed (reduceScrollEvent); only user scrolls recompute,
  and a wheel gesture clears the queue so the user can always scroll away.
- assistant_text blocks joined mid-sentence in reply/finalText; they now
  join with a blank line (matches the hub's new streamed separator).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A stale unstick (user scrolled up during an earlier turn — or a scroll event
race in environments where programmatic scrolls fire no events) silently
froze follow for every later turn: nothing ever set stick back to true.
Sending a message or starting a new topic is an unambiguous 'show me the
reply', so both now force {pending: 0, stick: true}.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The hub's topic_worthy signal is a recorded chat event, but the client kept
it only in memory: after a refresh the bar vanished while the agent's reply
still invited clicking it — a dead end (persona-loop run 4). Rehydrate now
restores it, unless a later topic_drafted superseded it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@Robbertvermeulen
Robbertvermeulen merged commit 33903be into main Aug 19, 2026
2 checks passed
@Robbertvermeulen
Robbertvermeulen deleted the fix/chat-stream-follow-and-block-join branch August 19, 2026 12:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant