Repository navigation
v2.1.0
If OpenScreen saves you time, a star on the repo helps others find it.
What's Changed
- chore(release): release v2.0.0 into main by @EtienneLescot in #1000
- feat(website): bring the live demo into the homepage hero by @EtienneLescot in #987
- docs(testing): log the v2.0.0-rc.15 computer-use e2e pass by @EtienneLescot in #1003
- docs: add missing third-party notices by @EtienneLescot in #1018
- fix(preview): hold the webcam's last frame when a clip is entered past its end by @EtienneLescot in #1029
- fix(record): keep the Camera row off when no camera can be opened by @EtienneLescot in #1030
- ci: start release notes at the previous stable tag, by SemVer by @EtienneLescot in #1031
- fix(editor): keep Edit clip's Apply in view, and its edit through a backdrop click by @EtienneLescot in #1032
- fix(timeline): copy anchored modifiers onto a duplicated clip by @EtienneLescot in #1033
- fix: close menus on Escape and on a click on the empty top bar by @EtienneLescot in #1034
- fix(transcript): make a skipped word's restore control reachable by @EtienneLescot in #1035
- fix(editor): keep the Edit clip menu above the timeline and stop tooltips sticking after a click by @EtienneLescot in #1036
- fix(export): let an MP4 export be cancelled mid-render by @EtienneLescot in #1044
- fix(audio): keep imported audio on its own clips through a clip reorder by @EtienneLescot in #1045
- fix(timeline): keep a dragged region whole when it repels by @EtienneLescot in #1043
- fix(hud): keep the HUD's size while it is dragged at fractional scaling by @EtienneLescot in #1041
- fix(preview): stop the native free-run at the end of the programme by @EtienneLescot in #1042
- fix(timeline): edit one region of a merged pill, not the whole pill by @EtienneLescot in #1046
- feat(mcp): checkpoints to revert a whole agent turn in one step by @EtienneLescot in #1048
- fix(transcript): refuse every native edit the block does not handle by @EtienneLescot in #1049
- fix(hud): keyboard navigation in the language menu by @EtienneLescot in #1050
- fix(timeline): fan speed and Full Camera regions out to both halves of an insertion by @EtienneLescot in #1051
- fix: close the chat panel's reasoning menu and model quick-pick on Escape by @EtienneLescot in #1052
- fix(record): never record a microphone the OS does not list by @EtienneLescot in #1053
- fix(mac): count the HUD timer from the helper's first frame by @EtienneLescot in #1054
- docs(stt): record why transcript cuts are not snapped to quiet points by @EtienneLescot in #1057
- feat(ai-edition): tell the agent and MCP clients where zoom transitions are by @EtienneLescot in #1055
- fix(windows): keep the screen video on the clock when the writer misses ticks by @EtienneLescot in #1056
- perf(gif): make GIF export ~30× faster with exact output by @EtienneLescot in #1058
- feat(timeline): show each zoom's move-in and move-out as trails on the zoom lane by @EtienneLescot in #1059
- fix(inspector): use the shared tooltip on every icon-only control by @EtienneLescot in #1062
- chore: bump nix package to v2.0.0 by @EtienneLescot in #1001
- feat(timeline): show and report the pan between chained zooms by @EtienneLescot in #1061
- feat(transcription): per-project names and terms for Whisper by @EtienneLescot in #1063
- fix(preview): stop Chromium decoding soundless recordings in speed regions by @EtienneLescot in #1064
- ci(nix): build PRs that touch the PipeWire and whisper sources, and assert the libEGL rpath by @EtienneLescot in #657
- feat(timeline): flag zoom moves lost to a clip junction by @EtienneLescot in #1066
- fix(camera): keep Full Camera full across a trim inside it by @EtienneLescot in #1067
- fix(linux): enumerate screens and windows in separate calls under X11 by @EtienneLescot in #1065
- ci(release): refresh the Nix npm hash in the version-bump commit by @EtienneLescot in #1068
- fix(macos): keep a Record mode screen pick valid when the HUD returns by @marcgabe15 in #1074
- fix(agent): preserve recorded cursor visibility by @satwiksharma01 in #1075
- fix(macos): say when a restart discarded the take and drop the empty file a failed start leaves by @entity-0-0-2 in #1086
- fix(i18n): polish Simplified Chinese tooltips by @auberginewly in #1077
- fix(linux): respect an explicit Ozone display backend by @mcmah309 in #1081
- fix(stt): preserve media-clock audio offsets by @satwiksharma01 in #1076
- feat(cursor): add Glass Lens, a glass cursor that refracts the picture in 2D and 3D by @EtienneLescot in #1019
- docs: record the shader and background-cache fixes on a Mac mini M1 by @EtienneLescot in #985
- fix(nix): use wrapped Electron in dev shell by @bet4it in #1027
- test(compositor): share the D3D11 render-test harness by @quotentiroler in #933
- build: ship the third-party licence texts in the installers by @EtienneLescot in #1020
- fix(linux): retry PipeWire capture with shared memory by @kiwikreativo in #1069
- fix(cli): let the Linux portal select recording sources by @mcmah309 in #1080
- feat(linux): add standard AppImage update metadata by @satwiksharma01 in #1072
- feat(workbench): keep versioned measurements and offline replay by @My-Denia in #653
- feat(ai): persist Agent chat sessions per project by @auberginewly in #856
- fix(linux): remove libfuse2 dependency from AppImages by @satwiksharma01 in #1070
- feat(recording): choose the recordings folder, refuse takes on a full disk by @abduznik in #650
- feat(cursor): play a click sound on every recorded click by @akahoz94 in #1024
- feat(agent): cut words by transcript ID by @auberginewly in #857
- fix(recording): say when a Restart lost the take on Windows and Linux too by @EtienneLescot in #1091
- fix(audio): align waveform and STT with every audio track on the media clock by @EtienneLescot in #1092
- test(compositor): measure the Glass Lens refraction as an edge shift by @EtienneLescot in #1093
- feat(mcp): let MCP clients read and edit every project, not only the open one by @davidjayana in #1040
- fix(macos): record without the microphone when macOS lists no audio input by @EtienneLescot in #1095
- test(compositor): fix two local-only D3D11 render tests by @EtienneLescot in #1090
- fix(editor): never save back a project's own file from the open dialog by @EtienneLescot in #1097
- fix(nix): ship every public asset, cursors included by @EtienneLescot in #1094
- feat(build): Windows on ARM as a build target by @christian-wr in #896
- feat(edit-clip): scrub the clip to frame the crop by @prayaslashkari in #892
- docs: recommend udev rule for Wayland mouse click capture (#1084) by @vorburger in #1099
- docs: recommend the udev rule wherever Wayland clicks are mentioned by @EtienneLescot in #1102
- docs: add a security policy and a code of conduct by @EtienneLescot in #1103
- docs: explain why a quit-on-close utility can quit OpenScreen on macOS by @EtienneLescot in #1107
- docs: add the Product Hunt launch badge to the README and the homepage by @EtienneLescot in #1108
- docs: document the Windows 10 workaround for an unclickable recording bar by @EtienneLescot in #1110
- fix: make the HUD clickable on Windows before 11 22H2 by @EtienneLescot in #1109
- fix(website): let links to our own repo send the referrer by @EtienneLescot in #1111
- feat: let a coding agent make a demo video through OpenScreen's MCP tools by @EtienneLescot in #1119
- fix: agent tools that edit like the editor, one clock, and a format tool by @EtienneLescot in #1120
- feat: let the agent set a zoom's 3D camera by @EtienneLescot in #1122
- docs: a pull request video recipe in the openscreen-demo skill by @EtienneLescot in #1121
- docs: show the #5 Product of the Day rank on the site and in the README by @EtienneLescot in #1123
- docs: one line to set OpenScreen up for a coding agent by @EtienneLescot in #1124
- fix(website): point /discord at a permanent invite by @EtienneLescot in #1125
- docs: add first-time macOS setup to CONTRIBUTING by @marcgabe15 in #1118
- fix(windows): preserve non-integer resampling continuity across packets by @My-Denia in #1113
- fix(recording): pick a webcam mode by frame rate before size by @EtienneLescot in #1126
- fix(homebrew): use symbol format for macOS dependency in cask template by @easonwong-de in #1106
- fix(linux): give up when no first frame follows the portal picker by @EtienneLescot in #1127
- docs(testing): e2e checklist for what landed since v2.0.0, and an unattended macOS run by @EtienneLescot in #1128
- fix(recording): let a webcam's MJPEG mode win when it is faster or sharper by @EtienneLescot in #1129
- fix(macos): resolve microphones Chromium labels with a transport suffix by @EtienneLescot in #1147
- fix(cursor): play click sounds for every clip of a recording by @EtienneLescot in #1151
- fix(windows): repeat the owed screen slots so a loaded writer catches up by @EtienneLescot in #1155
- fix(hud): place toasts above the bar and let their close button take the click by @EtienneLescot in #1158
- fix: fit the chat agent's text annotations to their words, and refit them on a format change by @EtienneLescot in #1160
- fix(audio): hold the export's true peak under -1 dBTP by @EtienneLescot in #1166
- docs(testing): log the macOS e2e pass on v2.1.0 build 38252812147 by @EtienneLescot in #1131
- docs(testing): log the macOS re-run of the merged fixes on build 38309126813 by @EtienneLescot in #1167
- fix(export): put the whole timeline on one frame grid by @EtienneLescot in #1163
- fix(recording): keep the Windows screen video on the audio's clock by @EtienneLescot in #1165
- fix(mcp): refuse stdio edits to a project open in the app's editor by @EtienneLescot in #1154
- fix(cli): give each CLI run its own Chromium session data by @EtienneLescot in #1145
- fix(mcp): say that minimized and hidden windows are not listed by @EtienneLescot in #1150
- docs(mcp): stop promising a zoom on each recorded click by @EtienneLescot in #1153
- fix(timeline): stop a region dragged into an identical one flush against it by @EtienneLescot in #1144
- fix(chat): format every message time where it is drawn by @EtienneLescot in #1152
- fix(editor): open the highlighted project on Enter in the Open project dialog by @EtienneLescot in #1156
- fix(hud): put the bar back where it was dropped once a popover closes by @EtienneLescot in #1161
- docs(testing): log the v2.1.0 Windows e2e pass on build run 38252812147 by @EtienneLescot in #1132
- fix(website): Discord pill in the header, and editor captions that fit their translation by @EtienneLescot in #1171
- refactor(mcp): one source for MCP text, setPointerTrack through the runner by @EtienneLescot in #1176
- docs(testing): log the Windows re-run of the merged fixes on build run 38370716184 by @EtienneLescot in #1172
- feat(mcp): forward openscreen mcp document calls to the running app by @EtienneLescot in #1175
- feat(mcp): serve the media tools from the in-app server by @EtienneLescot in #1179
- feat(agent): region tools set and read every zoom, annotation and audio setting by @EtienneLescot in #1182
- feat(mcp): setEditorSettings and the project's look in getCurrentDocument by @EtienneLescot in #1181
- feat(mcp): rename a project, import and remove its media, create one by @EtienneLescot in #1183
- feat(mcp): export with the Export dialog's options, record the webcam by @EtienneLescot in #1185
- feat(mcp): insert, duplicate and crop clips, re-run auto zooms by @EtienneLescot in #1184
- feat(mcp): captions, caption translation and transcription over MCP by @EtienneLescot in #1186
- docs: drop the split-and-insert dialog the editor never shows by @EtienneLescot in #1190
- fix(mcp): send no quality with a GIF export by @EtienneLescot in #1192
- fix(windows): keep the recording bar always on top after a popover or dialog closes by @EtienneLescot in #1194
- fix(export): make a GIF with looping off play only once by @EtienneLescot in #1197
- docs(testing): log the Windows MCP pass on main build run 38538195250 by @EtienneLescot in #1191
- docs(testing): log the Windows MCP re-run on main build run 38564622152 by @EtienneLescot in #1201
- fix(mcp): let startRecording see a native take start by @EtienneLescot in #1205
- docs(testing): log the Windows pass of the in-app MCP server by @EtienneLescot in #1211
- ci(website): deploy the site to Cloudflare Workers instead of GitHub Pages by @EtienneLescot in #1198
- docs(testing): log a headless Linux pass under WSL on build run 38564622152 by @EtienneLescot in #1217
- docs(testing): log the macOS e2e pass on main build run 38581408372 by @EtienneLescot in #1224
- fix(linux): ship the shared ffmpeg CLI so transcription works over MCP and the CLI by @EtienneLescot in #1222
- docs(testing): log the macOS retest of the in-app MCP recording on build run 38598557320 by @EtienneLescot in #1225
- fix(mcp): let getFrames read a GIF export by @EtienneLescot in #1227
- fix(cli): open the app when macOS hands a launch to a running CLI process by @EtienneLescot in #1228
- fix(macos): record the whole system audio mix in a window take by @EtienneLescot in #1229
- fix(stt): drop the renderer audio-decode fallback and say ffmpeg is missing by @EtienneLescot in #1226
- test: wait for the held export to start instead of sleeping 20 ms by @EtienneLescot in #1208
- docs(testing): log the macOS retest of #1214, #1215 and #1216 on build run 38615516865 by @EtienneLescot in #1231
- fix(mcp): record the window an in-app take names, even where Apple's picker owns sources by @EtienneLescot in #1237
- fix(cli): hide the Dock icon again after opening the GUI from a CLI run by @EtienneLescot in #1239
- fix(macos): log each step of Apple's picker flow and any lost process by @EtienneLescot in #1100
- docs(testing): log the macOS retest of #1232 and #1233 on build run 38627769728 by @EtienneLescot in #1241
- feat: shader effects integration (#1199, #1202, #1207) by @EtienneLescot in #1210
- docs(testing): log the macOS pass on release/v2.1.0 build 38370716184 by @EtienneLescot in #1246
- fix(cli): give a CLI run no application menu by @EtienneLescot in #1248
- feat(website): cookieless PostHog analytics, download clicks and a Store campaign ID by @EtienneLescot in #1249
- feat: count active installs with one anonymous daily ping by @EtienneLescot in #1250
- fix(cli): set the empty menu before macOS launches the CLI run by @EtienneLescot in #1252
- docs(testing): log the Windows retest of v2.1.0 build run 38714540858 by @EtienneLescot in #1251
- fix: fall back to a copy when a save's rename hits EXDEV by @EtienneLescot in #1256
- docs(testing): log the Windows pass of v2.1.0-rc.1 by @EtienneLescot in #1258
- fix(mcp): read no click telemetry when getFrames renders from the main process by @EtienneLescot in #1253
- fix(ai): drop the rewound message from the agent's history by @EtienneLescot in #1259
- fix(ai): run a turn's tool calls one at a time so parallel writes all land by @EtienneLescot in #1261
- fix(annotations): refit frame text whenever the Auto frame changes shape by @EtienneLescot in #1262
- docs(testing): grant wgc-capture.exe so computer-use leaves the icon cover up by @EtienneLescot in #1263
- fix(recording): keep the countdown's last digit out of frame 0 on Linux by @EtienneLescot in #1267
- fix(hud): restore the Linux HUD from the tray and keep the vertical bar on screen on Wayland by @EtienneLescot in #1272
- fix(editor): let the editor un-maximize on Wayland and stop its bounds drifting by @EtienneLescot in #1271
- docs(capture-linux): document the window-take shadow border and cursor coverage by @EtienneLescot in #1270
- fix(capture-linux): cap the VAAPI QP so the first keyframe stays legible by @EtienneLescot in #1269
- fix(diagnostics): keep main-process logs and the Linux helper output in Save Diagnostics by @EtienneLescot in #1268
- fix(preview): no motion-blur trail into a cut inside Full Camera by @EtienneLescot in #1266
- docs(testing): log the Linux pass of v2.1.0-rc.1 by @EtienneLescot in #1277
- docs(testing): log the macOS pass on v2.1.0-rc.1 by @EtienneLescot in #1281
- fix(preview): cursor holds by @marcgabe15 in #1189
New Contributors
- @marcgabe15 made their first contribution in #1074
- @satwiksharma01 made their first contribution in #1075
- @entity-0-0-2 made their first contribution in #1086
- @mcmah309 made their first contribution in #1081
- @bet4it made their first contribution in #1027
- @quotentiroler made their first contribution in #933
- @kiwikreativo made their first contribution in #1069
- @akahoz94 made their first contribution in #1024
- @prayaslashkari made their first contribution in #892
- @vorburger made their first contribution in #1099
- @easonwong-de made their first contribution in #1106
Full Changelog: v2.0.0...v2.1.0