Skip to content

Releases: socketry/presently

v0.14.1

14 May 04:27
839a7a1

Choose a tag to compare

Bump patch version.

v0.14.0

29 Apr 10:33
2bd0c91

Choose a tag to compare

  • Increase code font size by 50%.
  • Add support for includes using ![[path]] syntax.
  • Add bake presently:rehearse tasks for updating timing information.

v0.13.0

22 Apr 12:29
40ec41d

Choose a tag to compare

  • Change zoom to 50% on slide preview (presenter display).

v0.12.0

21 Apr 22:26
5c71402

Choose a tag to compare

  • Add support for translation to code slide.

v0.11.0

18 Apr 14:05
885f4bd

Choose a tag to compare

  • Add Slide#element and SlideContext#element getters — expose the slide body DOM element directly for cases where find() is not sufficient, such as measuring dimensions, attaching event listeners, or integrating third-party libraries.

v0.10.0

18 Apr 05:39
d27b06b

Choose a tag to compare

  • Replace internal SlideChain with an exported SlideContext class. SlideContext accumulates elapsed time across after() calls exactly as SlideChain did, but also exposes find(), setTimeout(), and a get elapsed() getter. Slide#after() now returns a SlideContext — existing slide scripts are unaffected.
  • Add Slide#loop(callback, {delay}) — runs a callback in a repeating loop until the slide changes. The callback receives a fresh SlideContext each iteration so it can schedule steps with after(). The loop waits for all steps to complete (context.elapsed) plus an optional extra delay before starting the next iteration. All timeouts flow through the slide's existing tracked setTimeout, so they are cancelled automatically on slide change.

v0.9.0

18 Apr 02:52
b9ca059

Choose a tag to compare

  • SlideBuilder#show and SlideBuilder#next no longer overwrite view-transition-name on elements that already have one set. This allows elements with explicit names (for morph transitions to other slides) to coexist with the build system — they still get visibility and viewTransitionClass managed, but keep their own name.

v0.8.0

14 Apr 11:06
fcbac3b

Choose a tag to compare

  • Add optional translation section to the default template.

v0.7.0

14 Apr 07:57
08cddc5

Choose a tag to compare

  • Rework build effects to use direct CSS class animation rather than view-transition-class. build-fade, build-fly-up, etc. are now regular @keyframes classes applied to the revealed element, rather than view transition pseudo-element selectors. This decouples in-slide sequential animation from slide-level morph transitions.
  • Rename SlideElements#build to SlideElements#show for clarity — boxes.show(0) / boxes.show(3) more clearly describes the outcome from the audience's perspective.
  • Add SlideElements#builder(options) — returns a SlideBuilder with default options (group, effect) and a cached position, so callers can use next() instead of tracking the step count manually.
  • Add SlideBuilder#show(count, overrides) — set visibility state to an arbitrary position. Returns a Promise that resolves when the reveal animation completes (or immediately when no effect is given).
  • Add SlideBuilder#next(overrides) — reveal the next element with the builder's default effect, optionally overridden per call. O(1): only touches the single newly revealed element. Returns a Promise.
  • Add SlideBuilder#play(interval, callback) — reveals all remaining elements in sequence with interval milliseconds between each. An optional callback is invoked after each reveal; return false to stop playback early. Requires the builder to be created via slide.find(...).builder() so timeouts are tracked and cancelled on slide change.
  • Add SlideBuilder#finished getter — returns true when all elements have been revealed.
  • Add Slide#after(delay, callback) — schedules a callback after a delay in milliseconds and returns a SlideChain. Subsequent .after(delay, callback) calls on the chain fire relative to the previous step, making sequential reveal timing easy to read and adjust.
  • Add Slide#setTimeout(callback, delay) — a tracked replacement for the global setTimeout. All timeouts registered this way are automatically cancelled when the slide changes, preventing stale callbacks from firing after navigation. The global setTimeout in slide scripts is shadowed by this method automatically.
  • Add Slide#cancelTimeouts() — cancels all pending timeouts registered by the slide's script. Called automatically by the presentation engine on every slide change.

v0.6.0

13 Apr 10:38
315b860

Choose a tag to compare

  • Add bake presently:slides:speakers task to print a timing breakdown grouped by speaker. Each speaker's slides are listed in presentation order with individual and total durations, making it easy to balance talk time in multi-speaker presentations. Slides without a speaker key are grouped under (no speaker).