Commit Graph
69 Commits
Author SHA1 Message Date
webadderall c701019752 Update Vitest to resolve critical advisory 2026-08-26 18:38:06 +10:00
young a85b0d1c6f fix: align Vitest with Vite 5 2026-08-24 13:19:27 +10:00
wiiiii123 d30117910f chore(release): prepare 1.3.5-beta.2 2026-07-11 15:39:14 +07:00
wiiiii123 321c465709 chore(deps): support Visual Studio 2026 rebuilds 2026-07-11 14:26:17 +07:00
wiiiii123 a62d92ad4c chore(deps): upgrade Electron to 43 2026-07-11 13:58:21 +07:00
wiiiii123 933938aac5 fix(deps): make lockfile npm 10 compatible 2026-07-11 10:55:45 +07:00
wiiiii123 6ed4c37fd0 chore(deps): patch Electron and Vitest 2026-07-10 14:00:31 +07:00
wiiiii123 1193cf4a47 chore(deps): remove unused legacy packages 2026-07-10 13:38:38 +07:00
webadderall 578518007c chore(release): bump version to 1.3.4 2026-06-08 21:54:48 +10:00
wiiiii123 98a63ada3b chore(release): prepare v1.3.3 2026-05-29 03:10:44 +07:00
wiiiii123 b00b20f373 chore(release): prepare v1.3.2 2026-05-28 17:16:04 +07:00
wiiiii123 409feb6240 chore(release): bump version to 1.3.1 2026-05-25 21:12:01 +07:00
Codex 78594eb4da chore(release): bump version to 1.3.0 2026-05-24 17:58:04 +10:00
webadderall df33005350 chore(release): bump to v1.3.0-beta.3 2026-05-17 20:55:37 +10:00
webadderall 7bc06c9925 chore(release): bump version to 1.3.0-beta.2 2026-05-11 22:18:36 +10:00
webadderall eef863198c Prepare v1.3.0 beta release workflow 2026-05-08 17:23:19 +10: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
webadderall 9c495beec1 chore(release): bump version to 1.2.0-beta.2 2026-04-26 20:15:10 +10:00
webadderall 51a9567c84 fix(build): use maintained Electron rebuild package 2026-04-25 21:47:02 +10:00
大彪 9ac4dbd2e8 fix(export): stream MP4 output to disk to unblock >2 GiB exports
Long recordings (35-minute screencaps were the motivating case) fail at
the 99% "Finalizing" step with a RangeError once the muxed MP4 would
exceed V8's ~2 GiB per-ArrayBuffer limit. Both export paths accumulate
the whole file in renderer memory and round-trip it through IPC, so no
output size past that point can complete:

