Rene Zander
55d4e52d86
fix: address CodeRabbit review feedback on import/export
...
- projects/page.tsx: add aria-label="Import project" to the import
button so screen readers have a name when the visible label is
hidden on small screens.
- project-manager.ts: tighten import schema validation — accept only
formatVersion === SUPPORTED_FORMAT_VERSION (1), reject non-string
metadata.id/name (previously a numeric value passed the truthy
check), require non-empty trimmed strings, and reject arrays/null
payloads. Constant shared with the export path.
- storage/service.ts: await ensureMigrations() at the top of
importProjectFromJSON so an import can't race with the memoized
migration run and land in a half-migrated store.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 06:49:34 +00:00
Rene Zander
e35635db4f
feat: add project export/import for cross-device transfers
...
Add the ability to export projects as .opencut JSON files and import them
on another device. Export is available from the project context menu and
dropdown menu. Import is available via a button in the projects header.
The export format includes a version field for future compatibility.
Imported projects receive a new ID to avoid collisions.
2026-04-13 10:26:51 +00:00
Maze Winther
cbd1b82123
refactor: structured track layout per scene
2026-04-07 04:41:27 +02:00
Maze Winther
4f7d401a97
style: compact dropdown and context menu styling
2026-04-07 01:55:21 +02:00
Maze Winther
30709d7134
fix: fix timeline width calculation for tick-based time
2026-04-07 01:45:52 +02:00
Maze Winther
93a0afdf64
fix: use line-height-based bounds for text elements
2026-04-07 01:39:35 +02:00
Maze Winther
b8979c65d4
feat: select element on insert
2026-04-07 01:20:07 +02:00
Maze Winther
f47e85c3bb
fix: respect scale lock when editing keyframed scale
2026-04-07 01:19:46 +02:00
Maze Winther
e43b859439
fix: place new overlay tracks at the top of the timeline
2026-04-07 01:18:57 +02:00
Maze Winther
e4b67094e7
refactor: split effects and masks into dedicated rust crates, introduce MediaTime and FrameRate
2026-04-07 01:09:13 +02:00
Maze Winther
79df736431
fix: clean up graph editor
2026-04-06 13:15:50 +02:00
Maze Winther
c411edb7c1
fix: clean up
2026-04-06 12:59:07 +02:00
Maze Winther
2776adaae1
fix: whitespace
2026-04-06 12:42:46 +02:00
Maze Winther
964ac82d5e
refactor: split presets into data definitions and storage store
2026-04-06 12:40:47 +02:00
Maze Winther
05243616ea
refactor: use useShiftKey hook in bezier graph
2026-04-06 01:51:09 +02:00
Maze Winther
ccd552a1c0
chore: addition to last merge
2026-04-06 01:24:09 +02:00
Maze Winther
fcc09e80e2
Merge branch 'temp'
2026-04-06 01:23:47 +02:00
Maze
dedb13546a
feat: graphs popover
2026-04-06 01:13:14 +02:00
Maze Winther
c56d6f8188
fix: preserve negative start times during timeline drag
2026-04-06 00:57:54 +02:00
Maze Winther
44d8c4c876
refactor: unify element updates into pipeline and centralize ripple
2026-04-06 00:02:23 +02:00
Maze Winther
20235d0724
chore: remove comment
2026-04-05 19:04:39 +02:00
Maze
0997466331
fix: subscribe to playback time so keyframe button updates on frame change
...
Made-with: Cursor
2026-04-05 13:37:29 +02:00
Maze
1bd9fac203
refactor: rewrite animation system to use bindings and scalar channels
2026-04-05 13:15:58 +02:00
Maze
69da5bee0c
style: tabs
2026-04-04 11:59:04 +02:00
Maze
cb99925d75
refactor: swap out manual tabs withthe shared tabs component in stickers
2026-04-04 11:58:55 +02:00
Maze
78c6c497f1
chore: remove transcription envs
2026-04-04 08:53:10 +02:00
Maze Winther
22725f71fa
chore: update opencut-wasm to 0.1.3
2026-04-03 03:37:41 +02:00
Maze Winther
1a8a1e889a
refactor: update command execute methods to return CommandResult | undefined
2026-04-03 03:13:49 +02:00
Maze Winther
3516bd69f4
fix: use published opencut-wasm package
2026-04-01 21:30:26 +02:00
Maze Winther
bd9ec023ee
refactor: split constants by domain and isolate timeline panel from core
2026-04-01 19:27:49 +02:00
Maze Winther
f4b9f40ab1
fix: update tooltip text for graph editor button
2026-04-01 18:17:23 +02:00
Maze Winther
93cc5d50f3
fix: don't crash when GPU isn't available
2026-04-01 18:13:27 +02:00
Maze Winther
8a1d37cf3e
fix: align background blur with effect blur intensity scale
2026-04-01 15:15:41 +02:00
Maze Winther
e579ae1202
feat: migrate GPU renderer from WebGL to wgpu/WASM
2026-04-01 13:57:32 +02:00
Maze Winther
b048b739bd
Merge branch 'refactor-selection-commands'
2026-03-31 23:40:59 +02:00
Maze Winther
dc82826951
refactor: move track pruning into a post-command reactor
2026-03-31 23:39:43 +02:00
Maze Winther
608dc1a62f
Merge branch 'feature/separate-audio'
2026-03-31 23:24:33 +02:00
Maze Winther
f1d5932c54
feat: separate audio from elements
2026-03-31 23:23:36 +02:00
Maze Winther
cc150c7cfb
Merge branch 'refactor-selection-commands'
2026-03-31 22:54:06 +02:00
Maze Winther
f8fb238b22
feat: centralize selection management
2026-03-31 22:53:16 +02:00
Maze Winther
0488a6be45
fix: normalize vertical drag direction in preferIndex placement
2026-03-31 22:38:56 +02:00
Maze Winther
154b78c7d1
fix: allow timeline paste and duplicate commands to reassign updated tracks
2026-03-31 18:47:45 +02:00
Maze Winther
d23be079cc
Merge branch 'feature/track-placement'
2026-03-31 15:53:23 +02:00
Maze Winther
70a6d58b84
refactor: centralize track placement into its own module
2026-03-31 15:47:30 +02:00
Maze Winther
dcf54c1250
feat: migrate time utilities from typescript to rust WASM
2026-03-31 04:03:52 +02:00
Maze Winther
5cc6abc3a4
style: swap ripple icon
2026-03-29 22:31:26 +02:00
Maze Winther
77a14b1023
refactor: standardize icon component props
2026-03-29 22:30:11 +02:00
Maze Winther
1c3b22edec
feat: add keyframe graphs button
2026-03-29 21:48:33 +02:00
Maze Winther
41562baeb5
style: remove unnecessary margin from keyframe
2026-03-29 21:48:08 +02:00
Maze Winther
df207e0f83
refactor: name magic numbers and rename el in landing handlebars
2026-03-29 21:18:07 +02:00