Repository navigation
Commit 7ae9678
feat(zbugs-video): record five zbugs apps side by side, live (#197)
* feat(zbugs-video): record the four zbugs apps side by side, live
apps/zbugs-video/record.ts tiles zbugs-swift (macOS), zbugs-gpui,
zbugs-rune, and zbugs-swift on an iPhone simulator two by two on the main
screen against one backend, and records the screen while one cursor rotates
storyboard.ts's eight steps across them: each change shows up live in the
other three. Targets are found through the accessibility API (ax.swift);
GPUI's come from its layout. Captions go on afterwards, then Postgres must
have each change. A screen too small for the four windows switches to its
largest HiDPI mode for the take.
Amp-Thread-ID: https://ampcode.com/threads/T-07b9f486-ecbb-4cc4-b74d-6fa9ecb9dca1
Co-authored-by: tmm <tmm@tmm.dev>
* zbugs-video: add zbugs on the web as a fifth app
The backend serves the web app's build on the API port with ZBUGS_WEB=1,
and record.ts runs it in a Chrome of its own, logged in with the crew token
as the jwt cookie. It takes the bottom row's middle cell, zoomed out until
it keeps its sidebar, and two of the nine steps: closing the issue and a
third comment. Captions move to a band under the screen.
Amp-Thread-ID: https://ampcode.com/threads/T-07b9f486-ecbb-4cc4-b74d-6fa9ecb9dca1
Co-authored-by: tmm <tmm@tmm.dev>
* zbugs-video: show the iPhone in Xcode 27's Device Hub
Xcode 27 has no Simulator.app; Device Hub replaces it. record.ts opens it
when Xcode's Simulator is missing, switches it to its main window without
the sidebar (its compact window can't change size), and sizes that to the
phone's cell, where it zooms the phone to fit. The storyboard finds the
phone's screen as the first phone-shaped group that isn't the window.
Amp-Thread-ID: https://ampcode.com/threads/T-07b9f486-ecbb-4cc4-b74d-6fa9ecb9dca1
Co-authored-by: tmm <tmm@tmm.dev>
* zbugs-video: record a real iPhone through iPhone Mirroring
ZBUGS_VIDEO_DEVICE swaps the simulator for a real iPhone: launch starts
zbugs-swift on it through devicectl, logged in and pointed at the Mac's
LAN address, and places the fixed-size Mirroring window in the phone cell.
Mirroring exposes no controls, so the phone's steps find what they tap in
its screen text (ax text, macOS Vision) and check each change in another
app before going on.
Also: the web app runs in a normal Chrome window; captions are drawn by ax
and overlaid, as Homebrew's ffmpeg can lack drawtext; Device Hub selects
the booted device; clicks and typing that can be dropped after switching
apps retry until their effect shows, and the take stops when it never
does; the phone scrolls whichever way its window turns the wheel, and
returns to its top with a tap on the status bar.
Amp-Thread-ID: https://ampcode.com/threads/T-07b9f486-ecbb-4cc4-b74d-6fa9ecb9dca1
Co-authored-by: tmm <tmm@tmm.dev>
* zbugs-video: tap Mirroring's nav buttons where they are
Measured on tmm's iPhone 15 Pro: in iPhone Mirroring's 318×701 window, the
back and close/reopen buttons are 100 points down, at 11.6% and 75.2% of
its width, and the status bar 56. The phone's taps now go by the window,
not by a screen assumed flush with its bottom, which put them 23 points
too high.
Amp-Thread-ID: https://ampcode.com/threads/T-07b9f486-ecbb-4cc4-b74d-6fa9ecb9dca1
Co-authored-by: tmm <tmm@tmm.dev>
* zbugs-video: find the mirrored iPhone's pages, and its way back
Through iPhone Mirroring, back from an issue left the list's search field
as a bare magnifier, so the list check ("Search issues") failed and a
second back opened the filters, with no way out. The phone's page now
comes from one read of its screen: "Issue #", "Zero Bugs" and "Sort" for
the filters, "Open Iss" for the list; from the filters it taps
"Issues". Mirroring passes a status-bar tap on to nothing, so the list
goes back to its top by the wheel, until "Open Issues" is its large
title again. The reopen tap retries while the phone still shows the
issue closed, checks of the phone's screen wait a moment, and Rune's
New Issue and Create clicks retry until their dialog opens and closes.
Amp-Thread-ID: https://ampcode.com/threads/T-07b9f486-ecbb-4cc4-b74d-6fa9ecb9dca1
Co-authored-by: tmm <tmm@tmm.dev>
* zbugs-video: retry every click until its change shows
On tmm's Mac a click right after an app comes to the front was dropped
now and then, and three of them had no retry: Swift opening the new
issue, Rune's bug label, and Swift's Comment button. Each click now
repeats until what it does shows: an app's detail shows the issue's
description, Rune's chip shows the label (pick() checks the option took,
not only that the menu opened), a comment field empties, the browser's
status reads Closed, GPUI's edit dialog closes, and Swift has the
browser's comment. Activating an app waits 800 ms. The phone's wheel
can land as a tap on the first issue when it reaches the top; scrolling
to the top goes back to the list when it does.
Amp-Thread-ID: https://ampcode.com/threads/T-07b9f486-ecbb-4cc4-b74d-6fa9ecb9dca1
Co-authored-by: tmm <tmm@tmm.dev>
---------
Co-authored-by: Amp <amp@ampcode.com>1 parent 2fb54ea commit 7ae9678
5 files changed
Lines changed: 2015 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
33 | 38 | | |
34 | 39 | | |
35 | 40 | | |
| |||
42 | 47 | | |
43 | 48 | | |
44 | 49 | | |
| 50 | + | |
45 | 51 | | |
46 | 52 | | |
47 | 53 | | |
48 | 54 | | |
49 | | - | |
| 55 | + | |
50 | 56 | | |
51 | 57 | | |
52 | 58 | | |
| |||
196 | 202 | | |
197 | 203 | | |
198 | 204 | | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
199 | 211 | | |
200 | 212 | | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
201 | 241 | | |
202 | 242 | | |
203 | 243 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
0 commit comments