Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
382de78
feat: add Open Studio button, empty-state dropzone, and broad video i…
makaradam May 11, 2026
437f121
fix: show empty state instead of error when editor opens with no video
makaradam May 11, 2026
8c2d41c
fix: conditionally render editor workspace to prevent video load error
makaradam May 11, 2026
0e34bec
fix: register start-new-recording IPC handler and skip dialog with no…
makaradam May 11, 2026
a1c6045
fix: dark background with spinner for loading/error states in editor
makaradam May 11, 2026
413d433
fix: clear session on return-to-recorder and eliminate white flash
makaradam May 11, 2026
660dad9
fix: remove double-close of HUD in switch-to-editor handler
makaradam May 11, 2026
8e04013
fix: expand HUD window bounds to prevent CSS shadow clipping
makaradam May 11, 2026
52cd754
fix: eliminate black flash and bottom shadow clipping on HUD window
makaradam May 11, 2026
53a6b30
fix: use custom zoom scale for focus clamping in drag handler
makaradam May 11, 2026
9e7ffd8
feat: remove open-video-file button from HUD toolbar
makaradam May 11, 2026
8510cce
feat: remove load-project button from HUD toolbar
makaradam May 11, 2026
499c9ef
fix: prevent white flash on first editor window open
makaradam May 11, 2026
22cebec
fix: remove Import Video File from File menu; kill white flash with i…
makaradam May 11, 2026
1b71362
fix: eliminate white flash on editor open
makaradam May 11, 2026
3a9c3a3
feat: show "Loading editor..." vs "Loading video..." contextually
makaradam May 11, 2026
8a81e83
fix: prompt unsaved changes dialog for imported/recorded videos with …
makaradam May 11, 2026
8241e75
feat: show contextual unsaved-changes dialog for File > New Project
makaradam May 11, 2026
ab08513
fix: eliminate black rectangle flash before countdown overlay appears
makaradam May 11, 2026
cf64581
fix: fall back to web MediaRecorder when native Windows helper is mis…
makaradam May 11, 2026
7dd54a1
fix: use getUserMedia on all platforms instead of broken getDisplayMe…
makaradam May 11, 2026
c8f8742
fix: freeze dialog variant during close animation to prevent flash
makaradam May 11, 2026
f258786
fix: raise device selector panel above HUD toolbar
makaradam May 11, 2026
0ff83b7
fix: clear webcam state on new project and video import
makaradam May 11, 2026
800749e
fix: make drag-and-drop project file actually open the project
makaradam May 11, 2026
3d27efa
style: add more top padding to drag-and-drop hint on empty state
makaradam May 11, 2026
b6439ad
fix: show error dialog on unsupported or failed drag-and-drop
makaradam May 11, 2026
04c1280
fix: resolve double-dialog and drag-drop load failure
makaradam May 11, 2026
800f906
fix(electron): expose webUtils.getPathForFile and loadProjectFileFrom…
makaradam May 11, 2026
655cb05
fix(ipc): clear project path and recording session when starting a ne…
makaradam May 11, 2026
23f5fbe
feat(editor): rewrite EditorEmptyState — webUtils drag-drop, i18n, di…
makaradam May 11, 2026
8750d6f
feat(editor): unsaved changes guard for Load Project + New Project he…
makaradam May 11, 2026
5b8f718
feat(i18n): add Load Project unsaved-changes dialog strings — 11 lang…
makaradam May 11, 2026
4ec35e7
feat(i18n): add editor empty state strings — 11 languages
makaradam May 11, 2026
370323c
feat(i18n): add New Project label to settings strings — 11 languages
makaradam May 11, 2026
5c33435
fix(editor): reset all editor state when starting a new project
makaradam May 11, 2026
20ccf45
fix(ipc): make .openscreen extension check case-insensitive
makaradam May 11, 2026
f4a3dec
fix(i18n): strip UTF-8 BOM from all locale JSON files
makaradam May 11, 2026
d35b8f2
fix(electron): wrap webUtils.getPathForFile in try/catch in preload
makaradam May 11, 2026
e70d46e
fix(editor): wrap getPathForFile call in try/catch in drop handler
makaradam May 11, 2026
9e30232
fix(editor): use handleNewRecordingConfirm on fast-path new recording…
makaradam May 11, 2026
79a9b35
fix(recorder): turn off system audio toggle when capture fails
makaradam May 11, 2026
a6e91e3
docs(editor): add warning comment to clampFocusForRegion to prevent r…
makaradam May 11, 2026
47afc00
chore: start cursor capture mode investigation for web fallback path
makaradam May 11, 2026
fe7df35
feat(cursor): hide OS cursor + virtual overlay for editable-overlay r…
makaradam May 11, 2026
80104c0
fix(cursor): non-blocking restore + accurate Windows 10/11 Aero curso…
makaradam May 11, 2026
5be152b
fix(cursor): write PS1 scripts to temp file instead of passing via -C…
makaradam May 11, 2026
338e0bc
feat(cursor): Native OS / Custom dropdown + live cursor bitmap relay
makaradam May 12, 2026
1c55836
fix(cursor): I-beam visibility, taskbar z-order, and native-OS dropdo…
makaradam May 12, 2026
dee60a0
fix(cursor): replace LockBits chroma-key with ToBitmap(); add pointer…
makaradam May 12, 2026
222622a
fix(cursor): persist pointer type across frames; fix PIXI z-order ove…
makaradam May 12, 2026
cdd26c9
fix(cursor): eliminate overlay disappear, add arrow detection, fix PI…
makaradam May 12, 2026
8b98cf0
fix(cursor): use proper cursor SVGs in overlay; fix native-os mode fo…
makaradam May 12, 2026
6e7d657
fix: use Aero arrow SVG, add fallback for untyped cursors, fix HiDPI …
makaradam May 12, 2026
f8db6c3
chore: add Cursor=AeroDefault.svg asset
makaradam May 12, 2026
72837f4
fix: correct native cursor size, taskbar z-order, and disable smoothi…
makaradam May 12, 2026
70bab84
fix: render cursors at canonical SVG sizes; shrink arrow to 20×31
makaradam May 12, 2026
70a5086
fix: match native cursor size between editor preview and exported video
makaradam May 12, 2026
d60be3b
fix: unify arrow size with rest of cursor set; sync editor with helper
makaradam May 12, 2026
92f77c2
fix: native cursor size in preview + export; stop edge-of-screen flicker
makaradam May 12, 2026
46fdc6c
fix: stop native cursor flicker in editor playback (DOM layout thrash)
makaradam May 12, 2026
863ec2f
feat(cursor-overlay): force topmost via direct Win32 SetWindowPos (ko…
makaradam May 12, 2026
2caffb6
feat(cursor): detect & honor app-hidden OS cursor (fixes Figma double…
makaradam May 12, 2026
495373a
fix(build): mark koffi external in electron-main vite bundle
makaradam May 12, 2026
14aa28a
fix(win32-topmost): use intptr_t for HWND, not 32-bit long (silent fa…
makaradam May 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Force LF line endings for all source/config files so that git's
# core.autocrlf does not interfere with Biome's lineEnding: lf setting.
# Without this, core.autocrlf=true on Windows converts LF→CRLF on every
# checkout/stash restore, causing Biome's pre-commit check to fail even
# on files that were correctly formatted with LF before staging.

*.ts text eol=lf
*.tsx text eol=lf
*.mts text eol=lf
*.cts text eol=lf
*.js text eol=lf
*.jsx text eol=lf
*.mjs text eol=lf
*.cjs text eol=lf
*.json text eol=lf
*.md text eol=lf
*.css text eol=lf
*.html text eol=lf
*.svg text eol=lf
*.yaml text eol=lf
*.yml text eol=lf
*.sh text eol=lf
20 changes: 20 additions & 0 deletions electron/electron-env.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,17 @@ interface Window {
canceled?: boolean;
error?: string;
}>;
getPathForFile: (file: File) => string;
loadProjectFileFromPath: (filePath: string) => Promise<{
success: boolean;
path?: string;
project?: unknown;
message?: string;
canceled?: boolean;
error?: string;
}>;
onMenuNewProject: (callback: () => void) => () => void;
onMenuImportVideo: (callback: () => void) => () => void;
onMenuLoadProject: (callback: () => void) => () => void;
onMenuSaveProject: (callback: () => void) => () => void;
onMenuSaveProjectAs: (callback: () => void) => () => void;
Expand All @@ -187,6 +198,15 @@ interface Window {
onRequestSaveBeforeClose: (callback: () => Promise<boolean> | boolean) => () => void;
onRequestCloseConfirm: (callback: () => void) => () => void;
sendCloseConfirmResponse: (choice: "save" | "discard" | "cancel") => void;
onCursorTypeChange: (
callback: (
cursorType: import("../src/native/contracts").NativeCursorType | null,
asset:
| import("./native-bridge/cursor/recording/windowsNativeRecordingSession.types").CursorOverlayAsset
| null,
osCursorHidden: boolean,
) => void,
) => () => void;
setLocale: (locale: string) => Promise<void>;
saveDiagnostic: (payload: {
error: string;
Expand Down
Loading
Loading