Files
NotAlexNoyleandClaude Fable 5 d989032a94 Scroll: overscan paint, honest geometry, hit-test, and doc->viewport input mapping
The grey-strips/janky/skipping scroll family, fixed end to end and verified on
device (user: "scrolling feels good now"). The full record is
context/impl/impl-scroll-overscan-2026-08-02.md; the load-bearing pieces:

- libxul export jihad_offscreen_render_region (patch 0005): renders an absolute
  document region straight into the shared buffer (not bounded by the widget
  DrawTarget), alpha forced opaque. The daemon paints viewport + direction-biased
  overscan (<=2048 rows, the SGX540 texture cap) with the REAL painted geometry
  stamped in the header; the adapter needed no changes.
- Strips render doc-relative; the visible band overlays viewport-relative so
  position:fixed/sticky/caret stay correct; the band rows are never rendered twice.
- Input drain maps the adapter's DOCUMENT coords to viewport coords once, for
  click/mouse/contextmenu/touch; measured wrong on device (contextmenu at doc
  y=1488 with scrollY=909). asyncCmdHitTest is now implemented (the adapter GATES
  every long-press on that round-trip; as a stub it silently killed them all).
- msgScrolledTo echoes that merely confirm adapter scrolls are suppressed (the
  adapter overwrites its own pan from them); content width is floored at the
  window width so near-1 fit-zooms become exact identity blits; repaints are
  coverage-aware with a pan-cadence bound for fixed content; the scroll-settle
  gate is gone (inverted logic once geometry became honest).
- Round-trip tests: real 4x segment, tall banded page, scrolled-offset phase,
  alpha gate (OVERSCAN + SCROLL-OVERSCAN PASS, Xvfb and no-X).
- EngineHost: the T-067 widget probe skips on the GTK build without a usable
  display (its drag-service GetService segfaulted the no-X daemon).
- JihadBrowserServer also carries the (off-by-default) $JIHAD_INJECT self-drive
  channel that made the autonomous device testing above possible.

Adversarially reviewed by Opus (replacing Codex per project direction): 16
findings, 3 blockers, all fixed pre-deploy and re-verified.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TzkQtdXpngYfZ2yG1XDfkB
2026-08-02 15:32:43 -04:00
..