From b1aa4a40e239ebe58e40f808269d3a2399e6273c Mon Sep 17 00:00:00 2001 From: Vance Ingalls Date: Mon, 23 Mar 2026 10:27:52 -0700 Subject: [PATCH 1/4] style: apply oxfmt baseline formatting across all source files VA-851 --- package.json | 5 +++++ packages/core/package.json | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 9657921fe..971f97e36 100644 --- a/package.json +++ b/package.json @@ -31,5 +31,10 @@ "oxlint": "^1.56.0", "tsx": "^4.21.0", "typescript": "^5.0.0" + }, + "pnpm": { + "onlyBuiltDependencies": [ + "lefthook" + ] } } diff --git a/packages/core/package.json b/packages/core/package.json index 2ebeabdfa..adb33a2af 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -64,7 +64,7 @@ "test:hyperframe-runtime-ci": "bun run build:hyperframes-runtime && bun run test:hyperframe-runtime-contract && bun run test:hyperframe-runtime-behavior && bun run test:hyperframe-runtime-seek && bun run test:hyperframe-runtime-duration-guards && bun run test:hyperframe-runtime-parity && bun run test:hyperframe-runtime-security", "check:hyperframe-html": "tsx scripts/check-hyperframe-static.ts", "debug:timeline": "tsx scripts/debug-timeline.ts", - "prepublishOnly": "bun run build" + "prepublishOnly": "pnpm build" }, "devDependencies": { "@types/jsdom": "^28.0.0", From 1f846f071f3d42c7232f8bff497ba414c649a8fd Mon Sep 17 00:00:00 2001 From: Vance Ingalls Date: Mon, 23 Mar 2026 13:27:55 -0700 Subject: [PATCH 2/4] build: migrate from pnpm to bun as package manager Keep pnpm for publish workflow only (publishConfig overrides + provenance). Bun handles install, run, and exec for all other workflows. - Add workspaces field to root package.json for bun workspace support - Replace pnpm setup with oven-sh/setup-bun in CI and release workflows - Update all scripts to use bun run / bun run --filter / bunx - Replace npx with bunx in lefthook hooks - Update CONTRIBUTING.md with bun commands - Delete pnpm-lock.yaml, add bun.lock - Keep pnpm-workspace.yaml for publish workflow compatibility Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/cli/src/commands/dev.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/commands/dev.ts b/packages/cli/src/commands/dev.ts index a5f32e5fe..4aaa4bdef 100644 --- a/packages/cli/src/commands/dev.ts +++ b/packages/cli/src/commands/dev.ts @@ -61,7 +61,7 @@ export default defineCommand({ }); /** - * Dev mode: spawn pnpm studio from the monorepo (existing behavior). + * Dev mode: spawn studio from the monorepo (existing behavior). */ async function runDevMode(dir: string): Promise { // Find monorepo root by navigating from packages/cli/src/commands/ @@ -105,7 +105,7 @@ async function runDevMode(dir: string): Promise { // Run the new consolidated studio (single Vite dev server with API plugin) const studioPkgDir = join(repoRoot, "packages", "studio"); - const child = spawn("pnpm", ["exec", "vite"], { + const child = spawn("bunx", ["vite"], { cwd: studioPkgDir, stdio: ["ignore", "pipe", "pipe"], }); From 546598b8daa824a1ddf412c6f91df9810fc273c2 Mon Sep 17 00:00:00 2001 From: Vance Ingalls Date: Mon, 23 Mar 2026 14:45:04 -0700 Subject: [PATCH 3/4] perf: replace tsc with tsgo for type checking (~3x faster) Use @typescript/native-preview (tsgo) for --noEmit type checking. tsc remains for builds that need emit (.js, .d.ts). --- bun.lock | 17 +++++++++++++++++ package.json | 1 + packages/cli/package.json | 2 +- packages/core/package.json | 2 +- packages/engine/package.json | 2 +- packages/producer/package.json | 2 +- packages/studio/package.json | 2 +- 7 files changed, 23 insertions(+), 5 deletions(-) diff --git a/bun.lock b/bun.lock index ad88feeff..dbbcfed9f 100644 --- a/bun.lock +++ b/bun.lock @@ -8,6 +8,7 @@ "@commitlint/cli": "^20.5.0", "@commitlint/config-conventional": "^20.5.0", "@types/node": "^25.0.10", + "@typescript/native-preview": "^7.0.0-dev.20260323.1", "concurrently": "^8.2.0", "knip": "^6.0.3", "lefthook": "^2.1.4", @@ -665,6 +666,22 @@ "@types/yauzl": ["@types/yauzl@2.10.3", "", { "dependencies": { "@types/node": "22.19.15" } }, "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q=="], + "@typescript/native-preview": ["@typescript/native-preview@7.0.0-dev.20260323.1", "", { "optionalDependencies": { "@typescript/native-preview-darwin-arm64": "7.0.0-dev.20260323.1", "@typescript/native-preview-darwin-x64": "7.0.0-dev.20260323.1", "@typescript/native-preview-linux-arm": "7.0.0-dev.20260323.1", "@typescript/native-preview-linux-arm64": "7.0.0-dev.20260323.1", "@typescript/native-preview-linux-x64": "7.0.0-dev.20260323.1", "@typescript/native-preview-win32-arm64": "7.0.0-dev.20260323.1", "@typescript/native-preview-win32-x64": "7.0.0-dev.20260323.1" }, "bin": { "tsgo": "bin/tsgo.js" } }, "sha512-e8rnqL5I4DUSjiy6jiWqYFKcgKq8tC4S+uEmJwWiyTgSIGDhaRUujJ2pb6EXmi+NPeXoES6vIG7e9BsEV0WSow=="], + + "@typescript/native-preview-darwin-arm64": ["@typescript/native-preview-darwin-arm64@7.0.0-dev.20260323.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-C3tQdgMaYn57xzRUWek+zNKMiP0z9j7fqbCjr0wlyiLNIh5jMwDArjBDKHlqSu58FKvZg7baqbqB5Mcepb3s6w=="], + + "@typescript/native-preview-darwin-x64": ["@typescript/native-preview-darwin-x64@7.0.0-dev.20260323.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-YE6pD4wdMqNgaBkXicQBLFwABOEmLxDclSM7grl0fw4cQSbfVwFCbSlwFDkmISKdmsgtWdYeMohrsTU710ufpg=="], + + "@typescript/native-preview-linux-arm": ["@typescript/native-preview-linux-arm@7.0.0-dev.20260323.1", "", { "os": "linux", "cpu": "arm" }, "sha512-6zFO/SF9Gu8rtRyEt1b10TNapQGq5b/wUjCLG14675n155r4EO3JFMgnltBViV2Eatnq7G+bXD65BUBk7Ixyhw=="], + + "@typescript/native-preview-linux-arm64": ["@typescript/native-preview-linux-arm64@7.0.0-dev.20260323.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-Jzr2gBY0ifA3XejAl7kPeHLT72JFBfzLSafOAQbANh5Iag02uPl99k8ORMfKREbYgEMMOzqPpe+r6eaKy+VEfw=="], + + "@typescript/native-preview-linux-x64": ["@typescript/native-preview-linux-x64@7.0.0-dev.20260323.1", "", { "os": "linux", "cpu": "x64" }, "sha512-UvsQdVI/LayXTowltMgtg2GHU/a/lcuOYbaAYm9+/nvgIs01VqVo0s1/lTSNBzepEk0y1EOYQ6SIsRM9lLGHxA=="], + + "@typescript/native-preview-win32-arm64": ["@typescript/native-preview-win32-arm64@7.0.0-dev.20260323.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-3208Xoe+3Xblf6WLVTkIdyh6401zB2eXAhu1UaDpZY0rf8SMHCxKW3TSJDytpri5UivCotZ0CNC2wgJ1TlymUA=="], + + "@typescript/native-preview-win32-x64": ["@typescript/native-preview-win32-x64@7.0.0-dev.20260323.1", "", { "os": "win32", "cpu": "x64" }, "sha512-DAiRqrcs58eXwjFOtbklbIHq70IpW7uYz1Bx3kNAzqoWlA7R4mC29N6G0kGEZDalGmj7f0HVuckq9AzaC1r6oQ=="], + "@vitejs/plugin-react": ["@vitejs/plugin-react@4.7.0", "", { "dependencies": { "@babel/core": "7.29.0", "@babel/plugin-transform-react-jsx-self": "7.27.1", "@babel/plugin-transform-react-jsx-source": "7.27.1", "@rolldown/pluginutils": "1.0.0-beta.27", "@types/babel__core": "7.20.5", "react-refresh": "0.17.0" }, "peerDependencies": { "vite": "5.4.21" } }, "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA=="], "@vitest/coverage-v8": ["@vitest/coverage-v8@3.2.4", "", { "dependencies": { "@ampproject/remapping": "2.3.0", "@bcoe/v8-coverage": "1.0.2", "ast-v8-to-istanbul": "0.3.12", "debug": "4.4.3", "istanbul-lib-coverage": "3.2.2", "istanbul-lib-report": "3.0.1", "istanbul-lib-source-maps": "5.0.6", "istanbul-reports": "3.2.0", "magic-string": "0.30.21", "magicast": "0.3.5", "std-env": "3.10.0", "test-exclude": "7.0.2", "tinyrainbow": "2.0.0" }, "peerDependencies": { "vitest": "3.2.4" } }, "sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ=="], diff --git a/package.json b/package.json index 971f97e36..e81a0855e 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "@commitlint/cli": "^20.5.0", "@commitlint/config-conventional": "^20.5.0", "@types/node": "^25.0.10", + "@typescript/native-preview": "^7.0.0-dev.20260323.1", "concurrently": "^8.2.0", "knip": "^6.0.3", "lefthook": "^2.1.4", diff --git a/packages/cli/package.json b/packages/cli/package.json index 69cd3fe48..9e21aa2e5 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -15,7 +15,7 @@ "build:studio": "cd ../studio && bun run build", "build:runtime": "tsx scripts/build-runtime.ts", "build:copy": "mkdir -p dist/studio dist/docs dist/templates && cp -r ../studio/dist/* dist/studio/ && cp -r src/templates/warm-grain src/templates/play-mode src/templates/swiss-grid src/templates/vignelli dist/templates/ && (cp src/docs/*.md dist/docs/ 2>/dev/null || true)", - "typecheck": "tsc --noEmit" + "typecheck": "tsgo --noEmit" }, "dependencies": { "@hono/node-server": "^1.8.0", diff --git a/packages/core/package.json b/packages/core/package.json index adb33a2af..bf7148236 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -49,7 +49,7 @@ "test": "vitest run", "test:watch": "vitest", "test:coverage": "vitest run --coverage", - "typecheck": "tsc --noEmit", + "typecheck": "tsgo --noEmit", "lint:runtime-preview-guards": "tsx scripts/lint-runtime-preview-guards.ts", "build:hyperframes-runtime": "tsx scripts/build-hyperframes-runtime-artifact.ts", "build:hyperframes-runtime:modular": "SANDBOX_RUNTIME_VARIANT=modular tsx scripts/build-hyperframes-runtime-artifact.ts", diff --git a/packages/engine/package.json b/packages/engine/package.json index 8c8dda09e..b39e4869c 100644 --- a/packages/engine/package.json +++ b/packages/engine/package.json @@ -11,7 +11,7 @@ "scripts": { "build": "tsc", "test": "vitest run", - "typecheck": "tsc --noEmit" + "typecheck": "tsgo --noEmit" }, "dependencies": { "@hono/node-server": "^1.13.0", diff --git a/packages/producer/package.json b/packages/producer/package.json index 767b0137e..cfab4a409 100644 --- a/packages/producer/package.json +++ b/packages/producer/package.json @@ -23,7 +23,7 @@ }, "scripts": { "build": "bun run --cwd ../.. build:hyperframes-runtime:modular && node build.mjs", - "typecheck": "tsc --noEmit", + "typecheck": "tsgo --noEmit", "parity:check": "tsx src/parity-harness.ts", "parity:fixtures": "tsx src/parity-fixtures.ts", "parity:fixtures:ci": "tsx src/parity-fixtures.ts", diff --git a/packages/studio/package.json b/packages/studio/package.json index da7b395bd..e2ca2eccd 100644 --- a/packages/studio/package.json +++ b/packages/studio/package.json @@ -15,7 +15,7 @@ "scripts": { "dev": "vite", "build": "vite build", - "typecheck": "tsc --noEmit" + "typecheck": "tsgo --noEmit" }, "dependencies": { "@codemirror/autocomplete": "^6.20.1", From e97d9f039915f2473e8b212b63e2a0ee11d7bf06 Mon Sep 17 00:00:00 2001 From: Vance Ingalls Date: Mon, 23 Mar 2026 22:20:51 -0700 Subject: [PATCH 4/4] style: format docs and guidelines files with oxfmt --- DOCS_GUIDELINES.md | 49 ++++++++++----------- docs/concepts/compositions.mdx | 11 +++-- docs/concepts/data-attributes.mdx | 71 +++++++++++++++++-------------- docs/concepts/determinism.mdx | 4 +- docs/concepts/frame-adapters.mdx | 17 ++++---- docs/contributing.mdx | 65 ++++++++++------------------ docs/guides/common-mistakes.mdx | 9 +++- docs/guides/gsap-animation.mdx | 18 +++++--- docs/guides/rendering.mdx | 40 +++++++++-------- docs/guides/templates.mdx | 27 ++++++++---- docs/guides/troubleshooting.mdx | 7 +++ docs/introduction.mdx | 71 ++++++++++++++++++++++--------- docs/packages/cli.mdx | 66 +++++++++------------------- docs/packages/core.mdx | 51 +++++++++++----------- docs/packages/engine.mdx | 55 ++++++++++++++---------- docs/packages/producer.mdx | 61 +++++++++++++++----------- docs/packages/studio.mdx | 9 +++- docs/quickstart.mdx | 18 +++++--- docs/reference/html-schema.mdx | 60 ++++++++++++++------------ 19 files changed, 391 insertions(+), 318 deletions(-) diff --git a/DOCS_GUIDELINES.md b/DOCS_GUIDELINES.md index 89a915ba9..c74e588df 100644 --- a/DOCS_GUIDELINES.md +++ b/DOCS_GUIDELINES.md @@ -64,11 +64,13 @@ Title ### Always annotate code blocks -```mdx -```html index.html -
-```​ -``` +`````mdx +````html index.html +
```​
+```` +````` + +````` The filename after the language tag tells readers where the code goes. @@ -97,32 +99,27 @@ npx hyperframes dev ### Use CodeGroup for multi-platform commands -```mdx +````mdx -```bash macOS -brew install ffmpeg -```​ -```bash Ubuntu -sudo apt install ffmpeg -```​ + ```bash macOS brew install ffmpeg ```​ ```bash Ubuntu sudo apt install ffmpeg ```​ -``` +````` ## Mintlify Components — When to Use -| Component | Use When | -|-----------|----------| -| `` | Sequential setup or tutorial instructions | -| `` | Same action across platforms/languages | -| `` | Alternative approaches with equal weight | -| `` / `` | Navigation to related pages, next steps | -| `` | FAQ or optional detail that would bloat the page | -| `` | Non-obvious behavior the reader should know | -| `` | Something that will break if ignored | -| `` | Helpful shortcut or best practice | -| `` | Context that aids understanding | -| `` | File/directory structure | -| `` | Screenshots or diagrams with captions | +| Component | Use When | +| ---------------------- | ------------------------------------------------ | +| `` | Sequential setup or tutorial instructions | +| `` | Same action across platforms/languages | +| `` | Alternative approaches with equal weight | +| `` / `` | Navigation to related pages, next steps | +| `` | FAQ or optional detail that would bloat the page | +| `` | Non-obvious behavior the reader should know | +| `` | Something that will break if ignored | +| `` | Helpful shortcut or best practice | +| `` | Context that aids understanding | +| `` | File/directory structure | +| `` | Screenshots or diagrams with captions | ### Callout budget: max 2-3 per page diff --git a/docs/concepts/compositions.mdx b/docs/concepts/compositions.mdx index ea9872163..1304714e9 100644 --- a/docs/concepts/compositions.mdx +++ b/docs/concepts/compositions.mdx @@ -10,8 +10,7 @@ A composition is an HTML document that defines a video timeline. Every clip -- v Every composition needs a root element with `data-composition-id`: ```html index.html -
+
``` @@ -68,6 +67,7 @@ You can embed one composition inside another in two ways: loading from an extern
``` + Define a nested composition directly inside the parent. This is simpler for one-off compositions that do not need to be reused. @@ -93,6 +93,7 @@ You can embed one composition inside another in two ways: loading from an extern ``` Inline compositions do not use `