Skip to content

Glossary ​

Definitions for terms Almanach uses repeatedly without re-explaining every time. Each entry links to the page where the concept is covered in full — this page is for "what does that word mean," not a replacement for reading the linked page.

accessibleHelpText ​

Supplementary guidance announced alongside an element's accessibleName, for detail the visible label doesn't already convey. Supplements the accessible name; it never replaces it. See Accessible Control Panel Example.

accessibleName ​

The string a screen reader announces for a focusable element in the PDOM — the accessibility equivalent of a visible label, set as a Node option. See The Parallel DOM.

brand ​

A build-time flag (phet vs. phet-io, among others) that determines which features compile into a PhET sim — notably whether PhET-iO instrumentation is active. Most SceneryStack apps never set this. See PhET-iO and Instrumentation.

DerivedProperty ​

A read-only Property whose value is automatically recomputed from one or more other Properties whenever any of them change — you never call .value = on it yourself. See DerivedProperty and Emitter vs. Property.

dispose() ​

The explicit cleanup method every long-lived Node/Property/DerivedProperty/Multilink/PhetioObject exposes, since SceneryStack has no framework-managed component lifecycle — objects created and destroyed dynamically must be disposed, or they (and anything they linked to) leak. See Dispose and Memory Management.

Display ​

The scenery object that owns a root Node, drives the render loop, and turns the scene graph into pixels (and the PDOM into real DOM). See Display.

DragListener ​

A pointer-only (mouse/touch/pen) input listener that writes to a model positionProperty, typically through a transform. Superseded for new code by RichDragListener, which adds keyboard support. See Drag Listeners.

Emitter ​

An axon primitive for a momentary event with no persisted value — "did X just happen?" as opposed to a Property's "what is it right now?" See Emitter and Emitter vs. Property.

EnumerationValue / Enumeration ​

The pattern for modeling a closed set of values (a mode, a phase) as real object instances with identity, instead of a string-literal union — gives runtime-validated EnumerationProperty writes. See The Enumeration Pattern.

Hotkey ​

The lower-level building block behind KeyboardListener and KeyboardDragListener: a single dynamic key combination (optionally described by a Property) that can be registered directly on a Node's input listeners or on the shared globalHotkeyRegistry. See Keyboard Input and Hotkeys.

KeyboardDragListener ​

The keyboard-driven equivalent of pointer dragging — moves a positionProperty with arrow keys or WASD. Composed together with DragListener inside RichDragListener. See KeyboardDragListener.

Model-View Separation ​

The foundational architecture every page in Almanach assumes: model classes hold state as Property/Emitter and know nothing about scenery; view classes (Node subclasses) observe that state and never hold state of their own. See Model-View Separation.

ModelViewTransform2 ​

A phetcommon class mapping between a model coordinate frame and a view (pixel) coordinate frame, most often passed as the transform option to a drag listener. See ModelViewTransform2.

A utility that observes several Properties at once and fires a single callback when any of them change, without manually chaining multiple .link() calls. See Multilink and The Multilink Pattern.

Node ​

The base class of every visual (and, via the PDOM, every accessible) element in a scenery scene graph. See Node.

options pattern / optionize ​

The convention of configuring a class through one trailing providedOptions object, merged with compile-time-checked defaults via optionize, rather than a positional-parameter list or ad hoc destructuring. See The Options Pattern.

PDOM (Parallel DOM) ​

Scenery's hidden tree of real HTML elements, mirroring the scene graph's interactive structure, so screen readers and keyboard focus can operate on content that otherwise renders to Canvas/SVG/WebGL. See The Parallel DOM (PDOM).

phet-io / PhET-iO ​

PhET's external instrumentation product: wrappers can inspect, control, save, and restore sim state via stable Tandem addresses. SceneryStack inherited the APIs; typical SceneryStack apps do not use them. See PhET-iO and Instrumentation.

PhetioObject ​

The base class (from tandem) that can give an object PhET-iO identity when instrumented. Property, Node, and Screen extend it, but you usually ignore the instrumentation options. See PhET-iO and Instrumentation.

Property ​

A reactive container for a single value that persists between reads — the fundamental "state" primitive in axon, observed with .link() and read/written with .value. See Property and Emitter vs. Property.

query parameter ​

A URL parameter driving optional or debug-only sim behavior, declared through a single schema object and parsed via QueryStringMachine.getAll, rather than reading location.search ad hoc. See Query Parameters Pattern.

Reset-All Pattern ​

The convention that every screen has exactly one ResetAllButton, whose listener calls exactly one method: the model's own reset(). See The Reset-All Pattern.

RichDragListener ​

The recommended default for new draggable code: composes an internal DragListener and KeyboardDragListener behind one TInputListener-implementing API, giving pointer and keyboard support from a single declaration. See RichDragListener and Migrating a Legacy Sim to RichDragListener.

Screen ​

One self-contained model/view pair within a Sim — owns a required Tandem (boilerplate), plus homeScreenIcon, navigationBarIcon, and translated name. See Multi-Screen Sim Structure and Screen.

ScreenView ​

The root Node of a Screen's view; defines layoutBounds and reserves its own PDOM structure (pdomPlayAreaNode, pdomControlAreaNode) that a subclass populates rather than replaces. See ScreenView.

Sim ​

The application shell that owns a list of Screens, builds the home screen and navigation bar once there's more than one, and drives the top-level step loop. See Sim.

Tandem ​

PhET-iO's naming-tree handle for instrumented elements. Screen still requires one; everyday components do not need you to pass it. See Tandem and PhET-iO and Instrumentation.

TInputListener ​

The scenery interface every input listener implements (DragListener, PressListener, KeyboardListener, RichDragListener, …), letting pointer and keyboard/AT events dispatch through one shared mechanism instead of separate code paths per input modality. See Alternative Input Overview.

Trail ​

An ordered path of Nodes from a root to a descendant, used to disambiguate which instance of a Node is meant when a scene graph is a DAG rather than a strict tree — handed to you on every input event as event.trail. See Trail.

Voicing ​

PhET's speech-synthesis feature, layered on top of the PDOM rather than replacing it: an opt-in preference that speaks voicingNameResponse/voicingObjectResponse/voicingContextResponse/voicingHintResponse content aloud in response to interaction. See Voicing.