Skip to content

Releases: getopenscreen/openscreen

v2.0.0-rc.6

v2.0.0-rc.6 Pre-release
Pre-release

Choose a tag to compare

@EtienneLescot EtienneLescot released this 01 Oct 11:14

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

v2.0.0-rc.5 Pre-release
Pre-release

Choose a tag to compare

@EtienneLescot EtienneLescot released this 01 Oct 10:27

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

v2.0.0-rc.4 Pre-release
Pre-release

Choose a tag to compare

@EtienneLescot EtienneLescot released this 01 Oct 08:33

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 1 Pre-release
Pre-release

Choose a tag to compare

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

v2.0.0-rc.3 Pre-release
Pre-release

Choose a tag to compare

@EtienneLescot EtienneLescot released this 30 Sep 23:58

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

v2.0.0-rc.2 Pre-release
Pre-release

Choose a tag to compare

@EtienneLescot EtienneLescot released this 30 Sep 20:30

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

v2.0.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@EtienneLescot EtienneLescot released this 30 Sep 15:19

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

v1.13.0

Choose a tag to compare

@EtienneLescot EtienneLescot released this 24 Sep 12:42

Thanks @heyitsR1 for the macOS permission diagnosis in #302, which led to the HUD dialog fix in this release (#733).

What's Changed

New Contributors

Full Changelog: v1.12.0...v1.13.0

v1.13.0-rc.6

v1.13.0-rc.6 Pre-release
Pre-release

Choose a tag to compare

@EtienneLescot EtienneLescot released this 24 Sep 11:32

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

v1.13.0-rc.5 Pre-release
Pre-release

Choose a tag to compare

@EtienneLescot EtienneLescot released this 24 Sep 11:10

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