- Use getRecordingsDir() instead of hardcoded RECORDINGS_DIR
- Fix stop order: video first, then audio save, then mux via new
mux-wgc-recording IPC
- Explicitly stop MediaStream tracks for audio resource cleanup
- Add native WASAPI audio capture (system loopback + mic) in C++ process
for sample-accurate sync; browser audio APIs crash with WGC
- Add window capture support (CreateForWindow) with window: source prefix
- Kill WGC capture process on app before-quit
- Add even-dimension guard in MFEncoder
- Fix ffmpeg asar path backslash handling on Windows
- Remove dead browser-side WGC audio code (storeWgcAudio IPC,
ScriptProcessorNode refs, stopWgcAudioCapture)
Uses Windows.Graphics.Capture to record the screen without the OS cursor
or the yellow capture border. Falls back to Electron capture on older Windows
or when the helper exe isn't available.
- Add workflow to download DMG assets, compute checksums, and update recordly cask in tap repo
- Open PR automatically in tap repository on release publish or manual dispatch
- Document Homebrew cask install and maintainer setup in README
- Move recordings path control into HUD menu bar and refine separators/layout
- Show underlined Path: /folder/ label next to Record controls
- Add native folder picker to change recordings location
- Persist selected recordings directory and route recording/project defaults through it
Limit optimizeDeps scanning to index.html and exclude icon packages that were
producing stale/missing prebundle chunks in the transparent HUD renderer.
Implements Cmd/Ctrl+Z and Cmd/Ctrl+Shift+Z (plus Ctrl+Y on Windows/Linux)
using local history snapshots in VideoEditor only. This avoids importing
upstream UI/layout/button changes while preserving the same undo/redo idea.
uiohook-napi ships a native .node binary that cannot be loaded from
inside an .asar archive. Without asarUnpack, nodeRequire('uiohook-napi')
fails silently in packaged builds, the hook never starts, and cursor
telemetry stays empty on Windows.
Changes:
- Add node_modules/uiohook-napi/** to asarUnpack so the native binary
is extracted to app.asar.unpacked/ where require() can reach it
- Extend loadUiohookModule() fallback chain to handle variant export
shapes across platform builds (uIOhook / uiohook / Uiohook / default)
- Add normalizeHookMouseButton() and getHookMouseButton() helpers for
robust cross-platform button code handling (codes 38/39 variants)
- Add diagnostic log to startInteractionCapture() to surface hook load
state in future debug sessions