UI: no elastic overshoot anywhere; the wheel scrolls the window under it (J100) #308

Open
opened 2026-11-02 11:15:52 +00:00 by kayg · 4 comments
Owner

J100: no overshoot anywhere; the wheel scrolls what is under it

Owner, 2026-11-02: "can we get rid of this elastic overshoot please? it looks terrible everytime it happens!" and "I can't seem to scroll down in the docs window, happens in the terminal window too! I have to get the input lock to be able to do that."

Branch ui-no-overshoot-scroll, base origin/dev 16bf736c7.

Findings (code read, no build yet)

  1. Overshoot inventory. Spring takes bounce (zeta < 1 for any bounce > 0). About 35 call sites in apps/tracer and packages/ui use bounce 0.05..0.3 (pane-stepper, pill-morph, icon-morph, world.ts view switch POS 0.2, lifecycle open 0.28, window move land 0.3, toolbar pill shift 0.3/0.22, toolbar-settings, core-screen rows, add-host wizard, session-ui, columns scroll 0.1, flip.ts default 0.22 which samples the spring into a linear() curve). Three CSS uses of cubic-bezier(0.34, 1.4, 0.64, 1) (control point beyond 1). Droplet split physics (droplet.on-demand.ts) is raw stiffness/damping with a deliberate wobble (TASTE rows 61 and 144).
  2. Scroll. D275 (owner, 2026-10-15) already decides the rule: a vertical wheel scrolls what is under the pointer (list, log, focused terminal scrollback); horizontal moves between windows; an unfocused terminal and anything that cannot scroll belong to the canvas; at a scroll edge a fresh gesture (150 ms quiet) hands off to the neighbouring window; the input lock prevents the handoff and keeps its other job. Only the decision was committed. canvas/camera/gestures.ts still sends every wheel to snapWheel unless it is over .cl-logs, and the capture handler at line 186 sends any wheel over .terminal-host to the canvas (that is the bug the owner sees). No decision conflict: this implements D275, D177 and D159.

Plan (estimate 3 h, one build host)

  1. Springs: make bounce > 0 impossible by type (bounce?: 0) and clamp raw damping to critical in Spring.configure; set every call site to critically damped, same durations. Replace the overshooting bezier with the product ease-out cubic-bezier(0.23, 1, 0.32, 1). flip.ts follows because it uses the same physics.
  2. Check: a unit test (bun) that scans apps/tracer + packages/ui for bounce > 0, cubic-bezier with y outside [0,1], back/elastic easings, and checks Spring never passes its target numerically. Allowlist: only the droplet (TASTE 61, 144), flagged for the owner.
  3. TASTE row "No overshoot, ever" with the owner quote.
  4. Scroll: in gestures.ts, a vertical wheel over scrollable content (docs/page, list, log, focused terminal) scrolls it when it can scroll that way; at its edge a fresh gesture hands off to window navigation (D275); the input lock unchanged. Horizontal, pinch, ctrl-wheel, two-finger touch pan unchanged.
  5. Playwright on a production build: wheel over docs window (page scrolls, canvas still), over terminal with scrollback (scrollback moves), over empty canvas (pans), plus touch. Screenshots at 1440x900 DPR 2 and 393x852 DPR 3.
  6. Gate: TS half and scripts/verify fast on whichever VM has a free slot.

Open point for the owner (not blocking): the droplet split wobble stays as the one exception unless kayg says otherwise; an unfocused terminal keeps D275's "belongs to the canvas" unless kayg says otherwise.

