Releases: getopenscreen/openscreen
Release list
v1.9.4-rc.3
Changes since v1.9.4-rc.2
- fix(wgc): make the GPU encode path opt-in until it earns the default
- docs(recording): stop the paragraph contradicting itself on fallback
Full Changelog: v1.9.4-rc.2...v1.9.4-rc.3
v1.9.4-rc.2
This release candidate is a first attempt at the Windows stop hang reported in #252, #292 and #327 — "Timed out waiting for native Windows capture to stop. The recording could not be saved."
It is not proven to fix it. Nobody has reproduced that hang on hardware the maintainers control, and there is good evidence for two distinct causes rather than one, of which this addresses a single one. What it does add is the ability to answer the leading question from a bug report instead of guessing at it. Details and what to attach are in #252.
v1.9.4-rc.1 was cut but never published — its release step failed — so everything below landed in a build nobody could download. The "Changes since v1.9.4-rc.1" list further down is therefore accurate and misleading at the same time; this is the real span.
Windows recording
- GPU DXGI encode path, with a fallback to the previous CPU readback at every step, so a machine the GPU path does not fit records exactly as it did before
- The path that ran is now reported:
videoInputinencoder-selection, and a newcapture-adapterevent naming the GPU the capture device landed on versus the one driving the display being captured - A stalled stop now names the call each thread was inside:
encode_stagefor the video writer,audio_stagefor the audio mixer - Fixed: an
AcquireSynctimeout was never detected, so a busy bridge fell through without holding its key and a broken one was retried forever - Fixed: inline webcam picture-in-picture would have silently lost its overlay on the GPU path
- Fixed: the capture loop slept a full frame interval after doing its work, so a 30 fps recording delivered about 22
Diagnostics
- The standalone tool (
scripts/diagnostic-tool) can finally test audio:--system-audioand--mic. Audio and video writes contend for the same lock, so a run without audio has nothing to contend with and can pass on a machine where the app hangs every time
Packaging
- The OpenMP runtime the ggml speech-to-text backends import is now shipped, and Visual Studio is found where it actually lives
libgompis bundled in the AppImage, the one Linux format that cannot declare it as a dependency- The Linux desktop portal is declared, with the backend that implements it named
Everything since v1.9.2
- fix(linux): bundle libgomp in the AppImage, the one format that cannot declare it
- docs(build): fix a self-contradiction in the AppImage paragraph
- ci(store): submit the appx to the Microsoft Store from the release build
- fix(store): report the actual submission result, not the configuration
- fix(linux): declare the portal, and name the backend that implements it
- ci(winget): stop skipping the publish in silence
- docs(build): name the packages instead of counting them
- ci(winget): name the two gates that each cost a release to discover
- docs(dist): make the Microsoft Store the recommended Windows route
- docs(dist): describe the winget gate by its prerequisites, not its if
- docs(dist): stop calling the winget job switched off
- fix(win): ship the OpenMP runtime the ggml backends actually import
- fix(win): tell a directory from a file, and find Visual Studio where it is
- fix(wgc): add GPU DXGI path for Windows capture readback
- fix(wgc): make the GPU encode path degrade instead of failing
- fix(wgc): keep an encode off the frame lock, and name where it wedges
- fix(wgc): repair the four things the GPU path got wrong under review
- fix(wgc): build the bridge texture where a failure can still fall back
- fix(wgc): give the audio write its own breadcrumb instead of the video's
- fix(wgc): clear the breadcrumb by scope, not by remembering to
- fix(win): pace the capture loop to a deadline instead of sleeping a full period
- feat(wgc): report which GPU capture landed on, and let the tool test audio
- style(diagnostic): wrap the two lines biome wanted wrapped
- fix(wgc): stop the adapter report dereferencing what DXGI did not give it
- fix(ci): start release notes from a tag that exists
- fix(ci): let each consumer decide what "no previous release" means
Full Changelog: v1.9.2...v1.9.4-rc.2
v1.9.3-rc.1
Changes since v1.9.2
- fix(linux): bundle libgomp in the AppImage, the one format that cannot declare it
- docs(build): fix a self-contradiction in the AppImage paragraph
- ci(store): submit the appx to the Microsoft Store from the release build
- fix(store): report the actual submission result, not the configuration
Full Changelog: v1.9.2...v1.9.3-rc.1
v1.9.2
What's Changed
- fix(linux): declare the libraries the packages need, and prove it on a clean machine by @EtienneLescot in #325
Full Changelog: v1.9.1...v1.9.2
v1.9.1
What's Changed
- fix(notes): keep the note stylesheet in the production bundle by @EtienneLescot in #270
- chore(release): sync the v1.9.0 RC fixes into main by @EtienneLescot in #275
- feat(editor): turn on roundness, shadow and motion blur by default by @EtienneLescot in #273
- fix(cursor): make the Windows cursor sampler DPI-aware by @EtienneLescot in #278
- fix(hud): stop being born click-through, wait for the renderer to ask by @EtienneLescot in #269
- fix(media): watch the background path refresh instead of firing it into the void by @EtienneLescot in #255
- fix(agent): stop cutting the transcript at the 800th word by @EtienneLescot in #256
- fix(ci): scope RC release notes to the previous RC by @EtienneLescot in #267
- test(media): inject the failed registry write instead of chmod-ing the temp dir by @EtienneLescot in #280
- feat(agent): add addTrims and addZooms, so a cut stops costing a round trip by @EtienneLescot in #258
- perf(test): run Vitest in node by default, and fix the workflow guidance around it by @EtienneLescot in #281
- fix(ai): stop compacting the chat on a context window we never measured by @EtienneLescot in #286
- chore(release): release v1.9.0 into main by @EtienneLescot in #288
- fix(ci): re-pin ffmpeg on a month-end BtbN build by @EtienneLescot in #295
- fix(ci): harden the AUR publish pipeline and repair its distribution CI by @EtienneLescot in #297
- fix(release): publish before syncing main, and stop racing the merge by @EtienneLescot in #296
- ci(linux): guard the native payload, declare patchelf, drop the dead zsync glob by @EtienneLescot in #298
- fix(appx): ship branded Store tiles instead of electron-builder's placeholders by @EtienneLescot in #294
- fix(win): ship the compositor addon beside its ffmpeg DLLs by @EtienneLescot in #303
- fix(linux): give the capture helper's ffmpeg libraries their own directory name by @EtienneLescot in #300
- fix(linux): negotiate DMA-BUF so capture works on niri and other wlroots compositors by @EtienneLescot in #299
- ci(release): make the Discord announcement dispatchable on its own by @EtienneLescot in #289
- test(ci): cover the missing-tag path under STRICT by @EtienneLescot in #314
- fix(release): bump package-lock.json alongside package.json by @EtienneLescot in #290
- ci: bump pinned GitHub Actions to their Node 24 majors by @EtienneLescot in #97
- fix(linux): make the Linux build work on arm64 by @zebster-cmd in #293
- feat: add Fedora RPM packaging support by @Mundo-Dev0ps in #101
- ci(docs): bump the SHA-pinned Pages actions to their Node 24 majors by @EtienneLescot in #316
- docs(ci): correct the include-hidden-files rationale in docs.yml by @EtienneLescot in #318
- fix(linux): give the compositor's build.rs its own freestanding-header fallback by @EtienneLescot in #315
- fix(linux): recover the DMA-BUF plane size the producer leaves at zero by @EtienneLescot in #319
- test(media): stop the media-links temp-dir cleanup failing its own race by @EtienneLescot in #320
- fix(linux): stop the packages needing a glibc newer than the target distro by @EtienneLescot in #322
- fix(win): stop depending on the Visual C++ Redistributable by @EtienneLescot in #321
New Contributors
- @zebster-cmd made their first contribution in #293
- @Mundo-Dev0ps made their first contribution in #101
Full Changelog: v1.9.0...v1.9.1
v1.9.0
What's Changed
- feat: add Notes teleprompter mode by @My-Denia in #152
- ci(nix): fix the bump workflow's PR creation, and catch npmDepsHash drift by @EtienneLescot in #230
- fix(notes): make mirrored teleprompter content read-only by @My-Denia in #228
- feat(cli): headless record / export / info commands by @PeterTakahashi in #176
- fix(timeline): size pills and clips in px, not in fractions of the timeline by @EtienneLescot in #233
- chore(release): release v1.8.0 into main by @EtienneLescot in #245
- fix(build): name Etienne Lescot as the Windows publisher by @EtienneLescot in #246
- fix(timeline): carry rounded timecode seconds by @arhxam in #236
- fix(export): keep speed segments non-overlapping by @arhxam in #237
- fix(editor): cascade clip modifier deletion by @arhxam in #242
- fix(electron): drop the PID-file instance lock that could brick startup by @EtienneLescot in #247
- fix(media): require an executable when resolving ffmpeg by @EtienneLescot in #251
- fix(recording): record the window Linux users actually pick by @EtienneLescot in #250
- fix(ai): replace summarized chat history by @arhxam in #238
- fix(stt): verify cached model checksum by @arhxam in #239
- fix(projects): relink moved media from registry by @arhxam in #235
- fix(deps): patch dev toolchain vulnerabilities by @arhxam in #244
- fix(deps): upgrade electron-builder security patches by @arhxam in #243
- fix(ci): sign the macOS .app ad-hoc when no certificate is available by @EtienneLescot in #257
- fix(recording): stream the native webcam to disk instead of losing it by @EtienneLescot in #259
- test(recording): make the re-index suite run off Linux by @EtienneLescot in #260
- fix(ci): notarize release candidates like stable releases by @EtienneLescot in #262
- fix(build): declare all 13 supported locales in the AppX package by @EtienneLescot in #263
- ci(macos): reject a MAC_CSC_NAME that carries its certificate type by @EtienneLescot in #264
- fix(recording): stop the WGC helper from hanging on stop by @EtienneLescot in #254
- fix(layout): apply the webcam layout only to clips that have a camera by @EtienneLescot in #261
- fix(notes): keep the note stylesheet in the production bundle by @EtienneLescot in #276
- fix(hud): stop being born click-through, wait for the renderer to ask by @EtienneLescot in #279
New Contributors
- @PeterTakahashi made their first contribution in #176
- @arhxam made their first contribution in #236
Full Changelog: v1.8.0...v1.9.0
v1.9.0-rc.4
Changes since v1.9.0-rc.3
- fix(ai): stop compacting the chat on a context window we never measured
Full Changelog: v1.9.0-rc.3...v1.9.0-rc.4
v1.9.0-rc.3
Changes since v1.9.0-rc.2
- fix(notes): keep the note stylesheet in the production bundle
- feat(editor): turn on roundness, shadow and motion blur by default
- fix(cursor): make the Windows cursor sampler DPI-aware
- fix(hud): stop being born click-through, wait for the renderer to ask
- test(hud): pin that click-through is asked for, never born with
- docs(hud): replace the guessed exposure window with a measured one
- fix(agent): stop cutting the transcript at the 800th word
- docs(agent): the transcript tool no longer caps, so stop saying it does
- fix(ci): scope RC release notes to the previous RC
- feat(agent): add addTrims and addZooms, so a cut stops costing a round trip
- fix(agent): let a malformed batch entry fall alone, like every other one
- fix(media): watch the background path refresh instead of firing it into the void
- test(media): inject the failed registry write instead of chmod-ing the temp dir
- perf(test): run Vitest in node, and jsdom only where a DOM is needed
- docs(agents): run the tests you touched, not the whole suite each step
- fix(ci-scripts): clear the thread-validation timeout when fetch rejects
- fix(renderer): handle the detached promises that can actually reject
Full Changelog: v1.9.0-rc.2...v1.9.0-rc.3
v1.9.0-rc.2
Changes since v1.9.0-rc.1
- fix(ci): sign the macOS .app ad-hoc when no certificate is available
- fix(recording): stream the native webcam to disk instead of losing it
- test(recording): make the re-index suite run off Linux
- fix(ci): notarize release candidates like stable releases
- fix(build): declare all 13 supported locales in the AppX package
- ci(macos): reject a MAC_CSC_NAME that carries its certificate type
- fix(recording): stop the WGC helper from hanging on stop
- fix(recording): stop a webcam finalize from discarding the screen capture
- ci(diagnostic): build the bundle for release branches too
- fix(export): stop drawing the screen inside the PiP box on camera-less clips
- fix(layout): resolve the webcam layout per clip, not once per timeline
Full Changelog: v1.9.0-rc.1...v1.9.0-rc.2
v1.9.0-rc.1
What's Changed
- feat: add Notes teleprompter mode by @My-Denia in #152
- ci(nix): fix the bump workflow's PR creation, and catch npmDepsHash drift by @EtienneLescot in #230
- fix(notes): make mirrored teleprompter content read-only by @My-Denia in #228
- feat(cli): headless record / export / info commands by @PeterTakahashi in #176
- fix(timeline): size pills and clips in px, not in fractions of the timeline by @EtienneLescot in #233
- chore(release): release v1.8.0 into main by @EtienneLescot in #245
- fix(build): name Etienne Lescot as the Windows publisher by @EtienneLescot in #246
- fix(timeline): carry rounded timecode seconds by @arhxam in #236
- fix(export): keep speed segments non-overlapping by @arhxam in #237
- fix(editor): cascade clip modifier deletion by @arhxam in #242
- fix(electron): drop the PID-file instance lock that could brick startup by @EtienneLescot in #247
- fix(media): require an executable when resolving ffmpeg by @EtienneLescot in #251
- fix(recording): record the window Linux users actually pick by @EtienneLescot in #250
- fix(ai): replace summarized chat history by @arhxam in #238
- fix(stt): verify cached model checksum by @arhxam in #239
- fix(projects): relink moved media from registry by @arhxam in #235
- fix(deps): patch dev toolchain vulnerabilities by @arhxam in #244
- fix(deps): upgrade electron-builder security patches by @arhxam in #243
New Contributors
- @PeterTakahashi made their first contribution in #176
- @arhxam made their first contribution in #236
Full Changelog: v1.8.0...v1.9.0-rc.1