Commit Graph
116 Commits
Author SHA1 Message Date
webadderall b2342090b2 feat(editor): full-width timeline, extension i18n, lifecycle fixes
- Move timeline below preview+settings so it spans full editor width
- Remove react-resizable-panels vertical split
- Add scoped i18n for ExtensionManager (en/zh/ko/ja/es)
- Fix stale extension activation cleanup and deactivation on uninstall
- Cache-bust extension module URLs on reinstall
- Move bundled cursor packs to extension-sources/ for marketplace upload
- Track marketplace download counts (fire-and-forget POST)
2026-04-12 16:59:07 +10:00
webadderall d6f1225e45 feat(extensions): marketplace integration, wallpaper thumbnails, cursor packs, and bug fixes
- Extension marketplace UI with browsing, installing, screenshot gallery
- Wallpaper & cursor style registration API for extensions
- Wallpaper thumbnail system (nativeImage resize + disk cache, OOM-safe)
- Fix HUD crash: check configurable before redefining electronAPI
- Fix zip-slip false positive on macOS (fs.realpath for symlinks)
- Extension icon sizing and description truncation improvements
- Eager extension activation in SettingsPanel
2026-04-12 01:38:36 +10:00
webadderall 5fc78fd90b feat(export): add extension render hooks to export pipeline
- Integrate extension render hooks into frameRenderer and modernFrameRenderer
- Add modernFrameRenderer for compositing extensions during export
- Wire extension audio processing in audioEncoder
- Support extension hooks in gif and video export paths
2026-04-12 01:38:36 +10:00
webadderall 7073d7deb5 feat: extension system with marketplace, permissions, and security hardening
- Extension loader with manifest validation, ID sanitization, and path traversal protection
- Permission-gated runtime API (render, cursor, audio, timeline, ui, assets, export)
- Extension host with lifecycle management (activate/deactivate)
- Marketplace client for browsing, downloading, and installing extensions
- Extension Manager UI panel with enable/disable/uninstall
- IPC bridge for extension discovery, management, and marketplace operations
- Proxy guard on window.electronAPI to block extension access to privileged IPC
- Zip-slip protection via post-extraction directory traversal validation
- Safe PowerShell invocation for Windows zip extraction (no string interpolation)
- File URL resolution with path escape prevention
2026-04-12 01:37:28 +10:00
webadderall dce398ee02 fix(export): render blur annotations in modern pipeline 2026-04-11 21:40:37 +10:00
Mahdy Arief 1567eebe8a feat(editor): enhance blur annotations with custom intensity, censorship color, and rounded corners 2026-04-11 08:06:45 +07:00
Mahdy Arief a7e65905df feat(editor): standardize blur strength, localize help text, and optimize export performance 2026-04-11 07:39:35 +07:00
Mahdy Arief 45ee7105ef feat(blur): implement video blur annotation support 2026-04-11 07:39:35 +07:00
Lout 9ab6b6f130 fix(export): preserve stream-start offsets during decode
Align decoded frame timestamps with the media timeline so trimmed exports do not end early on recordings whose video stream starts after the container timeline.
2026-04-09 12:19:55 -05:00
webadderall c85fb7a05a feat: show real-time audio rendering progress during export finalization
Instead of freezing at 'Finalizing 99%' while audio renders in real-time,
the export UI now shows 'Rendering audio XX%' with a live progress bar and
an explanatory note about why real-time playback is required.

Progress is reported every 250ms from the RAF tick loop in AudioProcessor
and piped through VideoExporter to the UI via the existing onProgress callback.
2026-04-09 18:25:25 +10:00
webadderall 919a29c61d fix: export animation desync — use content time for zoom spring delta
The zoom spring animation in both frameRenderer and modernFrameRenderer
was using performance.now() (wall-clock time) to compute spring deltas.
During export, wall-clock time and content time are decoupled — a frame
representing 33ms of video may render in 3ms or 500ms. This caused zoom
animations to appear choppy/laggy in exports while previews were smooth.

Switched to content-time deltas (timeMs) so the spring advances at the
same rate as the video regardless of actual render speed.

Also bumps version to 1.1.20.
2026-04-09 16:51:21 +10:00
webadderall 094a43c1a8 feat: classic zoom toggle, clip speed support, restore zoom durations
- Add Classic Animation toggle (disables cursor follow + spring smoothing)
- Remap zoomSmoothness slider from 0-2 to 0-1 range, default 0.5
- Fix clip speed: merge clip speeds into effectiveSpeedRegions
- Restore zoom duration constants to original values
  (ZOOM_IN_TRANSITION_WINDOW_MS: 700ms -> 1522ms, TRANSITION_WINDOW_MS: 1000 -> 1015.05)
