Repository navigation
linux: work-362 - #1017
linux: work-362#1017
Conversation
Agent-Team: linux Worker: codex
|
TRIAGE @5b1972c2 auto: mechanical rules met (fizzy-* app author, names work#362, 85 non-test lines <= 400, no risky path). Labelled |
PM note: how this PR will be handledWhat it is for: linux: work-362 Rules that apply: none special. Things to watch (checked by rule):
What happens next:
A living status comment below is kept current. Nothing here is a merge decision. |
Where this PR standsStage: PM's turn What the PM needs before approving (ticks as it is met; the full CI runs only at the end, after the reviews are clean):
Reviews at the current commit (
Updated 2026-10-29 19:07 UTC by the PM. This comment is edited in place. |
Part of fizzyedit/work#362
In plain words
Scrolling text keeps a stable appearance as a flick slows down, instead of changing weight as it moves between pixels. The scrolling speed and braking stay the same. Very slow movement advances in small pixel steps, following the motion design rule for text.
What you will notice
Text keeps pixel snapping during coasts, seating and bounce motion. Apps that explicitly disable snapping retain that choice.
How this serves fizzy
Goal: polished phone scrolling; preserve crisp text during motion under the craft and materials principle and the supplied motion design rule (§3.5).
Goal
Part of fizzyedit/work#362: address the Home page text-shimmer report using ARCH's whole-device-pixel motion rule.
What changed and why
Remove ScrollArea's blanket disabling of pixel snapping during motion, and its redundant save/restore state. Keep the float viewport trajectory, decay, release-speed window and end settling. This intentionally supersedes #854's fractional drawing requirement according to the later design direction; ScrollArea preserves the host's setting rather than classifying its children.
Replace the fractional-tail regression with a 3x-scale regression checking whole physical pixels, at most half a pixel quantization error, and repeated drawn positions in the slow tail. Keep the time-integral check on the continuous coordinate. End-of-motion and tap-to-stop tests now detect motion directly, so they still run through the transition instead of ending early because snapping is always enabled.
How it was verified
The replacement regression failed on the original code at expect(t_snapping); it passes with the fix. The final ScrollArea-filtered run passes (45/45 tests), including jittery clock and tap-to-stop coverage. Full integration: 881/900 tests pass; 19 socket tests fail with sandbox PermissionDenied (named in GATES.md). Native build, unit tests, lint, formatting, web compilation, test reachability (176/176 steps) and SDK shape checks pass.
Headless Linux measurement at 3 physical pixels per point, 8 ms fake-clock frames (125 Hz, approximating 120 Hz), final approximately 300 ms: 38 frames. The unsnapped path's continuous child coordinate moves 0.491333–0.874146 physical pixels per frame; with snapping the draw-coordinate model moves 0–1 physical pixels per frame, with 13 repeated positions. These are two drawing paths evaluated from the same float trace, not before/after phone measurements. Steady and jittery float trajectories agree exactly in the harness; alternating 8/25 ms displacement differs from the analytic integral by at most 0.000025 physical pixels.
Self-check:
Q1 Goal: partly: text snapping fixed and regression proven; device verification and broader issue evidence remain.
Q2 Lean and Zig: removed redundant drawing-state override; no findings.
Q3 Approach: keep: preserve the host drawing policy without a text/non-text classification API.
Q4 Fit: aligned with the supplied motion §3.5 rule and polish principle.
Risk: whole-pixel slow-tail stepping is intentional; visual acceptance needs the phone.
Net code/test lines: +53 -32.
Not done / follow-ups
No phone or graphical GPU measurement in this sandbox. The maintainer still needs to check text on a 3x/120 Hz device, obtain actual frame-cost/displacement traces, and compare Firefox default versus ?worker=1. This change does not claim to resolve the chat's changing-height jumps or all of work#362. No browser pacing change or dvui patch.
Changes (37 files, +91/-2558)
Gates: 6 of 6 passed
scripts/check-fmt.sh(exit 0)scripts/zb build --summary all(exit 0)scripts/zb build test --summary all(exit 0)scripts/zb build test-integration --summary all(exit 0)scripts/zb build check-web --summary all(exit 0)scripts/zb build test-sdk-version --summary all(exit 0)