99 Commits
Author SHA1 Message Date
webadderall 6828f86425 Make recorder and dashboard regression tests deterministic 2026-09-23 16:37:58 +10:00
webadderall 25157c89e3 Guard failed capture shutdown and address dashboard review feedback 2026-09-23 15:43:43 +10:00
webadderall bde5a570bb Stop macOS capture helper when parent closes its input 2026-09-23 14:56:55 +10:00
webadderall 8eba37c792 Start recordings at the first accepted video frame 2026-09-15 17:36:21 +10:00
webadderall 788359eac9 Fall back when microphone names are ambiguous 2026-09-13 10:54:22 +10:00
webadderall af1f18597c Avoid recording from the wrong Windows microphone 2026-09-13 10:50:46 +10:00
webadderall a1b48500b6 Use native WASAPI for Windows microphone recording 2026-09-13 10:41:30 +10:00
webadderall 2ca5c46b47 fix(windows): mask resized window captures 2026-09-05 14:11:27 +10:00
webadderall 498800a3e2 fix(windows): crop window captures without padding 2026-09-05 14:11:27 +10:00
young a5bbfa8e43 Keep window crops aligned as windows change 2026-09-04 20:06:05 +10:00
young ed32f05f52 Record selected windows by cropping full-screen captures 2026-09-04 19:48:22 +10:00
young 7899d8fce0 Address HUD protection review feedback 2026-09-03 11:51:48 +10:00
young ae36ac8a88 Fix HUD capture protection across recording backends 2026-09-03 11:38:03 +10:00
young e8e2928520 Fix washed-out Mac screen recordings 2026-09-01 18:49:33 +10:00
webadderall c74448fd3d Correct colour handling during recording
Record captured frames with BT.709 conversion and explicit limited-range metadata. Share the Windows conversion code between capture engines and apply matching colour metadata on macOS and FFmpeg fallbacks.
2026-08-31 12:25:28 +10:00
young fb44703514 Apply consistent project formatting 2026-08-28 09:54:42 +10:00
webadderall 8378342a48 fix macOS countdown resume recording race 2026-08-24 18:05:16 +10:00
webadderall 997a5a116e fix: harden native capture lifecycle 2026-08-24 17:14:21 +10:00
young fb9b39488e fix macOS capture finalization race 2026-08-24 14:14:01 +10:00
young e7fcb15cea fix: address follow-up capture review 2026-08-24 13:19:17 +10:00
young 54c506dac7 fix: address native capture review feedback 2026-08-24 11:43:50 +10:00
young 13dd5ec412 fix: stabilize macOS countdown capture 2026-08-24 10:29:43 +10:00
webadderall 9be52f37f2 fix: warm start native capture before countdown 2026-08-23 19:31:37 +10:00
webadderall 0c690bd5c2 fix: avoid duplicate mic audio in native mac recordings 2026-06-02 10:24:50 +10:00
wiiiii123 0235b4f947 fix(export): address CUDA dimension review notes 2026-05-27 18:31:00 +07:00
wiiiii123 fe828433ad fix(recording): stabilize capture quality and CUDA export canvas 2026-05-27 18:12:21 +07:00
wiiiii123 5d3da14671 fix: stabilize Windows recording preview 2026-05-25 02:50:09 +07:00
wiiiii123 978f01407a fix(windows): normalize WGC video timestamps 2026-05-22 17:47:37 +07:00
wiiiii123 58e413fca4 fix(windows): validate WGC encoder fps 2026-05-22 17:13:43 +07:00
wiiiii123 ed11c26983 fix(windows): guard WGC frame extension fps 2026-05-22 17:06:22 +07:00
wiiiii123 6227eb8955 fix(windows): preserve WGC duration through static frames 2026-05-22 15:56:36 +07:00
wiiiii123 fe294b71d5 fix(recording): fail cleanly on WGC resize errors 2026-05-09 07:49:54 +07:00
wiiiii123 f3fcd4bfda fix(recording): stabilize WGC resize frames 2026-05-09 00:06:53 +07:00
wiiiii123 add11c820a fix(export): harden native release gates 2026-05-08 12:24:04 +07:00
wiiiii123 234a7b537a fix(export): support native cropped layouts 2026-05-08 03:20:28 +07:00
wiiiii123 3455475f38 fix(export): harden native beta pipeline 2026-05-07 22:37:27 +07:00
wiiiii123 e660b49241 fix(recording): compact silent mic discontinuities 2026-05-06 23:11:16 +07:00
wiiiii123 eb1ea68f7e fix(export): support native background blur 2026-05-06 20:53:44 +07:00
wiiiii123 63a8a5bf43 fix(recording): compact short mic discontinuities 2026-05-06 20:16:32 +07:00
wiiiii123 f8df2d6ae9 fix(recording): soften native mic gap boundaries 2026-05-06 18:50:06 +07:00
wiiiii123 9ac4c55ccf feat(export): prepare native GPU beta candidate
Add validated native CUDA/D3D11 timeline retime, pause-aware capture timing, webcam source-time sampling, edited-track audio duration padding, packaged helper updates, and focused tests for PR #410 tester branch.
2026-05-06 01:50:12 +07:00
wiiiii123 94bbd0280f Add NVIDIA CUDA export compositor 2026-05-04 09:59:41 +07:00
wiiiii123 9c81006e5c Add native GPU static layout export path 2026-05-03 22:43:23 +07:00
Wiii 46f384d4d0 fix(recording): use native audio start timestamps for Windows sync

