Repository navigation
v2.2.0-rc.1
Pre-release
Pre-release
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): tell the agent when a newer OpenScreen is out
- docs(testing): an end-to-end pass for updating in place
- refactor(update): one update flow, installed only by a click
- fix(update): address review on the update button and the MCP notice
- test(mcp): check openscreen mcp forwards the update notice
- test(mcp): a Store install gets no update notice
- test(mcp): use the real channel rule, and a stale cache in the Store case
- ci: install Rust before the macOS compositor build in build.yml
- ci: retry stapling the macOS DMG when Apple drops the connection
- ci: don't sleep after the last staple attempt
Full Changelog: v2.1.2...v2.2.0-rc.1