Skip to content

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
  • fix(editor): keep the top bar usable when the window gets narrow
  • fix(build): ship the ffmpeg CLI in the macOS .app so transcription works without a system ffmpeg
  • fix(build): address review comments and format before-pack.cjs
  • fix(build): harden macOS ffmpeg dylib staging
  • chore: name @Beetix code owner for Linux/Wayland capture
  • 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
  • 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
  • fix(macos): accept 8-bit integer PCM microphone input
  • chore: bump nix package to v1.12.2
  • chore: name @My-Denia code owner for Windows capture
  • fix(export): wait for GIF cancel to finish native cleanup
  • fix(export): surface GIF cancel request failures
  • fix(capture-linux): latch capture-started so an early first frame is not lost
  • fix(capture-linux): keep the liveness check ahead of the capture latch
  • test(capture-linux): cover the undeferred, repeated and post-error capture waits
  • test(capture-linux): state what each wait case pins
  • feat(auto-zoom): place suggestions on recorded clicks
  • feat(stt): add cross-platform Silero VAD pre-pass via whisper.cpp
  • fix(stt): address CodeRabbit review feedback on Silero VAD pre-pass
  • fix(stt): filter singleton invalid VAD intervals and missing end segments
  • perf(build): reduce package size and optimize V8 heap memory footprint
  • fix: update mediapipe notice path and clarify renderer v8 flag scope
  • fix(packaging): restore Windows ffmpeg-shared.exe and address review findings
  • test(i18n): reject unsupported extra locale tags in packaging config
  • refactor(i18n): consolidate packaging locale mapping into declarative table
  • fix(packaging): keep cs and de Chromium locales when pruning
  • feat(macos): gather every permission in a first-run permissions window
  • fix(macos): bring the permissions window back after Quit & Reopen
  • fix(macos): say which button the 'bypass the private window picker' alert needs
  • fix(macos): stop HUD dialogs painting a grey rectangle over the desktop
  • feat(macos-capture): record from Apple's system picker in a helper session
  • feat(macos): pick sources in Apple's system picker on macOS 15.2+
  • fix(macos): hide the HUD while Apple's picker is up
  • fix(macos-capture): never finish a writer that never started
  • fix(gif): accumulate fractional frame delays so GIF playback matches its fps
  • fix(shortcuts): show ⌘ for fixed undo/redo rows on macOS
  • docs(inspector): stop listing the retired frame-stepping hint as rewired
  • chore: normalize electron/native/README.md to LF
  • 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
  • docs: e2e results for v1.13.0-rc.4 (macOS)
  • docs: e2e results for v1.13.0-rc.6 (macOS)
  • chore: bump nix package to v1.13.0
  • ci(aur): verify sources the way a user's makepkg resolves them
  • ci(aur): read source names from the regenerated .SRCINFO
  • ci(aur): count a ${pkgver//./_} source name as versioned
  • ci(aur): match the version as a whole segment of the source name
  • fix: restore public/ copies of demo.gif and preview images for hotlinks
  • ci(winget): name the missing token scope before komac's CreateRef fails
  • ci(winget): report a failed workflows read as a named error, read-only GITHUB_TOKEN
  • feat(export): ask for a star once, after the second export
  • fix(export): ask on the first export, and only within its own session
  • ci: put one star line at the head of stable release notes
  • test(ci): pin that gh actually consumes NOTES_ARGS
  • ci: unpin the macOS compositor runner from macos-14
  • test(ci): close two holes in the macOS runner guard
  • feat(website): offer a star once a download has started
  • fix(website): use GitHub's mark for the navbar GitHub link
  • fix(website): no star prompt when nothing was downloaded
  • fix(transcript): load projects whose transcript ends before it starts
  • fix(zoom): pace transitions by zoom level and keep them at screen speed
  • fix(zoom): sample the previous frame one screen frame back
  • docs(e2e): state the 1x/4x match with its measured tolerance
  • docs(e2e): drop the duplicated scale difference
  • diag(windows): add opt-in audio device-state watcher for #724
  • fix(windows): keep the render endpoint alive during recording
  • fix(windows): address CodeRabbit findings on the audio-device watcher
  • fix(windows): write a real tone instead of silence for the keep-alive
  • fix(windows): move the keep-alive tone above audible range
  • fix(windows): address CodeRabbit findings on the keep-alive tone
  • fix(windows): address review findings on the keep-alive and device watcher
  • fix(windows): finish #726 review cleanup
  • feat(ui): soften the interface without changing its layout
  • test(i18n): fail i18n:check on keys the code asks for but en lacks
  • test(i18n): check each key against its own translator's namespace
  • docs(agents): name the source picker's Select button
  • feat(compositor): continuous corners on every rounded shape
  • test(compositor): measure the corner slope on the contour itself
  • fix(preview): no background fringe around the card's rounded corners
  • fix(preview): mark the canvas painted only once pixels are on it
  • fix(cli): lay the screen out at its probed size
  • feat(format): add Auto, a frame shaped around the composition
  • feat(format): make Auto the default for new projects
  • docs(website): describe the Auto format
  • docs(e2e): log the Auto format pass
  • docs(website): scope the Auto default to new projects
  • docs(roadmap): review the roadmap at v1.13.0
  • docs: AGENTS.md no longer describes Pixi.js as the renderer
  • feat(inspector): pick fixed choices from rows of buttons
  • feat(inspector): free rows, and five speed presets
  • feat(cursor): drop the keep-inside-frame option
  • feat(camera): frame the webcam by dragging, not with two pan sliders
  • fix(camera): show the framing picture only in its own shape
  • feat(editor): a shorter top bar, and a first run that offers to record
  • feat(timeline): a softer clip card with a smooth waveform
  • feat(timeline): a navigator that shows what it navigates
  • fix(timeline): measure the clip timecode as its tabular digits render
  • feat(editor): camera roundness slider and anchored positions
  • fix(website): lift the smooth waveform into the recreation data
  • feat(inspector): pick the zoom level from a row of buttons
  • fix(inspector): route click-impact through the zoom-pane write chain
  • fix(inspector): keep queued zoom writes from crossing replacements or a stalled save
  • fix(inspector): scope unknown-save blocking to the save's own epoch
  • feat(inspector): four zoom presets and a free zoom field
  • feat(inspector): the background picker back inline, Screen Studio's way
  • feat(camera): zoom the webcam by its frame's corners
  • feat(editor): grab handles and a ratio row in Edit clip
  • feat(editor): a wider inspector when the stage has room
  • fix(windows): let the top bar's rule run under the window controls
  • fix(windows): square hover areas for the window controls
  • fix(edit-clip): move and resize the crop from the keyboard
  • fix(compositor): mask the screen with its slot in block layouts
  • feat(format): offer Auto only for a timeline of one composition
  • fix(format): leave Auto out of mixed timelines and keep its frame still
  • feat(cursor): option to always render the arrow cursor
  • feat(editor): make wallpaper 11 the default and first in the picker
  • fix(timeline): keep queued zoom levels through span and focus saves
  • fix(timeline): put a focus back only over a write of its own epoch
  • fix(timeline): roll a focus drag back when its commit fails late
  • fix(timeline): let a zoom write that saves a live drag undo it too
  • fix: fill rounded background color swatch
  • fix(cli): carry the recording frame through v2 project exports
  • fix(compositor): let the screen's edges follow the motion blur
  • fix(compositor): keep device frames out of the screen edge trail
  • fix(compositor): motion-blur the framed screen as one object
  • fix(compositor): read the off-screen footage only inside the rounded aperture
  • docs(testing): log the phone-frame motion blur export check
  • perf(compositor): branch before the mode-18 footage fallback in WGSL
  • fix(cli): export projects saved by the editor
  • fix(cli): confine a loaded document's media grant to the trusted dirs
  • refactor(cursor): drop the always-true click effects gate
  • fix(ai-edition): let chat message text be selected and copied
  • fix(ai-edition): copy chat messages via main-process clipboard on Windows
  • ci(nix): retain Xvfb diagnostics for capture probes
  • ci(nix): keep the run_cli mapping printable on the errexit path
  • perf(compositor): compile the Windows shaders at build time
  • fix(compositor): draw the webcam on Linux during a Full Camera hold
  • fix(cursor): stop shipping the sweezy-cursors.com packs
  • fix(website): stop publishing the sweezy-cursors.com packs
  • fix(website): drop the cursor theme label the recreation no longer draws
  • feat(cursor): add five original cursor themes
  • feat(cursor): ship raster themes and 3D modeling direction
  • docs(cursor): distinguish 2D outlines from 3D materials
  • feat(cursor): sculpt original cursor themes in 3D
  • test(cursor): align model coverage with selectable themes
  • fix(editor): one bounds table in the model, and a reset on every slider
  • fix(editor): keep typed text sizes on unmount; reset only from the button
  • test(editor): hold the speed and preset fixtures to the new bounds
  • feat(audio): a soft limiter and -16 LUFS loudness at export
  • fix(audio): measure the recording's loudness again when Retry reloads it
  • feat(audio): music beds start at -18 dB with 1 s fades and duck under the voice
  • fix(export): pass the bitrate to the encoder and dither the GIF
  • feat(export): named destinations, detailed settings under Advanced
  • fix(export): own disclosure class, honest destination docs
  • fix(ai-edition): silence cuts keep breath next to kept speech
  • feat(editor): new projects start from your look, and a preset never changes the format
  • fix(compositor): size cursor, shadow and corners by the screen, not the frame or the source
  • fix(compositor): give text annotations a symmetric 300 ms exit
  • fix(compositor): keep pulse at its full duration in short regions
  • fix(cli): take auto zoom and caption bounds from the editor's own paths
  • fix(hud): say what the system cursor turns off
  • fix(cli): measure the caption inset to the plate, not the region
  • fix(cli): place captions in the editor's bottom-anchored caption box
  • fix(hud): no editable-cursor promise when capture falls back to the browser
  • fix(zoom): grey out zoom levels that would blur the recording, and bound the render
  • fix(zoom): step over disabled levels by keyboard, and limit a zoom by every clip it spans
  • fix(zoom): point the zoom row at the visible reason its levels are greyed out
  • fix(text): embed the offered fonts so the render matches the picker
  • fix(text): make the shipped fonts win over installed ones of the same name
  • fix(compositor): tilted zooms that never roll and carry motion blur
  • fix(compositor): mask the tilted blur trail, trail from the previous camera
  • fix(compositor): steep roll-free Left and Right, iso folded into Left
  • fix(compositor): render every gradient stop at its offset, not just the ends
  • feat(editor): curated backgrounds first, one-colour gradient behind Custom
  • fix(compositor): keep Linux gradients opaque when the first stop is at 0
  • fix(compositor): premultiply translucent gradient stops
  • fix(editor): keep a hex draft in the Custom background rows
  • feat(recording): keep notifications out on macOS, opt-in Hide desktop icons
  • fix(capture): build the macOS helper again, and own the cover's promise in its thread
  • feat(editor): text that cannot be made unreadable
  • fix(captions): offer turning captions on only when the transcript has speech
  • fix(editor): defaults that look good without touching anything
  • feat(editor): name the cursor size, click bounce and shadow instead of numbering them
  • fix(compositor): shrink the webcam toward its anchor and give auto-follow a dead zone
  • fix(compositor): cache the follow view per region, settle past the last sample, time the ease-in on screen
  • fix(compositor): bound auto-follow cache to region
  • feat(format): fill a fixed format with a window that follows the cursor
  • fix: stabilize audit integration checks
  • fix(editor): resolve contrast helper in main build
  • fix(editor): keep slider header height stable when the reset button appears
  • refactor(editor): drop explanatory hints, hide inoperative settings
  • style(timeline): candy colours for clips, pills and the pan/zoom bar
  • style(timeline): candy borders in their own colour, not darkened
  • style(timeline): fainter candy glow on the light theme
  • style(timeline): no border and no gloss line on the candy shapes
  • style(timeline): tiny-pill handles in the lane colour
  • fix(captions): open caption settings in place of the transcript pane
  • feat(camera): show the camera background on the crop thumbnail
  • feat(effects): roundness under padding, hidden and reset at zero padding
  • feat(captions): pick the caption position from the camera-style anchor grid
  • refactor(editor): hide zoom levels that would blur instead of explaining why
  • fix(editor): drop the zoom level row when no preset is within reach
  • fix(timeline): make the clip edit button hover stand out from the clip
  • fix(cursor): preview each theme by its main arrow only, centered
  • refactor(editor): remove the previous/next clip transport buttons
  • fix(zoom): put the custom level on the preset row, drop the blur hint
  • feat(inspector): pick the right panel's fixed choices in one click
  • feat(cursor): a size slider up to four times the default
  • fix(compositor): Left back to the v1.13.0 iso, Right its mirror
  • feat(cursor): sculpt the original themes' 3D arrow and hand
  • fix(compositor): motion-blur the framed screen as one object under a 3D camera
  • fix(effects): steady padding drag, roundness kept through zero padding
  • refactor(effects): remove the Fit button
  • fix(preview): keep the last frame up while an Auto format reshapes the canvas
  • fix(preview): drop a frame whose bitmap lands after a newer one's
  • fix(compositor): resize the preview in place instead of rebuilding the compositor
  • fix(compositor): record the cursor file when playback auto-advances to the next clip
  • feat(annotations): place annotations anywhere on the frame, boxes that fit the text
  • fix(annotations): keep a refitted annotation on the frame, convert only through its own clip
  • fix(compositor): make the frame the container in block layouts
  • test(compositor): probe the frame body itself in the motion-blur trail test
  • fix(effects): hold the Roundness row through a drag up from 0 too
  • fix(slider): end the drag on a cancelled touch too
  • style(timeline): the clip back in the brand's green, zooms in blue
  • style(edit-clip): draw the kept range as the clip's candy card
  • refactor(editor): remove the transport seek bar
  • chore(website): regenerate recreation data for the new cursor hotspots
  • feat(cursor): move click impact to the cursor settings, for every camera
  • fix(migrate): lift a v2 zoom's click impact into the cursor setting
  • fix(background): make the gradient motions visible at a glance
  • feat(zoom): give the 3D Orbit camera the zoom's focus mode
  • fix(zoom): offer 3D Orbit with the cursor hidden when the focus is manual
  • fix(camera): shrink half as much in a zoom, size from 15 to 50%
  • fix(compositor): keep the cursor's size at the zoom focus under Left and Right
  • feat(cursor): pick the cursor types drawn as recorded, 3D under the styles
  • fix(cursor): arrow and hand by default, bigger centred cursor previews
  • fix(cursor): read a cursor file again after a failed read
  • feat(background): animate image wallpapers with the same three motions
  • style(timeline): centre the transport in the header row
  • fix(layout): measure the padding from the device frame's outer edge
  • docs(compositor): drop the retired undistort pipeline from the comments
  • docs(compositor): name where OUT_W and OUT_H still place things
  • fix(zoom): let 3D Orbit frame the screen's corners like the other cameras
  • test(compositor): pin the orbit's corner framing on both axes, both ways
  • fix(cursor): scale the 3D cursor's click press to the named bounce levels
  • fix(cursor): put click impact right under click bounce
  • fix(roundness): only square the corners at 0% padding without a frame
  • feat(background): blur the wallpaper by an amount instead of a switch
  • fix(background): carry an old blur switch through reverse migration and look copy
  • fix(cursor): let the bounce level drive the 3D cursor's whole click gesture
  • fix(cursor): no click aim at None, fail the levels video on an ffmpeg error
  • fix(zoom): frame the zoom window like a flat zoom under 3D Orbit
  • test(compositor): follow bg_blur's switch to an amount in the render tests
  • fix(cursor): dive the 3D cursor onto the click, in depth, over ~20 frames
  • test(compositor): measure the click ring past the tip the dive moves
  • docs(website): answer the FAQ's Homebrew question with the official tap
  • fix(export): size a GIF from the source, not the hidden MP4 tier
  • fix(homebrew): require macOS 13 in the cask, like the app
  • feat(macos): record system audio from a Core Audio tap with Apple's picker
  • fix(macos): release a half-built system-audio tap, and say when it failed
  • feat(rec): let auto-zoom after recording be turned off again
  • fix(rec): bound the prefs read, explain the disabled row, reconcile a failed write
  • fix(rec): hide the auto-zoom row under the system cursor
  • fix(rec): let a newer prefs snapshot win over the failed-write re-read
  • fix(rec): leave the auto-zoom hand-off alone across a project switch
  • fix(i18n): only check calls to translators, not every name starting with t
  • fix(recording): offer no microphone on macOS 13 and 14
  • fix: ignore hidden cursor telemetry in auto-zoom
  • fix: honor recorded cursor visibility in compositor
  • fix: preserve cursor visibility at clip offsets
  • fix(compositor): hide every cursor layer while hidden, not a visible click's impact
  • fix(auto-zoom): judge a press without its own mouse-up by the grace window
  • test(compositor): check the tilted cursor model follows the plane's perspective
  • feat(toasts): give a toast a cross to close it, inside its top end corner
  • fix(toasts): colour the close button from the theme tokens
  • fix(toasts): keep the close button's border off when it is hovered
  • feat(website): redraw the scroll walkthrough in the editor's new direction
  • docs(blog): making of v2, a demo is never ugly
  • docs(design): align the design system with the editor's new direction
  • docs(website): describe the current editor UI, in every locale
  • docs(website): current speed limits and the 3D camera in the demo guide and auto zoom page
  • docs: say auto zooms are placed after every take
  • docs: restore the French pages' question marks and semicolons
  • fix(compositor): drop unsolvable trail taps and keep depth of field off canvas
  • style(theme): set the light shell apart with a greyer canvas and visible rules
  • docs: bring the computer-use e2e pass up to date with v2
  • docs(build): drop the note that says the macOS job is disabled
  • docs(website): describe v2's macOS permissions on the install page
  • fix(auto-zoom): keep the video's first and last seconds wide
  • fix(auto-zoom): drop the pointer's rest on Stop along with the Stop click
  • feat(auto-zoom): plan zooms as shots from recorded clicks
  • docs(website): automatic zooms follow the recorded clicks, in every locale
  • docs(website): say zooms land on clicks everywhere a page names them
  • fix(compositor): keep the camera's corners until Full Camera reaches the frame
  • docs(website): German docs take the app's German labels
  • docs(website): align macOS permission steps with the install page
  • feat(cursor): raise the default cursor size by 30%
  • fix(editor): make the output format part of a style preset again
  • fix(editor): keep the preset mark on a visible row during a rename
  • feat(export): one settings panel in the export dialog
  • fix(export): name the GIF loop toggle for screen readers
  • fix(camera): shrink to 70% in a zoom, whatever its depth
  • fix(camera): no shrink under a zoom region that does not zoom
  • fix: skip empty speed regions in render plan
  • feat(cursor): place the default cursor size at the target mark
  • fix: handle macOS capture permission failures
  • docs: stop take before retrying macOS permission check
  • fix: add settings shortcut to cursor permission warning
  • feat(recording): capture the webcam at its real resolution and frame rate
  • fix(recording): ignore a camera quality change made during a take
  • fix(recording): do not read studio-range black as a visible webcam frame
  • fix(recording): size the browser webcam sidecar from its own camera stream
  • fix(recording): copy padded NV12 rows a row at a time
  • revert: drop the NV12 2-D copy path, which fixed a bug that cannot happen
  • fix(recording): report the frame rate the DirectShow graph settled on
  • test(recording): update camera quality fixtures
  • feat(export): always export H.264 and drop the codec picker
  • docs: the export dialog no longer offers a codec choice
  • docs(website): drop H.265 from the copy, in every locale
  • docs: describe the export checklist flow as one settings panel
  • feat(cursor): rebuild the Star Sprout 3D models after its reference render
  • feat(cursor): rebuild Studio Ink and Pop Coral 3D models after the new sheet
  • feat(cursor): recut the Prism Glow 3D hand as a gem after the new sheet
  • feat(cursor): rebuild the Pixel Candy models and the Prism Glow arrow after the sheet
  • feat(cursor): give Prism Glow the navy outline of its drawing, and Pop Coral's hand its coral layer
  • feat(cursor): anti-alias the inner edges of the 3D cursors
  • feat(cursor): extrude Prism Glow's drawing instead of modelling it
  • feat(cursor): make Pop Coral cut paper with flat tops
  • feat(cursor): redraw Pixel Candy as simple pixel art built from voxels
  • docs(cursor): say Prism Glow is extruded, not sculpted
  • docs(testing): cover webcam capture quality in the manual e2e checklist
  • docs(testing): name camera-mode commands per platform, split the 24 fps check by backend
  • docs(testing): give the webm frame count its own ffprobe command
  • fix(editor): hide the cursor settings when a take has no cursor data
  • fix(editor): read the cursor facet's availability off the current recordings
  • fix(compositor): copy the decoder surface before sampling it
  • fix(compositor): do not reuse a decoder copy across a resized source
  • fix(recording): name the last Apple picker pick after a relaunch
  • feat(cursor): model Prism Glow as a mesh traced on its 2D art
  • feat(compositor): ray-trace Prism Glow as a glass crystal in 3D
  • fix(compositor): draw the cursor under the camera and the annotations on Linux
  • perf(compositor): group Prism Glow's triangles in bounding boxes
  • fix(compositor): refract the blurred picture, the cursor sharp on top
  • feat(timeline): add a Clear zooms button
  • feat(timeline): widen Clear zooms into Clear timeline
  • feat(timeline): move Clear timeline to the end of the toolbar behind a divider
  • fix(timeline): show Clear timeline from the stored regions, not the drawn pills
  • fix(capture): include menus and popups in Windows window recordings
  • test(capture): add a window-popup check to the WGC helper smoke test
  • docs(capture): state that a window over the recording hides the popup menu
  • docs(capture): cite the measurement behind the overlapped-window note
  • fix(recording): keep the remembered display out of the Record-mode source row
  • fix(annotations): masks and their gimbals follow the footage, arrows get a tight gimbal
  • fix(annotations): let an arrow's box start before the frame
  • fix(editor): let the audio element free-run instead of re-seeking it every frame
  • docs(editor): put the resolveAudioTrackPlayback doc back above its function
  • fix(editor): hold the audio to the picture by rate, and resync it after a seek
  • feat(ui): cap tooltip width, follow text direction, add a shortcut chip
  • feat(hud): rewrite the recording bar tooltips
  • test(i18n): guard tooltip placeholders and length in every locale
  • docs: add the tooltip guidelines and a HUD hover check
  • fix(i18n): correct HUD tooltip wording in ar, de, ja, ko, tr, vi
  • fix(hud): clear the bar with tooltips, and balance their lines
  • feat(editor): show a choice row's tooltip only for icon-only options
  • feat(editor): explain the ambiguous inspector switches with a tooltip
  • fix(editor): reword three tooltips and drop the hints nobody could reach
  • docs: add the inspector hover check to the manual checklist
  • fix(editor): drop the tooltip on the caption font specimens
  • fix(i18n): correct camera preview, roundness, transcript tooltips in ar, cs, de, es, fr, ja, ko, pt-BR, zh
  • refactor: share the editable cursor check and format a fixed shortcut's first binding
  • feat(editor): rewrite the editor tooltips
  • docs: rename the Record mode cursor row and the timeline tooltip labels
  • docs(website): use the app's Editable cursor label in the Record mode translations
  • fix(i18n): align editor tooltip wording with each locale's own terms in ar, cs, de, es, fr, it, ja, ko, ru, tr, vi
  • fix(editor): keep busy buttons hoverable and open Record mode tooltips above the pill
  • fix(i18n): no-break space before punctuation in the French editor tooltips

Full Changelog: v0.0.0-onnxruntime-1.27.1...v2.0.0-rc.1