Skip to content

fix(flow-chat): reconcile pinned viewport reservations - #1878

Merged
wsp1911 merged 1 commit into
GCWing:mainfrom
wsp1911:dev2
Jul 30, 2026
Merged

fix(flow-chat): reconcile pinned viewport reservations#1878
wsp1911 merged 1 commit into
GCWing:mainfrom
wsp1911:dev2

Conversation

@wsp1911

@wsp1911 wsp1911 commented Jul 30, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Replace broad collapse-reservation retention with explicit settlement strategies based on the semantic viewport owner.
  • Reconcile provisional collapse space into a freshly measured sticky-pin reservation instead of accumulating full-card estimates.
  • Enter tail-follow immediately when measured content growth exhausts the remaining pin floor.
  • Preserve the quiet-settlement behavior for sub-threshold growth and defer threshold settlement while a collapse transaction is active.
  • Add log-derived regression coverage and document the updated scroll-stability invariants.

Type and Areas

Type:

  • Regression fix
  • UI/UX
  • Test
  • Docs

Areas:

  • Web UI
  • Flow Chat

Motivation / Impact

Pinned turns could remain outside tail-follow after output had reached the viewport bottom because provisional collapse space accumulated or sticky-pin growth repeatedly reset a 300 ms quiet timer.

This change assigns reservation settlement to the active viewport owner and treats complete pin-floor consumption as an immediate handoff boundary. Users should enter continuous tail-follow when output reaches the bottom without waiting for the stream to end or seeing a delayed catch-up jump.

Verification

  • pnpm run type-check:web - passed
  • pnpm run lint:web - passed
  • pnpm --dir src/web-ui run test:run src/flow_chat/components/modern/VirtualMessageList.session-boundary.test.tsx src/flow_chat/components/modern/FlowChatViewportCoordinator.test.ts - 58 tests passed
  • git diff --check - passed
  • Post-fix runtime retest is pending.

Reviewer Notes

  • The strict handoff condition remains unchanged: pin and collapse reservations must both be empty with no active collapse intent.
  • The existing Write card lifecycle behavior is unchanged.
  • FlowChat diagnostics remain behind the existing diagnostics switch.
  • The settlement strategy and log-derived geometry cases are covered by focused tests.

Checklist

  • This PR is focused and does not include secrets, temporary prompts, generated scratch files, or unrelated artifacts.
  • Relevant verification is recorded above, or skipped checks are explained.
  • User-facing strings, docs, and locales are updated where applicable.

- settle collapse compensation according to semantic viewport ownership
- hand off sticky pins once measured growth exhausts the remaining floor
- add regression coverage for reservation settlement and tail handoff
@wsp1911
wsp1911 merged commit 44cffc9 into GCWing:main Jul 30, 2026
7 checks passed
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