- Pass missing zoomSmoothness to VideoPlayback and GIF exporter
- Persist zoomSmoothness and zoomClassicMode in project files
2026-04-09 00:55:27 +10:00
webadderall 4bd45dc927 fix: cursor desync in exports — remove erroneous startup offset from cursor timestamp 2026-04-08 23:39:35 +10:00
webadderall e670956e42 fix(export): audio encoder reliability and gif exporter compat 2026-04-08 22:00:23 +10:00
webadderall 5b07af5083 feat(zoom): add spring animation and cursor follow to export pipeline
Both legacy (FrameRenderer) and modern (ModernFrameRenderer) exporters
now use inlined spring solver and cursor follow camera for auto zooms.
Wire zoomSmoothness config through both exporter paths.
2026-04-08 21:43:27 +10:00
webadderall 012bec21a7 Prefer WebCodecs auto export and harden Pixi fallback 2026-04-06 15:23:06 +10:00
webadderall a760892490 fix export cursor lag 2026-04-05 22:04:17 +10:00
webadderall b72cc10c07 Fix Lightning export fallback and preview sync 2026-04-05 21:09:55 +10:00
webadderall 4a9e55f571 Fix Windows export finalization progress 2026-04-05 19:18:12 +10:00
webadderall 46f55dc61a Fix encoder errors reported as cancellations 2026-04-05 18:15:14 +10:00
webadderall 5fd49fbf0f fix(audio): reduce recording and export drift 2026-04-04 21:53:25 +11:00
webadderall f725df3dfc export new pipeline modules 2026-04-04 13:07:57 +11:00
webadderall 21496a787e teach legacy exporter native fallback 2026-04-04 13:07:57 +11:00
webadderall 1e5f0b8658 add modern video exporter 2026-04-04 13:07:57 +11:00
webadderall 2c51b67f2c add modern export frame renderer 2026-04-04 13:07:50 +11:00
webadderall cacc614cde improve renderer and gif export progress 2026-04-04 13:07:42 +11:00
webadderall e136cc7dcc bound streaming decoder backpressure 2026-04-04 13:07:42 +11:00
webadderall 987939b253 normalize forward frame source timing 2026-04-04 13:07:42 +11:00
webadderall c29673b9fc add audio passthrough export path 2026-04-04 13:07:34 +11:00
webadderall 4e83ec98ee preload annotation assets for export 2026-04-04 13:07:34 +11:00
webadderall cc63fa1b24 add native frame capture utilities 2026-04-04 13:07:34 +11:00
webadderall 3109b18460 add export backpressure tuning 2026-04-04 13:07:34 +11:00
webadderall 015d46245c add export pipeline core types 2026-04-04 13:07:34 +11:00
webadderall 7b1d16d969 feat(wallpaper): video wallpaper system with wispysky default, upload, thumbnails, preview and export rendering 2026-04-02 21:09:16 +11:00
webadderall 8d262fbc10 feat(editor): add video wallpaper background support
Adds video file detection (mp4/webm/mov/etc) to wallpaper system,
renders video backgrounds with looping playback in editor preview,
and adds Video tab to background picker in settings panel.
2026-04-02 16:49:56 +11:00
webadderall 45bca06431 feat(editor): add ClipRegion type, persistence, and keyboard shortcuts 2026-04-02 16:29:29 +11:00
webadderall 8690393a80 fix: stale variable references in audioEncoder cleanup 2026-04-01 16:03:40 +11:00
webadderall db8718cf66 Add sidecar audio fallback for silent recordings 2026-04-01 15:40:40 +11:00
webadderall 719fa78e9f Revert "feat: Advanced Video Editor Implementation, Native WGC Integration, and AI Auto-Captions" 2026-03-28 14:12:25 +11:00
Mahdy Arief f9364eb431 fix(ts): resolve VideoExporterConfig initialization error in VideoEditor.tsx 2026-03-28 06:11:28 +07:00
Mahdy Arief d5ab86ea44 fix(export, native, ui): resolve critical data integrity and resource management bugs in PR #122
- Implement comprehensive solo/mute export pipeline in audioEncoder.ts
- Fix duplicate caption IDs by adding chunk-specific indices in handlers.ts
- Prioritize native monitor selection by bounds in monitor_utils.cpp
- Fix alignment for blur annotations extending beyond canvas boundaries
- Resolve timeline selection desync and sidebar visibility for blur annotations
- Fix memory leaks in audio waveform generation with AudioContext cleanup
2026-03-28 06:09:50 +07:00
Mahdy Arief 74dfa0d5fa feat: Implement initial video editor with timeline, effects, audio waveforms, and export capabilities. 2026-03-28 01:25:40 +07:00
Mahdy Arief 281a73b51a chore: Finalize PR #116 stability and privacy improvements
- Hardened IPC with safety guards for all webContents.send calls
- Scrubbed sensitive absolute paths from caption logs
- Realigned Windows artifact naming logic
2026-03-27 23:14:12 +07:00
webadderall 658b15d3ca fix(stability): restore export and recording session compatibility 2026-03-27 23:58:08 +11:00
webadderall 7119346e4b fix(export): improve final compositor resampling 2026-03-27 23:34:39 +11:00
webadderall ffad684d54 fix(export): encode MP4 audio as AAC 2026-03-27 23:34:39 +11:00
Mahdy Arief 7d7b61b7f5 feat: add blur annotation and Whisper model selection for autocaption 2026-03-27 13:27:57 +07:00
webadderall b131bf8e0d fix(export): stream audio encoding for long exports 2026-03-23 18:00:00 +11:00
webadderall 549871816b feat: render captions in the export pipeline
Add canvas caption rendering during frame export, carry caption settings through GIF and MP4 export paths, and clean up muxer resources while exposing the saving phase in export progress.
2026-03-22 18:34:43 +11:00
webadderall 39a897d460 fix: cap MP4 export size and preview volume 2026-03-21 15:40:30 +11:00