Commit Graph
845 Commits
Author SHA1 Message Date
webadderall de57147eee Merge remote-tracking branch 'origin/main' into feat/settings-extensions
# Conflicts:
#	src/components/video-editor/ExtensionManager.tsx
#	src/components/video-editor/SettingsPanel.tsx
#	src/components/video-editor/TutorialHelp.tsx
#	src/components/video-editor/VideoEditor.tsx
#	src/components/video-editor/index.ts
#	src/components/video-editor/projectPersistence.ts
#	src/components/video-editor/timeline/TimelineEditor.tsx
#	src/components/video-editor/types.ts
#	src/i18n/locales/nl/launch.json
2026-04-17 13:58:36 +10:00
webadderall 98711aa3be Merge pull request #247 from webadderall/feat/export-pipeline
feat: add H.264 stream-copy export, overhaul exporter pipeline, rename native binaries
2026-04-17 13:48:40 +10:00
webadderall d855fd9a10 Merge remote-tracking branch 'origin/main' into feat/export-pipeline
# Conflicts:
#	electron/electron-env.d.ts
#	electron/ipc/handlers.ts
2026-04-17 13:47:15 +10:00
webadderall f6cd42bb05 Merge pull request #246 from webadderall/feat/ui-overhaul
feat: ui overhaul — Phosphor icons, redesigned launcher, editor layout, and component refresh
2026-04-17 13:36:28 +10:00
webadderall 9cf959b732 fix: clear annotation selection for zoom edits 2026-04-17 12:03:37 +10:00
webadderall 328c4d247b fix: finish remaining settings review items 2026-04-17 12:00:42 +10:00
webadderall 79d9855ef5 fix: address remaining CodeRabbit feedback 2026-04-17 11:56:31 +10:00
webadderall f046e1bda3 fix: stabilize editor settings and extension UI 2026-04-17 01:50:14 +10:00
webadderall 8b2e063912 fix: address remaining settings review feedback 2026-04-17 01:03:24 +10:00
webadderall 3da4ac1825 fix: address final export pipeline review follow-ups 2026-04-17 00:41:32 +10:00
webadderall f58bf90dfa fix: address remaining ui overhaul review feedback 2026-04-17 00:27:46 +10:00
webadderall e86e034ba4 fix: address remaining export pipeline review feedback 2026-04-17 00:17:54 +10:00
webadderall b03753f8e8 fix: address remaining ui overhaul review feedback 2026-04-16 23:39:27 +10:00
webadderall f2b13c8244 fix: address ui overhaul review feedback 2026-04-16 22:36:23 +10:00
webadderall e5dd20bf82 fix: address settings and extensions review feedback 2026-04-16 19:16:20 +10:00
webadderall 77af3e58f6 fix: address export pipeline review feedback 2026-04-16 18:49:01 +10:00
webadderall a84b83f91b 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 781cb4c38d feat: settings tab with language picker, extension fixes, and i18n expansion
- SettingsPanel: new 'settings' section — in-app language picker (all 5
  locales), auto-apply fresh recording zooms toggle, connect-neighboring-
  zooms toggle, keybinds shortcut into KeyboardShortcutsDialog
- VideoEditor: wire autoApplyFreshRecordingAutoZooms preference through to
  SettingsPanel; connect zoom settings into new section
- editorPreferences: add autoApplyFreshRecordingAutoZooms field; update tests
- extensionMarketplace: filter __MACOSX sidecar dirs when unzipping extensions
  uploaded from macOS Finder (fixes manifest-not-found on Finder zips)
- useExtensions: guard window.electronAPI for SSR safety; reformat to tabs
- I18nContext: expose setLocale; persist locale preference
- ShortcutsContext: shortcut registration improvements
- lib/extensions: renderHooks, extensionHost, fileUrls, cursorCoordinates
  updated for new extension capability surface
- i18n: expand extension locale strings across all 5 supported languages
2026-04-16 17:52:53 +10:00
webadderall 26f1ce2476 feat: add H.264 stream-copy export, overhaul exporter pipeline, rename native binaries
- IPC: new inputMode 'h264-stream' — browser VideoEncoder output stream-copied
  into MP4 via ffmpeg rather than piping raw RGBA frames, cuts memory usage
- Security: replace flat approvedLocalReadPaths with userApprovedPaths fed from
  dialog pickers and project load; isAllowedLocalReadPath uses it alongside
  dir prefix / existsSync checks
- nativeVideoExport: add buildNativeH264StreamExportArgs for stream-copy path
- frameRenderer / modernFrameRenderer: cursor-follow camera integration,
  annotation blur post-processing, shadow profile, squircle geometry
- audioEncoder / streamingDecoder / gifExporter / muxer: full pipeline
  hardening — drift correction, backpressure, proper teardown
- Rename native helpers openscreen-* → recordly-* on darwin-arm64 and
  darwin-x64; update helpers-manifest.json for win32-x64
- electron/main, windows, updater, rendererServer: startup and window
  lifecycle improvements
- preload: expose inputMode and new IPC surface to renderer
2026-04-16 17:51:41 +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