Repository navigation
Conversation
…ws-recording-reliability Fix Windows recording lifecycle, webcam sync, and captions
…ture-protection Keep the HUD out of recordings across capture backends
…-platform-update-toast-visibility Fix invisible update notifications on Windows and Linux
…indow-recording-crop Record selected windows by cropping full-screen captures
…e-console-eio Prevent closed console streams from crashing Recordly
This reverts commit 158b141.
…rdly-user-system-and-capture-picker Add source selection and authenticated account and permission settings
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
The renderer passes the microphone's enumerateDevices() label to the
ScreenCaptureKit helper, which resolves it by exact comparison with
AVCaptureDevice.localizedName. Chromium decorates that label with a
transport suffix ("Shure MV7 (14ed:1012)", "MacBook Pro Microphone
(Built-in)", "BlackHole 16ch (Virtual)"), so the comparison failed for
almost every device and the helper silently recorded the system default
input instead. With the lid closed that default is the built-in mic,
which delivers digital silence, so recordings came out without a voice.
Try the raw label first, then the label without its trailing
parenthetical.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Resolve the microphone by exact label, then by a device ID that names a real capture device, and only then by the label without Chromium's transport suffix, so the name heuristic cannot override a precise identifier. Move the matching into a pure function and replace the source-text assertions with a test that compiles it with swiftc and checks the results against a fixed device list, following the lifecycle test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # src/lib/exporter/modernFrameRenderer.ts
# Conflicts: # src/components/video-editor/videoPlayback/clipPlayback.ts
…rt-audio-merge-validation Fix Lightning export fallback, companion audio routing, and seek playback
…label-match fix(macos): match the selected microphone when Chromium adds a label suffix
…rackle-windows fix: disable mic AGC by default to stop Windows audio crackle
…audio-gap-timing Preserve macOS audio timing through encoder stalls
76b26b4 to
e018e5c
Compare
|
"Remote visible mode disables HUD protection while preserving the user's previous hide-from-recordings preference. The settings explain that the HUD can also appear in the resulting video." What do you mean "HUD 'can' also appear in the resulting video"? Does it or does it not? |
When Recordly's recording HUD is capture protected, a remote desktop client may also lose sight of it. This adds a persistent Remote visible mode in Home → Settings → Recording, plus configurable global recording controls so recording can be operated while the HUD is hidden or unfocused.
Remote visible mode disables HUD protection while preserving the user's previous hide-from-recordings preference. The settings explain that the HUD can also appear in the resulting video. Turning the mode off restores the preference; macOS native process exclusions require restarting an active recording.
Default global shortcuts (Command replaces Control on macOS):
The source shortcut restores the HUD and calls its existing source-button handler. It selects only and does not start recording. Repeated input shares the pending picker; selecting is ignored while recording. Windows supports screen/window choices, macOS also supports areas, and Linux retains its list/portal flow. The screenshot/GIF/MP4 quick toolbar remains future work.
Bindings can be edited, disabled, or reset in Settings, persist across restarts, report registration failures, and unregister on quit. Commands target the capture-owning HUD rather than whichever editor window is focused, reuse existing recording callbacks, and respect countdown/finalization. Discard confirmation defaults to keeping the recording and cannot discard a subsequent take. Native cancellation remains busy until cleanup finishes.
Includes a usage and manual acceptance guide and a screenshot:
Validation
52a913569afa0229c5a3c116f0c93b828ededb84(2026-10-14); the fork's main was fast-forwarded to the same commit.npm run typecheckpasses.git diff --checkpasses.npx vite build --config vite.config.tspasses for the renderer, Electron main, and preload, including the existing main CJS smoke guard. This is not a packaged Windows installer build.52a91356produced 1551 passed, the exact same 9 failures, 7 skipped. Failures concern captions/generation, project trash, recording library, and share thumbnails (including Windows symlink permissions and FFmpeg execution issues in this environment). The failure names were compared programmatically.The fork design PR #1 has also been refreshed to upstream main and explicitly makes global capture/control and UU acceptance P0. It remains documentation only.
Remaining validation / related work
Draft: a real Mac → UU Remote → Windows session, OS-level shortcut delivery, capture exclusion/visibility, playable recorded media, and a packaged Windows build remain unverified. Browser tests use mocked native capture and do not establish those outcomes. Native dependency/browser downloads were too slow to complete in this environment; headed tests used installed Chrome instead. No installed application or existing user recording/configuration was replaced.
Related: #693 is a macOS remote-HUD report and is not evidence of every Windows failure. Existing open PR #956 overlaps the global shortcut work; this PR independently includes remote visibility, HUD show/hide, confirmed discard, and the associated acceptance guide. Maintainers may prefer coordinating or splitting the overlapping shortcut changes. No claim that the remote desktop client can always forward a particular combination.