Skip to content

Releases

v2.2.2

Choose a tag to compare

@EtienneLescot EtienneLescot released this 04 Nov 22:55

If OpenScreen saves you time, a star on the repo helps others find it.
Full Changelog: v2.2.1...v2.2.2

v2.2.2-rc.1

v2.2.2-rc.1 Pre-release
Pre-release

Choose a tag to compare

@EtienneLescot EtienneLescot released this 04 Nov 22:15

Changes since v2.2.1

  • fix(export): recover nearby frames before sparse clip starts

Full Changelog: v2.2.1...v2.2.2-rc.1

v2.2.1

Choose a tag to compare

@EtienneLescot EtienneLescot released this 03 Nov 07:23

If OpenScreen saves you time, a star on the repo helps others find it.

What's Changed

New Contributors

Full Changelog: v2.2.0...v2.2.1

v2.2.1-rc.1

v2.2.1-rc.1 Pre-release
Pre-release

Choose a tag to compare

@EtienneLescot EtienneLescot released this 02 Nov 23:20

Changes since v2.2.0

  • ci: retry validating the stapled macOS DMG when Apple drops the connection
  • fix(compositor): pick the YCbCr matrix per frame on macOS
  • fix(compositor): leave BT.2020 CL on the default path, convert 10-bit samples with 10-bit bounds
  • docs(testing): log the prerelease passes on main and the signed CI DMG
  • docs(testing): add the x64 DMG signature check
  • fix(export): bound a clip by the container duration, not a one-frame video stream
  • fix(export): hold the only screen frame when a clip starts after it
  • fix(mac): write app-update.yml into the .app so it can update itself
  • fix(mac): accept an object-form publish config in afterPack
  • fix(mac): prefer mac.publish when writing app-update.yml
  • test(mac): pin the first mac.publish entry
  • fix(updater): install Windows updates silently so only UAC shows
  • fix(updater): keep the wizard when a per-user and a per-machine install coexist
  • fix(updater): keep the wizard when reg cannot answer, and test the dual-install handoff
  • fix(hud): accept the system language prompt on Enter
  • test(hud): press Enter on the focused Keep button
  • test(hud): cover Alt, Shift and Meta on the language prompt's Enter
  • fix(speed): accept a trailing × or x in the custom speed field
  • fix(updates): let a release candidate's manual check see newer RCs
  • fix(compositor): share one wgpu device across the Linux unit tests
  • fix(linux): keep the user's --enable/--disable-features on Wayland
  • fix(export): tag the MP4's colour matrix, primaries, transfer and range
  • docs(website): target Screen Studio 4 on the Screen Studio alternative page
  • fix(updater): retain the app when Windows elevation is declined
  • fix(updater): wait for the PowerShell elevation result
  • fix(updater): await the bundled elevation helper
  • fix(updater): serialize elevation and block new takes
  • fix(updater): recheck readiness and reserve browser starts
  • fix(updater): complete recording startup and failure guards
  • fix(updater): confirm missing registry keys before silent install
  • fix(updater): allow larger registry enumeration output
  • chore(release): release v2.2.0 into main
  • fix(cli): keep render settings when exporting a v2 project
  • test(cli): guard the v2 loader keeping render settings

Full Changelog: v2.2.0...v2.2.1-rc.1

v2.2.0

Choose a tag to compare

@EtienneLescot EtienneLescot released this 02 Nov 20:25

OpenScreen 2.2 brings layout changes to the timeline, separate tracks for overlapping annotations, and an update button that puts you in control of installation. This release also improves recording, playback, audio timing and export across Windows, macOS and Linux.

✨ Highlights

Change the layout throughout your video

The new Layouts track lets you switch between picture-in-picture, side-by-side, top/bottom, camera-only and screen-only arrangements as your video plays. Place a change at the playhead, move its boundary to adjust the timing, and let the screen and camera transition smoothly into their next positions.

Layout edits support undo/redo and the AI/MCP tools. Existing Full Camera sections migrate to camera-only layouts while preserving their original easing. #1404

Keep overlapping annotations easy to edit

Annotations that overlap now have their own timeline rows. You can select, move, resize or delete each annotation, even when their timing is identical. Drag vertically to change the stacking order, or horizontally to change when an annotation appears; timing and layer changes undo together. #1243

Overlapping annotations remain accessible on separate timeline tracks

Stop an AI edit and keep the work already done