2026-04-25 17:47:39 +07:00
webadderall 7bf94ed309 Revert "fix(windows): normalize WGC sample timestamps" 2026-04-20 00:12:32 +10:00
wiiiii123 16e9a63eb6 fix(windows): normalize WGC sample timestamps 2026-04-19 20:20:06 +07:00
webadderall 2ae0aa9a92 fix: address CodeRabbit review feedback
- Remove dead helperExists local in recording/windows.ts
- Hoist fs/promises import out of close handler in recording/ffmpeg.ts
- Guard fs.readdir with mkdir in recording/prune.ts (ENOENT resilience)
- Derive companion audio suffixes from COMPANION_AUDIO_LAYOUTS in prune.ts
- Guard mousemove hook registration to Linux only in cursor/interaction.ts
- Replace dynamic require('electron') with static import in cursor/monitor.ts
- Wrap nodeRequire in try/catch in ffmpeg/binary.ts for fallback safety
- Fix hardcoded timeOffsetMs: 0 in project/session.ts (use normalizer)
- Fix isPathInsideDirectory to normalize candidatePath in project/manager.ts
- Fix isAllowedLocalReadPath security: require path to be in allowlist (AND not OR)
- Derive extension regex from constants in project/manager.ts
- Consolidate duplicate Duration parsers in recording/diagnostics.ts
- Refactor ensureReadableFile to use options object instead of description string
- Make swiftc compilation async (execFile) in paths/binaries.ts
- Add socket timeout to httpsGet in captions/whisper.ts
2026-04-17 20:35:08 +10:00
webadderall 8abceaa914 feat: add H.264 stream-copy export, overhaul exporter pipeline, rename native binaries
- IPC: new inputMode 'h264-stream' — browser VideoEncoder output stream-copied
  into MP4 via ffmpeg rather than piping raw RGBA frames, cuts memory usage
- Security: replace flat approvedLocalReadPaths with userApprovedPaths fed from
  dialog pickers and project load; isAllowedLocalReadPath uses it alongside
  dir prefix / existsSync checks
- nativeVideoExport: add buildNativeH264StreamExportArgs for stream-copy path
- frameRenderer / modernFrameRenderer: cursor-follow camera integration,
  annotation blur post-processing, shadow profile, squircle geometry
- audioEncoder / streamingDecoder / gifExporter / muxer: full pipeline
  hardening — drift correction, backpressure, proper teardown
- Rename native helpers openscreen-* → recordly-* on darwin-arm64 and
  darwin-x64; update helpers-manifest.json for win32-x64
- electron/main, windows, updater, rendererServer: startup and window
  lifecycle improvements
- preload: expose inputMode and new IPC surface to renderer
2026-04-16 17:51:41 +10:00
webadderall 6296a05115 fix(audio): add browser microphone fallback for macOS < 14
On macOS versions before Sonoma (14.0), SCStreamConfiguration does not
support the captureMicrophone/microphoneCaptureDeviceID selectors. The
native helper was throwing a fatal error, blocking recording entirely
when microphone was enabled.

Now the Swift helper logs MICROPHONE_CAPTURE_UNAVAILABLE and continues
capture without microphone. The Node handler detects this signal and
returns microphoneFallbackRequired to the renderer, which starts a
browser-side MediaRecorder capturing the mic via getUserMedia. On stop,
the audio blob is saved as a .mic.webm sidecar alongside the native
recording, where the existing companion audio detection picks it up.

Fixes: 'Native microphone capture is unavailable on this macOS/Xcode
runtime' error on older macOS versions.
2026-04-12 16:59:06 +10:00
webadderall fb54994685 fix(macos): lower deployment target to macOS 13.0 for native helpers
The Swift helper binaries were compiled with -target macos14.0, causing
dyld symbol-not-found crashes on macOS 13. The ScreenCaptureKit audio
APIs require macOS 13.0 minimum, so the deployment target is lowered to
13.0 and an #available guard is added for the macOS 14-only
ignoreShadowsSingleWindow API. README updated accordingly.

Fixes #199, fixes #200
2026-04-09 21:23:33 +10:00