- src/slides/compile.ts compiles a project into runtime-ready slides.
:thisSlide is resolved to each slide's own selector before Less runs,
so output is deterministic and never depends on which slide is visible.
- src/slides/runtime.ts mounts every slide once and moves them through
idle -> entering -> current -> leaving via a data-ps-state attribute;
CSS owns the animation, JS only owns the lifecycle. Rapid input
coalesces into a single settle instead of a queue of stale operations.
Arrow/space/Home/End keys, plus history integration: back/forward step
through slides and a reload restores the slide you were on.
- The editor gained two buffers: HTML slides and the project Less. The
preview and the presentation are the same runtime (present = fullscreen
of the same stage), and broken Less keeps the last good preview while
reporting the error.
Adds `less` (the authoring language) and `@types/less`.