## J100: no overshoot anywhere; the wheel scrolls what is under it Owner, 2026-11-02: "can we get rid of this elastic overshoot please? it looks terrible everytime it happens!" and "I can't seem to scroll down in the docs window, happens in the terminal window too! I have to get the input lock to be able to do that." Branch `ui-no-overshoot-scroll`, base origin/dev 16bf736c7. ### Findings (code read, no build yet) 1. **Overshoot inventory.** `Spring` takes `bounce` (zeta < 1 for any bounce > 0). About 35 call sites in apps/tracer and packages/ui use bounce 0.05..0.3 (pane-stepper, pill-morph, icon-morph, world.ts view switch POS 0.2, lifecycle open 0.28, window move land 0.3, toolbar pill shift 0.3/0.22, toolbar-settings, core-screen rows, add-host wizard, session-ui, columns scroll 0.1, flip.ts default 0.22 which samples the spring into a `linear()` curve). Three CSS uses of `cubic-bezier(0.34, 1.4, 0.64, 1)` (control point beyond 1). Droplet split physics (`droplet.on-demand.ts`) is raw stiffness/damping with a deliberate wobble (TASTE rows 61 and 144). 2. **Scroll.** D275 (owner, 2026-10-15) already decides the rule: a vertical wheel scrolls what is under the pointer (list, log, focused terminal scrollback); horizontal moves between windows; an unfocused terminal and anything that cannot scroll belong to the canvas; at a scroll edge a fresh gesture (150 ms quiet) hands off to the neighbouring window; the input lock prevents the handoff and keeps its other job. Only the decision was committed. `canvas/camera/gestures.ts` still sends every wheel to `snapWheel` unless it is over `.cl-logs`, and the capture handler at line 186 sends any wheel over `.terminal-host` to the canvas (that is the bug the owner sees). No decision conflict: this implements D275, D177 and D159. ### Plan (estimate 3 h, one build host) 1. Springs: make `bounce > 0` impossible by type (`bounce?: 0`) and clamp raw damping to critical in `Spring.configure`; set every call site to critically damped, same durations. Replace the overshooting bezier with the product ease-out `cubic-bezier(0.23, 1, 0.32, 1)`. `flip.ts` follows because it uses the same physics. 2. Check: a unit test (bun) that scans apps/tracer + packages/ui for `bounce` > 0, `cubic-bezier` with y outside [0,1], `back`/`elastic` easings, and checks `Spring` never passes its target numerically. Allowlist: only the droplet (TASTE 61, 144), flagged for the owner. 3. TASTE row "No overshoot, ever" with the owner quote. 4. Scroll: in `gestures.ts`, a vertical wheel over scrollable content (docs/page, list, log, focused terminal) scrolls it when it can scroll that way; at its edge a fresh gesture hands off to window navigation (D275); the input lock unchanged. Horizontal, pinch, ctrl-wheel, two-finger touch pan unchanged. 5. Playwright on a production build: wheel over docs window (page scrolls, canvas still), over terminal with scrollback (scrollback moves), over empty canvas (pans), plus touch. Screenshots at 1440x900 DPR 2 and 393x852 DPR 3. 6. Gate: TS half and `scripts/verify fast` on whichever VM has a free slot. Open point for the owner (not blocking): the droplet split wobble stays as the one exception unless kayg says otherwise; an unfocused terminal keeps D275's "belongs to the canvas" unless kayg says otherwise.
Author
Owner

Start / progress (J100) — branch ui-no-overshoot-scroll, base origin/dev 16bf736c7. VM worktree ~/worktrees/j100 on dev-02-std (no Rust target dir here).

Done so far (pushed):

  • d706ab62b / 2edf63894: all 31 non-zero bounce call sites are 0; Spring is critically damped by construction (bounce?: 0 type); flip.ts curve, 3 CSS cubic-bezier(0.34, 1.4, 0.64, 1) → (0.23, 1, 0.32, 1).
  • apps/tracer/test/no-overshoot.test.ts (in verify fast): scans bounce, bezier y outside [0,1], back/elastic, raw stiffness outside allow-list; runs the real Spring at 20–120 fps and the FLIP curve. 10 pass on dev-02-std; bun run check clean.
  • TASTE row "No overshoot, ever".
  • Wheel router in camera/gestures.ts (D275): per gesture, the content under the pointer that can scroll that way keeps the gesture; at its end momentum is swallowed; a fresh gesture hands off to the canvas; unfocused terminal and anything that cannot scroll stay the canvas's; input lock unchanged.

Findings:

  • Droplet split wobble (droplet.on-demand.ts, TASTE "Splits are playful physics") is the one overshoot left, on the allow-list. Needs kayg: remove it too, or keep?
  • Finger-held rubber resistance (window resize past limits, toolbar rows, pill end) is untouched: it follows the finger and is not a transition. The release springs are critically damped now.
  • DECISIONS.md line ~420 (tick spring "bounce 0.2 … overshoot swell") is now out of date; only kayg can edit decisions. The tick still draws; the swell no longer happens.
  • An unfocused terminal keeps D275's "belongs to the canvas" rule. If kayg wants every terminal under the pointer to scroll, say so.

