Commit Graph
828 Commits
Author SHA1 Message Date
webadderall 290db18e6e fix: address timeline editor review feedback 2026-04-16 19:34:02 +10:00
webadderall 949b9381f6 feat: overhaul timeline drag/resize, zoom playback, and recording hooks
- TimelineEditor: rewrite drag/resize with neighbour clamping — items cannot
  overlap; drag preserves original duration; resize clamps to adjacent item
  boundaries instead of rejecting; floating drag/resize tooltip via direct
  DOM (no re-renders)
- TimelineWrapper: new wrapper component for cleaner TimelineContext wiring
- Track: extract Track component with empty-row hint slot
- AudioWaveform, Row, Subrow, KeyframeMarkers, Timeline.module.css: dark
  theme timeline overhaul
- zoomSuggestionUtils: smarter auto-zoom region suggestion from cursor telemetry
- videoPlayback (zoom): fix zoomRegionUtils edge cases at timeline bounds;
  rework zoomTransform for cursor-follow camera
- videoPlayback (cursor): cursorFollowCamera, cursorSway, cursorLoopTelemetry,
  cursorViewport — new cursor motion and snapping pipeline
- videoPlayback (layout): layoutUtils, overlayUtils, focusUtils, motionSmoothing
- useScreenRecorder: hardened recording lifecycle, pause segment tracking,
  improved WGC and SCK integration
- useVideoDevices / useMicrophoneDevices / useAudioLevelMeter improvements
2026-04-16 17:53:51 +10:00
webadderall 0111d634ec Update EXTENSIONS.md 2026-04-15 20:55:56 +10:00
webadderall 8999cf5405 fix: allow local export media files v1.1.23 2026-04-15 18:02:46 +10:00
webadderall abda1e05e1 fix: hotfix export regressions 2026-04-15 17:19:49 +10:00
webadderall 1d7619fec6 chore: apply low-risk lint cleanup 2026-04-15 14:59:02 +10:00
webadderall ad2eb59440 docs: sync Chinese README with English version 2026-04-15 14:42:43 +10:00
webadderall c37472c9d6 fix(export): remove output path restriction v1.1.22 2026-04-14 22:28:30 +10:00
webadderall 7a954e8942 Merge pull request #228 from Wing900/fix/silent-mp4-exports
Fix silent MP4 exports with FFmpeg audio fallback
2026-04-13 20:38:45 +10:00
webadderall b6323f82f1 Merge pull request #224 from afostr/feature/preserve-hud-position
fix(hud): preserve user-dragged position across recording state changes
2026-04-13 20:37:26 +10:00
Wing900 63f8ff27ae Fix silent MP4 exports with FFmpeg audio fallback 2026-04-12 20:55:34 +08:00
webadderall d1829d9f30 Add Francesco to the list of supporters 2026-04-12 20:37:34 +10:00
webadderall 845faaf3fd Update README.md 2026-04-12 20:34:58 +10:00
webadderall a671f31e0f Update README.md 2026-04-12 20:14:09 +10:00
webadderall 2becacd1fc Update README for new video
Refactor README to enhance clarity and encourage contributions.
2026-04-12 20:11:55 +10:00
webadderall 5112847309 Add files via upload 2026-04-12 19:43:18 +10:00
webadderall a3eb3c1ddc chore: bump version to 1.1.21 v1.1.21 2026-04-12 18:08:30 +10:00
webadderall 8396b89d60 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 20f42d3fca fix(audio): add browser microphone fallback for macOS < 14
On macOS versions before Sonoma (14.0), SCStreamConfiguration does not
support the captureMicrophone/microphoneCaptureDeviceID selectors. The
native helper was throwing a fatal error, blocking recording entirely
when microphone was enabled.

Now the Swift helper logs MICROPHONE_CAPTURE_UNAVAILABLE and continues
capture without microphone. The Node handler detects this signal and
returns microphoneFallbackRequired to the renderer, which starts a
browser-side MediaRecorder capturing the mic via getUserMedia. On stop,
the audio blob is saved as a .mic.webm sidecar alongside the native
recording, where the existing companion audio detection picks it up.

Fixes: 'Native microphone capture is unavailable on this macOS/Xcode
runtime' error on older macOS versions.
2026-04-12 16:59:06 +10:00
webadderall 1764607ef0 Merge pull request #163 from longmaba/feat/webcam-preview-floating-overlay
feat(launch): add draggable floating webcam preview overlay
2026-04-12 13:13:13 +10:00
Long 070c44983f Merge main into feature branch and resolve LaunchWindow conflict.
Keep the floating webcam preview container and pointer-drag behavior while integrating latest main changes.

