Commit Graph

956 Commits

Author SHA1 Message Date
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
Maze Winther 2074dde3e3 feat: add roadmap link to header 2026-03-02 10:34:54 +01:00