Skip to content

Releases: getopenscreen/openscreen

v1.11.0

Choose a tag to compare

@EtienneLescot EtienneLescot released this 09 Sep 14:41

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 @EtienneLescot in #614
  • fix(compositor): high-quality motion blur and gaussian webcam blur by @EtienneLescot in #608
  • fix(editor): keep the top bar usable when the window gets narrow by @EtienneLescot in #613
  • fix(build): ship the ffmpeg CLI in the macOS .app so transcription works withou...
Read more

v1.11.0-rc.1

v1.11.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@EtienneLescot EtienneLescot released this 08 Sep 07:24

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...
Read more

ONNX Runtime 1.27.1, macOS arm64 (internal)

Choose a tag to compare

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/openscreen

What 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.

v1.10.0

Choose a tag to compare

@EtienneLescot EtienneLescot released this 24 Aug 10:57

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
  • fix(linux): declare the libraries the packages need, and prove it on a clean machine by @EtienneLescot in #325
  • fix(linux): bundle libgomp in the AppImage, the one format that cannot declare it by @EtienneLescot in #326
  • ci(store): submit the appx to the Microsoft Store from the release build by @EtienneLescot in #311
  • fix(linux): declare xdg-desktop-portal and name its backend; ci(winget): stop skipping in silence by @EtienneLescot in #329
  • docs(dist): make the Microsoft Store the recommended Windows route by @EtienneLescot in #285
  • fix(win): ship the OpenMP runtime the ggml backends actually import by @EtienneLescot in #330
  • fix(wgc): GPU DXGI encode path for Windows capture, with a fallback at every step by @EtienneLescot in #305
  • fix(win): pace the capture loop to a deadline instead of sleeping a full period by @EtienneLescot in #331
  • feat(wgc): report which GPU capture landed on, and let the tool test audio by @EtienneLescot in #332
  • fix(ci): start release notes from a tag that exists by @EtienneLescot in #333
  • fix(wgc): make the GPU encode path opt-in until it earns the default by @EtienneLescot in #337
  • fix(recording): write fragmented MP4 so a killed helper keeps its file by @EtienneLescot in #338
  • fix(wgc): report adapter LUIDs, because the descriptions can be identical by @EtienneLescot in #342
  • ci(packaging): make the dormant Homebrew cask job visible, and add the AppStream metadata Flathub needs by @EtienneLescot in #340
  • ci(flatpak): spike how far Flathub actually is by @EtienneLescot in #347
  • docs(agents): add development principles, slim release flow, correct branch contract by @EtienneLescot in #96
  • fix(waveform): stop re-decoding audio-less recordings, and unify "no camera" (#348) by @EtienneLescot in #349
  • fix(wgc): make the Windows recorder DPI-aware and stop guessing its monitor by @EtienneLescot in #351
  • feat(build): let a developer package on a distro newer than the floor by @EtienneLescot in #360
  • fix(compositor): say when a declared camera is unreadable by @EtienneLescot in #357
  • fix(recording): open the recording a failed stop left playable by @EtienneLescot in #363
  • fix(editor): import a recording once, so reopening keeps the project you saved by @EtienneLescot in #366
  • feat(editor): delete a project from the Open project dialog by @EtienneLescot in #367
  • docs(e2e): correct the computer-use testing guidance, HUD to helpers by @EtienneLescot in #361
  • docs(testing): log the 1.9.5-rc.2 regression pass by @EtienneLescot in #369
  • docs(testing): "the machine is at 100%" is not a reason to skip DPI by @EtienneLescot in #372
  • docs(testing): batch the computer-use grants so the operator can leave by @EtienneLescot in #373
  • docs(testing): log the macOS 1.9.5-rc.1 pass — fragmenting is active, but a clean stop cannot prove it by @EtienneLescot in #374
  • fix(recording): stop macOS fragments carrying an offset the box cannot hold by @EtienneLescot in #375
  • chore(release): set main to 1.9.5 by @EtienneLescot in #378
  • fix(store): give msstore a project to publish, not just a package by @EtienneLescot in #379
  • ci(store): add a retry path for Store submission that rebuilds nothing by @EtienneLescot in #380
  • fix(store): the option is --inputDirectory, and it takes a directory by @EtienneLescot in #381
  • feat(update): add manual release checking by @arhxam in #313
  • feat(update): in-place updates on Windows, macOS and Linux by @EtienneLescot in #358
  • ci(aur): say which key AUR refused, i...
Read more

v1.10.0-rc.4

v1.10.0-rc.4 Pre-release
Pre-release

Choose a tag to compare

@EtienneLescot EtienneLescot released this 23 Aug 12:41

Changes since v1.10.0-rc.3

  • fix: initialise CoreGraphics before building a window capture filter
  • fix(recording): use hardware H.264 on Windows by default, not just when asked

Full Changelog: v1.10.0-rc.3...v1.10.0-rc.4

v1.10.0-rc.3

v1.10.0-rc.3 Pre-release
Pre-release

Choose a tag to compare

@EtienneLescot EtienneLescot released this 22 Aug 16:17

Changes since v1.10.0-rc.2

  • 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
  • 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
  • docs(captions): describe the anchor model on the release branch too
  • fix(captions): default the insets to what actually sits well with the padding

Full Changelog: v1.10.0-rc.2...v1.10.0-rc.3

v1.10.0-rc.2

v1.10.0-rc.2 Pre-release
Pre-release

Choose a tag to compare

@EtienneLescot EtienneLescot released this 22 Aug 11:44

Changes since v1.10.0-rc.1

  • 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): 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
  • 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(editor): remove the redundant top-bar settings button
  • fix(captions): position presets you can click, sliders that reach the true edge
  • fix(captions): pick the closest position preset, not the first one checked

