Skip to content

Fix generation quality - #164

Merged
PromSereyreaksa merged 8 commits into
mainfrom
fix/generation-quality
Oct 14, 2026
Merged

PromSereyreaksa merged 8 commits into
mainfrom
fix/generation-quality

Conversation

@PromSereyreaksa

Copy link
Copy Markdown
Member

Generation-quality fixes, the editor side of the backend PR. One step per commit (step N: ...).

Step 3: neutral defaults and typefaces

  • Scene kit: the violet placeholders are now neutral grey, the font comes from --mk-font (falling back to Inter), and the drifting stage light is opt-in (data-ambient). Stages on a legacy mk-theme-* keep the light, so saved projects look the same.
  • Six bundled typefaces, all SIL OFL via @fontsource-variable: Inter, Plus Jakarta Sans, Space Grotesk, Fraunces, JetBrains Mono, Oswald.
  • Export now embeds every bundled face a film uses, plus a brand's own @font-face files. Before this, only Inter was embedded, so brand fonts fell back to a system face in exported video.

… typefaces embedded in export

- scene-kit.css: grey placeholder accents and a neutral #141414 ground instead of violet; font-family var(--mk-font, Inter, system-ui, sans-serif); the drifting stage light (::before/::after) now draws only with data-ambient or on a legacy mk-theme-* stage, so saved projects are unchanged; mk-input border follows the accent instead of a fixed violet-pink gradient
- film-fonts.ts: Inter, Plus Jakarta Sans, Space Grotesk, Fraunces, JetBrains Mono, Oswald (OFL, @fontsource-variable, latin wght) declared in every kit film
- frame-render: export embeds each bundled face the film names (plus Inter) and inlines brand @font-face files, which an SVG image cannot fetch
@vercel

vercel Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
motionly Ready Ready Preview Oct 14, 2026 7:40pm UTC

…litReveal, verify export parity

- presets.ts registers DrawSVGPlugin, Flip, MorphSVGPlugin, MotionPathPlugin and SplitText and exports them, so dynamic-compiler puts them in every timeline's scope
- sharedElementHandoff(timeline, el, { from, to, at, duration, ease }) and splitReveal(timeline, el, { at, by, mask, stagger }); deterministic under end -> start -> middle scrubbing (tests mirror the runtime's seek)
- src/render-kit + scripts/build-render-kit.mjs: the editor's compiler, kit, presets, runtime and export rasterizer as one browser bundle
- scripts/check-export-parity.mjs (npm run export:parity): every primitive previews and exports identically in Chromium (<=0.05% of pixels differ, text anti-aliasing only)
src/render-kit/render-check.ts mounts a film with the editor's compiler, kit, presets and runtime, seeks each scene midpoint and each seam's start, middle and end, and reports objective faults: timeline throws, null registered element, scene missing/empty at its midpoint, blank frame, opacity-only cut, handoff object hidden at a seam end, a stretch over 1.5s without change (text changes count; the final settle gets the editor's 1.8x allowance), text overlap or off-canvas, low contrast (WCAG 4.5:1, 3:1 for large type), timeline length vs declared duration. Frames are rasterized by the export path into a contact sheet (JPEG, 1280px wide, up to eight frames).
measureSlop(film) mounts a film and counts, at scene midpoints and cuts: painted pills, kicker + headline + subtitle stacks, glow blobs and glowing text, and cross-fades (both scenes half-transparent at a cut). Counts for the benchmark, not faults.
Render raw HTML as a stage-only seekable film, synthesize soundtrack audio once for native playback/export, rasterize SVG and canvas output, and add the compact generation effort/progress UI.
@PromSereyreaksa
PromSereyreaksa merged commit fed2cf6 into main Oct 14, 2026
7 of 8 checks passed

This branch was successfully deployed

1 active deployment
Preview — 6dc1e30b Deployed Oct 14, 2026 by vercel[bot]
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