Repository navigation
Releases: getopenscreen/openscreen
Release list
v1.12.2
What's Changed
- fix(macos): decode 24-bit integer microphone audio by @EtienneLescot in #710
- fix(macos): keep the Dock icon, Cmd+Tab and the menu bar by @EtienneLescot in #713
- chore(release): release v1.12.1 into main by @EtienneLescot in #715
Full Changelog: v1.12.1...v1.12.2
v1.12.1
What's Changed
- fix(export): 9:16 projects exported as stretched 16:9 by @EtienneLescot in #678
- fix(compositor): clamp the click-bounce cursor size at zero by @EtienneLescot in #680
- fix(compositor): keep privacy blur on its content under zoom and 3D tilt by @EtienneLescot in #679
- fix(compositor): match the Linux background blur to the HLSL/Metal Kawase by @EtienneLescot in #681
- feat: add German (de) locale by @mario-soller in #672
- feat(website): SEO pages, v1.11.0 fact fixes, 8 locales and Docusaurus Faster by @EtienneLescot in #697
- docs(website): keep comparison pages to the choices that matter by @EtienneLescot in #701
- feat(3d): follow-cursor camera, modelled 3D cursor and 3D effects by @EtienneLescot in #682
- revert: back out the 3D effects until they run on macOS and Linux by @EtienneLescot in #703
- fix(audio): boost the mic only over system audio, and clamp the mix once by @EtienneLescot in #698
- feat(3d): follow-cursor camera, modelled 3D cursor and 3D effects by @EtienneLescot in #704
- feat(frames): model the device frames in 3D by @EtienneLescot in #705
- chore(release): release v1.12.0 into main by @EtienneLescot in #712
New Contributors
- @mario-soller made their first contribution in #672
Full Changelog: v1.12.0...v1.12.1
v1.12.1-rc.1
Changes since v1.12.0
- fix(export): take the output shape from the scene, never a hardcoded 16:9
- fix(timeline): stop losing the source-dimension backfill on fresh recordings
- test(timeline): cover the backfill retry after a timed-out save wait
- fix(compositor): clamp the click-bounce cursor size at zero
- test(cursor): pin the click-bounce envelope, align the inspect script
- docs(cursor): drop the last references to the deleted nativeCursor.ts
- fix(compositor): keep privacy blur on its content under zoom and 3D tilt
- fix(compositor): close two edge leaks in the zoomed privacy mask
- docs(testing): log the privacy-blur-under-zoom export pass
- fix(compositor): match the Linux background blur to the HLSL/Metal Kawase
- test(compositor): check the Linux Kawase parity on the vertical axis too
- fix(compositor): size Linux Kawase blur texels from actual pyramid dimensions
- feat: add German (de) locale
- fix(i18n): add missing German stylePresets strings and match import button label
- feat(website): add comparison, platform and feature pages, a FAQ and the CLI reference
- docs(website): bring the docs and the blog in line with v1.11.0
- feat(website): localize the site into fr, es, pt-BR, ja, zh-CN, zh-TW and de
- build(website): build with Docusaurus Faster
- docs(website): say what the input group grants before telling users to join it
- test(website): cover English-only route matching and release asset patterns
- docs(website): keep the comparison pages to the choices that matter
- docs(website): drop the "not production-grade" framing from intro and FAQ
- docs(website): point the Camtasia and Linux pages at what the CLI needs
- feat(website): translate every page but the blog, and track stale translations
- docs(website): translate the comparison, platform and feature pages
- fix(website): order stale translations by commit, not by commit time
- chore: keep Markdown at LF
- docs(website): carry the CLI requirement links into the translations
- docs(website): note the rebase blind spot of i18n:check
- test(compositor): measure the Linux cursor trail over a one-frame shutter
- fix(dev): bypass the HTTP cache when loading the Vite dev server
- feat(zoom): drive the 3D tilt from cursor motion
- feat(zoom): rock the tilted screen on each click
- feat(cursor): extrude the cursor along the screen normal
- feat(compositor): expose programme time to the frame geometry
- feat(background): animate the gradient wallpapers
- feat(frames): draw a window chrome around the screen plane
- feat(effects): defocus the tilted screen by its depth
- feat(3d): add the follow-cursor orbit camera and a modelled 3D cursor
- fix(i18n): add the German strings for the 3D effects
- revert: back out the 3D effects until they run on macOS and Linux
- fix(audio): boost the mic only over system audio, and clamp the mix once
- test(audio): cover the mix gain per format and give the gain rule one home
- feat(zoom): drive the 3D tilt from cursor motion
- feat(zoom): rock the tilted screen on each click
- feat(cursor): extrude the cursor along the screen normal
- feat(compositor): expose programme time to the frame geometry
- feat(background): animate the gradient wallpapers
- feat(frames): draw a window chrome around the screen plane
- feat(effects): defocus the tilted screen by its depth
- feat(3d): add the follow-cursor orbit camera and a modelled 3D cursor
- fix(i18n): add the German strings for the 3D effects
- feat(frames): model the device frames in 3D
- feat(effects): pick a device frame in the Effects pane
- feat(frames): frame the recording with a 3D device
- fix(frames): keep the footage, model the devices after real products
- fix(frames): keep every border's thickness around every corner
- test(frames): show the window's title-bar corners in the v4 close-ups
- fix(frames): widen the roundness ranges and round only the inside of the laptop and screen bezels
- docs(frames): align the hinge range and the corner tolerance with the derivation and the test
- test(frames): cover the preset frame defaults and legacy values, and document the mode-17 slots
- fix(macos): realign a microphone stamped on a foreign clock
- Revert "fix(macos): realign a microphone stamped on a foreign clock"
- fix(macos): decode 24-bit integer microphone audio
- fix(macos): read unsigned integer PCM around its midpoint
- fix(macos): keep the Dock icon, Cmd+Tab and the menu bar
Full Changelog: v1.12.0...v1.12.1-rc.1
v1.12.0
What's Changed
- fix: avoid AV1 clip-switch crashes on Windows by @My-Denia in #602
- chore(release): release v1.11.0 into main by @EtienneLescot in #633
- fix: stop background writes clobbering a concurrent user edit by @My-Denia in #620
- fix(rec): the microphone can't be disabled in the Studio Rec tab by @Beetix in #625
- fix(capture): make Linux preview seek robust at/past the last frame by @Beetix in #551
- fix(captioning): correct web-demuxer.wasm URL — transcription always failed with "Failed to fetch" by @superkc2026 in #370
- fix(macos): exclude recording controls from display captures by @arhxam in #517
- fix(capture): stamp Linux video frames with wall-clock PTS to stop time-compression by @Beetix in #512
- fix(windows): let the default microphone id veto the device name by @EtienneLescot in #636
- fix(editor): suggest cursor-dwell zooms after a fresh recording by @My-Denia in #622
- chore: bump nix package to v1.11.0 by @EtienneLescot in #634
- fix(macos): warn when recording the default microphone by @arhxam in #521
- refactor(schema): drop the declarations nothing has ever read by @EtienneLescot in #562
- fix(capture-linux): measure the cursor against the window, not its mo… by @bosskopp in #514
- fix(transcription): a recording with no audio is a verdict, not a failed job by @EtienneLescot in #638
- fix(macos): resolve Chromium USB microphone labels by @Crnobog9527 in #648
- feat(cursor): add smart cursor auto-hide and zoom hide by @EtienneLescot in #649
- fix(linux): validate mapped DMA-BUF frames by @Mamdasn in #386
- fix(macos): drop video frames whose timestamp does not advance by @EtienneLescot in #658
- fix(macos): stop the take when the writer dies mid-capture, and tell the user by @EtienneLescot in #655
- fix(macos): settle the native stop on the helper's exit, not its first error by @EtienneLescot in #661
- fix(macos): recover the take a dead writer or a killed helper left on disk by @EtienneLescot in #662
- fix(wgc): read the config argument as UTF-16 so non-ASCII output paths resolve by @EtienneLescot in #654
- fix(timeline): coalesce scrub state updates per frame by @arhxam in #520
- fix(windows): low-pass before decimating so 96/192 kHz sources stop aliasing by @My-Denia in #644
- fix(ai): report every modifier removed with a pill by @arhxam in #519
- ci(whisper-stt): drop the msvc-dev-cmd step the Windows build never used by @My-Denia in #641
- docs(linux): bring the platform table back in line with what the code does by @My-Denia in #642
- fix(capture-linux): re-apply the vaMapBuffer2 guard to the dmabuf encoder's CPU upload by @EtienneLescot in #656
- fix(hud): keep a dragged HUD inside the display work area by @im10furry in #660
- feat(editor): show what a trim keeps, while the handles are still moving by @My-Denia in #640
- feat(launch): make post-recording auto-zoom systematic and remove toggle button by @EtienneLescot in #664
- fix(hud): keep open popovers on screen and harden the work-area clamp by @EtienneLescot in #665
- fix(build): re-fetch a staged ONNX Runtime that is the right version from the wrong archive by @EtienneLescot in #663
- feat: add Czech (cs) locale by @SupermanAdam007 in #630
- fix(hud): label recording controls for assistive technology by @CyberSparkx in #632
- feat(settings): persist recording setup and project appearance defaults by @My-Denia in #652
- docs(perf): record the HEVC 8-bit macOS decode measurements by @EtienneLescot in #673
- feat(editor): reusable style presets for project appearance by @EtienneLescot in #675
New Contributors
- @bosskopp made their first contribution in #514
- @Crnobog9527 made their first contribution in #648
- @Mamdasn made their first contribution in #386
- @im10furry made their first contribution in #660
- @SupermanAdam007 made their first contribution in #630
- @CyberSparkx made their first contribution in #632
Full Changelog: v1.11.0...v1.12.0
v1.12.0-rc.3
Changes since v1.12.0-rc.2
- fix(compositor): clamp the click-bounce cursor size at zero
- fix(compositor): keep privacy blur on its content under zoom and 3D tilt
- fix(compositor): close two edge leaks in the zoomed privacy mask
- fix(compositor): match the Linux background blur to the HLSL/Metal Kawase
- fix(compositor): size Linux Kawase blur texels from actual pyramid dimensions
- fix(dev): bypass the HTTP cache when loading the Vite dev server
- fix(audio): boost the mic only over system audio, and clamp the mix once
Full Changelog: v1.12.0-rc.2...v1.12.0-rc.3
v1.12.0-rc.2
Changes since v1.12.0-rc.1
- fix(export): take the output shape from the scene, never a hardcoded 16:9
- fix(timeline): stop losing the source-dimension backfill on fresh recordings
- test(timeline): cover the backfill retry after a timed-out save wait
Full Changelog: v1.12.0-rc.1...v1.12.0-rc.2
v1.12.0-rc.1
Changes since v1.11.0
- fix: avoid AV1 clip-switch crashes on Windows
- fix: preserve Windows AV1 software decode timing
- docs: record the 554 pre-fix and post-fix crash A/B
- docs: name the issue number in the A/B verdict cell
- fix: guard Windows frame decoding resources and hardware tests
- docs(website): add the export benchmark post, with live standings
- fix(editor): fold a probed duration in on the shared write queue
- fix(timeline): read the document at write time in addZoomsBulk
- fix(editor): bind the probed duration to the take that produced it
- test(editor): cover the probed-duration decision, guards included
- style: apply biome formatting to the probed-duration changes
- fix(preview): mount the primary asset while the timeline is empty
- test: run the probed-duration decision test in the default environment
- fix: close the rest of the auto-zoom write race, and stop the seed clobbering a measured length
- fix(editor): recover a missing primary asset when seeding the timeline
- fix(rec): the microphone can't be disabled in the Studio Rec tab
- fix(capture): drain the Linux decoder at EOF on the seek path
- fix(capture): match the real AVERROR_INVALIDDATA in the seek path
- fix(capture): return the last frame when seeking at/past end (frame-dropped captures)
- docs(capture): note the EOF drain is inert on B-frame-less captures
- fix(captioning): correct web-demuxer.wasm URL — transcription always failed with "Failed to fetch"
- fix(macos): exclude recording controls from captures
- fix(capture): stamp Linux video frames with wall-clock PTS to stop time-compression
- fix(capture): write the tail frame even when stopped while paused (CodeRabbit #512)
- fix(capture): freeze staging while paused and snapshot wall-clock before flush (CodeRabbit #512)
- refactor(capture): give a paused frame its own StageOutcome::Frozen
- fix(preview): hold the frame a VFR seek lands on, not the one after it
- fix(capture): pass the dmabuf argument the three new tests omitted
- fix(windows): let the default microphone id veto the device name
- feat(store): let a caller bound a document save that never answers
- refactor(timeline): one auto-zoom collect/append path for both callers
- feat(recording): suggest cursor-dwell zooms for a freshly imported take
- feat(launch): add the after-recording auto-zoom toggle
- feat(editor): run the fresh-take auto-zoom pass on the metadata write queue
- fix(editor): keep the placeholder duration on the asset, and off auto-zoom
- fix(timeline): re-collect auto-zoom suggestions when the clips move underneath
- fix(recording): write the cursor sidecar before publishing the session
- fix(recording): persist auto-zoom preferences and reconcile media duration
- chore: bump nix package to v1.11.0
- fix(macos): warn when recording the default microphone
- fix(macos): suppress stale microphone warnings
- fix(macos): only warn about a defaulted microphone when one was actually requested
- fix(macos): let the default microphone id veto the device name
- refactor(schema): drop autoTranscribe, which nothing has ever read
- refactor(schema): drop the two input schemas nothing consumes
- chore: let CodeRabbit approve PRs
- chore: let CodeRabbit approve PRs
- fix(capture-linux): measure the cursor against the window, not its monitor
- test(capture-linux): cover the encoder-preferred content_rect branch
- fix(capture-linux): set the content rect on the dmabuf path too
- fix(transcription): a recording with no audio is a verdict, not a failed job
- test(transcription): assert the silent-media toast says what it says
- ci: auto-approve Beetix PRs limited to Linux/Wayland paths
- revert: CodeRabbit back to comment-only
- ci: read the approvable paths from CODEOWNERS instead of duplicating them
- docs: add Trendshift repository badge
- docs(website): indicate lower is better for export benchmark standings
- fix(website): port newestPerPlatform to leaderboard so multi-platform builds rank correctly
- fix(macos): resolve Chromium USB microphone labels
- feat(cursor): add smart cursor auto-hide and zoom hide (#104)
- fix(linux): validate mapped DMA-BUF frames
- fix(macos): drop video frames whose timestamp does not advance
- docs(macos): state the timestamp gate's measured bounds, not assumed ones
- fix(macos): stop the take when the writer dies mid-capture, and tell the user
- fix(macos): let a second stop wait for the shutdown already running
- fix(macos): settle the native stop on the helper's exit, not its first error
- fix(macos): keep a timed-out helper out of the next take, and say why a take ended
- fix(macos): listen for errors on the helper's output pipes too
- fix(macos): recover the take a dead writer or a killed helper left on disk
- fix(macos): keep a recovered take when the disk is still full, and say what failed
- fix(wgc): read the config argument as UTF-16 so non-ASCII output paths resolve
- fix(timeline): coalesce scrub state updates per frame
- test(timeline): measure per-frame scrub commits against one update's cost
- fix(windows): low-pass before decimating so 96/192 kHz sources stop aliasing
- docs(testing): add the anti-alias check, and log the A/B that confirms it
- fix(ai): report every modifier removed with a pill
- fix(ai): enumerate audio pills too, now that RegionKind carries them
- ci(whisper-stt): drop the msvc-dev-cmd step the Windows build never used
- docs(linux): bring the platform table back in line with what the code does
- docs(linux): the webcam is a separate file on Windows too, and VAAPI needs dmabuf export
- fix(capture-linux): re-apply the vaMapBuffer2 guard to the dmabuf encoder's CPU upload
- fix(capture-linux): apply the vaMapBuffer2 guard to a forced VAAPI encoder too
- fix(hud): keep a dragged HUD inside the display work area
- fix(hud): clamp the visible bar, not the window, into the work area
- feat(editor): show what a trim keeps, while the handles are still moving
- fix(editor): size the card timecode gate to the timecode it is gating
- fix(editor): measure the card timecode gate instead of guessing per character
- feat(launch): make post-recording auto-zoom systematic and remove toggle button
- fix(hud): keep open popovers on screen and harden the work-area clamp
- fix(build): re-fetch a staged ONNX Runtime that is the right version from the wrong archive
- feat: add Czech (cs) locale
- fix(cs): correct Czech grammar, terminology and typos in locale files
- fix(cs): replace em dashes with natural Czech punctuation throughout
- fix(cs): replace escaped inner quotes with proper Czech closing quotation mark
- fix(cs): address CodeRabbit review: grammar, gender agreement and missing preposition
- fix(cs): add cs to tutorialHelpTranslations static locale map
- fix(cs): add missing i18n keys added in main merge (autoZoom, cursor)
- fix(cs): register cs in main process and packaging, sync keys with main
- fix(hud): label recording controls for assistive technology
- test(hud): pin the exact accessible name of every HUD control
- feat(settings): persist recording setup and project appearance defaults
- fix(settings): fail stale CLI sources and keep HUD stop/save in sync
- fix(settings): stop camera pref ping-pong and stale select-source writes
- refactor(settings): drop the Settings dialog and new-project appearance defaults
- docs(perf): record the HEVC 8-bit macOS decode measurements
- docs(perf): harden the decode harnesses after review
- feat(presets): store editor style presets as shareable files
- chore(i18n): add style preset strings for all locales
- feat(editor): add a Presets menu to the Composition pane
- docs(testing): log the PR #652 macOS settings-persistence pass
- fix(editor): move presets menu to header
- fix(presets): handle persistence failures
Full Changelog: v1.11.0...v1.12.0-rc.1
v1.11.0
macOS 13 and 14: on-device transcription is fixed. In v1.10.0 the speech-to-text
helper never loaded on Ventura or Sonoma, and the captions pane reported
Failed to fetch— which looked like a network fault but was the helper aborting in
the dynamic loader. Updating to v1.11.0 fixes it. Recording, editing and export were
never affected, and macOS 15 and later were never affected. See #538 for the analysis.
What's Changed
- docs(testing): say who runs the manual e2e pass, and that a slice counts by @EtienneLescot in #461
- fix(timeline): remove the dead Add Full Camera toolbar button by @EtienneLescot in #466
- fix(editor): remove the redundant top-bar settings button by @EtienneLescot in #465
- fix(editor): close the clip picker on an outside click by @EtienneLescot in #464
- fix(stt): offer every whisper.cpp language in the regenerate picker by @EtienneLescot in #468
- revert: remove the dead Add Full Camera toolbar button by @EtienneLescot in #473
- fix(editor): light theme contrast + gradient palette by @EtienneLescot in #470
- fix(editor): zoom/pan the whole timeline pane on scroll by @EtienneLescot in #467
- fix(captions): position presets you can click, sliders that reach the true edge by @EtienneLescot in #471
- fix(editor): timeline clip delete icon contrast in light theme by @EtienneLescot in #480
- fix(captions): place captions by anchor and margin, not by an invisible band by @EtienneLescot in #482
- docs(testing): log the v1.10.0-rc.3 Windows e2e run by @EtienneLescot in #485
- fix: initialise CoreGraphics before building a macOS window capture filter by @naadydev in #488
- fix(recording): use hardware H.264 on Windows by default by @EtienneLescot in #489
- fix(app,recording): Save Diagnostics UI + faster #460 shutdown by @EtienneLescot in #492
- chore(release): release v1.10.0 into main by @EtienneLescot in #495
- docs: publish minimum and recommended system requirements by @EtienneLescot in #496
- fix(website): match recreation generator's param name to amplitude by @EtienneLescot in #498
- fix(ci): don't let the docs refresh block Microsoft Store publishing by @EtienneLescot in #499
- chore: bump nix package to v1.10.0 by @EtienneLescot in #497
- fix(build): stop the Windows cargo env values from breaking Linux builds by @EtienneLescot in #516
- refactor(editor): delete the orphaned v3 left rail and media pane by @EtienneLescot in #479
- fix(capture): zero-copy dmabuf→VAAPI capture — fix whole-screen recording freeze on GNOME/AMD (#507) by @Beetix in #508
- feat(linux): capture mouse clicks on Wayland via evdev by @Beetix in #501
- fix(macos): make recording work on Monterey, and stop calling a dead helper a denied permission by @EtienneLescot in #527
- feat(webcam): add AI background cutout, blur, and custom wallpapers (#291) by @EtienneLescot in #493
- fix(compositor): bound the image texture cache, which never freed anything by @EtienneLescot in #537
- fix(webcam): ask the machine whether it can segment, instead of guessing by @EtienneLescot in #541
- perf(wallpapers): cap the bundled backgrounds at 3840px by @EtienneLescot in #542
- perf(audio): stretch speed regions through libavfilter atempo instead of WSOLA — fixes exports frozen at ~80% by @superkc2026 in #371
- fix(nix): unbreak
nix build, and let it run on the PRs that can break it by @EtienneLescot in #545 - fix(export): keep the progress bar honest and moving during the audio phase by @EtienneLescot in #546
- fix(preview): show the modifiers under a trim when the playhead is on it by @EtienneLescot in #553
- feat(website): add a development journal at /blog by @EtienneLescot in #563
- feat(website): route all Discord links through getopenscreen.com/discord by @EtienneLescot in #568
- perf(linux): convert to YUV on the GPU, halving the export readback by @EtienneLescot in #555
- chore: add FUNDING.yml by @EtienneLescot in #574
- perf(linux): take the export from 3.33x the floor to 1.17x, and onto the GPU by @EtienneLescot in #559
- fix(export): give the Linux encoder a keyframe interval and a chosen QP window by @EtienneLescot in #575
- fix(build): stop hiding the shared dependencies behind cfg(linux) by @EtienneLescot in #581
- chore(ffmpeg): say that the encoder list is reported, not verified by @EtienneLescot in #579
- refactor(export): drop send_rgba and the state that existed only for it (Linux) by @EtienneLescot in #580
- fix: reset themed cursor when sidecar type is null or omitted by @My-Denia in #566
- feat(update): add update settings and a background check by @My-Denia in #525
- feat(editor): persist and restore the editor window bounds by @My-Denia in #524
- feat(editor): crop at pixel resolution with a larger preview by @My-Denia in #523
- fix: snap illegal AAC sample rates to 48 kHz on Windows by @My-Denia in #565
- fix(stt): distinguish initializing from transcribing on every spinner by @My-Denia in #522
- perf(export): decode H.264 in software on the macOS export walk (1.82x floor -> 1.30x) by @EtienneLescot in #583
- fix(packaging): unblock the Windows build, and cover what landed after v1.10.0 by @EtienneLescot in #589
- docs(perf): record the macOS export measurements, including what failed by @EtienneLescot in #594
- docs(perf): capping the macOS decoder's threads is a loss, and why the fixture said otherwise by @EtienneLescot in #597
- ci(onnx): build ONNX Runtime for macOS with the floor the app declares by @EtienneLescot in #595
- ci(build): do not run the release matrix for internal v0.0.0-* tags by @EtienneLescot in #598
- fix(wgc): pull-based frame delivery to stop CopyResource wedging the stop path by @abduznik in #306
- fix(macos): serve ONNX Runtime from a build that respects the 13.0 floor by @EtienneLescot in #599
- docs(perf): settle the macOS export's 4 s cold start, and kill the asar lever by @EtienneLescot in #600
- fix(ci): read the runner image instead of interpolating an empty string by @EtienneLescot in #601
- feat(editor): imported audio, and transcript words you can correct, add and delete by @EtienneLescot in #569
- docs(e2e): checks for imported audio, voice-over and word insertion by @EtienneLescot in #603
- build: pin electron exactly, so packaging works without a second declaration by @EtienneLescot in #605
- fix(insertions): the deleted word stayed in the transcript by @EtienneLescot in #604
- fix(i18n): simplify transcript panel title across all locales by @EtienneLescot in #607
- fix(editor): reset all parameters on audio track pane reset by @EtienneLescot in #609
- fix(editor): polish UI layout, slider gauge, icons and captions panel by @EtienneLescot in #610
- fix(timeline): expand initial timeline height and dynamically adjust for stacked audio lanes by @EtienneLescot in #611
- fix(editor): keep the camera preset labels inside their button by @etiennele...
v1.11.0-rc.1
Changes since v1.10.0
- docs(testing): say who runs the manual e2e pass, and that a slice counts
- docs(testing): keep the promote gate at the whole file
- fix(timeline): remove the dead Add Full Camera toolbar button
- fix(editor): remove the redundant top-bar settings button
- fix(editor): close the clip picker on an outside click
- fix(stt): offer every whisper.cpp language in the regenerate picker
- fix(stt): wire the language list into the picker that's actually live
- fix(stt): validate regenLang against the known code list
- Revert "fix(timeline): remove the dead Add Full Camera toolbar button"
- fix(editor): make the gradient picker and a couple of dialogs follow the light theme
- fix(editor): a subagent review of the previous commit's own diff, addressed
- fix(editor): zoom/pan the whole timeline pane on scroll, not just the lanes
- test(editor): cover Shift+wheel pan from the ruler too
- fix(captions): position presets you can click, sliders that reach the true edge
- docs(captions): describe the position-preset derivation, fix a drifted anchor
- fix(captions): pick the closest position preset, not the first one checked
- fix(editor): give the timeline clip's delete icon the same dark-chip treatment as its label
- feat(compositor): let a text region pin an edge instead of centring its block
- fix(captions): place captions by anchor and margin, not by an invisible band
- feat(captions): draw the anchor line and the column while the pane is open
- test(compositor): anchor on the line box, not on the last pixel of ink
- fix(captions): reserve the plate's margin on the anchored side, and migrate insetX
- fix(compositor): a doc comment cannot sit on a function parameter
- fix(captions): let the first write know the output aspect too
- revert(captions): drop the preview guide, it had nothing left to explain
- fix(captions): default the insets to what actually sits well with the padding
- docs(testing): log the v1.10.0-rc.3 Windows e2e run
- docs(testing): correct the rc.3 row - pause works, the verdict was wrong
- docs(testing): correct the rc.3 row again - STT works, the message lies
- docs(testing): retract the Escape finding - the driver ate the key
- docs(testing): close the caption gap on the rc.3 row
- fix: initialise CoreGraphics before building a window capture filter
- docs: name the MP4 as the recording, not a sidecar, in the results row
- refactor(macos-capture): name the CoreGraphics init call, cross-reference the other one
- fix(recording): use hardware H.264 on Windows by default, not just when asked
- fix(app): reach Save Diagnostics from the menu and tray, not nowhere
- fix(app): address CodeRabbit review on the Save Diagnostics PR
- fix(recording): stop burning the step budget on a join that cannot succeed
- docs: publish minimum and recommended system requirements
- docs: address CodeRabbit review on the system requirements PR
- fix(website): match the recreation generator's param name to ClipWaveform's amplitude rename
- fix(ci): don't let the docs refresh block Microsoft Store publishing
- chore: bump nix package to v1.10.0
- fix(build): stop the Windows cargo env values from breaking Linux builds
- fix(build): require lib/ as well as include/ when picking an ffmpeg tree
- fix(build): accept a LIBCLANG_PATH that names a library file, and skip libclang-cpp
- fix(build): match clang-sys's exact libclang filename patterns
- fix(build): only accept a LIBCLANG_PATH entry that is a regular file
- refactor(editor): delete the orphaned v3 left rail and media pane
- docs(editor-shell): fix the stale ChatStripPanel mount line reference
- docs(schema): drop the stale SourceTranscriptModal note from the language table
- fix(editor): finish the v3 rail removal — dead CSS, stale refs, unused import
- docs(editor): stop citing the deleted Source Transcript modal
- feat(capture): negotiate tiled dmabuf and plumb the GPU descriptor (#507)
- feat(capture): add the dmabuf -> VAAPI importer module (#507)
- feat(capture): wire the dmabuf importer through to the encoder (#507)
- fix(capture): make the dmabuf VAAPI import work on radeonsi (#507)
- feat(capture): auto-enable dmabuf import with shm fallback (#507)
- feat(capture): crop window captures on the GPU in the VPP (#507)
- fix(capture): address CodeRabbit review on #508
- fix(capture): invalidate held dmabuf buffers on remove (CodeRabbit #508)
- fix(capture): generation-tag held dmabuf buffers against slot reuse (CodeRabbit #508)
- fix(capture): null-check hw buffer inputs, add libglvnd to the rpath
- fix(capture): gate the dmabuf offer on the forced encoder, and allow a render-node override
- fix(capture): panic-safety, stale hw surface, and a non-fatal dmabuf drop
- refactor(capture): dedupe DmabufPlane, cover the fourcc map, fix a vendor comment
- fix(capture): decline an untracked dmabuf buffer instead of leaking it
- fix(capture): own the dmabuf plane fds so a destroyed buffer can't corrupt an import
- fix(capture): fail loudly when dmabuf import never works, not silently empty
- feat(linux): capture mouse clicks on Wayland via evdev
- fix(linux): gate evdev readers on cursor mode, and document the input group
- fix(cursor): enable click-bounce effect on Linux now that evdev captures clicks
- fix(linux): ignore clicks until the stream is live, dropping the portal "Share" press
- docs(linux): note that touchpad tap-to-click is not captured
- fix(linux): harden the evdev click reader (EINTR, hotplug, device loss, double-click)
- fix(linux): address CodeRabbit re-review of the click-capture path
- fix(macos): drop the native deployment floor to macOS 12
- fix(recording): stop reporting an unrunnable helper as a denied permission
- test(macos): pin the helper-unavailable taxonomy and the deployment floor
- fix(recording): address CodeRabbit review on #527
- fix(macos): declare macOS 13 as the floor instead of accommodating 12
- test(macos): stop the app-floor parser being fooled by prose
- refactor(scripts): give the app-floor parser one home
- fix(build): pin the macOS deployment target for ffmpeg and whisper
- feat(build): refuse to pack a macOS binary built above the supported floor
- fix(build): retarget the macOS floor to 13, matching the declared support
- test(build): read the declared floor through the shared parser
- fix(build): stop the floor guard advising a version it would reject
- docs(linux): align the two guides on what Linux actually captures
- feat(webcam): add AI background cutout, blur, and custom wallpapers (#291)
- fix(ci): update npmDepsHash in nix package and fix TypeScript types in ExportDialog and webcamSegmentation
- fix(nix): update npmDepsHash to match package-lock.json
- fix(webcam): address the review findings on the AI background PR
- docs(webcam): record where segmentation stands and what has to be measured
- docs(webcam): the workload is overhead-bound, so quantisation is the wrong lever
- docs(webcam): E0 falsifies the overhead-bound reading — it is bandwidth-bound
- docs(webcam): round 3 brief — settle the execution provider
- docs(webcam): settle on the CPU execution provider
- feat(webcam): composite the segmentation mask in the shader
- feat(webcam): vendor the ONNX segmentation model and its conversion script
- feat(webcam): load the segmentation model and produce the mask
- feat(webcam): extract the webcam frame and drive inference at 30 Hz
- feat(webcam): drive segmentation from compose_frame
- feat(webcam): start segmentation from the scene, and prove it on the bench
- feat(webcam): port the mask composite to Metal and WGSL
- feat(webcam): move segmentation into the compositor and delete the renderer path
- fix(webcam): hide the background control where it cannot work
- fix(webcam): a missing ONNX Runtime must not take the render thread down
- docs(webcam): brief for porting segmentation to a compositor back-end
- docs(webcam): add the per-back-end specifics to the port brief
- feat(webcam): port segmentation to the Metal back-end
- test(webcam): a visual harness for the mask, and what it cost to run
- build(webcam): stage ONNX Runtime, so the segmentation effect can actually run
- feat(webcam): port segmentation to the Linux compositor back-end
- build(webcam): ship ONNX Runtime on Linux, now that its back-end can use it
- fix(webcam): the three blockers that left the camera background non-functional
- fix(webcam): make the exported mask reproducible
- docs(webcam): close out the review threads on the measurement record
- fix(compositor): bound the image texture cache, which never freed anything
- fix(compositor): the frame marker protected one entry too many
- fix(webcam): ask the machine whether it can segment, instead of guessing
- fix(build): the ONNX requirement must not apply to Intel Macs
- perf(wallpapers): cap the bundled backgrounds at 3840px
- perf(audio): stretch speed regions through libavfilter atempo instead of WSOLA
- fix(audio): guard the decode and WSOLA loops against pathological stalls
- fix(review): address CodeRabbit findings on the atempo PR
- fix(review): address OpenScreen#371 blocking review (EtienneLescot)
- fix(packaging): CodeRabbit follow-up on #371 — require all six ffmpeg libs, guard --sdk-only
- fix(nix): stage and rename libavfilter for the compositor addon
- docs: describe the atempo stretch path and the six-library ffmpeg set
- perf(audio): make the atempo stretch land on the target without a hole
- fix(nix): refresh npmDepsHash, and format the new packaging test
- fix(audio): cap the atempo chain instead of stacking stages without a bound
- fix(nix): unbreak
nix build, and let it run on the PRs that can break it - fix(nix): trigger on this workflow's own edits, and narrow an overclaim
- ci(nix): prove the addon by exporting a synthesised clip, not by recording
- fix(export): keep the progress bar honest and moving during the audio phase
- fix(export): join the audio jobs on the error path, and state their real bound
- fix(preview): show the modifiers under a tri...
ONNX Runtime 1.27.1, macOS arm64 (internal)
Not a product release. A place to host one build dependency on a permanent public URL, the same way v0.0.0-stt-models hosts the Whisper model. v0.0.0-* tags are excluded from build.yml's release matrix and this is marked as a prerelease, so no package-manager workflow acts on it.
What this is
libonnxruntime 1.27.1 for macOS arm64, built from source with the deployment target pinned to the floor the app declares.
Microsoft's own onnxruntime-osx-arm64-1.27.1.tgz is built for macOS 14, while electron-builder.json5 declares minimumSystemVersion: "13.0" and scripts/before-pack.cjs refuses any binary demanding more than the floor — so npm run build:mac could not package at all. No published release satisfies a 13.0 floor: every one from 1.24 on is minos 14.0, and every one before it is at least 13.3.
Provenance
| built by | build-onnxruntime-macos.yml, run 33881629679 from main |
| source | microsoft/onnxruntime@df2ba1cf8108aa63627cf4cdf8f807880b938616 (the commit v1.27.1 names) |
| sha256 | b8b7e62786eea42fc867bdbc2d3f573655a4b0e602c6938c4cea151a9ef71623 |
| deployment target | minos 13.0, verified by the workflow |
| architecture | arm64 |
Provenance is attested and verifiable:
gh attestation verify onnxruntime-osx-arm64-1.27.1.tgz --repo getopenscreen/openscreenWhat it does not contain
The CoreML execution provider, which is why it is ~22 MB rather than upstream's ~37 MB. segmentation.rs builds its session with no explicit provider — the CPU EP — which technical-documentation/engineering/webcam-segmentation.md records as a measured decision.
Rebuilding
Re-running the workflow does not reproduce these bytes: paths, timestamps and the runner's compiler version all move. Pin this artifact by digest; do not rebuild expecting a match.