Skip to content

fix: harden streaming scroll unpin behavior#1377

Closed
NocGeek wants to merge 1 commit intonesquena:masterfrom
NocGeek:fix/streaming-scroll-unpin-hardening
Closed

fix: harden streaming scroll unpin behavior#1377
NocGeek wants to merge 1 commit intonesquena:masterfrom
NocGeek:fix/streaming-scroll-unpin-hardening

Conversation

@NocGeek
Copy link
Copy Markdown
Contributor

@NocGeek NocGeek commented May 1, 2026

Summary

Tests

  • node --check static/ui.js
  • python -m pytest tests/test_issue1360_streaming_scroll_hardening.py tests/test_issue677.py tests/test_mobile_layout.py::test_messages_touch_scrolling_hints_present tests/test_embedded_workspace_terminal.py

Local result: 29 passed

@nesquena-hermes
Copy link
Copy Markdown
Collaborator

Thanks for the regression fix for #1360.

Cross-checked against current static/ui.js and static/style.css:

  • The dead-zone widening is a real change — static/ui.js line ~836 currently uses scrollHeight - scrollTop - clientHeight < 150, so bumping the re-pin threshold to 250px is a single-site edit on the right code path.
  • overscroll-anchor: none does not appear anywhere in static/style.css today, so adding it on the transcript scroller is net-new (not a duplicate or override of an existing rule).
  • Routing queue-card paths through scrollIfPinned() instead of scrollToBottom() matches the pattern already established at the streaming-update site (~line 2987), where the codebase already gates on S.activeStreamId for exactly this reason. Good to see the same logic extended to the queue-card insert path.

A couple of things worth manually confirming before merge:

  1. Firefox / Safari behavioroverscroll-anchor is well supported in Chromium, Firefox supports it, but it is worth a quick sanity check that scroll-anchoring being off does not introduce visible jank when tool-call cards render on slower devices (the dead-zone widening should compensate).
  2. 250px on tall windows — the dead zone is now ~25% of a small mac window but only ~15% of a 1440px-tall desktop. If anyone runs into "the page never re-pins after scrolling up a little", that is the knob to revisit.

The new tests/test_issue1360_streaming_scroll_hardening.py plus the existing tests/test_issue677.py coverage looks like the right surface area. Will defer final approve/merge to maintainer review since this touches user-visible scroll behavior.

@nesquena-hermes
Copy link
Copy Markdown
Collaborator

Released as part of v0.50.252 — thanks @NocGeek!

This PR was merged into the v0.50.252 release batch via #1387 alongside 5 other contributor fixes. The full CHANGELOG entry is at https://github.com/nesquena/hermes-webui/blob/master/CHANGELOG.md.

Pre-release verification: 3507 pytest tests pass, full QA harness pass (20 structural + 11 browser API + 23 Agent Browser CDP), Opus mentor APPROVED with two non-blocking follow-ups applied during the release batch (force=True on agent redactor, debug-log on profile fallback).

Closing this PR — the change is live on master.

pull Bot pushed a commit to JamesWilliam1977/hermes-webui that referenced this pull request May 1, 2026
GeoffBao pushed a commit to GeoffBao/hermes-webui that referenced this pull request May 1, 2026
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.

2 participants