Next: Playwright wheel specs (test double: docs/empty canvas/phone touch; real server: terminal scrollback), screenshots at 1440×900 DPR 2 and 393×852 DPR 3, then scripts/verify fast. Estimate: 2 h left.

**Start / progress (J100)** — branch `ui-no-overshoot-scroll`, base origin/dev 16bf736c7. VM worktree `~/worktrees/j100` on dev-02-std (no Rust target dir here). Done so far (pushed): - d706ab62b / 2edf63894: all 31 non-zero `bounce` call sites are 0; `Spring` is critically damped by construction (`bounce?: 0` type); flip.ts curve, 3 CSS `cubic-bezier(0.34, 1.4, 0.64, 1)` → `(0.23, 1, 0.32, 1)`. - `apps/tracer/test/no-overshoot.test.ts` (in `verify fast`): scans bounce, bezier y outside [0,1], back/elastic, raw stiffness outside allow-list; runs the real Spring at 20–120 fps and the FLIP curve. 10 pass on dev-02-std; `bun run check` clean. - TASTE row "No overshoot, ever". - Wheel router in `camera/gestures.ts` (D275): per gesture, the content under the pointer that can scroll that way keeps the gesture; at its end momentum is swallowed; a fresh gesture hands off to the canvas; unfocused terminal and anything that cannot scroll stay the canvas's; input lock unchanged. Findings: - Droplet split wobble (`droplet.on-demand.ts`, TASTE "Splits are playful physics") is the one overshoot left, on the allow-list. **Needs kayg:** remove it too, or keep? - Finger-held rubber resistance (window resize past limits, toolbar rows, pill end) is untouched: it follows the finger and is not a transition. The release springs are critically damped now. - `DECISIONS.md` line ~420 (tick spring "bounce 0.2 … overshoot swell") is now out of date; only kayg can edit decisions. The tick still draws; the swell no longer happens. - An unfocused terminal keeps D275's "belongs to the canvas" rule. If kayg wants every terminal under the pointer to scroll, say so. Next: Playwright wheel specs (test double: docs/empty canvas/phone touch; real server: terminal scrollback), screenshots at 1440×900 DPR 2 and 393×852 DPR 3, then `scripts/verify fast`. Estimate: 2 h left.
Author
Owner

Findings and evidence (J100) — head 0286b910f on ui-no-overshoot-scroll (base 16bf736c7; origin/dev has since moved 5 commits, none in apps/tracer, packages/ui or docs/design).

Overshoot. The owner's video (Docs view, one window) shows a swipe shaking the window. Sources found and removed:

  1. gestures.ts wheel snap nudged the camera 36 px past the first/last window and flew back — now nothing happens at the ends.
  2. 31 Spring call sites with bounce 0.05–0.3 → 0; Spring is critically damped by construction, bounce?: 0 is a type, so a non-zero value does not compile.
  3. Spring.set kept velocity on retarget; a critically damped spring overshoots when the carried speed exceeds omega·distance → speed toward the target is now capped at that bound (test: retarget at 5 points of a fast flight, max ≤ target).
  4. flip.ts linear() curve sampled from the same physics; 3 CSS cubic-bezier(0.34, 1.4, 0.64, 1) → (0.23, 1, 0.32, 1).
  • Check: apps/tracer/test/no-overshoot.test.ts (in verify fast): scans bounce, bezier y outside [0,1], back/elastic, raw stiffness outside the allow-list; runs the real Spring at 20–120 fps. 11 pass.
  • Needs kayg: the droplet split wobble (droplet.on-demand.ts, TASTE "Splits are playful physics") is the one overshoot left (allow-listed). Remove it too? Finger-held rubber (resize past limits, toolbar rows, pill ends) is untouched: it follows the finger and is not a transition.
  • DECISIONS.md ~line 420 (tick "bounce 0.2 … overshoot swell") is now out of date; only kayg edits decisions.

