Private Message Chat Scrolling Issue #110

Open
opened 2026-07-20 16:19:16 +02:00 by retoor · 21 comments
Owner

Summary

Private Message Chat Scrolling Issue

Steps to Reproduce

In the Private Message chat page, when you try to scroll up to see older messages, it doesn't work properly. It keeps sticking to the bottom. Only when you scroll very rapidly, like with a mouse wheel, very fast, or with a touch gesture very far and fast, then it works.

If this is intended, it's very confusing. Users don't know what they need to do and it looks and feels broken. And of course, this is extremely bad for accessibility.

Expected Behaviour

Not provided.

Actual Behaviour

Not provided.

Environment

Not provided.


Reported by Lensflare via DevPlace.

## Summary Private Message Chat Scrolling Issue ## Steps to Reproduce In the Private Message chat page, when you try to scroll up to see older messages, it doesn't work properly. It keeps sticking to the bottom. Only when you scroll very rapidly, like with a mouse wheel, very fast, or with a touch gesture very far and fast, then it works. If this is intended, it's very confusing. Users don't know what they need to do and it looks and feels broken. And of course, this is extremely bad for accessibility. ## Expected Behaviour Not provided. ## Actual Behaviour Not provided. ## Environment Not provided. --- *Reported by **Lensflare** via DevPlace.*
Collaborator

I am picking this ticket up now.

First I will bring up an isolated workspace with a fresh checkout and investigate whether the ticket matches the current state of the code before planning any change. I will announce every step here before I take it.

I am picking this ticket up now. First I will bring up an isolated workspace with a fresh checkout and investigate whether the ticket matches the current state of the code before planning any change. I will announce every step here before I take it.
Collaborator

Starting research round 1 of at most 5.

I am now reading the relevant source, tests, and prior work in the live checkout to verify the ticket and gather the context needed for a concrete plan. This can take a while; I will post periodic progress updates until it completes.

Starting research round 1 of at most 5. I am now reading the relevant source, tests, and prior work in the live checkout to verify the ticket and gather the context needed for a concrete plan. This can take a while; I will post periodic progress updates until it completes.
Collaborator

Internal infrastructure issue during research

The LLM backend is not responding correctly: exit code 1: LLM error: All LLM backends permanently failed (no recoverable backend left): molodetz: molodetz permanent SSE failure: stream failed (status 402); deepseek: DEEPSEEK_API_KEY not set. This is an infrastructure problem, not a problem with this ticket. I will retry automatically (up to 3 times) and report the result here.

Internal infrastructure issue during research The LLM backend is not responding correctly: exit code 1: LLM error: All LLM backends permanently failed (no recoverable backend left): molodetz: molodetz permanent SSE failure: stream failed (status 402); deepseek: DEEPSEEK_API_KEY not set. This is an infrastructure problem, not a problem with this ticket. I will retry automatically (up to 3 times) and report the result here.
Collaborator

I need input to continue.

What I tried: Attempted research 3 times.
What I found: Every attempt failed for internal infrastructure reasons unrelated to this ticket (latest: exit code 1: LLM error: All LLM backends permanently failed (no recoverable backend left): molodetz: molodetz permanent SSE failure: stream failed (status 402); deepseek: DEEPSEEK_API_KEY not set). This is not a judgment about the ticket itself.

The system needs operator attention before I can research this properly. Reply here once the infrastructure is healthy and I will resume from where I left off.

I need input to continue. What I tried: Attempted research 3 times. What I found: Every attempt failed for internal infrastructure reasons unrelated to this ticket (latest: exit code 1: LLM error: All LLM backends permanently failed (no recoverable backend left): molodetz: molodetz permanent SSE failure: stream failed (status 402); deepseek: DEEPSEEK_API_KEY not set). This is not a judgment about the ticket itself. The system needs operator attention before I can research this properly. Reply here once the infrastructure is healthy and I will resume from where I left off.
Collaborator

I am picking this ticket up now.

First I will bring up an isolated workspace with a fresh checkout and investigate whether the ticket matches the current state of the code before planning any change. I will announce every step here before I take it.

I am picking this ticket up now. First I will bring up an isolated workspace with a fresh checkout and investigate whether the ticket matches the current state of the code before planning any change. I will announce every step here before I take it.
Collaborator

I need input to continue.

What I tried: Retried this step 3 times.
What I found: Each attempt failed for internal reasons unrelated to this ticket. The details are in the operator's logs; this is not a judgment about the ticket.

The system needs operator attention before I can continue. Reply here once things are healthy and I will resume from where I left off.

I need input to continue. What I tried: Retried this step 3 times. What I found: Each attempt failed for internal reasons unrelated to this ticket. The details are in the operator's logs; this is not a judgment about the ticket. The system needs operator attention before I can continue. Reply here once things are healthy and I will resume from where I left off.
Collaborator

I am picking this ticket up now.

First I will bring up an isolated workspace with a fresh checkout and investigate whether the ticket matches the current state of the code before planning any change. I will announce every step here before I take it.

I am picking this ticket up now. First I will bring up an isolated workspace with a fresh checkout and investigate whether the ticket matches the current state of the code before planning any change. I will announce every step here before I take it.
Collaborator

Starting research round 1 of at most 5.

I am now reading the relevant source, tests, and prior work in the live checkout to verify the ticket and gather the context needed for a concrete plan. This can take a while; I will post periodic progress updates until it completes.

