fix(cmux-next): steady streaming bottom and thumb motion

Merged
TE
19d ago
+585-106

What changed

  • Streaming replies stay planted inside a small 4 px resting zone, so token-sized layout changes do not make the transcript or scrollbar twitch.
  • Scrollbar thumb size changes ease smoothly, while pointer dragging stays immediate.
  • The reasoning slider uses the same smooth desktop-style motion and a softer left-anchored entrance.
  • Gallery coverage includes deterministic streaming-follow, thumb, and slider probes, with opt-in video capture for visual review.

Validation

  • bun test test/motion-evidence.test.ts
  • bunx vp fmt --check
  • Portable webview checks passed; native compilation and browser dogfood remain CI/fleet-owned.

View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.


Summary by cubic

Steadies streaming replies so the transcript and scrollbar no longer twitch with every token, and adds deterministic motion evidence probes for streaming follow, thumb resizing, and the reasoning slider.

Streaming and scroll

  • Bottom-following uses a 4 px deadband and disables overflow-anchor so token-sized layout changes do not shake the view.
  • The bottom-follow target accounts for the thread's top padding, so the latest row sits flush with the viewport bottom.
  • The scrollbar thumb eases through size changes but keeps pointer dragging immediate.
  • The rebase drops the Chief Dock experiment and turnActionsPlacement debug setting to keep the PR focused on streaming motion.

Motion evidence

  • Gallery plays sample real animation frames and fail on a visible bottom gap, unsettled motion, or direction flapping.
  • Opt-in --record-video adds a per-case WebM player to the matrix index without changing screenshots or gating.
  • scripts/cmux-next/motion-evidence.py wraps the frame-pacing golden judge and writes a motion-evidence.json manifest.
  • The reasoning slider uses a left-anchored entrance that respects reduced motion.