Scroll. No decision conflict: D275 already says it; this implements it (router in gestures.ts, rule in its header and TASTE). Per gesture (events <150 ms apart, momentum included): content under the pointer that can scroll the way it goes (docs page, list, log, the FOCUSED terminal's scrollback or program) keeps the whole gesture; at its end the rest is swallowed; a fresh gesture at the end hands off to the canvas (D275); an unfocused terminal and anything that cannot scroll stay the canvas's; horizontal, Shift, Ctrl/Cmd stay the canvas's; the input lock is untouched. Pinch / two-finger pan / touch handlers are untouched; one-finger touch scroll of a docs page works (real touch events, 396 px).

  • Also fixed (found by the regression run): a vertical swipe over the 12 px gap between stacked windows was silently lost (columns take no pointer events); now the column under the pointer is stepped. D275 names the gap.
  • Router cost: median 0 ms, p95 ≤ 0.1 ms, max 0.3 ms per event over page content (400 events, Chromium on dev-02; logged, not asserted).

Tests (production build, test double, dev-02-std).

  • Baseline red: with origin/dev's gestures.ts wheel-scroll desktop+phone fail (page stays at 0) and wheel-terminal fails (scrollback does not move); with the router 13/13 pass (wheel-scroll 4, wheel-terminal 1, swipes 6, logs 2).
  • Regression run of 9 canvas/clusters spec files: 18 failures on unmodified origin/dev (settings sections list, clusters-grid, canvas touch/sidebar/shortcuts, add-host, motion rule); on my branch the same set plus 8 timing failures that pass when run alone (load) plus the vertical-swipe regression above, fixed.
  • real/wheel-routing.spec.ts (real PTYs, stacked column, including the fresh-gesture handoff at the bottom of the scrollback) is written but NOT green here: the real server cannot attach its agent on the build VMs, and the unmodified real/scroll-lock.spec.ts stops at the same setup step ("Connecting to this machine…"). Needs a host where real specs run.

Screenshots (1440×900 DPR 2 and 393×852 DPR 3) attached below.

**Findings and evidence (J100)** — head `0286b910f` on `ui-no-overshoot-scroll` (base 16bf736c7; origin/dev has since moved 5 commits, none in `apps/tracer`, `packages/ui` or `docs/design`). **Overshoot.** The owner's video (Docs view, one window) shows a swipe shaking the window. Sources found and removed: 1. `gestures.ts` wheel snap nudged the camera 36 px past the first/last window and flew back — now nothing happens at the ends. 2. 31 `Spring` call sites with `bounce` 0.05–0.3 → 0; `Spring` is critically damped by construction, `bounce?: 0` is a type, so a non-zero value does not compile. 3. `Spring.set` kept velocity on retarget; a critically damped spring overshoots when the carried speed exceeds omega·distance → speed toward the target is now capped at that bound (test: retarget at 5 points of a fast flight, max ≤ target). 4. `flip.ts` `linear()` curve sampled from the same physics; 3 CSS `cubic-bezier(0.34, 1.4, 0.64, 1)` → `(0.23, 1, 0.32, 1)`. - Check: `apps/tracer/test/no-overshoot.test.ts` (in `verify fast`): scans bounce, bezier y outside [0,1], back/elastic, raw stiffness outside the allow-list; runs the real Spring at 20–120 fps. 11 pass. - **Needs kayg:** the droplet split wobble (`droplet.on-demand.ts`, TASTE "Splits are playful physics") is the one overshoot left (allow-listed). Remove it too? Finger-held rubber (resize past limits, toolbar rows, pill ends) is untouched: it follows the finger and is not a transition. - DECISIONS.md ~line 420 (tick "bounce 0.2 … overshoot swell") is now out of date; only kayg edits decisions. **Scroll.** No decision conflict: D275 already says it; this implements it (router in `gestures.ts`, rule in its header and TASTE). Per gesture (events <150 ms apart, momentum included): content under the pointer that can scroll the way it goes (docs page, list, log, the FOCUSED terminal's scrollback or program) keeps the whole gesture; at its end the rest is swallowed; a fresh gesture at the end hands off to the canvas (D275); an unfocused terminal and anything that cannot scroll stay the canvas's; horizontal, Shift, Ctrl/Cmd stay the canvas's; the input lock is untouched. Pinch / two-finger pan / touch handlers are untouched; one-finger touch scroll of a docs page works (real touch events, 396 px). - Also fixed (found by the regression run): a vertical swipe over the 12 px gap between stacked windows was silently lost (columns take no pointer events); now the column under the pointer is stepped. D275 names the gap. - Router cost: median 0 ms, p95 ≤ 0.1 ms, max 0.3 ms per event over page content (400 events, Chromium on dev-02; logged, not asserted). **Tests (production build, test double, dev-02-std).** - Baseline red: with origin/dev's `gestures.ts` `wheel-scroll` desktop+phone fail (page stays at 0) and `wheel-terminal` fails (scrollback does not move); with the router 13/13 pass (wheel-scroll 4, wheel-terminal 1, swipes 6, logs 2). - Regression run of 9 canvas/clusters spec files: 18 failures on unmodified origin/dev (settings sections list, clusters-grid, canvas touch/sidebar/shortcuts, add-host, motion rule); on my branch the same set plus 8 timing failures that pass when run alone (load) plus the vertical-swipe regression above, fixed. - `real/wheel-routing.spec.ts` (real PTYs, stacked column, including the fresh-gesture handoff at the bottom of the scrollback) is written but NOT green here: the real server cannot attach its agent on the build VMs, and the unmodified `real/scroll-lock.spec.ts` stops at the same setup step ("Connecting to this machine…"). Needs a host where real specs run. Screenshots (1440×900 DPR 2 and 393×852 DPR 3) attached below.
Author
Owner

