Commit Graph

128 Commits

Author SHA1 Message Date
Maze Winther 4d127a038b chore: normalize line endings 2026-03-29 15:56:48 +02:00
Maze Winther 8db3bead13 feat: masks, properties refactor, shaders, storage migrations, and more 2026-03-29 15:48:22 +02: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 1762dc077d persist snapping + ripple 2026-02-23 06:56:05 +01:00
Maze 93d1e3383c
feat: major editor overhaul (assets, properties, timeline, fonts) (#709)
* feat: major editor overhaul (assets, properties, timeline, fonts)

Refactor editor core systems to standardize UI architecture and improve performance.

Assets & Properties:
- Replace monolithic property items with composable `Section` architecture.
- Add specialized sections for Transform, Blending, and Text.
- Implement `NumberField` with scrubbing and math evaluation.
- Add new ColorPicker with EyeDropper and multiple format support.
- Standardize asset panels using new `PanelView` layout.

Fonts & Stickers:
- Implement custom font atlas/sprite system for high-performance previews.
- Add virtualized FontPicker with search and favorites.
- Refactor stickers to use a provider-based architecture (icons, emoji, flags, shapes).
- Standardize sticker IDs to `provider:value` format.

Timeline & Interaction:
- Convert bookmarks to rich objects with notes, colors, and duration.
- Refactor drag-and-drop to use Command pattern (enabling proper undo/redo).
- Add Shift modifier to disable snapping during moves/resizes.
- Add new overlays for layout guides and text editing.

Renderer:
- Add support for multi-line text, custom line-height, and letter-spacing.
- Implement global composite operation (blend modes).
- Update sticker node to resolve dynamic provider IDs.

Infrastructure:
- Add storage migrations (v3->v6) for text weights, sticker IDs, and bookmarks.
- Update global styles and core UI components (Button, Input, Popover).

* add ts-nocheck directive to settings-legacy.tsx to suppress TypeScript errors

* fix: correct global composite operation assignment in TextNode to ensure proper blend mode handling

* deleted shadcn components with errors

* formatting

* fix linter issues

* migrate from next middleware to proxy

* add missing component back

* add breadcrumb back

* chore: add @radix-ui/react-primitive deps

* chore: more deps

* chore: add missing env vars to bun-ci

* next env
2026-02-23 03:24:02 +01:00
Maze Winther fca99d6126 refactor 2026-02-10 16:28:21 +01:00
Maze Winther f820d9a894 refactor services structure 2026-01-31 22:19:11 +01:00
Maze 7bf0984698
codebase overhaul (#697) 2026-01-31 00:20:04 +01:00
Maze Winther 88304c8a90 fix: ts error 2025-09-03 00:10:56 +02:00
Maze Winther 167e2b83dc feat: add support for deleting/splitting multiple elements instead of single 2025-09-02 23:07:11 +02:00
Maze Winther f7ef8d7f38 move logic to zustand store 2025-09-01 23:17:48 +02:00
Maze Winther d8f446580c feat: remove default background scene and add scene management 2025-09-01 22:15:32 +02:00
Maze Winther af1964cf11 fix: scenes now load properly 2025-09-01 17:18:00 +02:00
Maze Winther 971f9d35d7 fix: normal case instead of title case 2025-09-01 16:20:13 +02:00
Maze Winther dd02e31380 refactor: reduce code duplication 2025-09-01 16:19:14 +02:00
Maze Winther 350b55081c refactor(core): switch to scene-based architecture 2025-09-01 16:17:06 +02:00
Maze Winther 29fdd8568d refactor: improve types, fix background blur, some other stuff 2025-08-31 14:10:59 +02:00
Maze Winther d747fb458d feat: make timeline renderer 15x faster 2025-08-31 13:40:41 +02:00
Maze Winther 21dac9f09e fix space key to play 2025-08-31 00:58:33 +02:00
Maze Winther a7d90f7eac feat: copy/pasting for elements 2025-08-28 22:37:51 +02:00
Maze Winther adc8cb37fc another huge refactor 2025-08-27 00:52:39 +02:00
Maze Winther b459b46802 refactor: type-safety & separate concerns 2025-08-26 15:04:25 +02:00
Maze Winther 9da0dfc107 fix: clear timeline/media on new project creation to prevent state leakage 2025-08-16 18:26:41 +02:00
Zaka 7e4cd76762
feat: add an input so the user can go to a specific timestamp (#530)
* feat: add an input so the user can go to a specific timestamp

* fix: use TimeCode type for EditableTimecodeProps

* cleanup

---------

Co-authored-by: Maze Winther <mazewinther@gmail.com>
2025-08-15 23:01:18 +02:00
Maze Winther 7f91c9ca00 Merge branch 'staging' of https://github.com/mazeincoding/AppCut into staging 2025-08-15 02:12:16 +02:00
Maze Winther 5e8a489a14 refactor: remove test 2025-08-15 02:12:10 +02:00
enkei64 c3f3345d7b
feat: stickers panel (#539)
* Stickers panel base complete

* Improve dark mode stickers background for visibility

* Prevent stickers from being too small or too big

* Improve UI, added credit for Iconify API

* Allow manually loading more collections

* Add a maximum width of 200px so stickers aren't too big

* cleanup

* style: hover state of button

* refactor: input component

* fix: mark input component as client

* so much stuff

---------

Co-authored-by: Maze Winther <mazewinther@gmail.com>
2025-08-15 02:11:21 +02:00
Maze Winther 0274fb6626 cleanup 2025-08-13 17:05:17 +02:00
ryu 0ae09c9df5
Merge branch 'staging' into feat/timeline-return-to-start 2025-08-13 14:01:07 +05:00
Maze Winther 71b6718337 feat: implement mute video tracks 2025-08-13 00:52:19 +02:00
Sai Teja 3807e146e4
feat(playback): restart from beginning when play pressed at end of timeline (Fixes #536) (#542) 2025-08-12 00:25:52 +02:00
Maze Winther 54e990af26 Merge pull request [#514](https://github.com/mazeincoding/AppCut/issues/514) 2025-08-09 11:02:01 +02:00
ryu e71788014d
Merge branch 'main' into feat/timeline-return-to-start 2025-08-07 19:37:06 +05:00
Maze Winther 1bed89d55f fix: typescript error from old usage 2025-08-05 06:28:45 +02:00
Maze Winther b0329f1372 refactor: move canvas size to be a project-level setting instead of editor-level 2025-08-04 20:45:48 +02:00
Maze Winther 9ec5a02252 feat: layout guide for tiktok 2025-08-04 17:17:48 +02:00
Maze Winther acc2089d0d feat: add license filtering for sound effects 2025-08-04 02:59:07 +02:00
Maze Winther 48b694bbd8 feat: sound effects functionality with freesound's api 2025-08-04 01:30:33 +02:00
Maze Winther 68da487f30 style: complete re-design of whole editor 2025-08-01 19:57:26 +02:00
ryu 6412158003 feat: enhance timeline navigation with comprehensive testing and documentation
- Add comprehensive test suite with 13 passing tests
- Create detailed keyboard shortcuts documentation (KEYBOARD_SHORTCUTS.md)
- Add meaningful code comments explaining functionality
- Set up Vitest testing framework with proper mocks
- Fix React imports in timeline components for proper JSX rendering
- Add ResizeObserver mock for browser environment compatibility
- Enhance keyboard shortcuts help to properly format Enter key display

Tests cover:
- Enter key keybinding functionality
- Return to Start button click behavior
- Keyboard shortcuts help system integration
- Component rendering and tooltip structure

Documentation includes:
- Complete keyboard shortcuts reference
- UI feature explanations
- Usage notes and behavior descriptions

All tests passing (13/13) with full feature coverage.
2025-08-01 03:04:06 +05:00
ryu f5d5a387d3 feat: add timeline navigation return to start functionality
- Add Enter key shortcut for seeking to timeline start (00:00:00)
- Add return to start button in timeline toolbar with skip-back icon
- Both methods complement existing Home key shortcut
- Update keyboard shortcuts help to display Enter key properly
- Maintain consistent UI styling with existing playback controls

Resolves #415
2025-08-01 02:33:42 +05:00
Maze Winther 1603dd0e58 fix: set default fps on project creation 2025-07-31 21:47:02 +02:00
Maze Winther 3c64f9cfa2 Merge pull request [#494](https://github.com/mazeincoding/AppCut/issues/494) 2025-07-31 21:46:33 +02:00
Maze Winther b2cd730fb7 Merge branch 'staging' of https://github.com/mazeincoding/AppCut into staging 2025-07-31 13:12:02 +02:00
Maze Winther 5f4f3cc6c4 Merge pull request [#499](https://github.com/mazeincoding/AppCut/issues/499) 2025-07-31 13:10:37 +02:00
melad f255ccb818
feat: add hide or show for media elements, mute or unmute for audio elements (#500)
* feat: create external tools section (#493)

* feat: create external tools section

* fix: better wording

* Feature, added hide or show for media elements, mute or unmute for audio elements both effective on timeline and preview panel, with overlay icon for indicating so and state storing,

* Minor UI vertical separator between magnifier and other buttons

* fixed the AbortError issue in the AudioWaveform component. The error was occurring because of a race condition during cleanup when the component unmounts.

* feat: implement bookmarking functionality in the timeline and project storage

- Added bookmark management methods in the project store for toggling and checking bookmarks.
- Updated the timeline component to display bookmark markers and integrate bookmark actions in the context menu.
- Enhanced the storage service to handle bookmarks in project serialization and deserialization.
- Updated project types to include bookmarks as an array of numbers.

---------

Co-authored-by: Dominik K. <dominik@koch-bautechnik.de>
Co-authored-by: Maze Winther <mazewinther@gmail.com>
2025-07-31 12:50:22 +02:00
Maze Winther 906f95399d refactor: better error handling 2025-07-26 13:25:10 +02:00
Maze Winther 14475dc9a6 fix: prevent resizing elements on the timeline further than the timeline start 2025-07-26 13:13:27 +02:00
Maze Winther 6dfc80cd70 Merge pull request [#433](https://github.com/mazeincoding/AppCut/issues/433) 2025-07-26 12:54:50 +02:00
Maze Winther f312d758da feat: undo for when an element gets deleted from media item deletion 2025-07-26 12:24:18 +02:00