Repository navigation
Releases: getopenscreen/openscreen
Release list
v2.0.0-rc.6
Changes since v2.0.0-rc.5
- fix(release): read every helper build when staging, and say why one is rejected
- fix(release): list helper builds unfiltered into a file, and fail on a broken listing
Full Changelog: v2.0.0-rc.5...v2.0.0-rc.6
v2.0.0-rc.5
Changes since v2.0.0-rc.4
- fix(hud): report the stack rect from the allocation, not a measurement
Full Changelog: v2.0.0-rc.4...v2.0.0-rc.5
v2.0.0-rc.4
Changes since v2.0.0-rc.3
- feat(stt): align words with character-level DTW
- docs(stt): match the char-dtw comment to the measured numbers
- fix(stt): fail configure if the patched whisper.cpp is not compiled; read the harness port from the helper env
- feat(stt): re-time whisper's words on a CTC forced aligner
- fix(stt): never hold a chunk on the word aligner's download
- feat(stt): run the word aligner on the GPU only, measured against phase 2
- docs(stt): correct the French take reading, and record the silent-letter trial
- fix(stt-eval): say so when real-check has no word to compare
Full Changelog: v2.0.0-rc.3...v2.0.0-rc.4
CTC word aligners 1
CTC word aligners for transcript timings (PR #954, issue #948). Not an app release: the desktop app downloads these on demand, on GPU machines only, and checks their SHA-256.
| File | Language | Source model | License |
|---|---|---|---|
w2v-en-base-q8_0.gguf (109 MB) |
English | facebook/wav2vec2-base-960h | Apache-2.0 |
w2v-fr-large-q8_0.gguf (348 MB) |
French | jonatasgrosman/wav2vec2-large-xlsr-53-french | Apache-2.0 |
Converted to GGUF (Q8_0) with scripts/convert-wav2vec2-gguf.mjs. Redistributed under the Apache License 2.0 of the original models; all credit to their authors.
v2.0.0-rc.3
Changes since v2.0.0-rc.2
- fix(stt): keep transcript words on the audio's clock when the VAD cuts silence
- fix(stt): end each phrase on its speech offset, and look past its kept tail
- fix(stt): tell which phrase a word belongs to by whisper's own start
- feat: expose the AI agent's tools over a local MCP server
- fix(mcp): wrap the connect commands instead of widening the settings dialog
- fix(mcp): make MCP writes a separate opt-in and validate renderer input
- build(nix): update npmDepsHash for the MCP SDK dependency
- refactor(stt): drop the unreachable /vad endpoint and stt:vad IPC
- fix(release): stage the whisper helper built from the release's own sources
- fix(editor): keep the preview's boosted audio from clipping at the speakers
- fix(macos): size the video bitrate from the actual capture, not the 4K ceiling
- fix(linux): convert and tag the PipeWire helper's video as BT.709
- fix(windows): stop the audio mixer from punching holes in a continuous voice
- fix(windows): keep the mixer's cushion across an instant resume and anchor its clock exactly
- docs: describe the mixer's resume handshake and clock anchoring
- fix(macos): pin the H.264 keyframe interval to 1 s and count dropped video frames
- perf(windows): raise the capture helpers' timer resolution and use MMCSS
- test(windows): retry the timer check so a busy host cannot fail the build
- fix: keep the display awake while a recording runs
- fix: report a failed browser recording as stopped to the main process
- fix(linux): keep the capture clock ticking while cursor messages flow
- perf(windows): skip the webcam frame copy when its sequence has not changed
- fix(windows): end the audio track where the video ends
- fix(windows): encode H.264 High with BT.709 colour the compositor expects
- test(windows): widen the temp path through the ANSI code page
- build(windows): link avrt into the encoder colour test, which compiles the MMCSS mixer
- fix(stt): start each word at the end of the token before it
- fix(linux): write fragmented MP4 so a killed helper keeps its take
- test(linux): give the killed-muxer test a per-process file and remove it
- perf(windows): repeat the last frame instead of reading back an unchanged screen
- test(windows): widen the repeat tests' temp paths through the ANSI code page
- fix(macos): capture and tag the screen track as BT.709 studio range
Full Changelog: v2.0.0-rc.2...v2.0.0-rc.3
v2.0.0-rc.2
Changes since v2.0.0-rc.1
- fix(stt): keep transcript words on the audio's clock when the VAD cuts silence
- fix(stt): end each phrase on its speech offset, and look past its kept tail
- fix(stt): tell which phrase a word belongs to by whisper's own start
Full Changelog: v2.0.0-rc.1...v2.0.0-rc.2
v2.0.0-rc.1
Changes since v0.0.0-onnxruntime-1.27.1
- fix(wgc): pull-based frame delivery to stop CopyResource wedging the stop path
- fix(wgc): address CodeRabbit review on the pull-based frame delivery PR
- fix(wgc): register onFrameArrived's in-flight guard before touching the frame pool
- fix(wgc): return before touching the frame pool when the legacy callback is null
- test(wgc): run the #460 stall scenario on the path that still has a callback
- fix(macos): serve ONNX Runtime from a build that respects the 13.0 floor
- docs(perf): settle the macOS export's 4 s cold start, and kill the asar lever
- docs(perf): keep the cold-start conclusions at the evidence level
- docs(perf): stop the cold-start section excluding more than it measured
- fix(ci): read the runner image instead of interpolating an empty string
- feat(editor): add audio-track data model for external audio import
- feat(editor): import external audio files as audio-kind assets
- feat(editor): add timeline state ops for imported audio tracks
- feat(editor): import audio onto the timeline with a lane and inspector
- feat(editor): drag and trim audio tracks on the timeline lane
- feat(editor): play imported audio tracks in the preview
- feat(export): mix imported audio tracks into the exported MP4
- feat(editor): fold audio import into the single "Import media" button
- fix(editor): smooth audio-track preview and stop audio becoming a clip
- feat(editor): add audio from the timeline toolbar, not the media tab
- refine(editor): tidy the audio toolbar button and inspector pane
- refine(editor): reposition Add audio and make Delete track span
- refine(editor): match the audio-track pane to the global Audio pane
- refactor(editor): drop the superseded audio-track move/resize ops
- refactor(editor): remove the mute feature from imported audio tracks
- docs: list audioTracks[] in the document-model top-level shape
- fix(editor): address CodeRabbit review on the audio-import PR (#502)
- feat(editor): honor imported-track boost in the preview (CodeRabbit #5)
- feat(editor): always show the audio lane + an "Add audio" shortcut (M)
- fix(editor): sync imported audio tracks to trims in the export (issue #350)
- fix(editor): address CodeRabbit follow-up on the audio-track PR (#502)
- docs(editor): correct the timelineStartSec comments — the head is raw, not output
- fix(editor): play imported audio contiguously in preview to match the export
- fix(ipc): accept audio paths in the generic media reads so imported waveforms survive a reopen
- fix(editor): three more preview↔export audio seam bugs
- fix(editor): four imported-audio state leaks
- refactor(editor): three imported-audio cleanups
- feat(audio): clip-anchor timeline audio tracks
- feat(audio): fades, loop and mute on timeline audio tracks
- feat(audio): record voiceovers against the timeline
- fix(audio): unblock voiceover recording and restore the left-edge trim
- fix(audio): make the loop toggle reachable, and give voiceover a button
- test(timeline): pin the voiceover toolbar button
- feat(audio): make loop fill by itself, and mark where it repeats
- feat(timeline): one audio button with a named menu, and real tooltips
- fix(ui): forward refs through the Popover and Tooltip wrappers
- feat(timeline): stack overlapping audio tracks on their own rows
- fix(audio): silence the timeline's own tracks while recording a take
- feat(audio): dock the voiceover recorder instead of covering the video
- fix(audio): stop tracks inside a trimmed stretch from playing
- fix(audio): keep tracks at 1x and in place under speed regions
- perf(transcription): extract audio natively, off the UI thread
- fix(timeline): let the keyboard activate a lane pill, not just the pointer
- fix(transcription): stop the background pass transcribing music
- feat(ai): let the agent see and place audio tracks
- feat(timeline): show what an audio pill crops, and let it slip
- fix(timeline): say that Alt slips, instead of leaving it to be discovered
- fix(timeline): put the slip gesture where it is read without hovering
- feat(editor): fold captions into the transcript tab
- feat(editor): read the transcript from the voiceover, not just the film
- feat(document): add immutable transcript word edits
- fix(document): validate referenced word ownership and join CJK independently of language tag
- fix(document): read CJK segment edges by code point for non-BMP Han
- feat(document): make a corrected word survive its re-transcription
- feat(editor): correct a word in the transcript without cutting the film
- feat(editor): add words to the transcript that nobody said
- feat(editor): an added word buys itself time, and the film holds its frame
- revert(editor): an added word no longer splits the clip it lands in
- feat(timeline): mark where words were added, without storing anything new
- feat(ai): let the chat correct a word it heard wrong
- feat(document): store the pause an added word needs, as a region
- feat(editor): the readers count the pause an added word bought
- feat(timeline): one answer to whether a raw moment is in the film
- feat(editor): decide a word by the ruler, so both lanes agree
- feat(audio): a cut under a voiceover takes the words, not the take's tail
- feat(editor): a transcript cut names a moment, not an owner
- feat(captions): the lane is a document fact, and the captions follow it
- feat(audio): one voiceover row, one music row, through a single door
- fix(document): sweep the trims that struck words through without cutting
- feat(timeline): tell the two insertion lanes apart, and pin the inert one
- feat(timeline): one walk over a take, losing time to a cut and gaining it to a word
- fix(timeline): the projection counts the pauses, so audio stops landing early
- fix(export): a pause reaches the compositor, instead of exporting as nothing
- feat(audio): the export and the transcript read the take's walk
- feat(preview): the voice parks with the walk, and every take plays once
- feat(editor): add a word on either lane, and draw the time it buys
- feat(editor): cut the notch into the take, inside one outline
- fix(timeline): a scrub names a moment on the ruler, not on the tape
- fix(preview): the picture spends the pause a word bought
- fix(preview): an insertion is media that plays, not a pause
- fix(preview): park the picture on the insertion, don't re-seek it
- fix(timeline): the scrub release carries its ruler second too
- refactor(timeline): one clock — an insertion is media, so the clip is longer
- fix(captions): place a cue past an insertion on the source it names
- fix(document): reconcile clip geometry with the insertions on every load
- fix(captions): an added word is subtitled over the media it inserted
- fix(timeline): the insertions are a required argument, and the compiler found the rest
- fix(transcript): the pane follows the voice across an insertion, and highlights the added word
- fix(captions): an added word and the word after it share a second — order them on the ruler
- refactor(timeline): delete the duplicate answer, route the rest through the one mapping
- revert(insertions): remove the added-word machinery, keep the gesture
- feat(media): generate the media an added word is spoken over
- feat(timeline): the insertion layer — a clip reads a list of parts, not a file
- feat(timeline): the one funnel reads parts, so an extension is a segment like any other
- feat(document): the clip grows with the word, at the one funnel every write goes through
- feat(media): an extension resolves to a file, and the save generates it
- feat(preview): the DOM preview plays an extension, because it is handed a clip
- fix(transcript): the conversion source second -> ruler second lives in one place
- fix(insertions): an extension is a clip, because that is the only shape the app maps
- feat(insertions): an insertion is a clip, stored as one
- refactor(timeline): the seam a clip leaves closes only under generated media
- refactor(timeline): two clips whose media continues across the join are one clip
- fix(insertions): editing an insertion's text resizes the clip it plays
- test(insertions): shortening an insertion is a second claim, pinned separately
- feat(insertions): an insertion in a voice-over is a track fragment
- refactor(voiceover): the take walk is a subtraction again
- fix(insertions): a release build cannot retype an inserted word either
- docs(insertions): the gate is the runtime refusal, not the dead-code elimination
- refactor(insertions): one flag for the dev gate, read where the gesture happens
- fix(ai): the chat cannot rewrite a word nobody said
- fix: the six CodeRabbit findings that were still standing and cheap
- fix: the four CodeRabbit findings that were left, including the read capability
- fix(rebase): restore what replaying 112 commits dropped
- docs(e2e): checks for imported audio, voice-over and word insertion
- build: pin electron exactly, so packaging works without a second declaration
- fix(insertions): the deleted word stayed in the transcript
- test(insertions): control tests that control something
- fix(i18n): simplify transcript panel title across all locales
- fix(website): derive trimId from clipWord.trimIds in gen-recreation
- fix(editor): reset all parameters on audio track pane reset
- test(editor): verify audio track live drafts are cleared on reset
- fix(editor): prevent audio track slider jump on release
- fix(editor): polish UI layout, slider gauge, icons and captions panel
- fix(timeline): expand initial timeline height and dynamically adjust for stacked audio lanes
- test(timeline): cover overlapping same-kind audio tracks
- fix(editor): keep the camera preset labels inside their button
- fix(compositor): high-quality motion blur and gaussian webcam blur
- fix(compositor): bound cursor motion blur trail_dt to at most 1 frame
- fix(compositor): show the webcam background effects on click, not on the next scrub
- fix(compositor): open the settle window after a paused seek too
- f...
v1.13.0
Thanks @heyitsR1 for the macOS permission diagnosis in #302, which led to the HUD dialog fix in this release (#733).
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.13.0
v1.13.0-rc.6
Changes since v1.13.0-rc.5
- fix(gif): accumulate fractional frame delays so GIF playback matches its fps
- fix(shortcuts): show ⌘ for fixed undo/redo rows on macOS
- fix(dialogs): attach file panels to the calling window so the export save panel cannot get lost
- fix(dialogs): own the project panels opened through the native bridge
- fix: headless export honors editor cursor tuning keys and cropRegion from v2 projects
- fix(migrate): validate and clamp v2 cropRegion before applying it
- Allow imported audio below -12 dB
Full Changelog: v1.13.0-rc.5...v1.13.0-rc.6
v1.13.0-rc.5
Changes since v1.13.0-rc.4
- fix(macos): stop HUD dialogs painting a grey rectangle over the desktop
Full Changelog: v1.13.0-rc.4...v1.13.0-rc.5