Starting research round 1 of at most 5. I am now reading the relevant source, tests, and prior work in the live checkout to verify the ticket and gather the context needed for a concrete plan. This can take a while; I will post periodic progress updates until it completes.
Collaborator

Investigation of the reported bug in the source and tests confirmed that the 100px auto-scroll margin (AUTO_SCROLL_MARGIN_PX = 100) causes atBottom to remain true during slow or limited scrolling, which triggers _stabilizeScroll() and snaps the viewport to the bottom. This matches the ticket description exactly, including the accessibility concern. No further investigation is required.

The findings also indicate a straightforward fix: reducing the margin to 10–20px or to 0. The decision has been made to proceed with implementing this change.

The next step is drafting a concrete implementation plan.

Investigation of the reported bug in the source and tests confirmed that the 100px auto-scroll margin (`AUTO_SCROLL_MARGIN_PX = 100`) causes `atBottom` to remain `true` during slow or limited scrolling, which triggers `_stabilizeScroll()` and snaps the viewport to the bottom. This matches the ticket description exactly, including the accessibility concern. No further investigation is required. The findings also indicate a straightforward fix: reducing the margin to 10–20px or to 0. The decision has been made to proceed with implementing this change. The next step is drafting a concrete implementation plan.
Collaborator

I am drafting the implementation plan now.

The research confirmed the ticket; I am turning the findings into a concrete, verifiable plan.

I am drafting the implementation plan now. The research confirmed the ticket; I am turning the findings into a concrete, verifiable plan.
Collaborator

Drafted an implementation plan based on the investigation findings. The plan changes AUTO_SCROLL_MARGIN_PX from 100 to 0 in AppChat.js to prevent premature snap-back when the user scrolls up to read older messages. The remaining logic remains unchanged, and the change aligns the outer margin with the existing inner stabilization check.

Handing the plan to the execution agent for implementation and verification.

Drafted an implementation plan based on the investigation findings. The plan changes `AUTO_SCROLL_MARGIN_PX` from `100` to `0` in `AppChat.js` to prevent premature snap-back when the user scrolls up to read older messages. The remaining logic remains unchanged, and the change aligns the outer margin with the existing inner stabilization check. Handing the plan to the execution agent for implementation and verification.
Collaborator

The full, verbatim implementation plan is attached: plan-ticket-110.md

The full, verbatim implementation plan is attached: [plan-ticket-110.md](https://retoor.molodetz.nl/attachments/770a876a-6fd1-4014-b107-963767ffe632)
Collaborator

Starting implementation attempt 1 of at most 5.

I am executing the plan inside this ticket's isolated workspace. This can take a while; I will post periodic progress updates until it completes.

Starting implementation attempt 1 of at most 5. I am executing the plan inside this ticket's isolated workspace. This can take a while; I will post periodic progress updates until it completes.
Collaborator

Progress update: implementation attempt 1 is still running (10 minutes elapsed). I have not stalled; I will report the result here the moment this step completes.

Progress update: implementation attempt 1 is still running (10 minutes elapsed). I have not stalled; I will report the result here the moment this step completes.
Collaborator

Progress update: implementation attempt 1 is still running (20 minutes elapsed). I have not stalled; I will report the result here the moment this step completes.

Progress update: implementation attempt 1 is still running (20 minutes elapsed). I have not stalled; I will report the result here the moment this step completes.
Collaborator

Internal infrastructure issue during execution

The LLM backend is not responding correctly: the run timed out. This is an infrastructure problem, not a problem with this ticket or the plan. I will retry automatically (up to 3 times) and report the result here.

Internal infrastructure issue during execution The LLM backend is not responding correctly: the run timed out. This is an infrastructure problem, not a problem with this ticket or the plan. I will retry automatically (up to 3 times) and report the result here.
Collaborator

Progress update: implementation attempt 1 is still running (10 minutes elapsed). I have not stalled; I will report the result here the moment this step completes.

Progress update: implementation attempt 1 is still running (10 minutes elapsed). I have not stalled; I will report the result here the moment this step completes.
Collaborator

Implementation attempt 1 finished; I am verifying it now.

Running the project's own build, test, and lint commands against the change.

Implementation attempt 1 finished; I am verifying it now. Running the project's own build, test, and lint commands against the change.
Collaborator

The implementation was completed on the first attempt, and all configured build, test, and lint checks passed successfully. No issues were encountered during validation.

Next, I will commit the change, push a dedicated branch, and open a pull request for review.

The implementation was completed on the first attempt, and all configured build, test, and lint checks passed successfully. No issues were encountered during validation. Next, I will commit the change, push a dedicated branch, and open a pull request for review.
Collaborator

I am delivering the change now.

Committing the verified change, pushing branch typosaurus/ticket-110, and opening a pull request.

I am delivering the change now. Committing the verified change, pushing branch `typosaurus/ticket-110`, and opening a pull request.
typosaurus referenced this issue from a commit 2026-07-23 05:46:29 +02:00
Collaborator

The implementation was committed, pushed to branch typosaurus/ticket-110, and the pull request opened at #131. This was done because the change passed all project checks.

The pull request is now being monitored for review, merge, or further feedback.

The implementation was committed, pushed to branch `typosaurus/ticket-110`, and the pull request opened at https://retoor.molodetz.nl/retoor/devplacepy/pulls/131. This was done because the change passed all project checks. The pull request is now being monitored for review, merge, or further feedback.
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: retoor/devplacepy#110
No description provided.