Full Changelog: v1.10.0-rc.1...v1.10.0-rc.2

v1.10.0-rc.1

v1.10.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@EtienneLescot EtienneLescot released this 22 Aug 00:58

Changes since v1.9.0

  • fix(notes): keep the note stylesheet in the production bundle
  • 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
  • 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(media): watch the background path refresh instead of firing it into the void
  • 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
  • test(media): inject the failed registry write instead of chmod-ing the temp dir
  • 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
  • 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
  • fix(ai): stop compacting the chat on a context window we never measured
  • docs(readme): replace the two static screenshots with an animated demo
  • docs(readme): tighten the preamble and point the links at getopenscreen
  • docs(readme): rebuild the demo GIF from the 1440p master
  • fix(ci): re-pin ffmpeg on a month-end BtbN build
  • chore(gitignore): ignore local AUR key material
  • fix(ci): pin winget-releaser to a commit SHA
  • fix(ci): harden the AUR publish pipeline and repair its makepkg install
  • feat(ci): add a dry_run input to the AUR publish workflow
  • fix(ci): close three gaps found in CodeRabbit review of the AUR audit
  • fix(release): publish before syncing main, and stop racing the merge
  • fix(release): fail sync_main when no PR exists and main is still behind
  • ci(linux): guard the native payload, declare patchelf, drop the dead zsync glob
  • ci(linux): require each compositor ffmpeg library family individually
  • docs(readme): rebuild the demo GIF from the dark-theme master
  • fix(appx): ship branded Store tiles instead of electron-builder's placeholders
  • ci(windows-store): fail the build when the packaged tiles are not ours
  • ci(windows-store): check tiles against the generator, not against build/appx
  • fix(win): ship the compositor addon beside its ffmpeg DLLs
  • fix(linux): give the capture helper's ffmpeg libraries their own directory name
  • fix(linux): negotiate DMA-BUF so capture works on niri and other wlroots compositors
  • ci(release): make the Discord announcement dispatchable on its own
  • fix(ci): fail a manual announcement that posts nothing
  • test(ci): cover the missing-tag path under STRICT
  • fix(release): bump package-lock.json alongside package.json
  • fix(release): validate both manifests before writing either
  • fix(release): reject a version that is not a release version
  • ci: bump pinned GitHub Actions to their Node 24 majors
  • fix(linux): make the Linux build work on arm64
  • fix(linux): re-pin the arm64 ffmpeg asset and fix bindgen's include lookup at its source
  • feat(build): add the Fedora RPM target
  • ci(docs): bump the SHA-pinned Pages actions to their Node 24 majors
  • docs(ci): correct the include-hidden-files rationale in docs.yml
  • fix(linux): give the compositor's build.rs its own freestanding-header fallback
  • fix(linux): recover the DMA-BUF plane size the producer leaves at zero
  • test(media): stop the media-links temp-dir cleanup failing its own race
  • fix(linux): stop the packages needing a glibc newer than the target distro
  • fix(win): stop depending on the Visual C++ Redistributable
  • ci(win): prove the Store package loads before shipping it
  • fix(win): read delay imports too, and stop the guards masking each other
  • fix(win): drain both helper pipes at once instead of one after the other
  • fix(linux): declare the three libraries the packages need and never asked for
  • fix(linux): stop the Arch package depending on one Arch deleted
  • ci(linux): prove the packages resolve on a machine with nothing installed
  • ci(release): announce off the release itself, not off the ceremony that made it
  • fix(nix): refresh npmDepsHash, stale since well before this branch
  • 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
  • fix(wgc): make the GPU encode path opt-in until it earns the default
  • docs(recording): stop the paragraph contradicting itself on fallback
  • fix(recording): write fragmented MP4 so a killed helper keeps its file
  • fix(wgc): report adapter LUIDs, because the descriptions can be identical
  • fix(wgc): tell "no outputs" apart from "outputs could not be read"
  • ci(homebrew): stop reporting an unpublished cask as a green release
  • feat(packaging): add the upstream AppStream metadata Flathub requires
  • fix(ci): refuse a tap name brew cannot resolve
  • docs(release): stop calling the notarized DMGs unsigned
  • ci(flatpak): spike how far Flathub actually is
  • fix(flatpak): point the spike at a repository that exists
  • docs(agents): add development principles, slim release flow, correct branch contract
  • docs(agents): address review feedback on the release-flow docs
  • docs(release): make release-and-secrets.md the only release reference
  • fix(docs-check): catch the retired branch naming in both spellings
  • test(media): let callers await the registry's background path refresh
  • fix(waveform): take ffmpeg's word when a recording has no audio track
  • refactor(camera): one answer to "does this asset have a camera"
  • fix(export): key the fallback webcam decoder by the file it actually opened
  • fix(export): decide the webcam source, its cache key and the PiP together
  • fix(wgc): make the Windows recorder DPI-aware and stop guessing its monitor
  • fix(cursor): fail the sampler when DPI awareness cannot be set
  • feat(build): let a developer package on a distro newer than the floor
  • test(build): stop asserting the host ceiling clears the pinned floor
  • fix(compositor): say when a declared camera is unreadable
  • fix(compositor): use the shared predicate for "is this a real camera"
  • fix(recording): open the recording a failed stop left playable
  • fix(editor): import a recording once, so reopening keeps the project you saved
  • feat(editor): delete a project from the Open project dialog
  • docs(e2e): say what injected input can never prove about the HUD
  • docs(e2e): give a binary-string check that works on Windows
  • docs(agents): name the thing that actually builds a capture helper
  • docs(agents): the HUD click-through rule is macOS too, not Windows only
  • docs(agents): point at the testing docs, which only linked one way
  • docs(testing): log the 1.9.5-rc.1 Windows pass in the results table
  • docs(testing): the manual tester is an agent, so say what not to drive it with
  • docs(testing): give the editor sections their own reason not to inject
  • docs(agents): orient an agent toward computer-use before it needs to know
  • docs(agents): show the control search, not just require it
  • docs(testing): log the rc.2 regression pass, and what nearly faked a bug
  • docs(testing): "the machine is at 100%" is not a reason to skip DPI
  • docs(testing): batch the computer-use grants so the operator can leave
  • docs(testing): fix the grant ordering, and name apps the way the resolver does
  • docs(testing): log the macOS rc.1 pass, and why a clean stop proves nothing
  • docs(testing):...
Read more

v1.9.6

Choose a tag to compare

@EtienneLescot EtienneLescot released this 18 Aug 22:18

Full Changelog: v1.9.5...v1.9.6

v1.9.6-rc.1

v1.9.6-rc.1 Pre-release
Pre-release

Choose a tag to compare

@EtienneLescot EtienneLescot released this 18 Aug 14:54

Changes since v1.9.5

  • fix(store): give msstore a project to publish, not just a package
  • fix(store): drop the write token from the Store job, and stop calling a dispatch a dry run
  • ci(store): add a retry path for Store submission that rebuilds nothing
  • ci(store): fix an empty expression, a silent skip, and an unchecked run id
  • fix(store): the option is --inputDirectory, and it takes a directory
  • ci(aur): say which key AUR refused, instead of just that it refused one
  • ci(aur): stop overclaiming what the probe proves, bound it, pin the key
  • fix(hud): give click-through a way out that Windows cannot revoke
  • test(hud): make the click-through negative case able to fail
  • docs(agents): the HUD lift is a cursor poll now, not a WH_MOUSE_LL hook
  • docs(agents): the poll keys off the cursor RELATIVE to the window

Full Changelog: v1.9.5...v1.9.6-rc.1