Made-with: Cursor
2026-04-12 00:57:52 +07: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
webadderall 3a11981bc2 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 c84ab6d931 feat(editor): wire extension lifecycle and update docs
- Connect extension activation/deactivation in VideoEditor
- Update CONTRIBUTING.md and README.md with extension development info
2026-04-12 01:38:36 +10:00
webadderall 5bef938dc1 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 cf09dc9111 fix(playback): improve cursor rendering and layout calculations
- Refine cursor telemetry loop with extension coordinate support
- Improve DPI-aware cursor rendering pipeline
- Extend layout utilities for extension-driven scene transforms
2026-04-12 01:37:28 +10:00
webadderall 072ca8a014 refactor(timeline): extract zoom suggestion logic into standalone utility
- Move zoom suggestion computation out of TimelineEditor into zoomSuggestionUtils
- Simplify TimelineEditor by delegating zoom calculations
2026-04-12 01:37:28 +10:00
webadderall 6af018ec01 feat(extensions): integrate extension hooks into editor playback and settings
- Wire render hooks and cursor effects into VideoPlayback canvas pipeline
- Add extension settings panels to SettingsPanel
- Persist extension-related editor preferences and project state
2026-04-12 01:37:28 +10:00
webadderall 983a08758c security: restrict read-local-file and open-external-url IPC handlers
- read-local-file: whitelist to RECORDINGS_DIR, USER_DATA_PATH, asset root, and temp only
- open-external-url: reject non-http/https protocols (blocks file://, javascript:, etc.)

Prevents malicious renderer code from reading arbitrary files (SSH keys,
credentials) or opening dangerous URLs via shell.openExternal.
2026-04-12 01:37:28 +10:00
webadderall 18d5a091f8 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 7e1cef7493 fix(export): render blur annotations in modern pipeline 2026-04-11 21:40:37 +10:00
webadderall e222e6bf0f Merge pull request #210 from mahdyarief/feat/blur-annotation
feat(blur): implement blur annotation support
2026-04-11 20:21:28 +10:00
webadderall b751c43599 chore(audio): clean up probeMediaDurationSeconds after #216
- Remove dead time= progress matching (no decode pass = no progress output)
- Remove stale comments about ffmpeg success/fallback behavior
- Lower timeout from 30s to 5s (header read is near-instant)
- Drop maxBuffer override (minimal stderr output now)
- Add -hide_banner to reduce stderr noise
2026-04-11 16:20:12 +10:00
Mahdy Arief 309156e25f feat(editor): enhance blur annotations with custom intensity, censorship color, and rounded corners 2026-04-11 08:06:45 +07:00
Mahdy Arief b5d74e9061 fix(annotations): robust blurIntensity normalization and initialization 2026-04-11 07:44:01 +07:00
Mahdy Arief 97b7b2e83d fix(annotations): preserve blur type and intensity on reload 2026-04-11 07:39:36 +07:00
Mahdy Arief d8e4eb919a fix(video-editor): wrap blur case in block for lexical scope 2026-04-11 07:39:35 +07:00
Mahdy Arief 205cae8d96 feat(editor): standardize blur strength, localize help text, and optimize export performance 2026-04-11 07:39:35 +07:00
Mahdy Arief c162346ceb feat(blur): implement video blur annotation support 2026-04-11 07:39:35 +07:00
Long 9b8a341a26 fix HUD bar drag uses document events instead of pointer capture. 2026-04-11 02:05:35 +07:00
Long 8f919a7ad2 fix Outside-click handler attached to full-viewport wrapper. 2026-04-11 01:56:52 +07:00
Long a000c6921e reformat 2026-04-11 01:26:50 +07:00
Long 77de9ed67c fix an issue where the webcam preview following the hud movement 2026-04-11 01:01:41 +07:00
Mohamed 1892c03f69 fix(audio): drop null muxer from probe to restore duration parsing
- Remove -f null - from probeMediaDurationSeconds() ffmpeg args
  so the command always exits non-zero (no output file specified)
- Without -f null -, ffmpeg exits code 1 and stderr lands in the
  catch block where Duration is parsed, fixing the bug where
  duration returned 0 on valid recordings
- probeMediaDurationSeconds returning 0 caused the
  videoDuration > 0 gate to skip all audio sync correction,
  leaving system audio misaligned in the final recording
2026-04-10 19:33:26 +02:00
webadderall 29c8df8353 fix: preserve clip duration during drag & scope collision detection per row
- Add rowId to allRegionSpans so collision detection only considers
  siblings on the same timeline row
- Split clampToNeighbours into clampResizedSpanToNeighbours and
  clampDraggedSpanToNeighbours for resize vs drag semantics
- Preserve original clip duration on drag (pure translation) to prevent
  pixel-to-ms rounding drift at different zoom levels
2026-04-10 22:18:13 +10:00
webadderall a68772ad2a test: update spring convergence threshold for higher-accuracy velocity
The analytical velocity fix makes the spring settle more precisely,
slightly increasing frame count to convergence. Relax threshold
from 120 to 400 frames.
2026-04-10 20:51:22 +10:00
webadderall 2689391d31 fix: eliminate zoom spring overshoot wobble
Use analytical velocity (closed-form derivative) instead of frame-to-frame
finite differences for spring state propagation. Add overshoot clamp for
overdamped springs (ζ ≥ 1) to prevent counter-oscillation when the zoom
easing target reverses direction mid-animation.
2026-04-10 20:51:22 +10:00
webadderall 88debe9ad3 chore: remove release notes from repo 2026-04-10 20:51:22 +10:00