Repository navigation
Conversation
…gs pages derekross#553's hand checks didn't see that over an app a swipe from the very bottom edge reached the home strip instead of the page; a scripted run did. This adds that run as a tool: a uinput touchscreen (tools/phone-gesture-touch) swipes at points taken from hyprctl's output and layer geometry, so it runs the same on any device, and the verdict comes from the shell's own state over IPC, with Recents still shut, plus arithmetic on the pixels where a page should stay open (the list's row profile has to move up with the drag; where rows look alike and line up at several shifts, every one of them must be a move), never from a model or a video. Each test sets up its screen itself: pages open over IPC, the package's default tile layout, an empty workspace or one with a terminal, fictional notifications within the history's room, do-not-disturb, a phone below 75 C; and everything is put back. Thirteen scenarios cover derekross#553's pages on the home screen and over an app, including a swipe from inside the home strip's 44 px zone. docs/GESTURE-TESTS.md describes it; tests/phone-gesture-test checks its arithmetic and preconditions in CI, without a phone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thank you for this. Turning "the hand checks missed it" into a tool is the right response, and the design choices are the ones I'd want: pages opened over IPC so only the gesture is a touch, verdicts from the shell's own state with "recent apps stayed shut", a SKIP when the screen isn't the one a scenario needs, and pixel evidence where a pass could also mean that nothing happened. The care around the owner's phone shows too: the history headroom so a real notification is never pushed out, the unread mark, the tile layout moved aside and back. I checked that last one against Quickshell's FileView at the commit the phones run: it watches the directory as well as the file, so the shell does pick the owner's layout up again when you move it back. I ran Two things to change before I merge:
Smaller things, as you see fit:
I'll merge this after #553, since five of the scenarios are about what #553 adds. |
What and why
tools/phone-gesture-testruns swipe scenarios on the quick-settings pages (Wi-Fi, Bluetooth, the notification shade) on a real phone and checks each one through the shell's own state. It came out of #553: the hand checks there didn't show that over an app a swipe from the very bottom edge reached the home strip instead of the page; a scripted run did.openWifi,openBluetooth,summon), never by a tap on a tile; the package's default tile layout for the run; an empty workspace or one with a terminal; and only the gesture under test is a real touch, through a uinput touchscreen (tools/phone-gesture-touch) at points in logical pixels taken fromhyprctl monitorsand the page's own window (hyprctl layers).shell call omamobile.quicksettings state) with Recents still shut (no scenario opens it, so Recents means the touch reached the home strip), and for a page that should stay open, arithmetic on the pixels: the list's row profile has to move up with the drag, since a touch that never arrived would also leave the page open. Where rows look alike (network names of one length) the list lines up at several shifts, a whole row apart, and then every one of them has to be a move. A screen that isn't the one a scenario needs is a SKIP, not a pass or a fail.historyLimit), dismissed again the way a swipe does; do-not-disturb during the run; the bar's unread mark; the tile layout. It waits for the phone to cool below 75 °C, since a throttled phone delivered touches late in one of my runs.tests/phone-gesture-testchecks the arithmetic, the touch points and the preconditions in CI, without a phone.docs/GESTURE-TESTS.mddescribes the scenarios, the verdicts and the limits; AGENTS.md lists the tool, with "announce it" since it takes over the screen for a few minutes.Device and build
uname -r): 7.3.0-rc6-omamobile-push1-gcbb1a7eb0a78Checks (no phone needed)
tools/pr-check origin/mainpassestests/allpasses: on the phone, everything up totests/kernel-pr-checkpasses; that test needs the kernel build environment and fails the same way here onmainwithout this change, andtests/allstops there. The tests after it that this change touches pass on their own (tests/phone-smoke,tests/phone-gesture-test,tests/tools-help); CI runs the whole suitetests/packagespasses (or the packages I touched: none)versionbumped, and the new version is in the commit subject (no package changed)Co-Authored-By:orAssisted-by:trailer, never aSigned-off-by:On the phone
--record: the page stayed open and nothing opened Recents. Recording heats the phone (89-92 °C in another run, where touches arrived late), so the suite now waits for the phone to cool, and verdict runs leave--recordoff.userdata, weakens the storage guard, or reads registers from userspace (AGENTS.md §1)tools/phone-smokereportphone-smoke: unknown
Kernel
7.3.0-rc6-omamobile-push1-gcbb1a7eb0a78, tools atunknown, 2026-11-11T02:30Z.Packages: hyprland 0.57.0-3.1, libcamera 0.7.2-4.22, mesa 1:26.2.4-1.4, omacam 0.3.3-1, omamessages 0.2.2-1, omamobile-apps 0.2.2-1, omamobile-audio 0.5.15-1, omamobile-device-tegu 0.2.9-1, omamobile-firstboot 0.1.3-1, omamobile-gnss 0.2.7-1, omamobile-keyring 20261026-1, omamobile-mirror 0.1.1-1, omamobile-mmd 0.1.2-1, omamobile-modem 0.1.16-1, omamobile-modem-sit 0.3.31-1, omamobile-omarchy 0.1.32-1, omamobile-owl-widgets 0.1.2-1, omamobile-sensors 0.2.1-1, omamobile-shell 0.2.100-1, omamobile-voice 0.1.0-1, omaphone 0.2.3-1, omarchy 4.0.6-1, omatel-agent 0.2.4-2, quickshell 0.3.2.r7.g2b4501a-1
🤖 Generated with Claude Code