Thanks for your interest. reframe is early alpha, so issues, ideas, and PRs are all welcome. By participating you agree to the Code of Conduct, and by opening a pull request you agree to the Contributor License Agreement for your contribution (a standard CLA so the project's licensing stays flexible — it does not affect your right to use reframe under its MIT license).
brew install ffmpeg # system dep (or apt install ffmpeg)
pnpm install
pnpm exec playwright install chromium # one-time (postinstall is blocked)
pnpm test # vitest
pnpm typecheckAGENTS.md is the working guide for the repo (commands, repo map, conventions,
release). Read it before larger changes. Scene syntax lives in
docs/guides/edsl-guide.md.
- Determinism is the contract. Scenes are pure functions of time: no
Math.random()orDate(usewiggle/aseed). The golden snapshots inpackages/core/test/__snapshots__encode it; an unexpected change there is a regression to explain, not to bless. - Stable addresses survive regeneration. Don't rename node
ids, state names, or timelinelabels for concepts that persist a redesign (seedocs/guides/regen-contract.md). - Don't edit
benchmark/results to change numbers; they are recorded measurements. - Keep
pnpm testandpnpm typecheckgreen. New behavior needs a test.
docs/guides/*.mdare code-coupled — edit content deliberately. They are single-sourced: printed verbatim byreframe guide, bundled into the npm package (the build copies only these 4 files), and rendered by the docs site. Don't rename or restructure them.docs/docs.json+docs/*.mdxare the Mintlify presentation layer — safe to edit freely. They only reference the guides in the nav; editing them can't affectguides/(separate files), and they never leak into the npm bundle. The wholedocs/folder is the Mintlify content root (kept together on purpose — a page must live under the root to appear in the site, so the guides stay here rather than being duplicated into a separate docs dir).examples/scenes/is the curated example set (rendered, referenced, test-fixtured). Overflow variants and scratch live inlabs/scenes/; live- data probes inlabs/. Scenes can live anywhere — these dirs are the repo's own convention, plus the preview picker and a few golden tests readexamples/scenes/.out/is gitignored render scratch — the default output ofreframe render. Everything in it is reproducible;pnpm cleanwipes it (keepingout/_keep/for anything non-regenerable you parked there). Curated renders live indocs/assets/gallery/viapnpm gallery, not inout/.
- Fork and branch from
main. - Make the change with tests; run
pnpm testandpnpm typecheck. - Open a PR describing the change and why. CI runs typecheck + tests. Opening a PR confirms you agree to the CLA.
Maintainers handle releases (tag-triggered npm publish); contributors don't need to bump versions.