preferences.js marks the font rows with their pref, the pref-less rows with their label and the fonts reset with an id, for the finger walks. Mojo's card header above the page scrolls away with it: the walk counts it once the page is scrolled. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
34 KiB
The finger round — every test that needs the owner's hands, deferred to one sitting
2026-10-24: the round is the agent's, driven by an emulated finger on the real input path
(tools/device/finger/, context/kits/cavekit-finger-emulation.md), judged from screenshots and frame dumps by eye;
each item below gets its result and the date as it is run. Only what no emulation reaches — the accelerometer's
rotation, the volume keys, hearing audio, a physical keyboard — stays for a person, and says so.
The owner, 2026-10-12: "defer all finger tests in the entire project for one large round at the end". Everything an agent can verify on the device is verified as the work goes; what only a person at the TouchPad can confirm is collected here, and nobody is asked for it piecemeal. Add to this list as work lands (one line: what to do, what should happen, the kit criterion); mark the criterion in its kit [~] with "finger: deferred round". Tick items off here when the round is run, and close the kit criteria from the results.
Run each item in all three variants (Enyo, Mochi, Mojo) unless it says otherwise.
Scrolling and gestures
- Flick up and down on about:settings and about:personas, at both ends: the page coasts and slows as a web page does, never stops dead. (chrome-look R3) (2026-10-24, the emulated finger: about:preferences flicked to its end and back in Enyo, Mochi and Mojo (Mojo's by a drag and a flick); about:personas to its end and back in Enyo; whether a coast "stops dead" is a feel the shots cannot give — the pages reached both ends)
- about:addons → Extensions (or Plugins) with more add-ons than fit: the list pans to its end. (chrome-look R2) (2026-10-24: one extension installed on the bench, nothing to pan; needs more add-ons first) (2026-10-25, Enyo by finger, twelve test extensions sideloaded (Jihad List Pad 01..12): FOUND the list did not pan at all (the card was told the window's height; on the GPU path a XUL page's frames never moved). FIXED (T-527: the list's length on the root, the window that tall, the world offset for a page with no root scroller, the card's scroll clamped when the page gets shorter): two drags reach Pad 12, a flick returns to the top, Pad 12's More opens its details from their top. Mochi and Mojo: with the next packages.) (2026-10-26, the packages of 623dc1ac+ installed in all three, the twelve pads sideloaded into Mochi's and Mojo's profiles: one finger drag takes each list from Palefill and Pad 01 to Pad 12 at the bottom, a second stays at the end; the pads then removed from all three profiles, Palefill alone again. Not yet: a long add-on's detail view (its length is not reported: the review's #13).)
- A real drag-scroll and a two-finger pinch on an ordinary page; pinch in then out on
en.m.wikipedia.org (Mojo: the card is never left grey). (input-bridging R3/R4, mojo-ui R6) (2026-10-24: drags on
jihad-long-static.htmlin all three; Mojo on en.m.wikipedia.org: a pinch in at the fit stays at the fit, a pinch out to 1.08 paints in full, 14 frames none empty, no grey) - Rotate the TouchPad: portrait ↔ landscape redraws the page right. (device-build R4,
offscreen-rendering R6) (2026-10-25, Enyo, driven from the card itself: the test hook's
rotate:leftscenario asks webOS for a landscape window (PalmSystem.setWindowOrientation — no accelerometer needed; "resize: window 1024x740 orientation=left"), the daemon re-sized its window to 1024 wide and desktop Wikipedia reflowed and rendered in landscape (blank for a few seconds during the reflow, then complete),upbrought 768x996 back and the page rendered right again. jihad-long-static the same. A finger's rotation of the device goes through the same request.) - The GPU path, zoom (2026-10-18: the first try ran on a diagnostic daemon mid-script; T-504
rebuilds zoom): pinch in and out and double-tap on desktop en.wikipedia.org and on a long page:
the page at the new zoom arrives promptly and no area stays grey. (cavekit-gpu-rendering R6, R12) (2026-10-24: FOUND the owner's grey — a double tap zoomed to a 104 px cell at 6.2x and the engine's default maximum-scale passed the adapter; at rest the zoomed frame lost its right third from 2.0 (the root's displayport base and clip divided by the resolution) and everything from 2.98; the second double tap found no block (the hit test read the render pan). All fixed (daemon 7c29035a, engine c79d16f8): double tap to the infobox at 2.33, pinches to 2.99, zoom out, a tap on a zoomed link, in all three —
docs/rounds/finger-2026-10-24/zoom-grey.txt. "Promptly": the first frame at a new zoom takes 1.6-2.9 s on desktop Wikipedia (R6 open). Above 2.91 on that page the frame still clips (the maximum-scale now stops there; T-527).) - The GPU path (the default in all three since T-510, 2026-10-19): drag-scroll a long page with a fixed
header (
jihad-long-static.htmlon the host server) from top to bottom at a steady pace: the header stays put, the text is continuous (no repeated or missing bands), nothing blank enters from below, no jump every ~660 px (the engine's anchor moves). Then flick. A scripted pan cannot show this: the adapter's own view does not move. (T-502; offscreen-rendering, the scroll row) (2026-10-24: six steady strokes in Enyo: the header stayed put (mid-stroke too), the paragraphs continuous, no blank, no jump; Mochi and Mojo the same at the stroke's end (Mochi's one mid-stroke shot was mostly white, not reproduced in Mojo's). The flick: the card arrives in ~250 ms, the engine paints only at the end, so for ~0.5 s the lower card is blank and the fixed header gone, right at rest — the coast gap, T-527.) (2026-10-25 (night), Enyo by finger, five flicks of 600 px in 160 ms with a shot 0, 250, 500, 750 and 1500 ms after each: before, the lower 27 % (0 ms) and 50 % (250 ms) of the card grey and the header gone, right from 500 ms; now (T-527: the express lane composes each frame where the coasting card will be when it is shown, its speed times 80 ms) the card has content to the bottom in every shot; the fixed header still slides off for the first ~250 ms of the coast (it is part of the frame the card moves) and sat ~20 px low in the 500 ms shot. Three slow 750 px strokes with a shot mid-stroke: the header in place, the text continuous, no grey.) - The GPU path with the express lane (T-515, 2026-10-19; the default since T-510): right
after desktop en.wikipedia.org loads (its scripts run for seconds), pinch in, pan, pinch out and
double-tap at once, and do the same on
jihad-script-hold.html(the host server; its script holds the engine 600 ms in every 700): the page follows the finger at the new zoom without waiting for the script, nothing flips back to the old zoom, and at rest the text is sharp and nothing is grey. (cavekit-gpu-rendering R3, R6, R12) (2026-10-24, Enyo: the burst right after desktop Wikipedia's load ends at the new zoom, full and sharp, nothing flipping back; onjihad-script-hold.htmlthe fixed header is drawn mid-view for a moment during the zoom change, right at rest) - WebGL on the GPU path (T-511, 2026-10-19): open
jihad-webgl-cube.htmlfrom the host server (?size=360too) and a real WebGL page (any three.js example): the cube turns smoothly with its checkerboard sharp, a pinch and a pan over the canvas keep it drawn, and closing the card and opening it again a few times leaves the browser working. Say how smooth the 480 px cube looks to the eye (the card gets 18-20 frames a second there, 26-27 at 240 px). (cavekit-gpu-rendering R8, R12) (2026-10-24, Enyo: the cube drawn and sharp at rest, after a pinch out and a drag over it, and after the card was closed and opened three times (no daemon trouble); the page's own counter 19.7-21.8 fps, 14.8 at?size=360; the daemon published 129 frames in 5 s at rest, 96 at 360 px. A three.js example not tried (no such page on the host server).)
Keyboard and text
- Tap a field on several pages in one session: the keyboard comes up every time, and the page
does not jump away from the field. (input-bridging R2) (2026-10-24, Enyo, one session: the add-ons search field,
jihad-input-echo.html's textarea,jihad-card-events.html's field, Wikipedia's search box — the keyboard each time, the field in view above it) - Type in a page's field: the caret is visible while typing; holding Backspace speeds up.
(input-bridging R2/R2a; device-build R4) (2026-10-24, Enyo,
jihad-input-echo.html: "abcdef" typed with the caret after it (the page's readout: n=6, value abcdef); Backspace held 1.5 s emptied the field (n=12: six deletions — the key repeats) - Type in about:settings' fields and about:addons' search field (keys reach the XUL page). (preferences-ui R6, addons-site R12) (2026-10-24: "pale" typed into about:addons' search in Enyo; a character typed into Mojo's home-target field in about:preferences)
- Focus about:addons' search field, then close the keyboard with its hide key: no caret is left in the field, and tapping the field again brings the keyboard back. Also in a field inside a frame on some page. (chrome-look R4) (2026-10-24, Enyo: the hide key drops the keyboard, the field keeps "pale" with no caret seen, a tap brings the keyboard back; the frame case not tried (no test page with a framed field)) *The frame case, 2026-10-25 (jihad-frame-field.html, Enyo by finger): a tap on the field inside the frame raises the keyboard (the hit element is the