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 @@ -950,3 +950,4 @@ These checks are the human slice: an agent cannot click Apple's picker (see abov
| 2026-10-03 | `main` @ `0624c148` (sources identical to `v2.0.0-rc.13` in `crates/`, `src/`, `electron/`), packaged locally (`electron-builder --mac dir --arm64`, ad hoc signed), `compositor_view.node` SHA256 `7c1d38d664d29fa78615c386aa86e53456f1e662289ad53a2a128d588b99d560`; baseline the installed `v2.0.0-rc.12` DMG (Developer ID) | macOS 26.5 (25F71), Mac mini M1, 1920×1080 @ 2× | Partial, no defect | **Shader split, corner fast path, background cache and trail scissor (#982, #983, #984) on Metal. Not a computer-use pass:** `request_access` was refused with nobody at the machine, so the editor was driven over CDP (synthesised clicks on the inspector, preview pixels read from the canvas). `cargo test -p openscreen-compositor --lib --tests`: 407 passed, 0 failed, `every_shader_entry_point_compiles` (with the `LAYER_MODELS` library) and the macOS device-frame and 3D-cursor tests included; the `tests/` render binaries are Windows/Linux only and ran 0. **Export** (`openscreen export`, MP4 1080p60): bench project plus four variants (laptop + 3D cursor + click impact + blur, phone dark + Prism Glow + Aurora gradient, monitor + click impact + colour, window + full blur), frames extracted with ffmpeg: device frames with their shadows, 3D cursor with its shadow, click impact, trail, rounded corners and backgrounds all present. Same projects exported losslessly (`ffv1` candidate added locally, measurement only) with the rc.12 and main addons in one bundle: luma differs by 1/255 on anti-aliased edges, and by up to 20/255 on at most 159 px of a few frames along the 3D models' silhouettes (Metal fast math, models now in their own library); nothing missing. **Preview:** wallpaper image → gradient → colour → back, blur 50 % → 0 %, aspect 1:1 → Auto each return the exact starting frame; a static background holds still over 1 s of playback, *Aurora* animates; laptop and phone frames draw their shadows. **Perf** (screen-recorder-benchmark `commons-upload`): rc.12 1.134× floor, main 1.066×, figures in `rendering-performance.md`. **Not covered:** real recording, HUD, tray, computer-use input, the GUI export dialog, Escape, a 1.11.0-rc.1 run in the same session (discarded: a Parsec session went live mid-run), Windows (the D3D11 port is still unrun on a real GPU) and Linux. |
| 2026-10-11 | dev helper from `fix/os920-resample-continuity` @ `aa27e6fdf` (audio fix commits `50a433168` cross-packet continuity + `e29119445` starvation-resume restart; helper and test exe built from the committed tree with `npm run build:native:win`; test-exe sha256 `bb6921d0…`); historical evidence archived under former fork staging PR `My-Denia/openscreen#23` for study issue #920 §24; current submission: upstream PR [getopenscreen/openscreen#1113](https://github.com/getopenscreen/openscreen/pull/1113), open, with CI green on the head under review | Windows 11 build 26340.9616; **both audio endpoints fixed 48 kHz shared mode** (measured: single-valued 480-frame/10 ms packets, 0 non-aligned) | Partial — no defect found; two paths not real-machine testable on this host | **Audio resampling continuity slice (#920 item 24), helper-level + real-machine hybrid.** The defect: `convertAudioWithGain`'s non-integer branch held no cross-packet state, so identical input produced different output depending on packet boundaries (48k→44.1k, 100-frame packets: 14700→14720 frames, drifting positions). The fix adds cumulative integer-rational output accounting (K(N)/C(N)), absolute-position interpolation with the legacy arithmetic preserved, bounded retention, and a `finalizeAudioConversion` tail used only by the stateless test-facing overload; a second commit restarts the interpolation stream at mixer starvation-resume (automated-review P2: the new state could otherwise complete ≤⌈T/S+½⌉ deferred frames across a real-time gap using pre-gap samples — a blend the pre-fix stateless converter never made; integer decimation and same-rate paths keep their pre-existing cross-gap behavior, pinned by controls). **Evidence:** assertion-based old-FAIL on the pristine pinned base (9 named failures) → new-PASS; full native suite **176/176** and focused 54/54 on that base; starvation fix proven behaviorally old-FAIL (`50a433168`: 1 failing mixer-path test — resumed queue 368 bytes vs cold 364, first frame −12594 = pre-gap/post-gap blend vs cold +16384) → PASS after `e29119445`. **Submitted-tree native validation, separately attributed:** pre-chain validation of the candidate tree that became `5764aa2b6e` completed `npm run build:native:win` with 0 errors, full native suite **177/177**, and focused suite **55/55**, including `os920-finalize-appends-after-whole-frames` PASS. These are separate submitted-tree results, not a re-run or replacement of the historical pinned-base pass above. **Real machine (matched-rate only):** 6×60 s 48 kHz/48 kHz recordings (3 pre-fix/3 fixed helpers interleaved) + pause/resume takes — all valid, marker spacing 3.0000–3.001 s, old/new within each other's repeat envelope, zero clipping; captured real callback streams replayed through old/new converters **6/6 byte-identical**; no regression observed. **Mismatched-rate real capture (second pass, same day, owner-enabled):** the default render endpoint (JM6PRO) was switched to 16-bit/44100 Hz and the encoder target forced to 48000 via the production `OPENSCREEN_WGC_FORCE_AAC_SOURCE_RATE` surface (the video-rate-alignment path); five 35 s takes ran old×2 / fixed×2 / instrumented-fixed with the same marker harness. Every real loopback packet was exactly 441 frames (3496/3496 — this hardware produces perfectly aligned 10 ms geometry, so the packet-boundary defect class is not reachable on it and stays covered by the deterministic suites); decoded old vs fixed output is time-aligned at zero offset with 97.4 % byte-identical frames and residual maxdiff 170 (AAC block-boundary quantization from the one-frame first-packet emission difference — no drift, no regression); each build repeated byte-identically; the mixer's startup starvation-padding path ran on real hardware (~70 ms). Starvation/underrun beyond startup was **not** reproduced on real hardware — covered by the deterministic real-`AudioMixer`-path tests above; no full capture-to-export GUI cycle, editor/export/transcript sections, webcam, GIF or non-audio checks for this slice; macOS/Linux N/A (WGC-only code). Fork CI did not run at pass time (GitHub-side Actions suspension on the repo — settings and workflow states reported enabled/active while every dispatch returned 422; full evidence in the run); Actions was restored later the same day and CI has since run green on each exact head under review (runs 38119381114, 38121492689, and 38125479601 recorded for their respective exact heads — run evidence in the project archive). This CI has no native C++ job — the native evidence is the local MSVC build and suites above. Upstream PR #1113 is open, with CI green on the head under review; awaiting maintainer review. |
| 2026-10-12 | installed `v2.1.0` candidate, CI-built DMG `Openscreen-macOS-Apple-Silicon-2.0.0.dmg` from build run 38252812147 (`openscreen-mac-arm64`, `release/v2.1.0` @ `9c55596e1`), Developer ID signed and notarized (`spctl`: accepted, Notarized Developer ID, M4LK7C6S84), installed over the previous `/Applications/Openscreen.app`; About reports `2.0.0 (dmg)` (the branch does not bump `package.json`), Electron 41.2.1, Chromium 146.0.7680.188, Node 24.14.1 | macOS 26.5 (25F71), Mac mini M1 (arm64), one 3840×2160 display at 2×, no camera (Scaleway MDM `allowCamera=false`), BlackHole 2ch as the only input | Partial, 6 defects | Real OS mouse and keyboard through computer-use, launched with `open --env OPENSCREEN_DIAGNOSTIC=1` (no content-protection flag needed on 26), then `OPENSCREEN_MAC_SOURCE_PICKER=legacy` for every take after the first; tones into BlackHole (440 Hz) and the speakers (1 kHz) gave the mic and system-audio signals; every number below is ffprobe/ffmpeg on the files. **Covered, post-2.0.0 first:** recordings folder (row last, native picker, take lands in the custom folder, row survives restart, *Reset to default* only while custom and takes return to `userData/recordings`, deleted folder recreated by the next take, ejected volume gives "Can't reach the recordings folder", 298 MB volume refused from the HUD and the voice-over with "Not enough disk space ... (only 298 MB free)", from Record mode no take and no file but the toast was not captured, Restart on a volume filled under 500 MB gives "The new recording could not start. The previous one was deleted." with no file left); mic double-click stays off; Play past the last clip holds clip 2's own last frame and stops at the total (#997); duplicate clip carries zooms, speed and annotation (#1011); Edit clip trim-bar playhead, in-point frame, scrub with *Apply* disabled, grip pushes the playhead; zoom trails and their in/out/pan/trim/junction tooltips, trails follow a dragged trim, a trim between two zooms breaks the pan, end of timeline is no junction; Names and terms ("OpenScreen" spelled, opening kept, not Title Case; one undo restores field and transcript), transcript Backspace cut and Cmd+Z (#1012), Cmd+Z inside an edited word; agent: filler words plus a quoted phrase as one trim with no sliver, *Screen turned left* then *3D Orbit*, stretch into a neighbour refused naming it; two conversations and the last reply survive a quit right after the reply, history is per project; MCP stdio (`help` lists `mcp`, `listSources`, `startRecording` on a window: 2944×1926 take in the custom folder, no Apple picker, 3 clicks 1.7 s apart grouped into one zoom; edit while closed, `exportVideo` 25.82 s = 33.82 − 8 s trim, `getFrames`, `restoreCheckpoint` back to the raw take, stale warning with `projectId`; edits refused on the project open in the editor and on a closed project without checkpoint); in-app server off by default, *Running* with port, token and snippets; GIF of 61 s at 20 fps Small in about 8 s; Glass Lens and 3D Glass Lens in preview and in a 720p export (refraction, shadow); *Mouse clicks* off by default, *Click volume* row, clicks in the export at the speed-mapped times (±20 ms). **Covered, rest of the file:** HUD launch, layout toggle, drag without drift or jump, language menu, tooltips on both bars idle and recording (a teleported pointer needs one small move, as a hand gives), gear lists inputs with a moving meter, "No camera found" and no *Camera quality* row, camera toggle refused with "Camera not found.", hide and tray refocus, tray menus idle and recording (only *Stop Recording*), quit and relaunch, single instance (`open -n` exits), *Update Settings* modes persisted in `update-settings.json` across restart; app menu items; About box; legacy selector; Record mode rows, Auto-zoom row only with Editable cursor, mic meter, hand-over to the HUD with the same settings, zooms placed after a take and none with Auto-zoom off; pause/resume, Restart, cancel without editor, stop from HUD and from the tray; gear does not open during a take; full-screen take fills 3840×2160 edge to edge (HiDPI), HUD absent, desktop icons absent while still on the desktop; mic and system audio each audible alone and together (−23.8 / −34.6 dB band levels); editor opens in Edit with the take and toast; New project, Import, *Add to timeline* toast, Media card name/duration/size, Export disabled with no asset; local transcription on Metal with French detected; Cmd+O, theme and language switches (UI and native menus follow, back to English); export dialog (formats, qualities with sizes, fps, no codec, GIF options and summary), MP4 progress, cancel with no partial and same options, retry, *Saved to*, *Show in folder*, GIF cancel keeps the existing destination, MP4 in QuickTime and GIF in Preview; imported audio pill named after the file at −18 dB with 1 s fades, a bed past the programme end is cut without pulling its fade-out forward; Save Diagnostics from the app menu writes a bundle; reopened project keeps clips, in/out, zooms, speeds and trims. **Defects:** (1) dragging a zoom into a neighbour of the same level passes into it instead of stopping flush (#1008): 23.0 s zoom dragged left landed at 20.055–21.984 s over 19.975–21.904 s, a 2 px nudge still overlaps by 40 ms; the pair draws as one pill and a level change on one half changed both, so #1017 could not be judged on exactly touching regions; medium. (2) MP4 export of the speech fixture (source −17.6 LUFS, +4.9 dBTP) measures −17.3 LUFS, sample peak −0.59 dBFS, true peak +0.5 dBTP against about −16 LUFS and at most −1 dBTP; medium. (3) agent title "Demo OpenScreen" with a switch to 9:16 in the same turn: box 95 %×9.33 % at size 64, only "Demo" visible in the preview and in the exported frame at 3.0 s; medium. (4) click sounds missing on a duplicated clip: clip 1 clicks at 6.04, 10.26, 14.44, 28.59, 36.91 s are in the export, the duplicate's click expected at 43.17 s is absent; low to medium. (5) HUD error toasts sit over the HUD's own controls, their × does not take the click (it reaches the window behind) and they stay while the pointer is over them; the mic toast at take start hid Pause, Restart and Cancel until the pointer left; medium. (6) a microphone picked as "BlackHole 2ch (Virtual)" is not resolved by the SCK helper (`[native-sck] recording the default input; microphone was not resolved`), so every take toasts "The chosen microphone could not be identified"; low. **Observations, not filed:** transcription shows "Transcribing 0%" for the whole job, 66.2 s of French in 101.6 s and 112 s (0.6–0.7× real time with the fr CTC aligner) against 61× on a speech-free take; the legacy *Windows* tab listed one window while the Claude window was on screen; the disk-space refusal comes after the 3-2-1 countdown; "Loop off" writes a NETSCAPE loop count of 1. **Skipped:** Apple's picker slice and the permissions window's first-run rows (operator asked for an unattended legacy run; Screen Recording already granted and not reset; one early take went through the picker and is not judged); every camera, webcam-quality, Full Camera and camera-background check (MDM blocks cameras); Windows, Windows on ARM, Linux and macOS 13/14 sections (other OS or version); Intel ONNX check (arm64 only); second display at another scale (one display); GIF speed against v2.0.0 (no v2.0.0 left installed to compare); in-app MCP edits and port change (no HTTP MCP client here without downloading one) and `setPointerTrack`; Escape checks and Ctrl/Shift-scroll (unreachable from computer-use on this Mac); Spaces switch (no system key combos granted); no-microphone refusal and unplugged mic (BlackHole cannot be removed here); not run for time: captions and caption placement, translation, annotation types (image, arrow, blur), v1.8.0 anchoring section, most audio-track checks, voice-over take, inspector facets, shortcuts dialog, editor window bounds, migrated-project persistence, chat rewind/compaction/rename/delete, export speed-region audio section. |
| 2026-10-12 | installed `v2.1.0` candidate after `release/v2.1.0` was fast-forwarded to `main` @ `bd04d3a7` (adds #1147, #1151, #1155, #1158, #1160, #1166, #1131), CI-built DMG `Openscreen-macOS-Apple-Silicon-2.0.0.dmg` from build run 38309126813 (`openscreen-mac-arm64`), Developer ID signed and notarized (`spctl`: accepted, Notarized Developer ID, M4LK7C6S84); the SCK helper is dated 23:22 that day and carries the new Chromium suffixes (Virtual, Bluetooth, Built-in) | macOS 26.5 (25F71), Mac mini M1 (arm64), one 3840×2160 display at 2×, no camera (MDM), BlackHole 2ch as the only input | Pass, scoped to the merged fixes | **Targeted re-run of the six fixes from the pass above, real OS mouse and keyboard through computer-use**, launched with `open --env OPENSCREEN_DIAGNOSTIC=1 --env OPENSCREEN_MAC_SOURCE_PICKER=legacy`; numbers are ffprobe/ffmpeg on the files. **#1158 (HUD toasts):** "Camera not found." now shows centred above the horizontal bar, clear of every control, and its × dismisses it with a real click. **#1147 (microphone suffix):** "BlackHole 2ch (Virtual)" picked explicitly in the gear, mic on, HUD take: no "could not be identified" toast, no `microphone was not resolved` line in the main log, and a 440 Hz tone sent into BlackHole is in the take at −23.7 dB band level; only one input exists here, so picking an input that is not the default was not exercised. **#1151 (click sounds on a duplicated clip):** re-export (720p 30 fps) of the two-clip project: clip 1 clicks at 6.04, 10.26, 14.44, 28.59, 36.91 s unchanged, and the duplicate's click is now present at 43.16 s (expected 43.17 s). **#1166 (export loudness):** the speech fixture exported at 1080p 30 fps measures true peak −1.5 dBTP (was +0.5), sample peak −1.52 dBFS, integrated −17.2 LUFS (the clipped source cannot reach −16 without re-clipping, as the PR states), AAC at 264 kb/s. **#1160 (agent title fit):** the chat agent, asked to switch to 16:9, add "Bonjour OpenScreen", then switch to 9:16, refits both titles (56 px and 61 px, one line each); the exported 1080×1920 frames show "Demo OpenScreen" and "Bonjour OpenScreen" whole, where the earlier build showed only "Demo". Smoke: launch, HUD, record, stop and editor open, Cmd+O, export dialog. **Skipped:** #1155 (Windows WGC helper only, needs a 10 min loaded take on Windows); the rest of the file (covered by the row above on the earlier build). |
Loading