Finish (J100) — head 2328960ba02ea1bd5a66e46a7d94e41f8dc18594 on ui-no-overshoot-scroll (5 commits, base 16bf736c7; history rewritten once from my own WIP commits, tree identical). The jobs never close issues.

Commits: cfef8f624 springs/curves (+velocity cap), 9b874d766 unit check, 5fb8f1118 TASTE no overshoot, 14368bfc7 wheel router + no end bump + gap-swipe fix (D275), 2328960ba wheel specs + TASTE wheel row.

Gate on 2328960ba, dev-02-std (verbatim):

| Rust gate                 | Result       |
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| CLI plugin compile-out    | PASS         |
| clippy                    | PASS         |
| SSH runtime test helper   | PASS         |
| real-binary fixture paths | PASS         |
| test                      | FAIL (101)   |
| SSH inode reuse fixture   | PASS         |
| shim process-per-user     | PASS         |
| cargo-deny                | PASS         |
| gate architecture         | PASS         |
| static builds             | PASS         |
VERIFY_EXIT=1

verify fast stops after the Rust half fails, so the TS half was run on its own on the same head (source scripts/verify.d/ts.sh; ts_verify_fast): TS_EXIT=0 — bun suites 2 + 499 + 106 + 17 + 39 pass, 0 fail (includes test/no-overshoot.test.ts and spring.test.ts); transfer budget: critical gzip=311103/327680, deferred gzip=61429/61440 brotli=54190/55296; static builds report x86_64 and aarch64 PASS (aarch64 size delta +821,096 B vs baseline, report only, D243).

The Rust test row failure is not from this branch. git diff 16bf736c7..HEAD -- crates Cargo.toml Cargo.lock is empty. Failures differ from run to run (load): run 1 restart::tests::rootless_even_marked_replacement_*, daemon::remote_tests::silent_authenticated_peer_has_a_greeting_deadline; run 2 three agent_review tests (pass 8/8 when run alone); run 3 nine infraternal-server tests (bootstrap_runtime::remote_backend::tests::*, remote_http::tests::enrollment_*). Those nine fail alone in 6 s with assertion failed: event.message.contains("administrator passkey") (bootstrap_remote.rs:1621): a dev add-host test/message mismatch, same code as origin/dev. #207 covers the restart/timing family.

Budget note (D188): deferred JS was 159 B under its cap on origin/dev and is now 11 B under. The router first cost +375 B gzip; trimmed (boolean answer, locals, free-canvas column scroll folded in, bounce: 0 dropped). The next change to the deferred chunk needs a ratchet or a trim.

