The cursor telemetry snapshot (setRecordingState(false)) was not awaited,
creating a race with muxNativeWindowsRecording which calls finalizeStoredVideo.
If the mux IPC arrived first, pendingCursorSamples was still empty and no
.cursor.json was written — causing the cursor overlay to not render.
- Add CGPreflightScreenCaptureAccess pre-check in Swift helper
- Add microphone TCC pre-flight when mic capture is requested
- Warm up TCC via desktopCapturer.getSources before spawning helper
- Request mic access from Electron before helper spawn
- Remove unreliable systemPreferences.getMediaAccessStatus pre-checks
- Add camera entitlements to plist files for webcam support
- Guard getScreen() calls behind app.isReady()
- Make tray icons lazy to avoid early screen access
- Suppress duplicate permission error alerts in renderer
Enumerate cameras and microphones before requesting media permissions, only opening a stream once when labels need to be unlocked. Stop rerunning enumeration when the selected device changes so launch controls no longer churn hardware access on routine UI interaction.
- language support
- webcame pause/resume sync
- native recording pause
- cancel (clears chunks and stops both recoders and webcame discarded on native cancel
- full lifecycle with webcame - pause - resume - stop keeps webcame in sync throughout
with flex layout that reserves space above the bar for menu cards
- Increase HUD window size to 620x520 for menu card headroom
- Replace mic on/off toggle with mic selector card showing all available
microphones with live audio level meters per device
- Remove old separate mic controls panel
- Increase bar size with larger buttons, padding, and separators
- Fix TS null safety in stopRecording MediaRecorder accessfix
- Fix stopRecording to handle MediaRecorder 'paused' state by resuming
before stopping, ensuring final data chunk is flushed
- Guard pauseRecording as no-op for native recordings (macOS SCK /
Windows WGC) that lack pause IPC support
- Add 14 unit tests for pause/stop state machine
- Add pause, resume, and cancel recording controls with elapsed timer
- Move folder, language, and system audio into three-dots overflow menu with source highlight
wave
- Add countdownInProgress flag in IPC handler to reject concurrent starts
- Add countdownActive state in renderer to block re-entry
- Disable Record button while countdown is active
- 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.