Maze Winther
36efdf66e7
feat: expandable keyframe lanes in timeline
...
Made-with: Cursor
2026-04-13 05:08:29 +02:00
Maze Winther
2272598d42
feat: clipboard with keyframe paste
...
Made-with: Cursor
2026-04-13 05:03:10 +02:00
Maze Winther
5a2aaf3601
feat: cinematic bars, diamond, heart, and star masks
...
Made-with: Cursor
2026-04-13 05:01:51 +02:00
Maze Winther
108d3f4eca
feat: position animated independently per axis
...
Made-with: Cursor
2026-04-13 05:01:51 +02:00
Maze Winther
0d0d737563
fix: one more
2026-04-13 05:01:51 +02:00
Maze Winther
f06a930fc1
fix: convert media asset duration to ticks on insert
2026-04-13 05:01:51 +02:00
Maze Winther
d422b602c9
fix: clicking a selected element collapses multi-selection
2026-04-13 05:00:19 +02: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
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
1a8a1e889a
refactor: update command execute methods to return CommandResult | undefined
2026-04-03 03:13:49 +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
Maze Winther
dc5956900e
fix: eliminate first-paint flicker in landing handlebars
2026-03-29 20:45:48 +02:00
Maze Winther
b095862cc0
fix: improve DATABASE_URL validation in web environment schema
2026-03-29 18:58:35 +02:00
Maze Winther
5a1d9ef3f4
chore: remove unused middleware file
2026-03-29 18:30:16 +02:00
Rayan Salhab
eb66e03f0e
fix(security): replace new Function() with safe math expression parser ( #753 )
...
* fix(security): replace new Function() with safe math expression parser
Replace the dangerous new Function() constructor in evaluateMathExpression()
with a recursive descent parser that safely evaluates basic arithmetic
expressions.
The Function constructor is a security anti-pattern that could enable
arbitrary code execution if the validation regex is ever bypassed or
relaxed. The new parser:
- Only supports numbers, +, -, *, /, parentheses, and whitespace
- Has no eval-like functionality that could execute arbitrary code
- Maintains backward compatibility with existing expressions
- Handles operator precedence and parentheses correctly
Fixes #725
* Apply suggestion from @coderabbitai[bot]
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
---------
Co-authored-by: Maze <167211895+mazeincoding@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2026-03-29 18:27:05 +02:00
Maze Winther
220ec757d4
refactor: move packages sub-folders into web app
2026-03-29 15:58:46 +02:00
Maze Winther
585e28d49b
feat: add published status to changelog entries
2026-03-29 15:58:46 +02:00
Maze Winther
c34e01c63e
refactor: clean up number formatting and step handling in property tabs
2026-03-29 15:58:46 +02:00
Maze Winther
3e75852ffe
chore: remove dead songs tab
2026-03-29 15:58:46 +02:00
Maze Winther
f8a0390827
chore: rename proxy to middleware
2026-03-29 15:58:46 +02:00
Maze Winther
4d127a038b
chore: normalize line endings
2026-03-29 15:56:48 +02:00
Maze Winther
722dcdd88f
fix: resolve typescript/lint errors
2026-03-29 15:49:30 +02:00
Maze Winther
8db3bead13
feat: masks, properties refactor, shaders, storage migrations, and more
2026-03-29 15:48:22 +02:00
Maze Winther
b09635064a
fix: assets having unreasonable widths and heights
2026-03-29 15:41:10 +02:00
kcfancher
63496d05a2
Fix transcription sample-rate handling ( #740 )
...
Fix for #703 .
Adds an optional sampleRate parameter to the decodeAudioToFloat32() function. The caption transcriber passes in a value of 16000 to prepare audio in the format Whisper expects.
2026-03-28 19:06:40 +01:00
Maze Winther
f2eed05d36
fix blog build when marble cms isn't available
2026-03-24 14:18:39 +01:00
Maze Winther
26d523ebad
fix: fallback to opus codec
2026-03-09 00:10:31 +01:00
Maze Winther
0be9275a2d
dialog: decrease gap
2026-03-04 17:18:28 +01:00
Maze Winther
a2d08719f9
refactor: remove foreground variant from button, make it default
2026-03-04 17:16:01 +01:00
Maze Winther
ca3e5c98e6
add context menu (w/ brand options) to header logo
...
allows downloading brand assets directly from the logo in the header
2026-03-04 17:11:32 +01:00
Maze Winther
5ca2de25c6
fix: auto scroll on link
2026-03-04 16:53:04 +01:00
Maze Winther
ed8815c755
checker pattern for brand asset cards (branding page)
2026-03-04 16:45:03 +01:00
Maze Winther
24dac1232c
rename branding page to brand
2026-03-04 02:56:08 +01:00
Maze Winther
46e55674de
feat: branding page
2026-03-04 01:48:39 +01:00
Maze Winther
31dc78637f
fix: outline button styling
2026-03-03 14:39:17 +01:00
Maze Winther
705faea56f
feat: add changelog link to footer
2026-03-03 14:24:04 +01:00
Maze Winther
21f12ff763
button color
2026-03-03 14:22:14 +01:00
Maze Winther
719e0d4398
fix: invert logos in /sponsors when dark mode
2026-03-03 07:01:17 +01:00
Maze Winther
df518cbf4e
close effects after last effect removal + spacing
2026-03-02 21:00:28 +01:00
Maze Winther
5216f4398f
changelog open graph image
2026-03-02 18:37:04 +01:00
Maze Winther
a87b344ba5
Merge branch 'dev'
2026-03-02 17:48:39 +01:00
Maze Winther
a635ae9e14
fix inconsistency in blur intensity
2026-03-02 17:43:42 +01:00
Maze Winther
88bf59d6b4
fix effects button in light mode
2026-03-02 17:42:11 +01:00
Maze Winther
d62eb6aa9e
Merge branch 'main' of https://github.com/OpenCut-app/OpenCut
2026-03-02 17:33:01 +01:00
Maze Winther
fbb00cf9cc
style: hover of copy markdown button
2026-03-02 17:29:43 +01:00
Maze Winther
c7a00b6af1
feat: copy changelog release as markdown
2026-03-02 17:03:23 +01:00
Maze Winther
9b6a1f7973
disable react-scan in prod
2026-03-02 16:53:30 +01:00
Maze Winther
eee3233c97
fix linter
2026-03-02 16:50:55 +01:00
Maze Winther
14ae9b4f11
remove z-index
2026-03-02 16:43:43 +01:00
Maze Winther
565d2595da
clcik to seek on keyframes
2026-03-02 16:40:41 +01:00
Maze Winther
a526066b61
feat: wire ui to have keyframes for: opacity, text color, and all background properties
2026-03-02 16:36:10 +01:00
Maze Winther
b0165da764
fix: selecting multiple effects didn't work
2026-03-02 16:30:50 +01:00
Maze Winther
81e7a7fb32
feat: implement keyframe support for more properties at the core (no ui yet)
2026-03-02 15:08:21 +01:00
Maze Winther
887d1795dd
fix: keyframe drag bug
2026-03-02 15:06:31 +01:00
Maze Winther
9261589ff3
fix: keyframe placement
2026-03-02 15:06:01 +01:00
Maze Winther
db50b5214d
feat: ripple support for element resize
2026-03-02 13:26:40 +01:00
Maze Winther
e7dcb586c0
feat: Clip effects, asset sorting, and timeline improvements
...
Major features and improvements:
* **Clip Effects**:
* Added UI in Properties Panel to manage effects on video/image clips (add, remove, toggle, reorder).
* Implemented dynamic parameter fields for effects.
* Added support for keyframing effect parameters.
* **Assets Panel**:
* Added sorting options: Name, Type, Duration, and File Size.
* Persisted view preferences (grid/list mode, sort order) to local storage.
* Refactored media item rendering and drag interactions.
* **Timeline & Interaction**:
* **Keyframe Dragging**: Added ability to drag keyframes directly on the timeline element.
* **Resizing**: Improved resize logic to respect neighboring clips (prevents overlaps).
* **Visuals**: Implemented tiled background rendering for video/image clips on the timeline.
* **Shortcuts**: Added "Deselect All" action bound to the `Escape` key.
* **Fixes**: Corrected drag-and-drop coordinate calculations when the timeline track area is scrolled.
* **Text Elements**:
* Refactored text background storage to use an explicit `enabled` flag.
* Added `V8toV9` storage migration to update existing projects.
* **Architecture**:
* Moved export state management to `ProjectManager` for better lifecycle handling.
* Refactored `PropertiesPanel` sections to be more composable (custom headers, borders).
2026-03-02 13:13:07 +01:00
Maze Winther
a2727f2ae5
fix button color
2026-03-02 10:36:37 +01:00
Maze Winther
82f8f76a84
feat: mobile gate
2026-03-02 10:36:19 +01:00