The chat composer now has a Stop control for a running agent turn. Completed edits and the partial reply are retained, and you can continue with another message. A whole turn produces one undo step, including turns that make many edits. #1368

Export the audio you need

The CLI and MCP tools can now export the full project mix or one imported audio track to WAV or M4A, preserving its placement, trims, gain, fades and speed changes. Useful for taking narration into another audio editor or reusing a finished mix. #1383

openscreen export project.openscreen -o mix.m4a
openscreen export project.openscreen -o narration.wav --track <audioId>

Custom shader effects also gain footage(p): access to the recording at its source resolution, so a loupe or close-up can retain detail that has been scaled down in the composed picture. #1396

Update when you are ready

Self-updating builds check and download new versions in the background, then show a blue update button in the recording bar and editor. Installation starts on your click; an ordinary quit keeps the current version. MCP-only sessions can tell you that a newer release is available and direct you to the app. #1425

On Windows, declining the administrator prompt now keeps OpenScreen open and usable. Accepting it completes the update and restarts the app. Store and Nix installations continue to use their package manager. #1463

🛠 Fixes and improvements

Recording, webcam and cursor

  • Windows screen capture: added a DXGI Desktop Duplication fallback, including recovery, adapter selection, rotation, resizing and correctly sized cursors. #1254
  • macOS webcam: restored continuous webcam recordings and kept VP8 for recordings at 1080p or below. #1297
  • macOS screen picker: reset Apple's picker for each request and ignore stale or unrequested selections. #1370
  • macOS audio: start system-audio capture after the microphone and handle blocked sample queues without treating a temporary stall as a silent source or keeping a dead source alive. #1374, #1412, #1414
  • Cursor placement: align macOS pointer samples with captured content and selected-window bounds; preserve visibility when capture bounds are rebased. #1306
  • Cursor motion: land the flat cursor on clicks more accurately, reduce default smoothing, and handle short gaps between a click hold and the next movement. Changes
  • Linux: start KDE window captures on their first frame, bound window-crop waits by elapsed time, and ignore a second Record press while the portal picker is open. #1351, #1353, #1413
  • Linux cursor/webcam: keep cursor telemetry aligned across pauses, fall back to metadata cursors when embedded cursors are unavailable, and attach the webcam using the stored cursor mode. #1275, #1363
  • Linux configuration: preserve user-supplied Wayland feature flags and support Mesa's RADV_EXPERIMENTAL Vulkan encode path. Changes, #1349

Editing, playback and audio timing

  • Restart playback from the beginning after reaching the end, preserve play/pause intent, and isolate seeks between different sources. #1400
  • Record voiceovers against the uncut source timeline so they remain aligned through trimmed sections. #1236
  • Play imported audio continuously across its timeline region so speed changes keep it on the correct clock; stop a voiceover piece where the next one begins. #1355, #1362
  • Preserve timeline sizing when annotation tracks reach the panel's height limit. #1243
  • Preserve zoom framing and rounded camera corners across layout transitions, including migrated Full Camera sections. #1404
  • Offer 3D Orbit only when the recording has cursor data. #1399
  • Accept custom speed values with a trailing x or ×, such as 1.5x and 1.25×. Changes
  • Accept the suggested system language with Enter and improve Japanese tooltips. Language prompt, #1375

Preview, video colour and export

  • Correct macOS rendering of 10-bit HEVC/iPhone footage and full-range VideoToolbox frames; choose the colour-conversion matrix from each frame, with correct 10-bit bounds. #1408, colour follow-up
  • Tag exported MP4s with their colour matrix, primaries, transfer function and range. #1460
  • Export clips from mostly static recordings using the container duration and hold their available screen frame when the clip begins later. Preserve first-frame holds for offset sources. Static-recording fixes, frame hold
  • Detect unreadable screen/camera starts, large video gaps and empty output; keep recovery bounded to normal video tails and inspect only the requested clips. #1377, #1379
  • Validate a staged MP4 before replacing the destination, and show localized validation errors. Destination validation, #1387
  • Improve macOS 8-bit H.264 preview decoding and shared-texture reuse. #1384, #1373
  • Improve Linux VA-API export compatibility, restricting the extra VPP copy to Intel iHD; configure VA-API driver paths in Nix packages. #1200, #1367

