diff --git a/technical-documentation/testing/manual-e2e-checklist.md b/technical-documentation/testing/manual-e2e-checklist.md index cc17b187e2..e553b032cc 100644 --- a/technical-documentation/testing/manual-e2e-checklist.md +++ b/technical-documentation/testing/manual-e2e-checklist.md @@ -977,3 +977,4 @@ These checks are the human slice: an agent cannot click Apple's picker (see abov | 2026-10-15 | `release/v2.1.0` @ `a6cd941f3` (advanced to `main`: shader effects integration #1210, MCP unification and editor parity #1175 to #1186, fixes #1192, #1194, #1197, #1205, #1222), CI artifact `openscreen-windows-x64` from build run 38714540858. NSIS sha512 matched `update-info-win-x64.json`; installed silently per user over the previous build; About still `2.0.0` (intermediate build). | Windows 11 Home 26200 (x64), Ryzen 7 5800X, RTX 4070 Ti, 1920×1080 @ 100 %; Logitech StreamCam | **Pass — new features first (shader effects, MCP), plus a short regression slice; 1 minor** | Real OS input through computer-use. MCP calls come from an SDK client over stdio (`Openscreen.exe mcp`, forwarded to the running app) and over the in-app HTTP server, whose token was copied from *AI settings*. **Tools:** 55, including `addEffect`, `setEffect`, `setEffectDefinition` and `getEffect`. **Recording:** a stdio `startRecording` on a Notepad window, with `camera: "StreamCam"`, system audio and real clicks, gives an 890×596 60 fps take of 35.8 s, with a webcam file, system audio at −3.6 dB and 1 zoom. **Shader effects over MCP:** - a WGSL grayscale with an `amount` parameter compiles, at cost tier `light` (1 frame read); - an effect overlapping another is refused ("one effect runs at a time"); - code that does not compile, in `addEffect` and in `setEffectDefinition`, is refused with naga's error at the column; - `setEffect` values apply; - a second region can reuse the effect by `effectId`; - with no export yet, `getFrames` renders from the document (#1230): grey inside the region, webcam included, colour outside; - a `ctx.clicks` tint is red 0.96 s after a click and absent 2.96 s after, as documented (the last 2 s only), both in `getFrames` and in an MP4 export, where the frame centre at 28 s reads RGB 135/5/19. **Shader effects in the editor:** the Effects lane shows each region. An effect added over MCP to the open project lands live and comes off with one Ctrl+Z. The effect inspector shows the parameter slider, the Image / Text / Both target, the cost and the code; moving its slider to the middle desaturates the preview by half, and `getEffect` reads it back as `amount: 0.48`. **Captions:** `transcribe` finds 25 English words; `putCaptionTranslation` writes 4 French units; `setCaptionSettings` (`bold`, `fr`) shows them live in the editor preview. **In-app server:** with *MCP edits* turned on, `startRecording` answers `recording: true` in 4 s through the recording bar, with its countdown and only the app's own `wgc-capture.exe` running (#1205). `stopRecording` returns the 24.1 s take with webcam and system audio, open in the editor under the requested title. **Regression:** the Export dialog's MP4 at 1080p and 30 fps, saved through the native save dialog, gives 1506×1080 at 30 fps, 722 frames for 24.07 s. The MCP export of the same project carries the click sound at both clicks. **Minor:** each `getFrames` rendered from the document logs `Failed to read the click telemetry of ReferenceError: window is not defined` (from `src/lib/ai-edition/clickSound.ts`, run in the main process). The frames are right and the export still has its click sounds, so only the log is affected. Not run: the microphone (no working input on this machine); HUD-started takes, tray, settings, i18n and persistence sections of the checklist beyond the slice above; macOS and Linux. | | 2026-10-15 | `v2.1.0-rc.1`, `release/v2.1.0` @ `cd88be2`, CI artifact `openscreen-windows-x64` from build run 38735485661. NSIS sha512 matched `update-info-win-x64.json`; installed over the previous build; About reads `2.1.0-rc.1` (Electron 41.2.1, Chromium 146.0.7680.188, Node 24.14.1, `win32 x64 · nsis`). | Windows 11 Home 26200 (x64), Ryzen 7 5800X, RTX 4070 Ti, 1920×1080 @ 100 %; Logitech StreamCam | **Partial — whole checklist attempted for the release candidate; 5 P2 failures, plus 1 known P2 that predates the candidate** | Real OS input through computer-use; MCP checks from an SDK client over stdio and the in-app HTTP server; audio judged on exports with a 200→2600 Hz sweep as the track (frequency = track time). **Failures:** - *Hide desktop icons*, a known defect from before this candidate (P2, not a regression; `desktop_icon_cover.cpp` has not changed since 2.0.0): the icons come back at the first click on another window, so a take shows them from then on. A take with no click keeps them hidden. The cover is placed above the icon host once and never placed again. - Full Camera preview (P2, preview only): the webcam picture is torn (a washed-out band over the bottom third) at 31.6 s and 47.5 s, and smeared over one frame at a trim cut; `getFrames` and the webcam file are clean. - Voiceover export (P2): over a 2× speed region followed by a cut, the piece before the cut runs 0.9 s into the next one and both play at once. Also no fade-out at the take's end (P3). - AI chat rewind (P2): the rewound user message stays in the conversation, and the next turn (*Smart cuts*) executed it again, bringing the rewound annotation and zoom back. - AI chat (P2, 2 turns of 5): operations reported as "applied" never reached the document (an annotation; *Smart cuts*' "added 3 trims"). *Smart cuts* took 3.5 min with no stop control. - A text annotation keeps its box as a share of the frame (P2): after a frame-style change it wraps and is clipped, in the preview and the export render. **Passed:** - HUD: layout toggle, drag, language, camera and mic toggles, *Device settings*, *Camera quality* (4K default; 1080p persists; a hand-edited 720p shows 4K), hide and tray refocus, quit. - Source picker; record, pause, restart, cancel, stop. A webcam take on a sub-4K camera records 1920×1080 at 30 fps. - *Record mode* rows, hand-over, auto-zoom On/Off. *Recordings folder*: pick, persist, reset. - Editor: Media tab, clips (reorder, *Edit clip* grips, ratio lock and *Free*, trim-bar playhead, the rail's clip picker), copy/paste of a clip carrying four modifiers (#1011), transport, end-of-timeline hold (#997). - Regions: every kind; zoom level row on a 1080p take ("Zoom goes from 1× to 2.5×"); 3D camera presets; orbit offering rule; focus drag; *Automatic zooms* (one undo); delete; speed playback. - Modifiers under a trim, and a trim inside Full Camera. Zoom trails with trim and junction hatching, pan trail, #1017, #1008. Clip-anchored modifiers through reorder, split and rejoin, clip delete, *Edit clip* clamp, region copy/paste. - Imported audio: label, inspector, -18 dB / 1 s defaults and reset. Ghost and `in → out / length` readout on edge drags. Mute absent from the file, loop fills its span, ~10 dB duck under speech. A music bed plays through a cut, by design (#560). A voiceover cut removes its words. It still loads after a restart. - Transcript and captions: seek, cut and undo (#1012), silence trim and restore, word correction surviving *Regenerate*, *Names and terms*, styles, customize, translate and delete, anchors. Caption plate measured on a 1752×1080 export: left edge 174–176 px for 175.2 expected. The packaged-build insertion gate holds. - MCP: edit, record and export are refused without *MCP edits*; edits to the open project land live. - Export dialog. GIF: cancel without a partial file; 1222 frames at 25 fps; plays once. MP4: 1466 packets = ⌈(48.866 − 0.001) × 30⌉, audio in sync, true peak −2.0 dBFS. - Composition, camera layouts, camera background (Cutout/Blur/Custom, in the export), Glass Lens, theme, French UI. - Shortcuts dialog (rebind and reset), wordmark menu, About and Copy, Ctrl+S/Ctrl+O, persistence (document identical after reopen), editor bounds after restart. - Usage ping: `usage-ping.json` written once on the day despite six relaunches. CLI `help` lists `mcp`; a held `mcp` process owns no window. - Takes: H.264 High, no B-frames, bt709 tags, AAC 48 kHz, hardware encoder. **Not run:** - Every tray context-menu check, the usage-ping checkbox included: right-click on the notification area is refused to computer-use. - Preview audio by ear; the microphone with speech. - Ctrl/Shift+wheel; MP4 cancel (the export finished first); the in-app `startRecording` flow and stdio quit/relaunch (passed on build 38714540858). - Migrated projects, ONNX removal, data-testid checks. The macOS-only CLI menu fixes (c309edd, 40c01bf, 2d4ac75) have nothing to observe here. - Hardware-specific Windows rows: displays, 96 kHz, C920, Windows 10, ARM. Evidence and the full list: the run's notes. | | 2026-10-15 | installed `v2.1.0-rc.1`, `release/v2.1.0` @ `cd88be2` — `.deb` (`2.1.0~rc.1`) from build run 38735485661, artifact `openscreen-linux` (AppImage sha512 matches `latest-linux.yml`), installed over 2.0.0 with apt. The run's first attempt failed on `macOS x64 DMG` ("Validate stapled DMG"); the second published the pre-release without re-running the Linux job, so the published Linux packages are the ones tested here | Ubuntu 24.04, GNOME Shell 46 **Wayland**, AMD Radeon 610M (Vulkan/VAAPI), 1920×1080 @ 100%, USB2.0 HD UVC webcam | **Partial — 6 defects** (all Linux/Wayland; 5 of 6 fixed for rc.2, and the countdown placement in (1) is still open) | **Driver: `agent-sh/computer-use-linux` 0.7.16 MCP, not the computer-use MCP** (no Claude Desktop computer-use on Linux). Pointer input goes through the RemoteDesktop portal (compositor-level, real OS events), screenshots through the screenshot portal. Its keyboard needs a *second* portal grant that was never answered, so **no key was sent all run**; its drag is press → one jump → release in 70 ms, so **HTML5 drag-and-drop cannot be driven**. Screenshots lag one frame, and **every portal screenshot flashes the GNOME screen white — flashes taken during a take are baked into the capture** (onsets measured in the source); the washed frames in the exports below are those, not an export defect. **Defects:** (1) **the countdown's last digit "1" is recorded in frame 0 of full-screen takes** (2/2 checked), and the overlay is placed by mutter, not centred (top-left on one take, lower-middle on another); window takes are clean. (2) **Tray → Open does not bring back a minimized HUD**: GNOME only shows "“openscreen” is ready" (`hud-overlay-hide` → `minimize()`, and xdg-shell has no unminimize); the dock icon restores it. (3) **Vertical HUD runs off the screen**: the window grows to 648×1080 but keeps its top-left (~150,186), so record sits under the dock and Studio/language/hide/quit are below the screen edge until dragged. (4) **HUD cannot be dragged into the top of the screen**: x follows the pointer exactly and the drop point holds, but the bar stops at y≈681 (horizontal) / 593 (vertical) — the transparent reserve is part of the window and mutter keeps the window's top under the top bar. (5) **Editor restore button does nothing** (2 tries; stays maximized) and `editor-window.json` is written with impossible normal bounds — `{x:256,y:-10,1440×1121}` on a 1080-tall display. (6) **Save Diagnostics bundle is nearly empty on Linux**: `recentLogs` and `mainProcessLogs` `[]` despite plenty of main-process output, `projectState: null` with a project open, `helperOutput` has only `windows`/`mac`. Minor: the first frame of a VAAPI take is soft/blocky in its lower half (I-frame 54 KB, crisp by frame 5) and it is the frame the editor opens on; window captures keep the CSD shadow margin as an opaque black border around the window; window takes write no `.cursor.json` (cursor facet absent). **Since the pass** (merged to `main` and cherry-picked to `release/v2.1.0` for rc.2, not yet re-verified on a build): (1) the digit in frame 0 → #1267; (2) and (3) → #1272 (on Linux the HUD is hidden instead of minimized, and the vertical bar is kept on screen); (5) → #1271 (works around electron/electron#53063 and stops the saved bounds drifting); (6) → #1268 (main-process logs from launch and the Linux helper's output; the open project stays out of the bundle on purpose); the soft first VAAPI frame → #1269 (QP capped). The shadow border and the missing cursor of window takes are documented as limits in #1270. Still open: (4), which needs a HUD design decision, and the countdown's placement under mutter from (1). **Passed:** single instance (second launch exits 0 in 0.7 s); layout toggle both ways; language menu; minimize keeps the app alive; quit clean; tray menu (Open / Check for Updates / Update Settings ▸ with the 3 modes / Send Anonymous Usage Count / About / Save Diagnostics / Quit), recording state = red icon + only "Stop Recording", Check for Updates back after the take; HUD device panel (mics, live level, camera + preview, `Version 2.1.0-rc.1`). **Capture:** no in-app source button; the portal picker comes before the countdown, from the HUD and from the Rec stage alike, and **every** start asks again (5×); screen take 1920×1080, 3008 frames / 50.42 s, 0 dropped, `vaapi`, AAC 48k stereo, cursor + session sidecars, webcam webm 1280×720 30 fps (−73 ms offset); **window take 866×628 = the window, not the monitor**; pause freezes the timer and the file (~66 s wall − ~16 s paused ≈ 50.4 s); restart discards and re-asks the portal; cancel discards the file, mints no project, opens no editor, and leaves no OpenScreen PipeWire screencast node (`pw-dump`); system-audio-only take carries exactly the 6.04 s test tone (silencedetect); mic-only take (`role:microphone` only) picks the tone up acoustically, +10.4 dB in the 1 kHz band; capture prefs survive a restart. **Editor:** modes, play/pause, ruler seek, playback skips a trim (0:17 → 0:27.1 over ~5 s), trim edge drags, zoom levels / 3D presets / manual focus drag, speed presets, text / blur (mosaic, smooth, oval) / arrow annotations, annotation drag persists, undo/redo, wallpaper / gradient / colour / 1:1 frame, Dual-frame layout, **AI camera Cutout works** (ONNX Runtime bundled), theme light↔dark, locale fr↔en, wordmark menu (About row `2.1.0-rc.1`, About box with Electron 41.2.1 / Chromium 146 / Node 24.14.1 / `linux x64 · deb`, Keyboard Shortcuts, AI settings with the provider list and MCP server section), Open project dialog, reopen keeps every modifier, a 2.0.0-era project opens without schema error. **Transcription** auto-runs after stop on `whispercpp-vulkan` (50.5 s in 6.0 s); a TTS take transcribed word-perfect with silence spans and durations; word click seeks monotonically (0:04.5 → 0:12.5); captions on, Bold, top position; **translation via the configured OpenAI-compatible provider** → "Ceci est un test de transcription locale", back to Original. **Export MP4 1080p60** via `h264_vaapi` (hardware, dmabuf): 1752×1080, 2613 frames / 43.533 s, AAC 43.550 s (Δ 16.7 ms = 1 frame @ 60), decodes clean, ~33 s for 43.5 s; progress predicted 2617 = (50.474667 clip − 5.584431 trim − 2.577 × ½ speed) × 60, and 2613 = the same with the video stream's 50.4167 s end — the clip is sized to the audio, 3.5 frames longer than the video. Frames show background, card, webcam, cursor, the dragged arrow and the 2.2× auto-focus zoom. **GIF** 20 fps Small, loop off: 778×480, 871 frames / 43.55 s, decoded by ffmpeg and PIL, no NETSCAPE loop block. **Not run:** everything that needs a key (Esc, shortcuts incl. Ctrl+S/Ctrl+O, renaming, custom values, transcript word edit/insert/Backspace, chat and chat-driven editing), HTML5 drag-and-drop (media → timeline, clip reorder, therefore the whole modifier-anchoring section), imported audio / voice-over, unsaved-changes prompts, Check for Updates flows, About → Copy (an unfocused process cannot read the Wayland clipboard), mic + system balance, the CPU-notice path (GPU present). Observations, not filed: no H.264/H.265 choice in the export dialog and no blur intensity / block size / freehand in the inspector (checklist drift?); AI settings shows "–" for the OpenAI-compatible model although the config names one; `Ctrl+Shift+O` cannot register (GNOME 46 has no GlobalShortcuts portal). | +| 2026-10-16 | installed `v2.1.0-rc.1` (`cd88be2b1`), CI-built DMG `Openscreen-macOS-Apple-Silicon-2.1.0-rc.1.dmg` from build run 38735485661 (the macOS x64 job failed once on Apple's ticket service, error 68, and passed on rerun; the pre-release then published), Developer ID signed and notarized (`spctl`: accepted, Notarized Developer ID, M4LK7C6S84); About reports `2.1.0-rc.1 (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×, no camera (MDM), BlackHole 2ch as the only input | Partial, no defect | **Scoped to what the RC adds over the builds already passed** (rows 2026-10-12 and 2026-10-15), real OS mouse and keyboard through computer-use, launched with `OPENSCREEN_DIAGNOSTIC=1` and `OPENSCREEN_MAC_SOURCE_PICKER=legacy`; numbers are ffprobe/ffmpeg on the files. **Usage ping (`b5ff5a348`):** under `DO_NOT_TRACK=1` no ping (`usage-ping.json` unchanged after 10 s) and no tray item; a normal launch pings within 2 s (`day` moves to 2026-10-16, week and month unchanged); the tray's *Send Anonymous Usage Count* is checked by default, unchecking writes `enabled:false`, checking it again restores `true`. **Shader effects (Metal):** the chat agent adds a "Black & White" effect on 0:03–0:08, shown as its own pill with an inspector (Image/Text/Both, cost Light, Code, Delete region); the preview is grey at 5 s and in colour at 9.7 s; the 30 fps export measures SATAVG 0 inside the span and about 21.5 outside. **MCP:** with the project open in the editor, a stdio `addTrim` shows on the timeline at once and Cmd+Z removes it (#1174); `createProject` from the speech fixture, `transcribe` (fr, 122 words), `setCaptionSettings` bold, `exportVideo` 720p: the captions are burnt in ("Voilà, alors je fais un petit enregistrement," at 3 s). **Recording:** HUD take of the screen, stop, editor opens; window take of System Settings through Record mode with system audio: 1446×1920 H.264 + AAC 48 kHz stereo, a 1 kHz tone on the speakers is in the take at −34.6 dB band level (`aa17b10a9`). **Export:** GIF with Loop off carries no NETSCAPE block (`173f615d0`). The CLI menu, #1214 and #1233 were passed the day before on builds with the same CLI code. **Skipped:** the in-app HTTP MCP server's new record and export paths (no HTTP MCP client here); Apple's picker slice; camera checks (MDM); the rest of the file (rows above, including the 2026-10-14 full pass on `main`). **Checklist gap:** no section covers shader effects or the usage ping yet. |