Browser, production build, dev-02-std: 13/13 wheel+swipe+log specs pass (wheel-scroll 4, wheel-terminal 1, swipes 6, logs 2); wheel specs fail on origin/dev's gestures.ts. Regression files: 125 pass, 16 fail, all 16 also fail on unmodified origin/dev (add-host-prototype 2, canvas 3 [touch handles, sidebar footer, shortcuts], clusters-grid 9, clusters motion-rule + settings-sections).
Not run green: real/wheel-routing.spec.ts (real PTYs) — the agent does not attach on the build VMs; the unmodified real/scroll-lock.spec.ts stops at the same step.

For kayg: (1) droplet split wobble stays (allow-listed) or goes? (2) an unfocused terminal keeps D275's "belongs to the canvas": should every terminal under the pointer scroll? (3) DECISIONS.md ~l.420 (tick "bounce 0.2 … overshoot swell") is out of date. (4) The owner's video (Docs view, one window) matches the 36 px end-of-view bump, now removed.

**Finish (J100)** — head `2328960ba02ea1bd5a66e46a7d94e41f8dc18594` on `ui-no-overshoot-scroll` (5 commits, base 16bf736c7; history rewritten once from my own WIP commits, tree identical). The jobs never close issues. Commits: cfef8f624 springs/curves (+velocity cap), 9b874d766 unit check, 5fb8f1118 TASTE no overshoot, 14368bfc7 wheel router + no end bump + gap-swipe fix (D275), 2328960ba wheel specs + TASTE wheel row. **Gate on `2328960ba`, dev-02-std** (verbatim): ``` | Rust gate | Result | | fmt | PASS | | VT native fmt | PASS | | CLI plugin compile-out | PASS | | clippy | PASS | | SSH runtime test helper | PASS | | real-binary fixture paths | PASS | | test | FAIL (101) | | SSH inode reuse fixture | PASS | | shim process-per-user | PASS | | cargo-deny | PASS | | gate architecture | PASS | | static builds | PASS | VERIFY_EXIT=1 ``` `verify fast` stops after the Rust half fails, so the TS half was run on its own on the same head (`source scripts/verify.d/ts.sh; ts_verify_fast`): **TS_EXIT=0** — bun suites 2 + 499 + 106 + 17 + 39 pass, 0 fail (includes `test/no-overshoot.test.ts` and `spring.test.ts`); transfer budget: `critical gzip=311103/327680`, `deferred gzip=61429/61440 brotli=54190/55296`; static builds report x86_64 and aarch64 PASS (aarch64 size delta +821,096 B vs baseline, report only, D243). **The Rust `test` row failure is not from this branch.** `git diff 16bf736c7..HEAD -- crates Cargo.toml Cargo.lock` is empty. Failures differ from run to run (load): run 1 `restart::tests::rootless_even_marked_replacement_*`, `daemon::remote_tests::silent_authenticated_peer_has_a_greeting_deadline`; run 2 three `agent_review` tests (pass 8/8 when run alone); run 3 nine `infraternal-server` tests (`bootstrap_runtime::remote_backend::tests::*`, `remote_http::tests::enrollment_*`). Those nine fail alone in 6 s with `assertion failed: event.message.contains("administrator passkey")` (`bootstrap_remote.rs:1621`): a dev add-host test/message mismatch, same code as origin/dev. #207 covers the restart/timing family. **Budget note (D188):** deferred JS was 159 B under its cap on origin/dev and is now 11 B under. The router first cost +375 B gzip; trimmed (boolean answer, locals, free-canvas column scroll folded in, `bounce: 0` dropped). The next change to the deferred chunk needs a ratchet or a trim. **Browser, production build, dev-02-std:** 13/13 wheel+swipe+log specs pass (wheel-scroll 4, wheel-terminal 1, swipes 6, logs 2); wheel specs fail on origin/dev's `gestures.ts`. Regression files: 125 pass, 16 fail, all 16 also fail on unmodified origin/dev (add-host-prototype 2, canvas 3 [touch handles, sidebar footer, shortcuts], clusters-grid 9, clusters motion-rule + settings-sections). Not run green: `real/wheel-routing.spec.ts` (real PTYs) — the agent does not attach on the build VMs; the unmodified `real/scroll-lock.spec.ts` stops at the same step. **For kayg:** (1) droplet split wobble stays (allow-listed) or goes? (2) an unfocused terminal keeps D275's "belongs to the canvas": should every terminal under the pointer scroll? (3) DECISIONS.md ~l.420 (tick "bounce 0.2 … overshoot swell") is out of date. (4) The owner's video (Docs view, one window) matches the 36 px end-of-view bump, now removed.
Author
Owner

