Skip to content

feat(studio): consolidate into single OSS-ready NLE editor#4

Closed
miguel-heygen wants to merge 1 commit intofeat/core-compilerfrom
feat/studio-consolidate
Closed

feat(studio): consolidate into single OSS-ready NLE editor#4
miguel-heygen wants to merge 1 commit intofeat/core-compilerfrom
feat/studio-consolidate

Conversation

@miguel-heygen
Copy link
Copy Markdown
Collaborator

Summary

  • Replace legacy frontend/backend split with single Vite-powered package
  • Absorb @hyperframes/ui-player into studio/src/player/
  • NLE layout: preview + timeline + composition drill-down (3 levels)
  • Source editor with CodeMirror, bundled preview via @hyperframes/core/compiler
  • File watcher for hot reload on external edits
  • Playback speed control (0.25x–2x)
  • Extensible via slots (previewOverlay, timelineFooter)
  • Path traversal protection on all API endpoints
  • Support both hf-*/magic-edit-* postMessage sources

Test plan

  • cd packages/studio && pnpm dev starts the studio
  • Open project, play/pause, scrub timeline
  • Double-click composition clips to drill down
  • Edit HTML externally → preview auto-refreshes
  • Speed control works (0.5x, 2x)

Replace legacy frontend/backend split with single Vite-powered package.
Absorb @hyperframes/ui-player into studio/src/player/.

Features:
- NLE layout: preview + timeline + composition drill-down (3 levels)
- Source editor with CodeMirror (HTML/CSS/JS)
- Bundled preview via @hyperframes/core/compiler
- File watcher for hot reload on external edits
- Playback speed control (0.25x-2x)
- Extensible via slots (previewOverlay, timelineFooter)
- Path traversal protection on all API endpoints
- Support both hf-*/magic-edit-* postMessage sources
@miguel-heygen miguel-heygen deleted the feat/studio-consolidate branch April 6, 2026 23:25
vanceingalls added a commit that referenced this pull request Apr 16, 2026
Blockers:
- #2: late_init_set false positive on fractional opacity (0.5 matched as 0)
  Fixed: /opacity\s*:\s*0(?![.\d])/ negative lookahead
- #3: scene-1 prefix skip matches scene 10+ (s1- matches s10-)
  Fixed: extract full number and compare exactly

High severity:
- #4: autoAlpha not covered by late_init_set
  Fixed: checks both opacity and autoAlpha
- #5: al() crashes on non-hex colors (#fff shorthand, rgb(), null)
  Fixed: guard + shorthand expansion + NaN fallback
- #6: "Full palette" with null bg crashes isDark
  Fixed: null guard defaults to dark
- #7: template literals missed by tl_from_in_multiscene
  Fixed: regex includes backtick quotes

Medium:
- #9: no retry limit on eval failures → infinite loop
  Fixed: max 2 retries, then escalate to user
- #10: vague ID convention
  Fixed: explicit s{N}- prefix rule in multi-scene.md
- #11: visual-style.md backward compat
  Fixed: Step 0b checks both filenames
- #13: preview_html script injection
  Fixed: documented prohibition in design-picker.md

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant