Commit Graph
96 Commits
Author SHA1 Message Date
wiiiii123 c207b130d6 fix(linux): stabilize portal selection HUD 2026-05-29 23:20:22 +07:00
wiiiii123 6858b53655 fix(hud): restore clickability after webcam preview 2026-05-29 02:53:33 +07:00
wiiiii123 38accfea97 Merge remote-tracking branch 'origin/main' into fix/linux-hud-menu-bounds
# Conflicts:
#	electron/hudOverlayBounds.test.ts
#	electron/hudOverlayBounds.ts
#	electron/windows.ts
2026-05-29 01:20:24 +07:00
wiiiii123 70d31f2da1 fix(linux): expand HUD fallback for menus 2026-05-29 00:32:07 +07:00
wiiiii123 92c34e55cd fix(recording): preserve webcam preview HUD bounds 2026-05-29 00:18:17 +07:00
wiiiii123 38f5ded48d fix(recording): stabilize capture quality and CUDA export canvas 2026-05-27 18:12:21 +07:00
wiiiii123 f5c65f9b48 fix(capture): stabilize platform source handling 2026-05-26 23:12:01 +07:00
wiiiii123 397dbc82d9 fix(recording): preserve compact HUD drag position 2026-05-24 20:59:03 +07:00
wiiiii123 5ad1b594f9 fix(recording): compact HUD fallback on non-passthrough Windows 2026-05-24 20:50:49 +07:00
webadderall de2fbafcf1 Update Recordly app branding assets 2026-05-11 19:20:21 +10:00
webadderall f5d276e163 Merge pull request #491 from ExtraBinoss/fix/video-editor-loading-time
Fix/video editor loading time
2026-05-11 19:06:38 +10:00
Alan Trebugeais 8da8984d07 add: 20 seconds -> 2 seconds fix, for now behind a flag to be sure to be able to revert. 2026-05-10 13:01:45 +02:00
Alan Trebugeais 910a23f757 fix: mouse passthrough on windows and other oses 2026-05-09 23:42:49 +02:00
wiiiii123 6dab368631 fix(electron): avoid cjs dirname binding collision 2026-05-08 20:07:36 +07:00
wiiiii123 93e1312978 merge main into beta/pr410-native-gpu-export-test
# Conflicts:
#	electron/ipc/project/manager.ts
#	electron/ipc/register/export.ts
#	src/lib/exporter/modernVideoExporter.ts
2026-05-08 10:44:13 +07:00
webadderall a95974c3c5 fix(hud): restore hide and linux fallback 2026-05-08 10:31:33 +10:00
Alan Trebugeais aa241d96a6 fix minimize after 2 clicks in the void, Recordly should always be on top 2026-05-07 13:35:02 +02:00
Alan Trebugeais fbb6d2e649 del: removed compatibility layers which were no ops 2026-05-07 00:56:10 +02:00
Alan Trebugeais 428f4ea4a3 fix: hud overlay was flashing white (because I added a fullscreen window to render the overlay, otherwise it wouldn't stop jittering.)
add: launchTheme.css to have everything under the same variables.
2026-05-06 23:16:52 +02:00
Alan Trebugeais 6df02e847d fix: overflow, add window in fullscreen mode to avoid jittering when opening up select...
add: launchTheme.css for consistent styling accross the whole components spectrum related to LaunchWindow
add: correct styles accross the popovers! with unstyled parameters in Popover.tsx because it was needed to make sure its the same
2026-05-06 23:12:03 +02:00
wiiiii123 05327a12ce Add native GPU static layout export path 2026-05-03 22:43:23 +07:00
webadderall cd4ea8fc05 Improve HUD and update prompt UI 2026-04-25 21:34:55 +10:00
webadderall c6aa98117e Merge pull request #295 from BillLucky/fix/export-large-files-upstream
fix(export): stream MP4 output to disk to unblock >2 GiB exports
2026-04-25 00:45:44 +10:00
webadderall 58e298c250 Merge pull request #321 from meiiie/fix/win10-floating-webcam-preview
fix(launch): disable floating webcam preview without passthrough
2026-04-25 00:44:41 +10:00
大彪 1280670740 chore(smoke-export): let the smoke harness open .recordly project files
Previously the smoke-export harness only accepted a raw MP4 input path.
Validating the export pipeline on a real editor project (with its own
zoom regions, wallpaper, annotations, and webcam state) required
opening the editor by hand and clicking through the GUI.

This adds three new environment variables that are picked up by the
existing smoke-export query string plumbing:

- RECORDLY_SMOKE_EXPORT_PROJECT  — path to a .recordly project file;
  when set, the editor opens it via openProjectFileAtPath and applies
  the saved state before the auto-export fires.
- RECORDLY_SMOKE_EXPORT_QUALITY  — overrides the hard-coded "good"
  quality used by the auto-export trigger; accepts medium / good /
  high / source.
- RECORDLY_SMOKE_EXPORT_FPS      — overrides the frame rate; accepts
  24 / 30 / 60.

No behavior change for existing RECORDLY_SMOKE_EXPORT_INPUT runs;
the new inputs are strictly additive and optional. The startup log
line prefers the project path over the raw-input path when both are
populated.
2026-04-24 16:02:37 +08:00
Uri 782324f9af fix(linux): allow dragging HUD overlay on Wayland via native OS drag
BrowserWindow.setBounds() with x/y is silently ignored on Wayland (the
compositor owns window placement), so the IPC-driven HUD drag never
moved the window \u2014 it stayed put even though pointer events fired and
the cursor changed to grabbing.

Mark the drag handle as -webkit-app-region: drag on Linux (only in the
IPC/overlay mode; webcam-preview mode still uses the in-window CSS
transform) so the OS performs a real xdg_toplevel.move. Mirror the
resulting bounds into hudUserPosition via the window 'moved' event so
commit 224a480's in-place resize behavior keeps working on Linux.
2026-04-23 14:52:40 +03:00
wiiiii123 82e7a698f6 fix(launch): disable floating webcam preview without passthrough 2026-04-23 10:52:41 +07:00
wiiiii123 4207664c4a fix(recording): recover from fullscreen countdown failures 2026-04-21 20:46:37 +07:00
Uri b6d2aaf5c6 fix(linux/wayland): collapse 3-step capture flow into a single portal dialog
Previously on Linux/Wayland, starting a fullscreen recording required three
separate picker interactions: an in-app source dropdown plus two xdg-desktop-portal
dialogs. The duplicate portal dialogs were caused by:

1. resolveBrowserCaptureSource() calling desktopCapturer.getSources() in the
   renderer, which itself triggers the portal on Wayland.
2. setDisplayMediaRequestHandler() in main also calling getSources(), which
   triggers another portal.
3. Returning a pre-enumerated source id to Chromium, which on Wayland is stale
   and forces Chromium to re-prompt via the portal during MediaStream creation.

Additionally, the editor window failed to appear after recording on some
Wayland sessions because 'ready-to-show' did not fire reliably.

Changes:
- LaunchWindow: skip the in-app source dropdown on Linux and start recording
  directly; the OS portal becomes the source picker.
- useScreenRecorder: introduce a 'screen:linux-portal' sentinel source. When
  set, route capture through navigator.mediaDevices.getDisplayMedia() so the
  portal handles selection in a single dialog. Skip resolveBrowserCaptureSource
  for the sentinel to avoid an extra getSources() call.
- electron/main: in setDisplayMediaRequestHandler, when the sentinel is set,
  skip desktopCapturer.getSources() entirely and return a synthetic source so
  Chromium opens the portal exactly once for the actual capture.
- electron/windows: in createEditorWindow, also call win.show() from
  did-finish-load as a fallback for Linux/Wayland where ready-to-show may
  not fire.
2026-04-18 16:17:08 +03:00
webadderall dbd5a2a9a2 fix: Linux GPU fallback and HUD window show safety net
- Add Linux GPU config: use EGL (better Wayland compat), disable VAAPI
  video decoder/encoder (many distros ship broken drivers causing
  'vaInitialize failed' and preventing renderer from loading)
- Add ready-to-show fallback for HUD window: if did-finish-load never
  fires (GPU failure), show the window after 500ms via ready-to-show

Ref #261
2026-04-18 21:32:18 +10:00
webadderall 26f1ce2476 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
Andrew Foster 2729fdf7b8 resolve coderabbit nitpick listeners 2026-04-11 12:10:19 -05:00
Andrew Foster 7ad75b12cf resolve coderabbit feedback on applyHudOverlayBounds 2026-04-11 12:10:19 -05:00
Andrew Foster 224a480e67 fix(hud): preserve user-dragged position across recording state changes
The HUD overlay snaps back to the centered default position whenever
recording starts because the idle-to-recording UI swap triggers a
resize, and applyHudOverlayBounds() always recomputes a centered
location. This is disruptive when the user has intentionally moved
the bar out of the way before a timed recording.

Remember the position after a drag ends and reuse it for subsequent
bounds updates, clamped to the current work area. The position resets
on app restart or when displays change so the bar cannot get stranded
off-screen.
2026-04-11 12:10:19 -05:00
Mohamed 779172c379 fix(hud): resolve overlay snap to primary on multi-monitor
- Add getHudOverlayDisplay() helper using getDisplayMatching()
  to detect which display the HUD is currently on
- Replace getPrimaryDisplay() in getHudOverlayBounds(),
  set-hud-overlay-compact-width, set-hud-overlay-measured-height
  handlers, and createHudOverlayWindow() maxHeight constraint
- Falls back to primary display when HUD window doesn't exist

Tested on Windows 11 with dual-monitor setup. HUD stays on
the external monitor through recording start/stop and
expand/collapse cycles.
2026-04-09 14:00:50 +02:00
Mohamed 9619f7ed9f fix(windows): use path.posix for URL path resolution
- replace path.normalize() with path.posix.normalize() in
  resolveRequestedFilePath to preserve forward slashes on Windows
- add empty-string guard for degenerate pathnames
- remove win32 bypass in loadPackagedEditorWindow

path.normalize() converts / to \ on Windows, causing path.resolve
to escape to the drive root and return 403 Forbidden.
2026-04-07 06:18:45 +02:00
webadderall aa912a8f3b Hotfix 1.1.18 2026-04-06 22:39:31 +10:00
webadderall f56f39ddb3 Hotfix 1.1.17 2026-04-06 18:10:29 +10:00
webadderall e7cd2004fe Improve tray and packaged editor restore paths 2026-04-06 15:22:58 +10:00
webadderall de3b396d89 Load packaged renderer over localhost 2026-04-05 18:51:51 +10:00
webadderall 3edb4c3331 revert(recording): drop linux editor visibility workaround 2026-04-04 22:15:32 +11:00
webadderall f322f78c19 fix(recording): improve post-capture handoff 2026-04-04 22:14:15 +11:00
webadderall 495b714ab8 fix(windows): align Win10 HUD restore with interactive fallback 2026-04-04 17:22:37 +11:00
webadderall 8ca75de0b7 Merge pull request #167 from TARO-gh/fix/floating-toolbar-drag-drift
fix(windows): stabilize HUD drag by locking bounds size during move
2026-04-04 16:12:45 +11:00
TARO-gh ca1e2a2abe Merge branch 'webadderall:main' into fix/floating-toolbar-drag-drift 2026-04-04 12:39:20 +09:00
webadderall e85ceb6497 configure smoke export window boot flow 2026-04-04 13:07:49 +11:00
TARO-gh 401d9a6d72 fix(hud-overlay): keep drag bounds size fixed to prevent cursor drift on Windows 2026-04-03 16:45:31 +09:00
TARO-gh 2d34ecc3c1 fix(hud-overlay): ignore duplicate drag mousemove events to stop hold-drift 2026-04-03 15:35:29 +09:00
iRaziul 00d635af61 Fix Linux HUD input handling 2026-04-02 17:40:27 +06:00
webadderall c069eb015e fix(electron): Windows HUD visibility - moveTop after show, reassert mouse state on recording start 2026-04-02 21:09:32 +11:00