[ANN] Slipshow!

I’m back!

Slipshow 0.7.0: The Slipshow of Dorian Gray

It’s with guilty pleasure that I announce the new release of Slipshow 0.7.0: The Slipshow of Dorian Gray, on opam.

$ opam update
$ opam upgrade slipshow

This release contains a handful of bugfixes. But the highlight of the changelog is an experimental support for recording and replaying annotations!

Peek 2025-11-26 13-25

The gif above was made using the new feature. You can also view it live. If you want an example of a more interesting use of the feature than a picture of me grow old, you can also see this presentation. You can also find the doc here.

The exclusive feature, that might not be obvious above, is that once you’ve recorded a series of strokes, you can edit it. For instance, here is the timeline for this presentation:


You can see it live and edit it by pressing Shift + R in the presentation, and selecting one of the recording in the dropdown on the bottom left.

However experimental this is, I can’t wait to see what kind of good and bad uses it can have for your presentations. Please post them here!

Thanks a lot to NLNet for their invaluable support.

And before the changelog, an exclusive information relevant to OCaml users! The drawing edition UI, and actually the whole drawing mechanism, is made using Functional Reactive Programming, in particular with @let-def’s brr-lwd library! As always, I’d like to say thank you to the developers of open source libraries, you are so great.

Here are the release notes:

BREAKING CHANGES!

  • I removed support for the “setext” headings: Underlining a title with dashes will no longer make a title. Sorry for breaking a standard, but that messes too much with the --- separator. Replace it with atx headings: # This is a title.
  • A bug in the carousel was fixed, breaking the workaround. If you used +2 to go to the next meaningful page, you can now change that, either to +1 or to all.
  • The semantics of focus and unfocus was changed. Before, you had to unfocus as many times as you focused. Now, you have to unfocus only once.
  • If you find any migration problem, please open an issue and I’ll help for the migration!

Compiler

  • Embed Liberation Sans fonts (and use them) (#150)
  • Fix missing favicon (which was missing since speaker view) (#150)
  • Fix changing step number from speaker note does not update serve mode state
    (#154)
  • Fix blank lines considered as elements in carousel (#170)
  • Allow to specify port in slipshow serve with -p or --port (#176)
  • Fix link with no content in block raising a syntax error (#180)
  • Remove support for Setext headings (#178)

Engine

  • Allow to record and replay strokes (#187)
  • Fix speaker note scrolling (#150)
  • Fix script undos recovery when script execution fails (#150)
  • Hide paused/unrevealed elems also for mouse (#150)
  • Don’t execute scripts when computing toc (#150)
  • Mute medias in speaker view (#152)
  • Use the perfect-freehand
    library to generate strokes. (#151)
  • Fix order of execution of actions (center after enter) (#171)
  • Fix pauses not being scoped in slides (#179)
  • Fix exiting not where it should (#179)
  • Fix unfocus behavior to match the docs (#179)
  • Fix wrong position bug on custom dimensions (#182)
  • Fix infinitely jiggling autoresizing (#187)
  • Fix not being able to draw outside of inner presentation (#187)
  • Fix permanent fast-moving bug (#187)
13 Likes