Skip to content

Releases: panglesd/slipshow

v0.10.0

12 Mar 19:18

Choose a tag to compare

It is with a blatant denial of the current situation that I announce the next release of Slipshow:

Slipshow 0.10.0: Don't look {up}

The asteroid star of the release is the new warnings that the compiler can raise to help you write a bug-free presentation. Those warnings are visible on the command-line, but also in the hot-reloading preview in serve mode!

ezgif com-optimize

Warnings will hopefully help detect bugs in your presentations and improve the experience, especially of newcomers!

Thanks again to NLNet for supporting the development of Slipshow!

Here is the full changelog:

Added

  • Helpful warnings at compile-time (#213):
    • Action parsing failures,
    • Missing ID (and external-ids frontmatter field to selectively deactivate),
    • Duplicated ID,
    • Frontmatter parsing error,
    • Wrong target type for actions,
    • Missing file,
    • Unknown attribute,
    • ...

Fixed

  • Fixed drawing stopping slightly after pauses (#216)
  • Fixed keyboard shortcuts not working in serve mode until the preview was
    clicked (#215)
  • Fix shortcuts not working after saving a drawing (#217)
  • Fix wrong example links in docs (#218)

Slipshow 0.9.0: Manim Black

19 Feb 10:41

Choose a tag to compare

It is with extraterrestrial excitement that I announce the next release of Slipshow:

Slipshow 0.9.0: Manim Black

The featured new feature of this release is the ability to easily integrate Manim videos in your presentation.

Peek2026-02-1900-19-ezgif com-optimize

Note that, compared to just playing a video, you can schedule pauses, go faster to the next pause, and go back to the previous pauses, as showcased below.

Skipping steps and going backward demo

fast-ezgif com-optimize

This release features many more changes, such as TikZ and MermaidJS integration! Here is the full changelog:

Added

  • Support for Mermaid JS (#205)
  • Support for syntax highlighting of all highlightjs-supported languages and
    themes (#200, #208)
  • Support for MathJax extensions, especially the html extension to allow actions
    to target math elements (#202)
  • Add KaTeX as a possible alternate renderer (#202)
  • Added carousel-fixed-size to have carousel not change size (#207)

Fix

  • Fix impossibility to reopen speaker view after closing it on Firefox (#198,
    issue #194)
  • Fix impossibility to open speaker view in serve mode (#198, issue #197)
  • Fix links opening inside iframe (#198)
  • Fix ending excursions with ijkl only when needed (#207)
  • Fixed video long-step handling (#207)
  • Removed confusing auto-generated IDs (#209)
  • Fix play-media behavior when facing errors (#210)

Docs

  • Add how to include TikZ figures in your Slipshow presentation (#206)
  • Add how to include Manim videos in your Slipshow presentation (#207)

Credit: @voodoos for the name of the release.

Slipshow 0.8.1: Les gnomes voleurs de Slipshow

21 Jan 20:23

Choose a tag to compare

This is a patch release to fix a very embarrassing error that slipped in the last release

v0.8.0

20 Jan 05:46

Choose a tag to compare

Hello!

It is in a state of sliplessness that I announce the new release of Slipshow!

Slipshow 0.8.0: Les gnomes voleurs de Slipshow

This release comes with a handful of bugfixes, in particular on the new and experimental record-and-replay for drawings.

But the star of the release is the new documentation! For instance, the tutorial on structuring your presentation visually will allow you to create presentations such as this one, presenting Slipshow's business model:

gnomes-ezgif com-optimize

The tutorials also includes live code blocks, and Slipshow has now a dedicated website.

Here is the full changelog!

Features

  • Add a "mirror mode" to the speaker view, which mirrors the entire screen you
    are sharing with the audience (#188)
  • Add support for external files through CLI and frontmatter (#191)
  • Add shortcut to delete or unselect selection in drawing editing (#192)
  • Add a "Close editing panel" button when there are no strokes (#192)
  • Default file names for drawing recording depend on their names (#192)
  • Improve -o argument wrt directories (#190)
  • Inline SVGs instead of adding them as images, allowing the use of classes and
    ids in SVGs (#190)
  • Rework the docs! (#190)

Fix

  • Fix pauses time not updated after a rerecording (#192)
  • Fix drawing editing shortcuts triggering even when focusing on a textarea
    (#192)
  • Fix interaction between fields and drawing editing shortcuts (#192)
  • Fix order of clear and draw action: the first comes first (#192)
  • Use .woff2 for embedded fonts (#190)

Thanks to NLNet for supporting the development of Slipshow!

v0.7.0

26 Nov 18:56

Choose a tag to compare

Presentation

Hello!

It's with guilty pleasure that I announce the new release of Slipshow 0.7.0: The Slipshow of Dorian Gray!

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:
image|690x57
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!

Thanks a lot to NLNet for their invaluable support.

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)

v0.6.0

18 Aug 15:52

Choose a tag to compare

I am speechless to announce the new release of Slipshow!

v0.6.0: The King's Slipshow

This release focuses on one specific feature: the speaker view.

Peek2025-08-1816-01-ezgif com-video-to-gif-converter

(Disclaimer: The text in the left of the gif above was mostly generated by an LLM, mimicking "The King's speech" declaration of war, but turned to praise peace, which we need a lot in this world)

The speaker view includes a timer, speaker notes, and a presentation synced with the main one. Note that a compiled presentation is still a standalone html file that you can just double click on.

To open the speaker view, press s. To send some text to the speaker notes, use the speaker-note action, as in the code below:

# The King's Slipshow

{pause speaker-note}
Say it like this: "perhaaaaaaaaps"...

In this grave hour, perhaps the most fateful in our history, I send to every household of my peoples, both at home and overseas, this message, spoken with the same depth of feeling for each one of you as if I were able to cross your threshold and speak to you myself.

{pause speaker-note}
Make a little pause and show a tear, it'll make it more dramatic.

As always, the world finds itself standing on the edge of war.

{pause center=time speaker-note}
Emphasize roar but avoid making everyone uncomfortable.

{#time}
Time after time, we have sought peaceful ways to resolve our differences. Yet too often, dialogue has been drowned out by the roar of weapons.

{pause speaker-note}
Pretend you know what you are speaking about: as a King, you can do that.

We are told that violence is unavoidable, that to be safe we must fight. But this is the old and dangerous lie that “might is right.” If we accept it, we accept the slow destruction of all that makes life worth living.

{pause down=end speaker-note}
DRAMATICALLY POINT FINGERS AT THE AUDIENCE!!!

For the sake of all we cherish, we must find another path. The real challenge before us is not to fight harder, but to imagine peace when anger blinds us, and to choose cooperation when conflict seems easier.

I call on all people, across every border, to remain calm, firm, and united in the higher cause of preserving life. To resist the call of hatred. To remember that in every city, in every nation, there are children who deserve a future unscarred by war.

The road will be hard. There may be days when peace feels impossible. But war spreads beyond the battlefield — it steals homes, divides families, and poisons the generations to come.

{#end}
If we remain steadfast in our refusal to give in to violence, then, with courage and compassion, we will prevail — not by destroying, but by preserving.

Full changelog below:

Engine

  • Add a speaker view, opened with s. (#147)
  • Fix Z and X not working (#147)
  • On step change, move back to the position we left (#148)

Language

  • Add a speaker-note action. (#147)

v0.5.0

07 Aug 12:35

Choose a tag to compare

Warning: External files have invaded our world! They raise dead formats like PDF into the liveliness of Slipshow presentations!

Slipshow 0.5.0: Plan 9 from External Files

As subtly hinted by the title, this slipshow release focuses on the integration of external files in a presentation. Rest assured, a compiled Slipshow presentation stays a standalone HTML file!

In effect, you can now include PDFs, videos and audios files in your presentations! Here is a demo:

plan9_demo-ezgif com-video-to-gif-converter

With the simple source:

{#title}
# Plan 9 from External Files

{pause play-media=mp4}
## Video demo

![](plan9.mp4){#mp4 style="width:100%"}

{pause up}
## PDF demo

![](plan9.pdf){#pdf}

{focus=pdf}

{change-page="~n:all pdf"}

{unfocus up=title}

Here is the full changelog:

Compiler

  • Add support for pdfs (#144)
  • Add support for audios and videos (#139, #142)
  • Fix enter action being added to blockquotes

Language

  • Add a carousel type and a change-page action (#144)
  • Add a play-media action (#139, #142)

Engine

  • Fix compatibility of slipshow and editable content (#141)
  • Fix scroll bar appearing in drawing toolbox (#143)

v0.4.1

16 Jul 13:43

Choose a tag to compare

Quick fix following the 0.4.0 release, which had a bug where pauses hide the UI.

Engine

  • Fix pauses hiding the UI

v0.4.0

16 Jul 12:51

Choose a tag to compare

It is with bitter joy that I'm announcing the 0.4.0 version of Slipshow:

The slides strike back

The main improvements of this version are the introduction of arguments to actions, a frontmatter, and improvements to slides.

All together, they allow to easily design presentations the slides way:

ezgif-208995c3ed578f

---
toplevel-attributes: {children:slide children:enter="~duration:0"}
---

# Slide 1

Content

---

# Slide 2

Content

---

# Slide 3

You get it

So, why "bitter joy"?

I was reluctant to add good support for traditional slide-based presentation. There are already very good and mature solutions for this, including some with similar technical foundations as Slipshow. I was more interested in developping the new things: Slips!

However, Slipshow starts to have useful features that competitor don't always have (for instance: a self-contained html output! But more, and more to come). Also, for people who already have slide-based presentations, it makes it easier to migrate them, and use a single tool for old and new presentations!

Finally, I wanted to make Slipshow a bit more versatile and added attributes, frontmatter, and a new options: toplevel-attributes. The proper slide support is actually just a nice consequence of this versatility! 🥳

Here is the full changelog:

Compiler

  • Fix children: not working sometimes (#135)
  • Add --toplevel-attributes to control the attributes on the toplevel
    container (#137)

Engine

  • Render slide titles as slide titles (#137)

Language

  • Add arguments to actions (#135)

  • Add frontmatter (#137)

    You can now do

    ---
    theme: vanier
    dimension: 16:9
    css: my_pres.css
    ---
    
    The content here.

v0.3.0

03 Jul 16:19

Choose a tag to compare

It's my ginormous pleasure to announce the release of:

Slipshow v0.3.0: The return of the subslips

As you can see, a crucial improvement is that releases are now named. Semver is boring, let's add a bit of fun in a serious world.

The release name subtly suggests that subslips are back. Yes, subslips are back! Slipshow allows your presentation to be visually organized. Subslips are slips that are inside a slip. You can then "enter" it, go through it, and exit it to go back to the original slip.

But a gif is worth a ginormous word, so here it is:

A demo of slipshow entering subslips

To obtain a similar effect, using the new release, you can simply do:

We will discuss three topics:

{style="display:flex" children:slip}
----
# Topic 1

Content of the first topic

---
# Topic 2

Content of the second topic

---
# Topic 3

Content of the third topic

If you want to separate the source in multiple file, it's easy: {include src="file/to/include.md"}. And did you notice that --- now act as group separators? At this point, let me just output the changelog (highligting some of them):

Compiler

  • Fix file watching issues by vendoring a (modified) irmin-watcher, and watching
    all files the presentation depends on (images, themes, ...) (#113)
  • Adds a favicon to the presentation file (Slipshow now has a logo!) (#115)
  • Fix missing attributes on images (#117)
  • Fix missing mime type on images that made svg undisplayable (#120)
  • Fix detection of math inside inline attributes (#124)
  • Add --dimension to specify the dimension of the presentation (#131)
  • Add less boring name for versions (#132)

Language

  • Add {include src="path/to/file.md"} to include a file in another (#114)
  • Allow pause to have a target (#118)
  • Remove the need for step to execute actions (#118)
  • Added support for subslips and slides (#118)
  • Added pause blocks (#127)
  • Use horizontal lines (---) to group blocks (#129)
  • Pass attributes to children with children: (#130)
  • Consistently remove the need for -at-unpause (#133)

Engine

  • Simplify table of content by removing preview (#118)
  • Fix wrong computation of location (#118, #119)
  • Improve zooming behaviour (everywhere) and performance (on chrome-based browsers...) (#121)
    • If someone has some expertise on how to improve performance on firefox, I'm interested!
  • Add PageUp and PageDown as navigation keys, adding support for pointers (#126)
  • Do not act when control is pressed (#126)
  • Fix wrong positioning on scaled slips (#128)

Credits

Thanks to the NLNet foundation for supporting this project!