refactor(skin): cut internal consumers over to VJSC - #2548
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
97397da to
b878081
Compare
✅ Deploy Preview for vjs10-site ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
@videojs/core
@videojs/element
@videojs/html
@videojs/media
@videojs/react
@videojs/spf
@videojs/store
@videojs/utils
commit: |
e565089 to
ce970bb
Compare
📦 Bundle Size Report🎨 @videojs/html — no changesPresets (7)
Media (18)
Extensions (2)
Players (5)
Skins (29)
UI Components (62)
⚛️ @videojs/react — no changesPresets (7)
Media (22)
Extensions (2)
Players (5)
Skins (18)
UI Components (39)
🧩 @videojs/core — no changesEntries (76)
🏷️ @videojs/element — no changesEntries (2)
📦 @videojs/store — no changesEntries (3)
🔧 @videojs/utils — no changesEntries (13)
📦 @videojs/media
Entries (23)
📦 @videojs/spf — no changesEntries (10)
ℹ️ How to interpretEach entry is independently bundled, minified, and brotli-compressed. Initial size includes its static import graph; lazy dynamic chunks are reported separately. Entries are not additive because their dependency graphs overlap. Preset rows represent realistic combined bundles. Changes of 300 B or less across initial, lazy, and total size are collapsed, not discarded. Run |
96fcee1 to
ef8aa2d
Compare
c5a6608 to
74dfe2d
Compare
74dfe2d to
89ee2d0
Compare
89ee2d0 to
43b45dc
Compare
43b45dc to
c484deb
Compare
f747edb to
5fc0ed5
Compare
4c1cfe0 to
1ef0211
Compare
|
|
||
| function escapeAttribute(value: string): string { | ||
| return value.replaceAll('&', '&').replaceAll('"', '"'); | ||
| } |
There was a problem hiding this comment.
Local HTML escape helper added
Medium Severity
New HTML interpolation in the extracted preview media helper escapes attributes with a local escapeAttribute instead of shared escapeHtml from @videojs/utils. The leftover copy in main.tsx does the same. The local helper only encodes & and ", so < and other characters in poster, caption, and track URLs are not escaped before innerHTML.
Additional Locations (1)
Triggered by learned rule: HTML string interpolation must use shared escapeHtml — no local escape functions
Reviewed by Cursor Bugbot for commit 1ef0211. Configure here.
1ef0211 to
563f3a9
Compare
563f3a9 to
4e41287
Compare
4e41287 to
be24c8b
Compare
be24c8b to
34db279
Compare
34db279 to
d59058a
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
There are 2 total unresolved issues (including 1 from previous review).
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit d59058a. Configure here.
| if (server) await close(server); | ||
| } | ||
|
|
||
| await runCommand('git', ['check-ignore', '--quiet', 'apps/sandbox/app/_generated'], workspaceDir); |
There was a problem hiding this comment.
Setup git check breaks standalone
Medium Severity
After installing skins, setup always runs git check-ignore from the monorepo root with path apps/sandbox/app/_generated. Outside the workspace, including StackBlitz, that path and git root are wrong, so setup.ts throws and the sandbox never boots.
Reviewed by Cursor Bugbot for commit d59058a. Configure here.


Summary
Verification
pnpm build:sandboxpnpm typecheckpnpm lintpnpm check:workspaceCloses #2494
Parent tracking issue: #2185
Stack
Note
Medium Risk
Large sandbox skin-loading and generated-artifact pipeline changes affect dev, StackBlitz, and E2E; failures would show up as missing
_generatedskins or flaky iframe startup rather than production package APIs.Overview
Moves Sandbox, E2E, and the skins dev preview off
@videojs/skinsand onto packaged CSS skins plus source-owned Tailwind installed from the hosted Shadcn registry into gitignoredapp/_generated/.Sandbox runs
sync-source-owned-skins.tsduring setup (local registry orshadcn.videojs.org), wires React/HTML loaders to_generatedand@videojs/html/@videojs/react, and adds live audio (CDN, HTML, React). The shell iframe postMessages only when preview state actually changes to avoid startup races. Vite setup depends on@videojs/skins#build:shadcnwhen present and prebundles more deps for stable dev/E2E.E2E broadens cross-renderer selectors for VJSC/Tailwind markup, drops the
@videojs/skinsdep, starts the sandbox viadev:sandbox, adds live skin coverage, and relaxes/skips RTL physical control-order checks pending VJSC gaps.Skins dev preview drops the legacy source path and splits options, loaders, and media rendering into smaller modules.
Reviewed by Cursor Bugbot for commit d59058a. Bugbot is set up for automated code reviews on this repo. Configure here.