webadderall
e55923880f
fix: clean up ipc edge cases
2026-04-17 21:25:13 +10:00
webadderall
28dd8bffae
fix: address ipc review follow-ups
2026-04-17 21:11:58 +10:00
webadderall
d71747b315
fix: revert overly strict isAllowedLocalReadPath to OR logic
...
The AND gate broke access to user-selected files outside the allowlist
(wallpapers, user videos, etc). Keep isPathInsideDirectory normalization fix,
revert the existsSync AND guard back to the original OR behavior.
2026-04-17 20:56:50 +10:00
webadderall
10c86f40b6
fix: address CodeRabbit review feedback
...
- Remove dead helperExists local in recording/windows.ts
- Hoist fs/promises import out of close handler in recording/ffmpeg.ts
- Guard fs.readdir with mkdir in recording/prune.ts (ENOENT resilience)
- Derive companion audio suffixes from COMPANION_AUDIO_LAYOUTS in prune.ts
- Guard mousemove hook registration to Linux only in cursor/interaction.ts
- Replace dynamic require('electron') with static import in cursor/monitor.ts
- Wrap nodeRequire in try/catch in ffmpeg/binary.ts for fallback safety
- Fix hardcoded timeOffsetMs: 0 in project/session.ts (use normalizer)
- Fix isPathInsideDirectory to normalize candidatePath in project/manager.ts
- Fix isAllowedLocalReadPath security: require path to be in allowlist (AND not OR)
- Derive extension regex from constants in project/manager.ts
- Consolidate duplicate Duration parsers in recording/diagnostics.ts
- Refactor ensureReadableFile to use options object instead of description string
- Make swiftc compilation async (execFile) in paths/binaries.ts
- Add socket timeout to httpsGet in captions/whisper.ts
2026-04-17 20:35:08 +10:00
webadderall
8bef9ac050
refactor: extract registerIpcHandlers into 8 focused register/ modules
...
handlers.ts reduced from 2930 → 65 lines (pure delegation).
New files under electron/ipc/register/:
- sources.ts — get-sources, select-source, show-source-highlight, open-source-selector
- recording.ts — start/stop/pause native + ffmpeg, mux, store, set-recording-state, get-cursor-telemetry
- permissions.ts — accessibility/screen permissions, open-external-url
- assets.ts — wallpaper thumbnails, asset-base-path, list-asset-dir, read-local-file
- export.ts — native-video-export-*, save-exported-video
- captions.ts — whisper model, file pickers, generate-auto-captions
- project.ts — project files, recordings dir, video/session state, delete-recording
- settings.ts — shortcuts, recording prefs, countdown, platform info
Also moved shared helpers:
- getMacPrivacySettingsUrl, approveUserPath → utils.ts
- isTrustedProjectPath → project/manager.ts
2026-04-17 20:13:47 +10:00
webadderall
d9f40571a6
refactor: split handlers.ts into focused sub-modules
...
handlers.ts was ~5967 lines. Extracted into 22 focused modules:
- ipc/types.ts — shared TypeScript interfaces and types
- ipc/constants.ts — module-level constants
- ipc/state.ts — all mutable state with typed setters
- ipc/utils.ts — shared low-level utilities (getScreen, normalizePath, etc.)
- ipc/ffmpeg/binary.ts — ffmpeg binary resolution
- ipc/ffmpeg/filters.ts — audio sync/filter builders
- ipc/captions/parser.ts — SRT/Whisper JSON parsers
- ipc/captions/whisper.ts — Whisper model download/status
- ipc/captions/generate.ts — auto-caption generation
- ipc/paths/binaries.ts — native binary path resolution
- ipc/cursor/monitor.ts — cursor monitor process management
- ipc/cursor/telemetry.ts — cursor sampling and telemetry
- ipc/cursor/bounds.ts — window bounds capture and resolution
- ipc/cursor/interaction.ts — mouse hook and interaction capture
- ipc/recording/events.ts — recording lifecycle events
- ipc/recording/diagnostics.ts — media validation and diagnostics
- ipc/recording/prune.ts — auto-recording cleanup
- ipc/recording/ffmpeg.ts — FFmpeg screen capture
- ipc/recording/windows.ts — Windows native capture (WGC)
- ipc/recording/mac.ts — Mac ScreenCaptureKit integration
- ipc/export/native-video.ts — native video export sessions
- ipc/project/session.ts — recording session manifests
- ipc/project/manager.ts — project library and file management
handlers.ts reduced from 5967 → 2930 lines (registerIpcHandlers + helpers only)
2026-04-17 19:57:26 +10:00
webadderall
fc9b34f8ea
fix(timeline): restore clip marker indent lines, major ticker dots, and hover-only end caps
2026-04-17 14:52:37 +10:00
webadderall
ec49da8d90
Merge pull request #249 from webadderall/feat/settings-extensions
...
feat: settings tab with language picker, extension fixes, and i18n expansion
2026-04-17 14:09:51 +10:00
webadderall
16c6204af2
Merge remote-tracking branch 'origin/main' into feat/settings-extensions
...
# Conflicts:
# src/components/video-editor/timeline/TimelineEditor.tsx
2026-04-17 14:07:46 +10:00
webadderall
8f7c675a78
Merge pull request #248 from webadderall/feat/timeline-editor
...
feat: overhaul timeline drag/resize, zoom playback, and recording hooks
2026-04-17 14:00:20 +10:00
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
c35bc85463
Merge remote-tracking branch 'origin/main' into feat/timeline-editor
...
# Conflicts:
# src/components/video-editor/timeline/Item.tsx
# src/components/video-editor/timeline/TimelineEditor.tsx
2026-04-17 13:54:19 +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
923a443f2d
fix: address remaining zoom timing review feedback
2026-04-17 00:47:30 +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
63bfa13a05
fix: address remaining timeline review feedback
2026-04-17 00:23:52 +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
290db18e6e
fix: address timeline editor review feedback
2026-04-16 19:34:02 +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
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
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