stage batch #4584+#4583 (rodboev): scroll re-pin read-position fix + mobile horizontal-pan fix (#4668)
#4584 (fixes #4295): scroll re-pin requires deliberate downward intent (deltaY<-30 unpin threshold, re-pin only if not user-unpinned OR bottomDistance<=80, reset counter) so reading mid-stream isn't hijacked back to bottom. ui.js only + 5 scroll-regression tests (4 existing assertions adjusted, all green; new test_issue4295_scroll_pin_reentry). #4583 (fixes #4553): mobile transcript overflow-x:hidden + max-width:100% + word-break so wide content can't pan sideways. style.css only + own test. Disjoint files. 32 scroll-family tests pass. Co-authored-by: nesquena-hermes <agent@nesquena-hermes> Co-authored-by: rodboev <rodboev@users.noreply.github.com>
This commit is contained in:
9 files changed
+234
-14
No files matched your search
@@ -106,7 +106,7 @@ def test_wheel_touch_upward_intent_unpins_immediately_inside_messages():
|
||||
fn_end = UI_JS.index("function _recentNonMessageScrollIntent", fn_start)
|
||||
fn = UI_JS[fn_start:fn_end]
|
||||
assert "_messageUserUnpinned=true" in fn.replace(" ", "")
|
||||
assert "e.deltaY<0" in fn and "e.type==='touchmove'" in fn
|
||||
assert "e.deltaY< -30" in fn and "e.type==='touchmove'" in fn
|
||||
|
||||
|
||||
def test_downward_path_preserves_macos_momentum_hysteresis():
|
||||
@@ -126,7 +126,7 @@ def test_repin_threshold_is_still_250px():
|
||||
stay. Direction detection is the new lever, not threshold relaxation.
|
||||
"""
|
||||
block = _scroll_listener_block()
|
||||
assert "clientHeight<250" in block, (
|
||||
assert "clientHeight<250" in block or "bottomDistance<250" in block, (
|
||||
"The 250px re-pin dead zone must remain — #1360 / #677 require it "
|
||||
"for macOS small-window + trackpad momentum cases. The #1731 fix "
|
||||
"uses direction detection, not threshold changes."
|
||||
|
||||
Reference in new issue
Block a user