Skip to content

feat: bring desktop Studio UI and local playback to web - #2312

Draft
richiemcilroy wants to merge 172 commits into
mainfrom
feature/web-editor-desktop-parity
Draft

richiemcilroy wants to merge 172 commits into
mainfrom
feature/web-editor-desktop-parity

Conversation

@richiemcilroy

@richiemcilroy richiemcilroy commented Sep 18, 2026

Copy link
Copy Markdown
Member

The Next.js editor page mounts the desktop Solid Studio interface. Browser playback renders locally on the viewer's GPU through Rust/WASM, using WebGPU when presentation is healthy and WebGL2 as the fallback. Native editor workers render exports and are acquired only when Export opens. The two paths share project/timeline mapping, video composition, transition and image shaders, gradients, and blur so saved playback can be compared against exported frames. Web and Chrome-extension recordings preserve synchronized screen and webcam clips, with mic, system audio, and input events stored separately. Web captions require Cap Pro and use the existing AssemblyAI transcription path; desktop captions keep their local models.

This revision brings image segments into local playback. The browser decodes EXIF orientation, premultiplied RGBA, and mipmaps using the native image algorithm, uploads bounded GPU textures, and draws image overlays with the desktop shader. A 20-image fixture verifies that active textures stay resident. It also bounds corrective seeks in the HTML-video fallback when a slow decoder trails playback, while scrubs and discontinuities still seek to the requested frame.

Validation

  • A Chromium browser-only Studio fixture loads paired clips without worker admission before Export. Its saved image-overlay frame compared with a local native worker frame at mean RGB error 0.62 and 35.89 dB PSNR. That local worker binary predates this commit; exact-commit Linux worker integration is pending.
  • On a local M4, Chromium WebGPU/WebGL2 and headed WebKit WebGL2 render all 20 image overlays. A simulated half-rate HTML decoder produces zero corrective seeks over 1.2 seconds, down from 22 before this fix. The normal 640×360 paired fixture rendered about 50 frames in 850 ms. These short synthetic probes are not low-end or hosted performance guarantees.
  • Scoped Biome, Solid TypeScript and production Vite builds, browser replay bundling, WebAssembly-target Cargo formatting/check/build/library Clippy, workflow YAML and actionlint, and an isolated nine-file diff check pass. The prior PR head passed amd64/arm64 editor-worker CI, browser recording reliability, root Biome/typecheck, and the Vercel preview. New exact-commit CI is pending.

Release gates

Studio remains a draft and is off by default behind CAP_WEB_EDITOR_STUDIO_ENABLED=enabled. Local playback still lacks faithful desktop frame/notch, cursor/click/zoom, camera cutout/blur/3D, captions/text/keyboard, masks, and scenes. Native export can render effects that browser playback cannot, so complete 1:1 playback/export parity and every desktop editor feature are not yet delivered. Chrome, Firefox, and Safari authenticated record-to-edit-to-export flows, sustained low-end speed, Safari cold start, memory/battery use, and paired audio synchronization need hosted testing. Machines without WebGPU or WebGL2 currently lack preview. Deployment requires an editor-worker pool and recording-bucket ranged CORS exposing Content-Range; no database migration is required.

RetriggerConfidence Score: 5/5

The changes since the previous review appear safe to merge, with no new actionable failures identified.

Summary

This revision makes two narrowly scoped follow-up changes:

  • Allows the Windows target workflow’s informational baseline comparison to handle a source file absent from the PR base while preserving current-source test and Clippy gates.
  • Extends the Studio replay fixture to accept the same two image-path forms as production and explicitly verifies that imported image previews request the relative project path.

Reviews (141) · Last reviewed commit: "fix: skip Windows base comparison for ne..."

@superagent-security superagent-security Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Superagent found 2 security concern(s).

Comment thread .github/workflows/docker-build-editor-worker.yml
Comment thread apps/media-server/Dockerfile.editor Outdated
Comment thread apps/media-server/src/lib/editor-sessions.ts
@richiemcilroy

Copy link
Copy Markdown
Member Author

hey @greptileai, please re-review the PR

@greptile-apps

greptile-apps Bot commented Sep 18, 2026

Copy link
Copy Markdown
Contributor

Comments Outside Diff

These findings sit on lines the diff does not cover, so they could not be posted inline. Each one leaves this list once its file changes.

  • P2 Narrative Comment Violates Policy apps/chrome-extension/e2e/overlay-ui.spec.ts:732

    This comment merely restates the status assertion directly below it. The repository requires ordinary test expectations to remain self-explanatory unless a comment preserves non-obvious investigation context. This requirement must be satisfied before merging by removing the comment or making the test structure clearer.

    Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

@superagent-security superagent-security Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Superagent found 1 security concern(s).

Comment thread apps/media-server/src/lib/editor-signed-assets.ts
@richiemcilroy

Copy link
Copy Markdown
Member Author

hey @greptileai, please re-review the PR

@richiemcilroy

Copy link
Copy Markdown
Member Author

hey @greptileai, please re-review the PR

@superagent-security superagent-security Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Superagent found 1 security concern(s).

Comment thread apps/web/lib/editor-worker-routing.ts
@richiemcilroy

Copy link
Copy Markdown
Member Author

hey @greptileai, please re-review the PR

@richiemcilroy

Copy link
Copy Markdown
Member Author

hey @greptileai, please re-review the PR

Comment thread packages/editor-solid-web/src/browser-video-pool.ts Outdated
Comment thread packages/editor-solid-web/browser-replay/generate-indexed-video.py
@richiemcilroy

Copy link
Copy Markdown
Member Author

hey @greptileai, please re-review the PR

Comment thread packages/editor-solid-web/src/browser-video-pool.ts Outdated
Comment thread packages/editor-solid-web/browser-replay/replay.cjs Outdated
@richiemcilroy

Copy link
Copy Markdown
Member Author

hey @greptileai, please re-review the PR

@richiemcilroy

Copy link
Copy Markdown
Member Author

hey @greptileai, please re-review the PR

@richiemcilroy

Copy link
Copy Markdown
Member Author

hey @greptileai, please re-review the PR

@richiemcilroy

Copy link
Copy Markdown
Member Author

hey @greptileai, please re-review the PR

@richiemcilroy

Copy link
Copy Markdown
Member Author

hey @greptileai, please re-review the PR at d6ff28e. Firefox H.264 color correction now reaches the WebCodecs bitmap path, and the browser/native replay records its source color path.

Comment thread apps/media-server/src/__tests__/routes/editor-solid-ui-replay.ts
@richiemcilroy

Copy link
Copy Markdown
Member Author

hey @greptileai, please re-review PR #2312 at commit 5c6a06d. The prior Firefox color-path finding is addressed with an assertion that a WebCodecs frame is actually used when H.264 WebCodecs support is reported; the adaptive Safari blur assertion now scales with preview size. Please assess actionable issues on this exact head.

@richiemcilroy

Copy link
Copy Markdown
Member Author

hey @greptileai, please re-review the PR

1 similar comment
@richiemcilroy

Copy link
Copy Markdown
Member Author

hey @greptileai, please re-review the PR

@richiemcilroy

Copy link
Copy Markdown
Member Author

hey @greptileai, please re-review the PR

Comment thread packages/editor-solid-web/src/browser-local-canvas.ts
@richiemcilroy

Copy link
Copy Markdown
Member Author

hey @greptileai, please re-review the PR

@richiemcilroy

Copy link
Copy Markdown
Member Author

hey @greptileai, please re-review the PR

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.

2 participants