Captions, agents and integrations

  • Read Whisper model paths as UTF-8 on Windows and download transcription models through Chromium's network stack. #1407, #1332
  • Allow MCP addZoom calls to supply customScale without depth; report recording-start failure when the requested camera cannot be opened. #1356, #1371
  • Package the OpenScreen demo workflow for Claude Code and Codex, with installation guides for Claude Code, Codex and ChatGPT. Plugin and setup guide
  • Find Microsoft Store installations when setting up the plugin, provide an openscreen execution alias for Store packages, and guide users when the installed app lacks the required MCP tools. [#1354](https://github.com/getopens...
Read more

v2.2.0-rc.5

v2.2.0-rc.5 Pre-release
Pre-release

Choose a tag to compare

@EtienneLescot EtienneLescot released this 02 Nov 11:27

Changes since v2.2.0-rc.4

  • Keep OpenScreen running when a per-machine Windows update's UAC prompt is declined, with the downloaded update available for retry.
  • Prevent competing update handoffs and recording starts, check unsaved editor changes before elevation, and improve cleanup after recording startup fails.

Full Changelog: v2.2.0-rc.4...v2.2.0-rc.5

v2.2.0-rc.4

v2.2.0-rc.4 Pre-release
Pre-release

Choose a tag to compare

@EtienneLescot EtienneLescot released this 01 Nov 15:18

Changes since v2.2.0-rc.3

  • fix(export): tag the MP4's colour matrix, primaries, transfer and range

Full Changelog: v2.2.0-rc.3...v2.2.0-rc.4

v2.2.0-rc.3

v2.2.0-rc.3 Pre-release
Pre-release

Choose a tag to compare

@EtienneLescot EtienneLescot released this 01 Nov 00:13

Changes since v2.2.0-rc.2

  • fix(compositor): pick the YCbCr matrix per frame on macOS
  • fix(compositor): leave BT.2020 CL on the default path, convert 10-bit samples with 10-bit bounds
  • fix(export): bound a clip by the container duration, not a one-frame video stream
  • fix(export): hold the only screen frame when a clip starts after it
  • fix(hud): accept the system language prompt on Enter
  • fix(speed): accept a trailing × or x in the custom speed field
  • fix(updates): let a release candidate's manual check see newer RCs
  • fix(compositor): share one wgpu device across the Linux unit tests
  • fix(linux): keep the user's --enable/--disable-features on Wayland

Full Changelog: v2.2.0-rc.2...v2.2.0-rc.3

v2.2.0-rc.2

v2.2.0-rc.2 Pre-release
Pre-release

Choose a tag to compare

@EtienneLescot EtienneLescot released this 31 Oct 01:58

Changes since v2.2.0-rc.1

  • ci: retry validating the stapled macOS DMG when Apple drops the connection
  • fix(mac): write app-update.yml into the .app so it can update itself
  • fix(mac): accept an object-form publish config in afterPack
  • fix(mac): prefer mac.publish when writing app-update.yml
  • test(mac): pin the first mac.publish entry
  • fix(updater): install Windows updates silently so only UAC shows
  • fix(updater): keep the wizard when a per-user and a per-machine install coexist
  • fix(updater): keep the wizard when reg cannot answer, and test the dual-install handoff

Full Changelog: v2.2.0-rc.1...v2.2.0-rc.2

v2.2.0-rc.1

v2.2.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@EtienneLescot EtienneLescot released this 29 Oct 14:33

Changes since v2.1.2

  • fix(preview): advance the camera while a screen frame is held
  • fix(timeline): copy a whole pill, not the fragment clicked
  • docs(testing): compare 2.0.0 and main performance on Windows
  • docs(testing): add the 60 Hz pass to the 2.0.0 against main comparison
  • docs(testing): bisect the startup slowdown, retract the editor-open one
  • docs(testing): say which bisection runs overlapped another session's A/B
  • docs(testing): the 60 Hz steps back come from slot reuse, not from main
  • fix(perf-ab): address the review of the bench scripts
  • fix(compositor): read the macOS preview back through Managed textures on Intel Macs
  • ci: run the compositor tests on an Intel Mac runner
  • docs(testing): log the targeted Windows pass of v2.1.0-rc.2 build run 38868631147
  • docs(testing): note the perf bench ran during the rc.2 smoothness measure
  • fix(preview): give a shared frame's slot back 40 ms after Chromium lets go
  • fix(preview): eight ring slots, and a slow display's two frames as the hold floor
  • test(compositor): the stale-ready test holds every slot but the last, whatever the ring size
  • docs(testing): log the Windows diff pass of v2.1.0-rc.3 build run 38878886935
  • fix(ai): rewind a chat message from the view it was sent in
  • fix(ai): point an open rewind confirmation at the stored message id
  • docs(testing): log the Linux pass of v2.1.0-rc.3
  • docs(testing): log the macOS pass of v2.1.0-rc.3
  • fix(compositor): no Full Camera trail on a clip's first frame when its start is inexact in f32
  • docs(testing): log the Windows rewind check of v2.1.0-rc.4 build run 38948496658
  • fix(preview): restart the playback clock at the requested time on a held frame
  • fix(preview): recompose a paused frame at the time it was shown at
  • docs(testing): log the Windows pass of v2.1.0-rc.5 build run 39003658928
  • docs(testing): log the macOS pass of v2.1.0-rc.5
  • docs(testing): log the Linux pass of v2.1.0-rc.5
  • fix(export): no Full Camera trail at a cut whose chunk start rounds up
  • test(timeline): assert a cut-edge piece bound equals the cut in f32
  • docs(blog): Off-Menu video editing, the agent writes the functions the editor lacks
  • docs(blog): describe both figures in their alt text
  • docs(testing): log the Windows pass of v2.1.0-rc.6 build run 39010637863
  • docs(testing): name where the rc.6 version was read
  • docs(testing): log the macOS pass of v2.1.0-rc.6
  • docs(testing): log the Linux pass of v2.1.0-rc.6
  • build(store): give the MSIX an openscreen execution alias
  • docs: register the MCP server with a placeholder executable, not the macOS path
  • docs(website): align the site with OpenScreen 2.1.0
  • docs(website): list the transcription models and the legacy font fetch, not annotation fonts
  • chore(release): release v2.1.0 into main
  • fix(compositor): tilt the whole card under a filled format
  • docs(testing): log the Windows and Linux pass of the filled-card tilt fix
  • docs(testing): log the macOS and Linux GPU pass of the filled-card tilt fix
  • fix(compositor): keep blur masks and motion blur right on a tilted filled card
  • feat(website): a home page section for coding agents
  • fix(website): no Copy error without a clipboard, and announce Copied
  • chore(release): release v2.1.1 into main
  • docs(testing): log the v2.1.1-rc.1 pass on Windows, macOS and Linux
  • docs(website): name the product category in the homepage H1
  • docs(website): keep the slogan as headline, category as h1 kicker
  • chore: add glama.json so the org can claim its Glama MCP listing
  • ci(release): sync only the version into main at promote
  • ci(release): never set main back, and say the sync is incomplete
  • feat(website): offer the Windows ARM64 installer on /download/
  • fix(cursor): land the flat cursor on each click, and smooth less by default
  • fix(cursor): share a short gap between a click's hold and the next approach
  • feat: package the openscreen-demo skill as a Claude Code plugin
  • docs(plugin): say when the exported video leaves the machine
  • feat(plugin): add the app icon for the Claude directory listing
  • docs(website): publish a privacy policy
  • docs(website): say in the privacy policy's opening that AI features send project data
  • feat(plugin): add the Codex manifest for OpenAI's plugin directory
  • docs: put the one-sentence demo prompt first in the README and the home hero
  • docs: make the demo prompt work in any coding agent
  • docs: keep the badge's paste instruction on screen for 4 s
  • docs: say AI agent, not coding agent, around the demo prompt
  • docs: send the badge's no-clipboard fallback to the docs that show its prompt
  • fix: count installs driven through openscreen mcp as active
  • docs: say openscreen mcp sends the daily count on the privacy page
  • docs: log the v2.1.2-rc.1 MCP smoke on Windows, macOS and Linux
  • chore(release): release v2.1.2 into main
  • ci(release): read stdin without readFileSync(0) in the promote scripts
  • docs(website): add an "Edit videos with Claude" feature page
  • docs(website): use the agent-neutral skill install on the Claude page
  • fix(linux): start a KDE window recording on its first frame
  • fix(capture-linux): support RADV_EXPERIMENTAL for Mesa 24.1+ Vulkan encode
  • docs(ai-editing): install the OpenScreen plugin in Claude Code, Codex and ChatGPT
  • docs(ai-editing): add the marketplace before installing the plugin in Claude Code
  • fix(linux): compact cursor telemetry across pauses
  • fix(stt): download models through Chromium's network stack
  • fix(mcp): let addZoom take customScale without depth
  • fix(plugin): find a Store install and hand over when the MCP tools are missing
  • docs: prevent incorrect assumptions about CI coverage
  • docs: distinguish capture core tests from helper builds
  • docs: point contributors to the native GIF export path
  • fix(linux): copy the export dmabuf through scale_vaapi before h264_vaapi
  • fix(linux): take the VPP copy only on Intel iHD
  • docs(effects): recipe for lifting real UI blocks out of the recording
  • docs(effects): convert rects for screen and window takes, require an editable cursor
  • fix(linux): fall back to metadata cursor when the portal lacks embedded
  • fix(linux): attach the webcam with the cursor mode main stored
  • fix(export): stop a voiceover piece where the next one starts
  • fix(cli): fail a camera take when the camera cannot be opened
  • fix(audio): play a track once across its pill, so speed regions keep it on the clock
  • fix(nix): configure VA-API driver paths for hardware acceleration
  • feat: add stacked timeline tracks for annotations
  • fix: preserve timeline base height when resizing capped tracks
  • fix(i18n): polish Japanese tooltips
  • fix(preview): rotate shared-texture slots so a just-released one is rewritten last
  • fix(export): reject unreadable camera clips and empty output
  • fix(export): bound clip-start recovery to normal video tails
  • docs: record desktop export follow-up and timing limits
  • fix(export): validate staged MP4 before replacing destination
  • fix(export): stop frame inspection before unrequested clips
  • fix(export): reject clip starts across large video gaps
  • fix(export): preserve first-frame hold for offset sources
  • fix(audio): start the macOS system-audio tap after the microphone
  • feat: add Stop control for agent turns
  • fix: preserve one undo step per agent turn
  • fix: update agent undo docs and keep Stop tooltip accessible
  • feat(mcp): export a project's audio, or one track alone, to WAV or M4A
  • fix(cli): clean up an audio export's render without --out, and name the track id audioId takes
  • test(export): clean temporary outputs on assertion failure
  • docs(test): describe temporary directory ownership and cleanup
  • fix(mac): reset Apple's picker before each presentation and ignore unrequested picks
  • perf(preview): decode 8-bit H.264 in software on macOS
  • fix: localize native export validation errors
  • fix(editor): record voiceovers against the uncut timeline (#1195)
  • feat(effects): footage() reads the recording at its own resolution
  • fix(editor): offer 3D Orbit only with a recorded cursor
  • fix: align macOS mouse pointer with captured content
  • fix: rebase cursor samples on capture bounds, use window bounds for picked windows
  • fix: recompute cursor visibility when rebasing on capture bounds
  • fix(linux): bound the window crop wait by time, not by frame count
  • docs: simplify the roadmap around planned work
  • docs: remove resolved work from the roadmap
  • feat: add timeline layout changes with smooth transitions
  • fix: address timeline layout review feedback
  • test: verify shared layout contracts over MCP
  • fix: guard layout edits outside clip passages
  • docs: clarify removed modifier identifiers
  • fix: preserve layout zoom framing and camera roundness
  • fix: keep macOS webcam recordings continuous with VP8
  • fix: keep VP8 for macOS webcams at 1080p or below
  • fix(audio): don't read a blocked sample queue as silent sources on macOS
  • fix(linux): ignore a second record press while the portal picker is up
  • test: assert the prepared recording id reaches the start request
  • fix(audio): keep a sluggish queue from holding a dead source inside the grace
  • fix(audio): credit all but one ticker period of a queue stall
  • fix(captions): read whisper-stt paths as UTF-8 on Windows
  • fix(editor): restart playback from the timeline beginning when ended
  • fix(editor): preserve playback intent and isolate cross-source seeks
  • fix(win): add a DXGI Desktop Duplication fallback for screen capture
  • fix(win): harden the DXGI fallback (reacquire, adapter, cursor, rotation, resize)
  • fix(win): draw the DXGI cursor at its real size
  • fix(compositor): read 10-bit VideoToolbox frames as 16-bit planes on macOS
  • fix(compositor): convert full-range VideoToolbox frames with full-range BT.709 on macOS
  • docs: fix the documented ffmpeg command in the HEVC test
  • test(compositor): check the P010 and full-range views without a media file
  • feat(update): check in the background, show an update button, install on quit
  • feat(mcp): te...
Read more