Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions technical-documentation/testing/manual-e2e-checklist.md
Original file line number Diff line number Diff line change
Expand Up @@ -987,3 +987,4 @@ These checks are the human slice: an agent cannot click Apple's picker (see abov
| 2026-10-17 | `v2.1.0-rc.5`, `release/v2.1.0` @ `3db4c7c`, DMG `Openscreen-macOS-Apple-Silicon-2.1.0-rc.5.dmg` from the GitHub pre-release (build run 39003658928): 140 610 214 bytes, sha256 matches the release asset's digest; `spctl` accepted, Notarized Developer ID (M4LK7C6S84); `stapler validate` OK; `CFBundleShortVersionString` 2.1.0-rc.5. Installed over rc.3 | macOS 27.0.1 (26A434), Apple M1 (arm64), 8 GB, one 1920×1080 display at 120 Hz (1×); OBS Virtual Camera (no physical camera), BlackHole 2ch | **Fail — targeted pass on the diff since rc.4 (#1294, #1296); 1 P2 defect: #1294 does not fix the Full Camera trail** | Real OS input through computer-use, launched with `OPENSCREEN_MAC_SOURCE_PICKER=legacy`, `OPENSCREEN_DIAGNOSTIC=1` and `--remote-debugging-port` (read only, for the `scripts/perf-ab/probe.js` paint probe). Measured with the app's bundled `ffmpeg`. Preview captured with avfoundation (120 fps requested, 75–77 fps achieved). Nobody else used the machine during the measures. Two HUD takes with the OBS webcam and microphone: a normal one (60 fps test pattern, 35.2 s, three automatic zooms) and a held-frame one (still screen: 9.3 distinct pictures/s, held up to 1.0 s; editable cursor moving with 3 s pauses; 24.3 s). **1. Full Camera at a cut (#1294) — fail.** Held take, Full Camera 2.961–21.167 s, four 1.24 s trims inside it, cuts at 5.043, 7.810, 10.616 and 13.396 s on the timeline. Exported MP4 1886×1080, 60 fps, 1157 frames, then compared each cut's first frame (303, 469, 637, 804) with its neighbours. Frames 469 and 804 show the trail: the full-frame camera in several copies sliding toward its PiP corner, differing from both neighbours (mean grey diff 31 and 30–33) while the neighbours differ by 5–9. Frames 303 and 637 are clean. The pattern fits millisecond rounding, not f32: `timelineMap.ts` emits each Full Camera piece with `startMs: Math.round(srcStartSec * 1000)`, while the clip keeps its exact start. When the rounding lands the piece's start after the clip's start (10.292957 → 10.293, 18.361809 → 18.362), the previous frame, held at the clip's start by 297dfeac/#1294, falls before the piece, where the camera is in its corner. When it lands before (6.284394 → 6.284, 14.340314 → 14.340), the cut is clean. This also fits the two rc.3 cuts. #1294's f32 explanation was a coincidence: 18.361809 rounds up in f32 and still ghosts. **2. Pause on a held frame (#1296) — pass.** Held take, played from 1.5 s, paused at 0:04.0 while the pointer was moving over a held screen frame, then lowered the padding (50 % → about 20 %), picked another wallpaper, then a solid orange background. After each change the playhead still reads 0:04.0 and the pointer keeps its position relative to the recording; nothing steps back. #1296 targets Linux, where the seek lands on the held frame; on macOS it lands at or after the target. **3. Preview smoothness after a seek — pass.** Normal take, seek to 5 s then play 16 s: probe 503 paints in 17.8 s = 28.2/s, p50 33.3 ms, p95 36.2, p99 39.5, readback only, 0 long tasks (the only interval over 70 ms is the wait between seek and play). Capture: 26.7 visible changes/s, no gap over 56 ms, 0 steps back. Held take, seek to 3 s then play 16 s: probe 28.3/s, p95 34.6 ms, nothing over 40 ms during playback. Capture: 0 steps back. Whole-frame gaps of 112–279 ms around 9–10 s fall on a pointer pause where only the small PiP webcam moves; measured on the PiP alone, 26.1 changes/s, max 78 ms. In line with the rc.3 measures; no new hitch. **Not covered:** Apple's picker; a physical camera; the Intel preview path; GIF export; the rest of the checklist. Takes, projects, export and DMG moved to the Trash; HUD camera and microphone set back to Off. |
| 2026-10-17 | `v2.1.0-rc.5`, `release/v2.1.0` @ `3db4c7c`, `Openscreen-Linux-2.1.0-rc.5.AppImage` from the GitHub release (build run 39003658928, all jobs green). sha512 matched `latest-linux.yml`; run directly, not installed. For A/B on the same machine and the same projects: the rc.4 AppImage from its release (sha512 matched) | Ubuntu 24.04, GNOME Shell 46 **Wayland**, AMD Radeon 610M, 1920×1080 @ 60 Hz, USB2.0 HD UVC webcam (10 fps in a dark room) | **Partial — diff since rc.4: #1296 passes (pause and seek on held frames); #1294 still trails at 3 of 5 cuts; no smoothness regression** | **Setup.** Driver: the `computer-use-linux` bridge of the rc.3 row, one RemoteDesktop grant. Takes are real PipeWire takes recorded through stdio `openscreen mcp` `startRecording` with `camera: true`, with the app quit first. While the app runs, its video-capture service keeps `/dev/video0` open even with the HUD hidden, and a take comes out with no webcam file and no error. **Finding: a real Linux PipeWire take has no long held frame.** A still screen with a still pointer, for 22 s and then 13 s, still gave a packet every 17–33 ms (no gap above 50 ms; 3201 frames in 55.2 s): the helper encodes a frame at every tick. On Linux the held-frame path (#1296) is therefore reached only with VFR media, imported or recorded on Windows or macOS. The rc.3 "1–2 updates/s" was measured on such a file. **The held-frame take used here** is the real webcam take turned VFR with mpdecimate, built like a PipeWire take (no B-frames, GOP 30, fragmented MP4, silent AAC to the end): holds 0.04→17.44 s and 21.40→33.47 s, last screen frame at 37.42 s, clip 51.18 s. **1. Full Camera at export (#1294): fail at 3 of 5 cuts.** Real webcam take with Full Camera 8.006–40 s crossed by five trims: 10.001–11.388, 15.2–16.0833, 20.5–21.7177, 26.3–27.4567, 31.111–32.2229. Motion blur 0.35. Exported at 1080p60 with MCP `exportVideo` (2969 frames, 49.47 s) and scanned frame by frame for one-frame outliers. - rc.5: the first frame after cuts 3, 4 and 5 (frames 1094, 1369 and 1588; 3.6, 4.7 and 0.4 ms after the cut on the output clock) shows the full-frame camera smeared toward its PiP corner. Cuts 1 and 2 are clean, and there is no other outlier in the file. - rc.4, same project: outliers at frames 600, 1094, 1369 and 1588. - So #1294 fixes only the PR's case (clip start 11.388, frame 600). Of the three starts still trailing, 21.7177 and 27.4567 round down in f32 and 32.2229 rounds up: f32 rounding of the start does not explain them on its own. The Windows rc.5 row also has one cut left. **2. Pause on a held frame, then a setting change (#1296): pass.** Held-frame take: seek to 24 s, play, pause at 0:27.6 (inside the 21.40–33.47 hold), wait 2 s, change the wallpaper, then the background blur. The playhead stays at 0:27.6, and the cursor stays where the telemetry puts it at 27.6 s (cx 0.189). rc.4 with the same steps: from the settle pass on, the cursor sits at its 21.40 s position (cx 0.551) while the playhead reads 0:27.6. **3–4. Seek then play.** Method: a helper capture of the canvas at 60 fps, as in the rc.3 row, counting changes per second, stills and A-B-A step-backs. Each run seeks by a ruler click and then plays, twice: into a still stretch at 26 s with 9 s of play, then into the final still stretch at 45 s, playing to the end. - **Held-frame take:** rc.4 (2 runs) gives 22–28 changes/s, with 100–133 ms stills recurring every 0.5 s (14 in the 9 s window: the drift watch re-anchoring) and 6–8 after the 45 s seek. rc.5 (2 runs) gives 29–30/s: a single 133 ms still 0.3 s after play, then nothing above 68 ms, and no step-back. - **Seek past the last screen frame** (45 s > 37.42 s): rc.5 holds 30/s and the cursor follows to the clip's end. - The 200–390 ms stall at play start is the same in both builds. - **Real (CFR) take:** rc.4 (2 runs) gives 29–31/s, stills mostly 34 ms, 150–267 ms at play start, no step-back. rc.5 (4 runs, one of them a fresh launch) has the same profile. One run, the first after a launch, measured 19–26/s with 51–83 ms stills, and the next three did not reproduce it. One A-B-A at play start in 1 of 4 rc.5 runs, none in rc.4. - So point 3 shows no new hitch, and the only step-back is that one at play start; point 4 is smooth. The preview still runs at ~30 distinct frames/s on this iGPU at 60 Hz in both builds (rc.3 row). **Also seen:** the MCP takes began recording 14–28 s after `startRecording` with no portal picker visible on screen, and the webcam started up to 28 s before the screen (`webcamOffsetMs` −28151 compensates). **Not covered:** #1294 in the preview; Full Camera across clip junctions and clip starts (trims only); a held frame coming from a real Linux take (there is none, see above); the `.deb`; the rest of the checklist. Takes, projects, audio peaks and media-link entries from this pass were deleted, and `~/.config/openscreen` was restored from a backup taken before the pass. |
| 2026-10-17 | `v2.1.0-rc.6`, tag @ `36b3814`, installer `Openscreen.Setup.2.1.0-rc.6-x64.exe` from the GitHub release (build run 39010637863). sha512 matched `latest.yml`; installed silently over rc.5. The uninstall entry and the MCP server report `2.1.0-rc.6`. | Windows 11 Home 26200 (x64), Ryzen 7 5800X, RTX 4070 Ti, 1920×1080 at 279 Hz; Logitech StreamCam | **Partial — minimal pass: smoke test and the fixes since rc.4. All pass, no critical defect** | Real OS input through computer-use. Export checks also ran from an SDK MCP client over stdio. **Smoke:** - The HUD appeared; a left click on the tray icon brought the minimized editor back. The silent install landed in `C:\Program Files\Openscreen`, where an rc.6 per-machine install already existed, rather than the per-user folder; the per-user rc.5 was removed. - A 44 s take with webcam, microphone and system audio, with clicks in an Explorer window (`wgc-capture.exe` granted mid-take). Stop opened the editor with the take, the webcam and one auto zoom. The take's audio peaks at −8 dB. - Playback moved; on a 60 fps capture of the preview, no step back. - Export from the dialog, MP4 1080p60: 1752×1080, 44.35 s, H.264 and AAC, decoded without error, audio peaking at −1.7 dB. - After quitting, reopening from the HUD showed the project intact: take, webcam, auto zoom, changed wallpaper, rewound zoom absent. **Fixes:** - Full Camera trail (#1294, #1304): the rc.5 project re-exported with the same cuts at 1080p60. The frame that trailed on rc.5 (first frame after the trim ending at source 46.34986635) is sharp, and no one-frame outlier is left in the export. Frames before it are identical to the rc.5 export. - Pause on a held frame (#1296): paused at 0:32.1 on a still passage, then changed the wallpaper. The playhead, the cursor and the webcam did not move. - Chat rewind (#1292): "Add a zoom from 2 s to 4 s" added a 1.8× zoom. Rewinding that message showed "Rewound to the start of that message": the zoom was removed and the text returned to the composer. No "Message not found" in the UI or the logs. **Not run:** - smoothness at 60 Hz (rc.5 row, #1301); - the rest of the checklist. |
| 2026-10-17 | `v2.1.0-rc.6`, `release/v2.1.0` @ `36b3814`, DMG `Openscreen-macOS-Apple-Silicon-2.1.0-rc.6.dmg` from the GitHub pre-release (build run 39010637863): 140 603 025 bytes, sha256 matches the release asset's digest; `spctl` accepted, Notarized Developer ID (M4LK7C6S84); `stapler validate` OK; `CFBundleShortVersionString` 2.1.0-rc.6. Installed over rc.5 | macOS 27.0.1 (26A434), Apple M1 (arm64), 8 GB, one 1920×1080 display at 120 Hz (1×); OBS Virtual Camera (no physical camera), BlackHole 2ch | **Partial — minimal pass toward stable: no critical bug; all 8 checked items pass** | Real OS input through computer-use, launched with `OPENSCREEN_MAC_SOURCE_PICKER=legacy`, `OPENSCREEN_DIAGNOSTIC=1` and `--remote-debugging-port` (read only: the `scripts/perf-ab/probe.js` paint probe, the playhead text and the editor's media elements). Measured with the app's bundled `ffmpeg`. Nobody else used the machine during the measures. **Smoke:** 1. The HUD appears. The tray icon (the green one in the menu bar; the aperture icon beside it is OBS's) opens Open / Check for Updates / Update Settings / Send Anonymous Usage Count / About / Save Diagnostics / Permissions… / Quit. *Open* brings back the HUD after *Hide recording bar*. 2. HUD take, 34 s, OBS webcam and microphone, six clicks on a 60 fps test pattern: the editor opens on it with the webcam PiP and two automatic zooms (1.25×, 1.80×). The take is 1920×1080 H.264 at about 56 fps, plus AAC 48 kHz stereo (mean −21.4 dB, real signal). 3. Playback: the preview moves. Probe 28.3–29.0 paints/s, p50 33.4 ms, p95 36.6. The preview's `<audio>` element plays unmuted at volume 1, in step with the playhead (4.27 → 6.34 s at 0:06.4); not judged by ear. Capture: 0 steps back, 28.8–29.5 visible changes/s. Each of two 15 s runs had one stall of about 200 ms (232 ms 11 s in, then 198 ms 2 s in; frozen on screen for 134–145 ms). rc.5's 16 s run on the same machine had none. The diff since rc.5 is export-only (#1304), so this is noted as an observation, not a regression. 4. Export MP4 1080p (1752×1080, 60 fps): 2031 frames over 33.87 s, AAC stereo at −19.2 dB mean, decodes with no error; the frame at 8 s shows the zoom and the webcam. 5. Quit, then relaunch and *Open Studio*: the project reopens intact, with its zoom, cuts, Full Camera, orange background and 15 % padding. Both project files are byte-identical (sha1) before and after the quit and the reopen. **Last fixes:** 6. Full Camera at a cut (#1294, #1304): the rc.5 cuts recreated exactly on a new held take, with the trims set to 5.043032–6.284394, 9.051596–10.292957, 13.098952–14.340314 and 17.120447–18.361809 s (app closed, values written into the project file) and Full Camera 2.961–20.5 s. Exported MP4 1868×1080, 60 fps, 948 frames. The first frame after each cut (303, 469, 637, 804) equals the next frame (mean grey diff 0.0) and differs only from the frame before the cut: no outlier, no trail. Frames 469 and 804 are the ones that ghosted on rc.5 (row above). 7. Pause on a held frame (#1296): held take (still screen, pointer moving). Paused at 0:04.2 while the pointer was moving, then padding 50 % → 15 %, then a solid orange background. The playhead still reads 0:04.2 and the pointer keeps its place over the recording. 8. Chat rewind (#1292), DeepSeek `deepseek-v4-pro`: two turns in a new conversation (a zoom at 1–3 s, then a "Rewind me" annotation at 5–7 s), then the second turn rewound straight away, in the same view, with no conversation switch or reload. Toast "Rewound to the start of that message"; the annotation leaves the timeline and the document; its text returns to the composer; `chat.json` keeps only the first exchange. No "Message not found". **Not covered:** Apple's picker; a physical camera; the Intel preview path; GIF export; the rest of the checklist (earlier rows). Takes, projects, exports and DMG moved to the Trash; HUD camera and microphone set back to Off. Side effect: choosing *Open* in the first menu-bar icon tried showed OBS's own window. |
Loading