Commit Graph
419 Commits
Author SHA1 Message Date
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 431ee5ff92 fix(annotations): robust blurIntensity normalization and initialization 2026-04-11 07:44:01 +07:00
Mahdy Arief fc1b751395 fix(annotations): preserve blur type and intensity on reload 2026-04-11 07:39:36 +07:00
Mahdy Arief 06734745ab fix(video-editor): wrap blur case in block for lexical scope 2026-04-11 07:39:35 +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
webadderall d5a17d396b 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 fa2eac7d2d 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 ea1633bd0b 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
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 d8e57f7600 fix(whisper): reset download state on model deletion failure
When deleting the Whisper model failed, the frontend kept stale state
(whisperModelDownloadStatus stayed as 'downloaded'), which blocked
re-downloading because the download handler saw the model as already
present. On the backend, no progress event was sent on failure, leaving
the renderer out of sync.

Frontend: reset whisperModelDownloadStatus and progress to idle on
delete failure so re-download is unblocked.
Backend: verify whether the file was actually removed despite the error
and send appropriate progress events in either case.

Closes #152
2026-04-09 23:27:14 +10:00
webadderall 68999b1605 fix(timeline): prevent clip regions from overlapping during drag/resize
The hasOverlap function in TimelineEditor checked zoom, trim, speed, and
audio regions for overlap but was missing clip regions entirely. This
caused clips to freely overlap each other when dragged or resized,
leading to playback bugs when trimmed clips intersected.

Add clip region overlap detection so the existing clampToNeighbours
logic in TimelineWrapper correctly constrains clip boundaries.

Closes #166
2026-04-09 23:25:00 +10:00
webadderall 6703e6fb63 fix(settings): restore user preferences after loading project on startup
When loading a saved project on startup, applyLoadedProject() overwrites
all editor state — including user preference settings like padding,
aspect ratio, and export format — with potentially stale project values.
The subsequent save effect then writes those stale values back to
localStorage, effectively erasing the user's latest preferences.

Now re-applies preference-level settings from localStorage after project
load so that per-user settings (padding, border radius, aspect ratio,
export format/quality/encoding, gif settings) survive across sessions.

Fixes #197
2026-04-09 21:24:19 +10: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 6184af2689 Merge pull request #198 from gillesserrien/feat/i18n-nl
feat(i18n): add Dutch (nl) locale
2026-04-09 17:01:52 +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
Gilles Serrien 533f6bc3d8 fix(i18n): phrasing 2026-04-08 23:56:40 +02:00
Gilles Serrien a8439e9bf8 fix(i18n): remove extra keys from nl locale 2026-04-08 20:56:51 +02:00
Gilles Serrien a2ac46f416 feat(i18n): add Dutch (nl) locale 2026-04-08 20:51:10 +02: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 6a851bf703 test(zoom): add 50 zoom animation unit tests
Cover spring solver, cursor follow camera, edge snap focus,
zoom region utilities, and motion smoothing edge cases.
2026-04-08 22:19:27 +10:00
webadderall e32bc9fea6 feat(zoom): merge nearby auto zoom suggestions within 1.5s
Suggested zoom regions with gaps <= 1500ms are merged into single
contiguous spans before being added to the timeline.
2026-04-08 22:00:28 +10:00
webadderall e670956e42 fix(export): audio encoder reliability and gif exporter compat 2026-04-08 22:00:23 +10:00
webadderall 8f6f1d3d68 feat(zoom): add mode switcher and smoothness slider to zoom UI
Add auto/manual pill-button mode switcher in zoom region detail.
Move Zoom Smoothness slider from cursor section to zoom section.
2026-04-08 22:00:16 +10:00
webadderall 8daa804ff5 fix(zoom): hide focus overlay for auto zoom regions
Auto zoom regions use cursor follow, so the blue draggable focus
boundary is hidden and pointer events disabled.
2026-04-08 22:00:07 +10:00
webadderall aeac1099ef feat(zoom): tag zoom regions as auto or manual in VideoEditor
handleZoomSuggested creates regions with mode: 'auto',
handleZoomAdded creates regions with mode: 'manual'.
Wire zoomSmoothness state and mode change handler.
2026-04-08 22:00:00 +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 8edfc7685e feat(zoom): integrate spring animation and cursor follow in preview
Add spring state for scale/x/y, cursor follow camera state.
Auto zoom regions use cursor-follow focus with edge snapping.
2026-04-08 21:43:18 +10:00
webadderall 073649591d feat(zoom): tune zoom timing constants
ZOOM_IN_TRANSITION_WINDOW_MS reduced to 0.7x for 800ms delay.
CHAINED_ZOOM_PAN_GAP_MS = 1350, CONNECTED_ZOOM_PAN_DURATION_MS = 1000.
ZOOM_OUT_EARLY_START_MS = 150.
2026-04-08 21:43:10 +10:00
webadderall 34bc473479 feat(zoom): add cursor follow camera with edge snap focus
Cursor follow camera tracks cursor position for auto zoom regions
with edge snapping and zoom-out freeze. Edge snap focus remaps cursor
to clamp near screen boundaries.
2026-04-08 21:43:03 +10:00
webadderall 76143731e3 feat(zoom): inline damped harmonic oscillator spring solver
Replace motion library spring() with custom solver supporting
configurable smoothness. Add getZoomSpringConfig and getCursorSpringConfig.
2026-04-08 21:42:54 +10:00
webadderall 6b58074c85 feat(zoom): add auto/manual zoom mode type and default auto zoom depth 2026-04-08 21:42:44 +10:00
webadderall aa3018ea1e fix(i18n): add Korean label to locale switchers
Add ko: '한국어' to LOCALE_LABELS in LaunchWindow and VideoEditor so the language switcher shows the native name instead of falling back to the raw code.
2026-04-08 19:46:43 +10:00
webadderall 743ddd1009 Merge pull request #175 from rofeels/feat/i18n-ko
feat(i18n): add Korean (ko) locale
2026-04-08 19:31:01 +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 1e56c2d139 revert(recording): remove editor finalization phase 2026-04-04 22:26:25 +11:00
webadderall 22ec58e48a fix(recording): improve post-capture handoff 2026-04-04 22:14:15 +11:00
webadderall 5fd49fbf0f fix(audio): reduce recording and export drift 2026-04-04 21:53:25 +11:00
webadderall dbe1eb314c Merge pull request #167 from TARO-gh/fix/floating-toolbar-drag-drift
fix(windows): stabilize HUD drag by locking bounds size during move
2026-04-04 16:12:45 +11:00
munbbok 0249c3f36e feat(i18n): add Korean (ko) locale
Add complete Korean translation across all 7 namespaces:
common, launch, editor, timeline, settings, dialogs, shortcuts.

All 403 translation keys covered. Passes npm run i18n:check.
2026-04-04 12:08:39 +09:00
webadderall dfcbb89470 drop unused export dialog 2026-04-04 13:08:05 +11:00
webadderall 9f864bbbfc integrate modern export flow in editor 2026-04-04 13:08:05 +11:00
webadderall 9538168597 export tutorial help link helpers 2026-04-04 13:08:05 +11:00
webadderall 736e8e683b expand export settings menu 2026-04-04 13:08:05 +11:00
webadderall eb31ef623d localize export fps settings 2026-04-04 13:08:05 +11:00