From 3d4cdf76ddf1def6f83e0bd52b1b7a08b4041a3a Mon Sep 17 00:00:00 2001 From: Kiyeon Jeon Date: Sun, 21 Jun 2026 11:41:25 +0900 Subject: [PATCH] docs: link the live docs site + README/diagram polish The Mintlify docs are now live at docs.reframe-video.com. Point the published surfaces at it and clean up a few stale/rough spots. - README Documentation section: link the live site (docs.reframe-video.com) - packages/reframe-video/package.json: homepage -> docs.reframe-video.com (the npm "Repository" link still covers GitHub; takes effect next publish) - docs/the-loop.mdx: ASCII flow -> Mermaid (renders natively in Mintlify; the README keeps ASCII since npm doesn't render Mermaid) - README: drop the stale "~1,700-token guide" figure (the printed eDSL guide is now ~10k tokens; keep the 33/33 first-attempt benchmark result) - README nits: "Two primitives back it" (path/motionPath no longer new), and the edit-survival opener now names beat name alongside node id / state / label No release: docs/metadata only; reframe-video source and the plugin are untouched. The repo About-website was set to docs.reframe-video.com separately. Co-Authored-By: Claude Opus 4.8 --- README.md | 15 ++++++++------- docs/the-loop.mdx | 16 ++++++---------- packages/reframe-video/package.json | 2 +- 3 files changed, 15 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 0d7af14..e211f7f 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ motionPreset("spin-forge", { target: logo, energy: 0.8, seed: 3 }) `energy` (clean to springy) and `speed` are universal knobs. The preset emits a beat you can retime, and a waypoint you drag on its path becomes an overlay edit that survives a knob-driven regeneration: knobs regenerate the base, hand craft -persists. Two new primitives back it: +persists. Two primitives back it: - **`path` node**: a true vector SVG shape with a `progress` draw-on, so the outline draws itself, stays crisp at any zoom, and recolors by animating fill. @@ -256,9 +256,9 @@ export default scene({ ``` Scaffold one with `pnpm reframe new my-scene`. Full syntax (node types, -states, timeline operators, behaviors): `pnpm reframe guide` — the same -~1,700-token guide that lets an LLM write valid scenes on the first try -(33/33 first-attempt renders in our benchmark). +states, timeline operators, behaviors): `pnpm reframe guide` — the guide an +LLM reads to write valid scenes on the first try (33/33 first-attempt renders +in our benchmark). A scene is a single self-contained file, not an app: it can live in **any directory** — no package.json or node_modules next to it. `render` bundles it @@ -293,8 +293,8 @@ your scene. ## How edits survive regeneration -Overlays address the scene by **node id, state name, and timeline label** — -never by position or index. When an AI regenerates a scene it follows one +Overlays address the scene by **node id, state name, and timeline label (or +beat name)** — never by position or index. When an AI regenerates a scene it follows one contract (`docs/guides/regen-contract.md`, or `pnpm reframe guide --regen`): keep those names stable for every concept that survives the redesign. When the contract is broken anyway, `composeScene` skips the affected edits and reports @@ -355,7 +355,8 @@ same structured shape on the CLI: `{ ok: false, kind, issues: [{ code, path, mes ## Documentation -The [`docs/`](docs/) folder is a [Mintlify](https://mintlify.com)-ready site (`docs/docs.json`): +📖 **[docs.reframe-video.com](https://docs.reframe-video.com)** — the full documentation +site. The [`docs/`](docs/) folder is its [Mintlify](https://mintlify.com) source (`docs/docs.json`): | page | what | |---|---| diff --git a/docs/the-loop.mdx b/docs/the-loop.mdx index 6259914..fe34c53 100644 --- a/docs/the-loop.mdx +++ b/docs/the-loop.mdx @@ -3,16 +3,12 @@ title: The loop description: "AI writes the scene, a human tweaks it, the render is deterministic — and the tweaks survive the next regeneration." --- -``` -scene.ts ──(written by you, or by an AI given `reframe guide`)──▶ IR (plain JSON data) - │ │ - ▼ ▼ -preview: scrub + knobs ──▶ edits recorded as an overlay JSON (non-destructive) - │ │ - ▼ ▼ -render: deterministic mp4 (same input → byte-identical frames) ◀── overlay reapplies - even after an AI - regenerates the base +```mermaid +flowchart LR + S["scene.ts
you · or an AI given 'reframe guide'"] --> IR["IR
plain JSON data"] + IR --> P["preview
scrub + knobs"] --> O["overlay JSON
non-destructive edits"] + IR --> R["render
deterministic mp4
same input → byte-identical"] + O -. reapplies even after an AI
regenerates the base .-> R ``` Everything is a pure function of time: `evaluate(scene, t)` — no wall clocks, no randomness without a seed, so scrubbing and distributed rendering come for free. `reframe lint` *enforces* it: the scene is compiled twice and any IR that differs (a `Math.random()` or `Date` baked into a prop) is flagged, so a scene that would render differently each time fails the gate before you ship it. diff --git a/packages/reframe-video/package.json b/packages/reframe-video/package.json index fb37134..77e869a 100644 --- a/packages/reframe-video/package.json +++ b/packages/reframe-video/package.json @@ -18,7 +18,7 @@ "type": "git", "url": "git+https://github.com/kiyeonjeon21/reframe.git" }, - "homepage": "https://github.com/kiyeonjeon21/reframe#readme", + "homepage": "https://docs.reframe-video.com", "type": "module", "bin": { "reframe": "./dist/bin.js",