Round 2: merge prep (J100) — head 4b40ac8b45784b38ba56d47978272df9199927f1, rebased onto origin/dev 1f005f2bc (5 commits, no Rust diff).

Deferred JS (gzip / brotli; caps 61,440 / 55,296): after rebase 61,408 / 54,074 (32 B headroom) → now 59,850 / 52,879 (1,590 B / 2,417 B headroom). Critical 311,373 / 327,680; on-demand largest chunk 15,443 / 20,480.
Done by moving code out of the deferred chunk, not by raising the cap: windows/move.ts → move.on-demand.ts (fetched when idle within 200 ms of the first window, and on pill press; the drag starts from the pointer's latest position; a press released before the chunk arrives starts no drag) and the free canvas's pointer pan, pinch, zoom, wheel pan and tap handling → camera/gestures-free.on-demand.ts (fetched on the first canvas-lock change via onLockChange).

scripts/verify fast on dev-02-std: VERIFY_EXIT=0. Rust table all PASS (fmt, VT native fmt, CLI plugin compile-out, clippy, SSH runtime test helper, real-binary fixture paths, test, SSH inode reuse fixture, shim process-per-user, cargo-deny, gate architecture, static builds: x86_64 +4,608 B, aarch64 +816 B vs baseline, report only). TS half: bun 2, 500, 106, 17, 39 pass, 0 fail; transfer budget as above.
Browser (test double, production build): wheel/terminal/swipes/logs/split-focus/option/grid/add-host/clusters/canvas/mesh files: 175 pass, 21 fail in the full run; 16 are the same ones that failed on pre-rebase dev (add-host 2, canvas 3, clusters-grid 9, clusters motion-rule + settings sections); the 5 others (two pill-drag tests that raced the on-demand chunk, a toolbar long-press, two mesh) now pass in isolation after preloading the move chunk (rerun: 5/5).

**Round 2: merge prep (J100)** — head `4b40ac8b45784b38ba56d47978272df9199927f1`, rebased onto origin/dev 1f005f2bc (5 commits, no Rust diff). Deferred JS (gzip / brotli; caps 61,440 / 55,296): after rebase 61,408 / 54,074 (32 B headroom) → now **59,850 / 52,879 (1,590 B / 2,417 B headroom)**. Critical 311,373 / 327,680; on-demand largest chunk 15,443 / 20,480. Done by moving code out of the deferred chunk, not by raising the cap: `windows/move.ts` → `move.on-demand.ts` (fetched when idle within 200 ms of the first window, and on pill press; the drag starts from the pointer's latest position; a press released before the chunk arrives starts no drag) and the free canvas's pointer pan, pinch, zoom, wheel pan and tap handling → `camera/gestures-free.on-demand.ts` (fetched on the first canvas-lock change via `onLockChange`). `scripts/verify fast` on dev-02-std: **VERIFY_EXIT=0**. Rust table all PASS (fmt, VT native fmt, CLI plugin compile-out, clippy, SSH runtime test helper, real-binary fixture paths, test, SSH inode reuse fixture, shim process-per-user, cargo-deny, gate architecture, static builds: x86_64 +4,608 B, aarch64 +816 B vs baseline, report only). TS half: bun 2, 500, 106, 17, 39 pass, 0 fail; transfer budget as above. Browser (test double, production build): wheel/terminal/swipes/logs/split-focus/option/grid/add-host/clusters/canvas/mesh files: 175 pass, 21 fail in the full run; 16 are the same ones that failed on pre-rebase dev (add-host 2, canvas 3, clusters-grid 9, clusters motion-rule + settings sections); the 5 others (two pill-drag tests that raced the on-demand chunk, a toolbar long-press, two mesh) now pass in isolation after preloading the move chunk (rerun: 5/5).
Sign in to join this conversation.
No labels
launch-qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/infraternal#308
No description provided.