What happened?
After sending a user message in a long session, the conversation view jumped from the latest message area back to the top of the rendered timeline.
The session export shows this happened in the same session, immediately after the final user submit entered a pending question tool state. This is not a session switch and there is no evidence that MessageTimeline remounted.
Which area seems affected?
App flow or product behavior
How much does this affect you?
Breaks an important workflow
Steps to reproduce
Current evidence comes from a session export rather than a minimal local repro:
- Open a long session in PawWork.
- Stay at the bottom of the conversation.
- Send a user message that causes the assistant to enter a pending
question tool state.
- Observe the conversation viewport jump near the top of the rendered timeline instead of staying near the latest message/question dock.
Observed export:
/Users/yuhan/Downloads/pawwork-session-gentle-nebula-2026-05-06-07-35-42.json
- Root session:
ses_203e86404ffeSJtKVY6OheN8GG
- Final user message:
msg_dfc36b1cf001UGFyOVLOSqUUFL
- Pending assistant question tool message:
msg_dfc36b222001GWxk721JNaGzTT
What did you expect to happen?
After submit, the conversation should remain anchored at the latest message/question state so the user can answer the follow-up prompt without losing their place.
PawWork version
local export build, prod channel
OS version
Darwin 25.3.0 (runtime_context.platform=darwin)
Can you reproduce it again?
Only once so far
Diagnostics
Renderer diagnostics captured the jump clearly:
2026-05-06T07:35:36.186Z session.action.submit prompt_length=104 trace_id=msg_dfc36b1cf001UGFyOVLOSqUUFL
2026-05-06T07:35:36.209Z session.scroll.sample scroll_top=14327 scroll_height=15232 client_height=905 distance_from_bottom=0 user_scrolled=false visible_last_message_id=msg_dfc36b1cf001UGFyOVLOSqUUFL
2026-05-06T07:35:36.268Z session.view.state message_count=47 route_session_id=ses_203e86404ffeSJtKVY6OheN8GG visible_session_id=ses_203e86404ffeSJtKVY6OheN8GG timeline_session_id=ses_203e86404ffeSJtKVY6OheN8GG
2026-05-06T07:35:37.287Z session.scroll.sample scroll_top=5 scroll_height=15232 client_height=905 distance_from_bottom=14322 user_scrolled=true visible_last_message_id=msg_dfc36b1cf001UGFyOVLOSqUUFL
Additional notes:
route_session_id, visible_session_id, and timeline_session_id all remained ses_203e86404ffeSJtKVY6OheN8GG.
- The export contains no
session.timeline.mount or session.timeline.unmount events around the jump.
- The last assistant message contains a pending
question tool part with empty input/raw payload.
- Likely affected frontend surfaces to inspect first:
packages/app/src/pages/session/use-session-scroll-dock.ts
packages/app/src/pages/session/use-session-history-window.ts
packages/app/src/pages/session/use-session-keyboard-focus.ts
packages/app/src/pages/session/composer/session-question-dock.tsx
Suggested fix boundary:
- Add an E2E regression for submit -> pending question dock -> timeline remains near bottom.
- Improve renderer diagnostics so submit-near-bottom -> near-top jumps are detected even when the later scroll sample is marked
user_scrolled=true.
- Fix the focus/scroll routing around the question dock rather than changing model or harness behavior.
What happened?
After sending a user message in a long session, the conversation view jumped from the latest message area back to the top of the rendered timeline.
The session export shows this happened in the same session, immediately after the final user submit entered a pending
questiontool state. This is not a session switch and there is no evidence thatMessageTimelineremounted.Which area seems affected?
App flow or product behavior
How much does this affect you?
Breaks an important workflow
Steps to reproduce
Current evidence comes from a session export rather than a minimal local repro:
questiontool state.Observed export:
/Users/yuhan/Downloads/pawwork-session-gentle-nebula-2026-05-06-07-35-42.jsonses_203e86404ffeSJtKVY6OheN8GGmsg_dfc36b1cf001UGFyOVLOSqUUFLmsg_dfc36b222001GWxk721JNaGzTTWhat did you expect to happen?
After submit, the conversation should remain anchored at the latest message/question state so the user can answer the follow-up prompt without losing their place.
PawWork version
localexport build,prodchannelOS version
Darwin
25.3.0(runtime_context.platform=darwin)Can you reproduce it again?
Only once so far
Diagnostics
Renderer diagnostics captured the jump clearly:
Additional notes:
route_session_id,visible_session_id, andtimeline_session_idall remainedses_203e86404ffeSJtKVY6OheN8GG.session.timeline.mountorsession.timeline.unmountevents around the jump.questiontool part with empty input/raw payload.packages/app/src/pages/session/use-session-scroll-dock.tspackages/app/src/pages/session/use-session-history-window.tspackages/app/src/pages/session/use-session-keyboard-focus.tspackages/app/src/pages/session/composer/session-question-dock.tsxSuggested fix boundary:
user_scrolled=true.