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 @@ -965,3 +965,4 @@ These checks are the human slice: an agent cannot click Apple's picker (see abov
| 2026-10-14 | `main` @ `5bc559198`, CI artifact `openscreen-windows-x64` from build run 38564622152; then `fix/mcp-native-take-start` @ `bdfa71641` (#1205, now merged), build run 38582471723. NSIS sha512 matched `update-info-win-x64.json` for both, silent per-user install, About still `2.0.0` (intermediate build) | Windows 11 Home 26200 (x64), Ryzen 7 5800X, RTX 4070 Ti, 1920×1080 @ 100 %; Logitech StreamCam | **Pass after #1205 — in-app MCP server; 1 defect found and fixed** | Real OS input through computer-use. Calls come from an SDK client over `StreamableHTTPClientTransport` to `http://127.0.0.1:<port>/mcp`, with the Bearer token copied from *AI settings* and read from the clipboard (the server is ephemeral in dev). **Gate:** with *MCP edits* off, `addZoom` returns `consent_required`, and its guidance names *MCP edits*; `startRecording` and `exportVideo` are refused, also naming it. **Live edit:** with *MCP edits* on, an `addSpeed` on the open project lands live and one Ctrl+Z takes it back. **Export:** `exportVideo` at `fps: 30`, `quality: "medium"` gives 900×720 at 30 fps. To a `.gif` with `gifSize: "small"` it gives 600×480 at 15 fps, and `getFrames` returns the asked frame. A relative path is refused ("The path must be absolute"). **Port:** set to 47822 and applied, the old port refuses connections, the new one serves the same token, and the Claude Code snippet shows the new port. **Defect (P1, #1204):** on `main` @ `5bc559198`, `startRecording` on a window closes the editor and the recording bar records after its countdown, with only the app's `wgc-capture.exe` running, but the call waits 120 s and answers "capture had not started". `stopRecording` then finds no take, and the bar keeps recording until stopped by hand. Cause: the native capture paths never told the MCP recorder a take had started. **After #1205:** `startRecording` answers `recording: true` in 2 s, and `stopRecording` returns the 29.2 s take with its webcam and 1 zoom, open in the editor under the requested title. The bar's recording settings come back to what they were before the take. Not run: *Enable MCP server* and *MCP edits* off by default, because this profile had already enabled the server; the refusal while the editor has unsaved changes; the microphone, with no working input on this machine. |
| 2026-10-14 | `main` @ `5bc559198`, CI artifact `openscreen-linux` from build run 38564622152. The `Openscreen-Linux-2.0.0.AppImage` sha512 matched `latest-linux.yml`; it was extracted (`--appimage-extract`), because WSL has no libfuse2 and no passwordless sudo for the `.deb`. About not read, since the GUI was not driven. | WSL2 Ubuntu 24.04 (kernel 5.15.146.1) under WSLg on Windows 11 Home 26200, Ryzen 7 5800X, RTX 4070 Ti. Chromium's GPU process fails to start under WSLg and falls back; Mesa/ZINK warnings. | **Partial — headless only (MCP stdio + CLI), 1 defect** | WSLg draws the Linux windows through `msrdc.exe`. Granting it to computer-use was declined, so nothing in the GUI was driven: no HUD, editor, tray or settings. The app was launched under WSLg (`--no-sandbox`) while an SDK MCP client drove `openscreen mcp` with `ELECTRON_DISABLE_SANDBOX=1`. The CLI rejects `--no-sandbox` after a subcommand, and the SDK's stdio transport passes no `DISPLAY` unless given the full environment. **Works:** - `listSources` lists one display, no camera (WSL has none) and the `RDP Source` microphone; - `createProject` from a 17.2 s video; - `setEditorSettings` with a laptop frame, a wallpaper and 16:9; - `setCaptionSettings`; - `addAnnotation` with a 72 px title and a mosaic blur; - `addZoom`; - `exportVideo` at 30 fps: 1920×1080, 516 frames for 17.2 s, and the 4 s frame shows frame, title and blur; - a `.gif` with `gifSize: "small"` and `gifLoop: false`: 852×480 at 15 fps with no NETSCAPE block; - CLI `export --fps 24`: 413 frames for 17.21 s. **Defect (P1, Linux): transcription fails over MCP and the CLI.** The Linux package ships the ffmpeg libraries (`helper-ffmpeg/`) but no ffmpeg executable. So `transcribe` returns "stt:native-extraction-unavailable: no ffmpeg binary for native audio extraction", and `getCaptionTranslationUnits` has nothing to translate. `Openscreen captions <project>` falls back to the renderer decode, which refuses the path: "Transcription failed: File path is not approved or is not a supported video file". A system `/usr/bin/ffmpeg` is on `PATH` and is not used. Not run: everything in the GUI (grant declined); screen and window recording (no xdg-desktop-portal ScreenCast or PipeWire in WSLg); the webcam (none in WSL); the tray (not shown by WSLg); the in-app HTTP server (its token is read from the GUI); transcription in the editor, which may still work through its own fallback. |
| 2026-10-14 | `main` @ `0bed36852` (adds #1192, #1194, #1197 over the 2026-10-14 Windows rows; c541fffaa, the recording-state fix, landed after this build and is not in it), CI artifact `openscreen-mac-arm64` from build run 38581408372, DMG `Openscreen-macOS-Apple-Silicon-2.0.0.dmg` signed and notarized (`spctl`: accepted, Notarized Developer ID, M4LK7C6S84), installed over `/Applications/Openscreen.app`; About reports `2.0.0 (dmg)`, Electron 41.2.1, Chromium 146.0.7680.188, Node 24.14.1, darwin arm64 | macOS 26.5 (25F71), Mac mini M1 (arm64), one 3840×2160 display at 2× (UI 1920×1080), no camera (Scaleway MDM `allowCamera=false`), BlackHole 2ch as the only input | **Partial, 4 defects; MCP section and #1194 first, rest scoped** | Real OS mouse and keyboard through computer-use; MCP calls from `@modelcontextprotocol/sdk` 1.x (stdio to `Openscreen mcp`, StreamableHTTP to `127.0.0.1:<port>/mcp` with the token copied from AI settings); numbers are ffprobe/ffmpeg on the files. **Pickers:** the first launch (from Terminal, no `OPENSCREEN_MAC_SOURCE_PICKER`) only served the permissions window; every take used the legacy selector (`open --env OPENSCREEN_MAC_SOURCE_PICKER=legacy`) or the MCP servers, none went through Apple's picker. **#1194:** `keepOnTop` is a no-op off Windows, so the bar stays at window level 3 (floating), under the Dock (20) and the menu bar (24); it stays above a frontmost Finder window after the source selector, Device settings and the language menu, keeps its tooltips and clicks, stops under the menu bar and above the Dock when dragged, is pushed down by the language menu near the top and comes back (#1161), and does not float over another app's full-screen Space, as `macSpaces.ts` documents. **MCP stdio:** `help` lists `mcp`; `listTools` 51 tools; `listSources` displays, windows, both BlackHole inputs, no camera; window take 1840×872 with no Apple picker, 4 clicks 5 s apart gave 1 zoom (the no-yo-yo rule of `resolveShots`, not a defect); edit to a closed project, `restoreCheckpoint` to the raw take, edit without checkpoint refused; `exportVideo` 30 fps after a 6 s trim, 1085 frames for 36.17 s as predicted; `getFrames` maps ruler 27 s to file 21 s and warns once the project changed; `cursor: "system"` take has the system pointer and 0 zooms; `camera: true` refused (MDM); `setPointerTrack` 391 samples, 1 zoom, cursor drawn in the export. **#1174:** in-app server off, project open: `listProjects` `open: true`, a stdio edit shows live and one Cmd+Z takes it back, an editor change keeps it, `restoreCheckpoint` lands live and one Cmd+Z restores every edit; app quit: the edit asks for a checkpoint, then lands in the file after `createCheckpoint`; relaunch and reopen: the same client session edits live again. **In-app server:** off by default with *MCP edits* off; *Running* with port, token (Show, Copy, Regenerate) and snippets; edit, `startRecording` and `exportVideo` refused naming *MCP edits*; once allowed, an edit lands live and undoes with Cmd+Z; port 47821 → 47822 then *Apply*: the old URL fails, a client reconnects on the new one. **#1180 tools, both servers:** `createProject`, `setProjectInfo`, `transcribe` (35 English words, about 10 s), `getCaptions`, `setCaptionSettings` (bold), `getCaptionTranslationUnits fr` (4 units), `putCaptionTranslation` with a French translation written by hand and shown, `setEditorSettings` (laptop or window frame, wallpaper, 16:9, `webcamBackgroundMode: transparent` stored with the reason "No clip on the timeline has a camera"), `addAnnotation` (72 px title, mosaic and smooth blurs), `importMedia` (MP4 and M4A), `insertClip`, `duplicateClip`, `setClipRange` `cropRegion` (cropped frame in the export), `removeMedia` refused while on the timeline and naming the clips, then removing an unused asset, `addAutoZooms` (0 added, telemetry per asset). **Exports:** MP4 at `fps: 30`, 1920×1080, 721 frames for 24.03 s, and 1280×720, 1687 frames for 56.23 s, both as predicted; GIF `gifSize: "small"`, `gifLoop: false`: 852×480, 15 fps, no NETSCAPE2.0 block (#1197); `gifLoop` on an `.mp4` refused; MP4 opened in QuickTime and GIF in Preview, judged by their windows only (the viewers' grant was refused). **CLI:** `Openscreen captions <project>` transcribes on Metal (11.7 s in 8.4 s), turns captions on, no `auto-caption` annotation. **App, legacy picker:** permissions window lists the 15.2+ rows (System audio, Accessibility, Microphone, Camera), then Screen & system audio (Required) first under `legacy`; Device settings lists the inputs and "No camera found" with no quality row; camera toggle refused with "Camera not found."; Record mode rows (Recordings folder last, Auto-zoom only with Editable cursor), *Start recording* hands over to the bar with the same settings; pause stops the timer and resume restarts it; stop opens Edit with 3 zooms; full-screen take 3840×2160 edge to edge, bar and desktop icons absent, system audio −12.6 dB; zoom-in and zoom-out trail tooltips; Glass Lens in preview and in a 720p30 export (1234 frames, true peak −1.6 dBTP, −18.5 LUFS on the clipped fixture voice); *Mouse clicks* off by default, *Click volume* once on, a click at 34.76 s in silence; export dialog (formats, sizes, rates, no codec), progress, *Saved to*, *Show in folder*; Cmd+O lists MCP projects; #997 holds the last clip's last frame at 0:24.0; app menu and menu bar item menus; About; Save Diagnostics writes a bundle. **Defects. (1) P1, MCP in-app `startRecording` (same as Windows, fixed after this build by c541fffaa):** the bar records within 5 s but the call returns after 120 s with "capture had not started", and on macOS the take is then lost: `restore()` ends it, no file is left, no editor opens, and `stopRecording` says "No recording is running." **(2) P2, launch blocked by the stdio server:** while an `Openscreen mcp` client session runs, opening OpenScreen from Finder or `open` starts no GUI (exit 0, no window); LaunchServices activates the `mcp` process instead, which turns `Foreground` with its own Dock icon after its first take. `open -n` works around it. **(3) P3, `getFrames` cannot read a GIF:** with `path` to a GIF, or with `projectId` after a GIF export, both servers answer "Chromium could not decode the video (media error 4)", so the documented check after `exportVideo` fails for GIFs. **(4) P3, system audio on a window take:** an MCP window take with `systemAudio: true` is silent (−91 dB) while sound plays from another app, because `SCContentFilter(desktopIndependentWindow:)` keeps only the window's own app; a display take of the same sound reads −10.5 dB. Windows records the whole mix. **Minor:** the `camera: true` error still carries a JavaScript stack trace; the stop click gets a click sound at the end of the export (40.9 s) although the zoom planner discards it. **Skipped:** Apple's picker slice and the permissions window's prompt rows (operator chose the unattended legacy run; Screen Recording already granted); the system-language prompt (system in English, so it never shows); Spaces switch (one Space); every camera and Full Camera check (MDM); in-app `startRecording`/`stopRecording` end to end, its zooms, settings restore and the unsaved-changes refusal (blocked by defect 1, the bar's settings did come back after the timeout); microphone audio (no source plays into BlackHole); Windows, Linux, macOS 13/14, Intel; not run for time: chat, names and terms, transcript editing, clip anchoring, audio tracks, voice-over, caption placement, persistence, editor bounds, GIF timing against v2.0.0, export cancel. |
| 2026-10-14 | `main` @ `2d98601c4` (includes c541fffaa, the recording-state fix), CI artifact `openscreen-mac-arm64` from build run 38598557320, DMG signed and notarized (`spctl`: accepted, Notarized Developer ID, M4LK7C6S84), installed over the build of the row above; About `2.0.0 (dmg)` | macOS 26.5 (25F71), Mac mini M1 (arm64), one 3840×2160 display at 2×, no camera (MDM) | **Pass, scoped to defect 1 of the row above** | Real OS input through computer-use, launched with `open -n --env OPENSCREEN_MAC_SOURCE_PICKER=legacy` (`-n` because another session's `Openscreen mcp` was running, #1214); MCP calls from an SDK StreamableHTTP client to the in-app server. **In-app `startRecording` (c541fffaa):** on a Finder window, with the microphone and the editable cursor requested while the bar had both off, the call returns in 4.9 s (was a 120 s timeout and a lost take); the editor closes, the bar records with the requested settings and one capture helper runs. `stopRecording` returns in 2.7 s with the `projectId` of the project the editor opens on, in Edit, one clip, no zoom (Record mode's Auto-zoom after recording is Off), take 1840×872, 26.9 s. The bar's microphone, cursor mode and last source are back to their values from before the take. `addZoom` on it shows live and Cmd+Z / Cmd+Shift+Z take it back and forth; `exportVideo` at 30 fps gives 806 frames for 26.87 s as predicted, and `getFrames` shows the zoom at 8 s. **Skipped:** the refusal while the editor has unsaved changes (the drag meant to hold the editor dirty never moved the pill, so the accepted `startRecording` that followed proves nothing either way); zooms after an in-app take with Auto-zoom On; the defects of the row above other than defect 1 (#1214, #1215, #1216 still open). |
Loading