Skip to content

Hotfixes v1.1.9

Choose a tag to compare

@webadderall webadderall released this 30 Mar 05:49
· 63 commits to main since this release

Hotfixes

Recording

  • finalizeStoredVideo now catches errors from validateRecordedVideo instead of propagating them — the editor will open regardless of whether ffmpeg validation succeeds or fails.
  • Native capture on macOS uses a single Date.now() for video, system audio, and mic filenames instead of calling Date.now() three separate times.
  • desktopCapturer.getSources() failures are caught and return an empty array instead of throwing.

Windows

  • WASAPI capture thread now calls CoInitializeEx(nullptr, COINIT_MULTITHREADED) at thread start and CoUninitialize() before return. Added HRESULT logging for GetNextPacketSize and GetBuffer failures.
  • Added session.defaultSession.setDevicePermissionHandler(() => true) — was previously missing, only setPermissionCheckHandler and setPermissionRequestHandler were set.
  • setRecordingState(false) is now awaited before calling muxNativeWindowsRecording() in the stop path. Previously it was fire-and-forget, meaning snapshotCursorTelemetryForPersistence() may not have run before the mux handler called persistPendingCursorTelemetry().
  • Camera and microphone permission status is now logged at startup on Windows.

Window Selection

  • Removed .filter((source) => Boolean(source.thumbnail)) from source enumeration — windows without thumbnails now appear in the list.
  • Swift window list helper now filters out untitled auxiliary windows from apps that have multiple windows (e.g. Arc). Minimum window size changed to 50x50.
  • Highlight animation no longer queries bounds via AppleScript front window. Instead it calls resolveMacWindowBounds() which looks up the exact CGWindowID in the CGWindowList.

HUD

  • HUD overlay uses setIgnoreMouseEvents(true, { forward: true }) so transparent areas are click-through. Drag is handled via JS mousedown/mousemove with IPC to toggle setIgnoreMouseEvents on enter/leave of the drag region.

热修复

录制

  • finalizeStoredVideo 现在会捕获 validateRecordedVideo 的错误而非向上传播——无论 ffmpeg 验证是否成功,编辑器都会打开。
  • macOS 原生捕获的视频、系统音频和麦克风文件名现在使用同一个 Date.now(),而非分别调用三次。
  • desktopCapturer.getSources() 失败时会被捕获并返回空数组,不再抛出异常。

Windows

  • WASAPI 捕获线程现在在线程启动时调用 CoInitializeEx(nullptr, COINIT_MULTITHREADED),返回前调用 CoUninitialize()。为 GetNextPacketSizeGetBuffer 失败添加了 HRESULT 日志。
  • 添加了 session.defaultSession.setDevicePermissionHandler(() => true)——此前仅设置了 setPermissionCheckHandlersetPermissionRequestHandler
  • 停止录制路径中,setRecordingState(false) 现在会被 await,然后再调用 muxNativeWindowsRecording()。此前是 fire-and-forget,意味着 snapshotCursorTelemetryForPersistence() 可能在 mux handler 调用 persistPendingCursorTelemetry() 之前尚未执行。
  • Windows 上启动时现在会记录摄像头和麦克风的权限状态。

窗口选择

  • 从源枚举中移除了 .filter((source) => Boolean(source.thumbnail))——没有缩略图的窗口现在会出现在列表中。
  • Swift 窗口列表辅助程序现在会过滤掉拥有多个窗口的应用中无标题的附属窗口(如 Arc)。最小窗口尺寸改为 50x50。
  • 高亮动画不再通过 AppleScript front window 查询边界,改为调用 resolveMacWindowBounds(),通过精确的 CGWindowID 在 CGWindowList 中查找。

HUD

  • HUD 覆盖层使用 setIgnoreMouseEvents(true, { forward: true }),透明区域可点击穿透。拖动通过 JS mousedown/mousemove 处理,在进入/离开拖动区域时通过 IPC 切换 setIgnoreMouseEvents

Join the Discord for Recordly: https://discord.gg/FcfNN4S9m