- Add multi-palette theme system using CSS custom properties via data-palette attribute
- Create NeuralCut palette (rose/pink accent #F55385, dark charcoal #1B212B) as default
- Preserve Classic (OpenCut blue) palette as selectable alternative
- Add PaletteSelector component with dark/light toggle and palette picker
- Migrate export button hardcoded colors to theme tokens
- Rebrand all user-visible OpenCut references to NeuralCut across UI
- Update package names and turbo filters for new identity
Adds a skill discovery and loading system that lets the LLM agent
autonomously find and follow pre-built editing recipes. Skills are
exposed as two new tools: list_skills (search/discover) and load_skill
(get full instructions).
Built-in skills:
- viral-short: high-retention TikTok/Reels/Shorts workflow with hook,
retention cuts, zoom effects, captions, and CTA
- pitch-video: professional pitch/explainer with 5-act structure
(opening, problem, solution, metrics, CTA)
- redo: re-applies the last undone action via core.command.redo()
- toggle_track_mute: toggles mute on video/audio tracks via
ToggleTrackMuteCommand
- toggle_track_visibility: toggles visibility on overlay tracks via
ToggleTrackVisibilityCommand
- update_clip now supports trimStart/trimEnd for slip-trimming clips
without moving them on the timeline
- undo: reverts the last editing action via core.command.undo()
- duplicate_elements: duplicates elements onto new tracks using
DuplicateElementsCommand
- list_timeline now includes hasMask, hasEffects, and isHidden hints
on elements so the agent can identify clips needing deeper inspection
Add two new agent tools for deep element inspection and property mutation:
- get_element: returns full type-specific metadata for any timeline element
(video, image, text, graphic, sticker, audio, effect)
- update_clip: mutates any visual property on an element including masks,
opacity, transform, blendMode, hidden, volume, muted, and name
Masks are handled as a nested property with add/update/remove actions,
aligned with the data model where masks are properties of elements rather
than standalone timeline entities.
Instead of adding inline effects to existing clips (which didn't show
in the timeline), apply_effect now creates EffectElement items on
effect tracks via InsertElementCommand — matching the drag-and-drop
behavior from the effects panel.
- Add propuesta_tecnica.md with project architecture and plan
- Fix .dockerignore to exclude nested node_modules (**/node_modules)
- Update bun.lock (opencut-wasm from local to npm, @types/bun bump)