Commit Graph
1026 Commits
Author SHA1 Message Date
wiiiii123 60c6e7983e perf(export): default MP4 exports to modern pipeline 2026-04-27 23:09:14 +07:00
Wiii 158d214b27 ci: smoke and attest packaged artifacts
Add packaged-artifact smoke checks, checksums, attestations, and release asset staging guardrails.
2026-04-27 18:26:25 +07:00
webadderall a4f475228a Fix video wallpaper export stutter 2026-04-27 17:32:43 +10:00
webadderall ae060e83fe Wait for wallpaper frames during export 2026-04-27 17:09:42 +10:00
webadderall 55388cb1b6 Fix CI ffmpeg bundling for release builds 2026-04-27 17:09:33 +10:00
webadderall 7f45a4b77f Merge pull request #366 from webadderallorg/codex/video-wallpaper-sync-update-preview
Fix video wallpaper sync and streamline updater UI
2026-04-27 17:00:13 +10:00
webadderall 19a09cf37f fix(timeline): restore visible track row height 2026-04-27 16:52:15 +10:00
webadderall 15cd2f15a3 Loop wallpaper videos during export 2026-04-27 16:50:30 +10:00
webadderall fdc79cd51d revert: undo recent session changes 2026-04-27 16:33:29 +10:00
webadderall 0cf4fe8393 revert: undo recent session changes 2026-04-27 16:33:13 +10:00
webadderall 578c46d3fc fix(timeline): stretch visible rows without capping panel
(cherry picked from commit 8830542921)
2026-04-27 16:29:39 +10:00
webadderall 8830542921 fix(timeline): stretch visible rows without capping panel 2026-04-27 16:29:26 +10:00
webadderall f78b0bf8af fix(timeline): cap viewport to two rows
(cherry picked from commit fe5fdff35a)
2026-04-27 16:24:49 +10:00
webadderall fe5fdff35a fix(timeline): cap viewport to two rows 2026-04-27 16:24:35 +10:00
webadderall 24575ff53b feat(webcam): add mirror toggle to settings
Closes #363

(cherry picked from commit b4b009fafa)
2026-04-27 16:23:14 +10:00
webadderall f1449073e6 Fix black video wallpaper exports 2026-04-27 16:22:57 +10:00
webadderall b4b009fafa feat(webcam): add mirror toggle to settings
Closes #363
2026-04-27 16:13:58 +10:00
webadderall fb34bf2ef9 Address CodeRabbit review feedback 2026-04-27 16:04:04 +10:00
webadderall bbd46b44ac Fix video wallpaper sync and streamline updater UI 2026-04-27 15:48:38 +10:00
webadderall f58cd07250 Merge pull request #237 from Andrii-Vovk/fix/macos-screen-highlight-bounds
fix(highlight): screen highlight clipping on macOS
2026-04-27 14:43:16 +10:00
Wiii 0e972ba96e feat(editor): add audio region volume control
Expose the existing added-audio volume field in the selected-audio settings panel and keep timeline row hit targets selectable.
2026-04-27 00:16:08 +07:00
Wiii 5238dd79ce fix(editor): allow scrolling all audio tracks
Allow timeline content to grow with additional audio rows so the existing scroll container can reach lower tracks.
2026-04-26 23:48:38 +07:00
Wiii 574cefc6bd fix(export): use tempo filters for speed audio
Use FFmpeg atempo filters for native edited-track speed changes, including near-unity speed tolerance coverage.
2026-04-26 22:59:20 +07:00
Andrii-Vovk 69abb0390d fix(highlight): screen highlight clipping on macOS
On macOS, the screen highlight overlay's right and bottom edges were
   running off-screen. macOS clamps window positions below the menu bar,
   so the outward padding only appeared on the left/top while the
   right/bottom extended beyond the visible area.

   Use display workArea instead of full bounds for screen highlights on
   macOS, and keep the border/glow within the overlay window.
2026-04-26 17:31:28 +03:00
webadderall 61bdb0979f Merge pull request #356 from shaah1d/main
fix: syntax error for bash commands
2026-04-26 22:56:24 +10:00
shaahid 02dc6d58b2 fix: syntax error for code snippets
Updated formatting and fixed minor text inconsistencies in the CONTRIBUTING.md file as the bash commands had their intro text inside the code block
2026-04-26 18:08:22 +05:30
webadderall 2d23885bd3 style(ui): use SF Pro globally and add release helper 2026-04-26 20:36:01 +10:00
webadderall 9c495beec1 chore(release): bump version to 1.2.0-beta.2 v1.2.0-beta.2 2026-04-26 20:15:10 +10:00
webadderall ca05a3fcc0 fix(webcam): correct sync offset direction 2026-04-26 20:10:38 +10:00
webadderall 99ea9df18d Promote padding label to section heading 2026-04-26 19:56:40 +10:00
webadderall e3a2a2dc95 Use tracked Vite config for dev Electron builds 2026-04-26 19:56:40 +10:00
webadderall 21d8f321ec Match macOS cursor height to Tahoe 2026-04-26 19:56:40 +10:00
webadderall 4961cfe33d Merge pull request #351 from webadderallorg/codex/cursor-asset-sets
Wire new cursor asset sets
2026-04-26 19:27:59 +10:00
webadderall 5d23baab52 Add missing locale strings for cursor padding 2026-04-26 19:26:06 +10:00
Wiii f483b0a4a0 fix(editor): align preview timing with presented video frames 2026-04-26 00:02:46 +07:00
webadderall ef636934f2 Wire new cursor asset sets 2026-04-26 00:28:45 +10:00
webadderall fa4e283e8a Merge pull request #344 from webadderallorg/fix/hud-update-prompt-ui
Improve HUD and update prompt UI
2026-04-25 21:53:27 +10:00
webadderall 51a9567c84 fix(build): use maintained Electron rebuild package 2026-04-25 21:47:02 +10:00
webadderall 624c3047be Improve HUD and update prompt UI 2026-04-25 21:34:55 +10:00
Wiii 97ba2a020c fix(recording): normalize native Windows mic loudness

2026-04-25 18:15:51 +07:00
Wiii 46f384d4d0 fix(recording): use native audio start timestamps for Windows sync

2026-04-25 17:47:39 +07:00
Wiii f629cbf992 fix(build): stage Whisper runtime in macOS CI jobs (#333) 2026-04-25 00:42:10 +07:00
webadderall aab14e822a 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 66bd91e6a5 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
webadderall b7b984d130 Merge pull request #256 from akctba/feature/brazilian-portuguese
Adding Portuguese to languages
2026-04-25 00:42:59 +10:00
大彪 f05dc1f495 fix(export): address remaining PR #295 review threads
- Include `resolvedWebcamVideoUrl` in the dependency arrays for
  `captureProjectThumbnail` and `handleExport` so thumbnail capture and
  export settings stay in sync when the webcam URL refreshes.
- Clear `VideoMuxer.streamSink` before awaiting `closeIpcExportStream`
  in `finalize()` to close the race where a concurrent `destroy()` →
  `abortStream()` could try to close the same stream ID a second time.
2026-04-24 16:02:37 +08:00
大彪 f8122bde18 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
大彪 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 62f2a52860 Fix companion audio sync for trimmed and long exports 2026-04-24 12:04:21 +10:00
webadderall b63aba99b0 Support drag-and-drop placement across audio rows 2026-04-24 11:49:16 +10:00