- Legacy: src/lib/exporter/muxer.ts uses mediabunny's BufferTarget,
  which holds the entire MP4 in a single ArrayBuffer. finalize() → Blob
  → blob.arrayBuffer() → ipcRenderer.invoke('write-exported-video-to-
  path', arrayBuffer, path) — every step wants a ≥2 GiB contiguous
  allocation.
- Lightning: native-video-export-finish did fs.readFile(finalizedPath)
  and shipped the bytes back to the renderer, which re-serialized them
  again. Same ceiling.

This change moves the finished MP4 across the renderer↔main boundary
via a temp file instead of an ArrayBuffer:

- New electron/ipc/export/exportStream.ts manages streaming temp files
  via fh.write(buf, 0, len, position) so out-of-order writes (moov box
  rewrites, etc.) stay safe. Each session lives in a 0700 mkdtemp()
  directory opened with O_CREAT | O_EXCL so a hostile local user on a
  shared tempdir cannot pre-plant a symlink at the predicted path.
- New renderer-facing IPCs: export-stream-open/write/close,
  finalize-exported-video (renames temp to final path, copy+unlink
  fallback on EXDEV/EPERM/ENOTEMPTY with console.warn on leaked bytes),
  mux-exported-video-audio-from-path (FFmpeg audio fallback that takes
  a path instead of an ArrayBuffer), and discard-exported-temp. Every
  handler validates the caller-supplied path against an owned-export-
  paths registry before touching disk, so a compromised renderer cannot
  route arbitrary filesystem paths into main-process deletes/moves.
- The muxer now picks mediabunny's StreamTarget automatically when the
  Electron bridge is available (BufferTarget stays for tests and any
  non-Electron callers). finalize() returns { mode, tempFilePath,
  bytesWritten } or { mode, blob } so the exporter can branch.
- Exporters forward tempFilePath through ExportResult. Lightning's
  finish returns the ffmpeg temp path directly; the FFmpeg audio
  fallback forks on the muxer result type. modernVideoExporter's
  Lightning success branch now accepts tempFilePath (previously it
  checked blob only, which regressed every native export).
- VideoEditor.tsx dispatches on tempFilePath: finalize via the new IPC,
  keep the temp in place when the save dialog is canceled so "Save
  Again" still works without re-rendering, keep the pending-save entry
  alive on non-canceled save failures, and discard the temp on unmount
  or explicit clear. GIF and smoke-test code paths still use the
  legacy Blob path unchanged.
- app.on('before-quit') also reaps any open streaming sessions via
  cleanupAllExportStreams().

Chunk size is 16 MiB — well under Electron/Mojo IPC message limits
while keeping total writes low (~160 for a 2.5 GB export).

Tested locally: exported a 35:13 source (~2.7 GiB H.264 input) at
Original 1920×1080 + Balanced. Previously failed on finalize with a
RangeError; with this patch the Legacy pipeline produced a valid 3.7
GiB MP4 whose ffmpeg -i duration/streams match the source.

Addresses #194.
2026-04-24 16:02:37 +08:00
webadderall a83a58c671 fix: address ui overhaul review feedback 2026-04-16 22:36:23 +10:00
webadderall 9a5ff5c0a2 feat: ui overhaul — Phosphor icons, redesigned launcher, editor layout, and component refresh
- Replace all lucide-react imports with @phosphor-icons/react across every
  component (LaunchWindow, AnnotationSettingsPanel, ExtensionManager,
  ExtensionIcon, VideoPlayback, AnnotationOverlay, CropControl, TutorialHelp,
  PlaybackControls, all shadcn ui/ primitives, etc.)
- ExtensionIcon: new Phosphor-based resolver with Lucide name alias map for
  backwards-compatible extension manifests
- LaunchWindow / SourceSelector: full redesign — new icon rail layout,
  updated backgrounds, improved source selection UX, audio/video controls,
  countdown overlay
- VideoPlayback: overhaul playback controls and preview panel layout
- Timeline items: border-radius 16px→8px, cyan→blue unification, pill height
  85% for breathing room, resize handle vertical centering
- shadcn ui/: refresh accordion, dialog, dropdown, select, slider, switch,
  tabs, toggle, popover, button, card, input, label, sonner, content-clamp,
  audio-level-meter
- App.tsx / index.css / App.css / tailwind.config: global style updates
- types.ts, captionLayout.ts, captionStyle.ts, webcamOverlay.ts: data model
  updates to support new timeline and export features
- package.json: add @phosphor-icons/react, bump dependencies
- scripts/, .eslintrc, biome, tsconfig, vite.config: tooling alignment
- extension-sources: update built-in extension bundles
2026-04-16 18:01:04 +10:00
webadderall 60d364a4ed fix: hotfix export regressions 2026-04-15 17:19:49 +10:00
Wing900 654ed79ba8 Fix silent MP4 exports with FFmpeg audio fallback 2026-04-12 20:55:34 +08:00
webadderall 2692b28604 Hotfix 1.1.18 2026-04-06 22:39:31 +10:00
webadderall 2a155faaf6 Hotfix 1.1.17 2026-04-06 18:10:29 +10:00
webadderall b72cc10c07 Fix Lightning export fallback and preview sync 2026-04-05 21:09:55 +10:00
webadderall bf16280e53 chore(release): prepare v1.1.14 2026-04-04 22:55:36 +11:00
webadderall 4d29baaae3 chore(release): bump version to 1.1.13 2026-04-02 21:56:51 +11:00
webadderall e20e6a143c chore(release): cut v1.1.10 2026-03-31 00:09:06 +11:00
webadderall 3b755f85ab chore: release v1.1.8 2026-03-29 20:09:04 +11:00
github-actions[bot] ffe7ff735c chore(release): bump version to v1.1.6 2026-03-26 00:42:26 +00:00
webadderall da77c24a63 chore(updates): add disabled app update infrastructure 2026-03-24 19:32:38 +11:00
webadderall 16c9cc7be3 chore: move non-native deps to devDependencies 2026-03-23 18:00:00 +11:00
webadderall 8bf6698c3f chore: refresh wallpaper assets for v1.1.4 2026-03-21 10:39:24 +11:00
webadderall ecd6bc0571 Bump version to 1.1.1 2026-03-18 18:36:25 +11:00
aras b3423c39dd fix(macos): add explicit target architecture to Swift helper builds
Added `-target` flag to swiftc compilation to explicitly specify arm64-apple-macos14.0 or x86_64-apple-macos14.0 based on process architecture, ensuring proper binary compilation for darwin-arm64 native helpers.
2026-03-15 18:01:14 +03:00
webadderall 9435910e99 History reorganized for upstream alignment. 2026-03-13 21:36:30 +11:00
webadderall c3c5d1ed63 Initial release of Recordly 2026-03-13 21:14:05 +11:00
Siddharth 19476da5cc upgrade electron-builder version 2026-02-13 22:07:27 -08:00
Siddharth fac4af40c7 demuxer and CFR conversion 2026-02-13 20:46:12 -08:00
Siddharth a2ca0799d4 accordion & settings cleanup 2026-01-20 21:10:22 -08:00
Siddharth 6d2e1edb5b fix build errors 2026-01-20 20:05:14 -08:00
Farhan Shaikh 1586dbe65e fix(ui): increase height for source selector tabs content 2026-01-13 16:42:19 +05:30
Nikhil Solanki 6e6ecba172 Add GIF export feature to video editor
Implements GIF export alongside MP4, including new export types, a GIF exporter module, UI components for format selection and GIF options, and integration into the export dialog and video editor. Adds property-based and unit tests for GIF export correctness, updates dependencies to include gif.js and related types, and refines Electron save dialog to support GIF files.
2025-12-25 01:50:02 +05:30
Siddharth d6d1a3eca6 build fix 2025-12-05 23:31:36 -07:00
Siddharth 5d7b817586 fix default wallpaper missing from export in build 2025-12-05 22:22:17 -07:00
Siddharth ec3b9b46a1 annotations in preview 2025-11-30 14:47:22 -07:00
Siddharth b6d6fe6a70 draggable UI resizer 2025-11-27 14:17:10 -07:00
Siddharth 98d6acaa6a keyframes 2025-11-25 18:45:37 -07:00