Skip to content

FAQ

Is this the same as PhET Simulations?

No, though they're closely related. PhET Interactive Simulations is the project that publishes the free interactive science/math sims at phet.colorado.edu. SceneryStack is the open-source TypeScript framework PhET built those sims on top of and later packaged for outside use — a scene graph, a reactive-state library, UI components, and an application shell (see What is SceneryStack?). Almanach documents SceneryStack, the framework, for anyone building their own interactive with it — not the PhET sims themselves, and not the PhET organization's internal engineering conventions beyond what's needed to use the published package.

Do I need to know PhET's internal repo structure to use scenerystack?

No. The published scenerystack npm package re-exports the simulation-author-facing parts of PhET's many internal repositories as flat subpaths (scenerystack/scenery, scenerystack/axon, …) — you don't need to know that Sim/ScreenView originate in a repo called joist, or that the package bundles work from a dozen-plus separate source repositories at all. Almanach deliberately keeps to that same boundary: per the Roadmap, internal build/branding/rendering-primitive subpaths (chipper, perennial, brand, splash, init, assert, adapted-from-phet, alpenglow) are explicitly out of scope for documentation here, because they're not part of the simulation-author-facing surface.

Which package version does Almanach document?

scenerystack v3.0.0 (see npmjs.com/package/scenerystack). Code samples throughout Almanach use real imports checked against that version's source. If you're using a materially newer or older major version, treat class/option names here as a strong starting point, not a guarantee — check the official reference for anything version-sensitive, and see SceneryStack Version Compatibility Notes for when a re-verification pass is due.

How current is this documentation?

It varies page by page, by design. Every page carries a status of stub, draft, complete, or verified in its frontmatter — stub reserves a topic with placeholder content, draft is fully written but not yet checked against real source, complete is internally consistent and confident, and verified has had an independent pass cross-check its technical claims against real SceneryStack source or the official reference. See the Authoring Guide for the full lifecycle, and the Roadmap for how many pages currently sit at each status and what's still open.

Is this an official SceneryStack or PhET resource?

Treat it as a community-maintained reference grounded in the real published package and the official scenerystack.org/reference site, rather than assuming it's the canonical source — when Almanach and the official reference disagree, the official reference wins. Every page's sourceRefs frontmatter field (where present) links to what its technical claims were checked against.

Can I use SceneryStack outside of a PhET-style multi-screen sim?

Yes — scenery (the scene graph) and the reactive-state libraries (axon, dot) are usable as a standalone rendering/state library without joist's Sim/Screen application shell at all. See Scenery Application vs. Standalone Library for the two shapes and when to reach for each, and Standalone Scenery App Example for a worked example.

Why do some libraries only have a page or two, while others (axon, scenery) have dozens?

Coverage is intentionally uneven rather than uniform, per the Roadmap: the libraries most simulation authors touch daily (axon, dot, kite, scenery, sun, scenery-phet, joist, twixt, tandem, phetcommon) go deepest, at a "most commonly used classes" depth. A handful of real-but-less-explored libraries (tambo, bamboo, vegas, mobius, utterance-queue, phet-core, query-string-machine, nitroglycerin, tappi) only have first-pass coverage, and some of their pages are lower-confidence until independently verified — check a given page's status before treating it as settled.

Why does a page say status: draft or status: stub instead of finished content?

Both are intentional, visible markers, not an oversight — see The status lifecycle. A stub reserves a topic so parallel contributors don't duplicate it; a draft is complete prose that simply hasn't had its technical claims checked against real source yet. Neither means "ignore this page," but both mean "verify anything load-bearing yourself before relying on it," especially for a sourceRefs link pointing only at the npm package listing rather than a specific verified detail.

How do I contribute a page, or fix something wrong on an existing one?

Read the Authoring Guide for the frontmatter schema and folder taxonomy, then the Roadmap for what's already covered versus open. Every page's frontmatter and cross-links are validated by npm run generate (and by CI), so a page that doesn't follow the schema, or that links to a path that doesn't exist, fails the build loudly rather than silently shipping broken.

Where do I report a bug in SceneryStack itself, as opposed to Almanach?

Almanach doesn't own SceneryStack's source — file framework bugs against the upstream project (see the bugs/homepage links on the npm package page), and reserve issues in Almanach's own repository for problems with the documentation itself (a wrong claim, a broken cross-link, a missing page).

My import or build isn't working — is that covered here?

Almanach documents the API surface, not project setup and tooling failures — for those, see Troubleshooting Common Setup Errors (Node version mismatches, wrong import subpaths, tsconfig.json module resolution) and Supported Browsers for platform-level compatibility questions.

Is Almanach usable by an LLM agent, not just a human?

Yes, deliberately. npm run generate writes /llms.txt (per-page links and descriptions), /llms-full.txt (the full text of every page), and /manifest.json (all frontmatter plus computed metadata) into the site root, so an agent can fetch a single file for the whole knowledge base's content instead of crawling pages one at a time — see Generated artifacts.

Start at "What is SceneryStack?" if you're new to the framework itself

This FAQ assumes you already know roughly what SceneryStack is; if you don't, What is SceneryStack? is the actual starting point, with the Glossary as a reference for any unfamiliar term you hit along the way.