|
2 | 2 |
|
3 | 3 | ## [Unreleased]
|
4 | 4 |
|
| 5 | +> [!NOTE] |
| 6 | +> TLDR: |
| 7 | +> - Engine rewritten in OCaml |
| 8 | +> - Fewer bugs when navigating back |
| 9 | +> - Stronger foundation (eg, for subslips) |
| 10 | +> - Custom scripts requires minor adjustments |
| 11 | +> - Breaking change in subslip HTML |
| 12 | +> - Drawing now in SVG |
| 13 | +> - No more zoom issues |
| 14 | +> - Erasing works "per-stroke" |
| 15 | +> - Revamped table of content |
| 16 | +> - Now based on title structure rather than subslips |
| 17 | +> - New `--markdown-output` flag for converting to GFM |
| 18 | +> - Parser bugfixes |
| 19 | +> - License change: Now GPLv3 (previously MIT) |
| 20 | +> - npm distribution discontinued. |
| 21 | +> - Special thanks to NLNet for their [sponsorship](https://nlnet.nl/project/Slipshow/)! |
| 22 | +
|
| 23 | +Dear readers, |
| 24 | + |
| 25 | +I am thrilled to announce the 0.1 release of Slipshow, the slip-based |
| 26 | +presentation tool! |
| 27 | + |
| 28 | +This is a _major_ minor release. While versions `0.0.1` to `0.0.33` have served well |
| 29 | +to experiment, this release marks a fresh start, aimed at being a solid |
| 30 | +foundation for a project with a clear direction. A huge thank you to NLNet for |
| 31 | +[sponsoring](https://nlnet.nl/project/Slipshow/) this milestone! |
| 32 | + |
| 33 | +So, what is new? Quite a lot, the main change being that the engine has been |
| 34 | +_fully rewritten_. |
| 35 | + |
| 36 | +### The engine |
| 37 | + |
| 38 | +Started as a single file javascript project, the old engine evolved presentation |
| 39 | +by presentation -- leading to numerous bugs, maintenance challenge or |
| 40 | +extensibility issue. (In other word, I did all I could not to touch it despite |
| 41 | +all the bugs) |
| 42 | + |
| 43 | +This release introduces a complete rewrite of the engine in OCaml, with new |
| 44 | +design choices that improve reliability and expandability. Let's go over the key |
| 45 | +benefits and breaking changes. |
| 46 | + |
| 47 | +#### Navigating Forward... and Backward |
| 48 | + |
| 49 | +One of the greatest weakness of the old engine was handling backward |
| 50 | +navigation. Since it started as a simple "script scheduler", going back wasn't straightforward. The workaround involved taking a snapshot |
| 51 | +of... everything (the DOM, the state, ...), to be able to go back in time. |
| 52 | + |
| 53 | +This had many bugs, in animations (such as the "focus" action), and in its |
| 54 | +iteraction with other features (such as drawing). |
| 55 | + |
| 56 | +So, what is new in this engine? The engine now records an undo function for each |
| 57 | +step of the presentation. |
| 58 | +While this may not sound much, it is a ton better in terms of development. It's |
| 59 | +a much stronger foundation to build new features from. It's also much more |
| 60 | +efficient for long presentations. |
| 61 | + |
| 62 | +In most cases, your old presentations will work without modification in the new |
| 63 | +engine. However, there is one case where it needs modification: when you include |
| 64 | +the execution of a custom script in your presentation. In this case, you need to |
| 65 | +return the function undo to undo the executed step: see the |
| 66 | +[documentation](https://slipshow.readthedocs.io/en/stable/syntax.html#custom-scripts)! |
| 67 | +(This is not ideal and better solutions are being experimented) |
| 68 | + |
| 69 | +#### Writing |
| 70 | + |
| 71 | +Previously, live annotations used the excellent |
| 72 | +[atrament](https://github.com/jakubfiala/atrament) library. While great in many |
| 73 | +cases, its bitmap-based approach caused blurriness when zooming. |
| 74 | + |
| 75 | +This release introduces a custom SVG-based annotation system, which eliminates |
| 76 | +zoom issues. Another change: erasing now works stroke-by-stroke instead of |
| 77 | +pixel-by-pixel. |
| 78 | + |
| 79 | +#### Table of content |
| 80 | + |
| 81 | +The old table of contents was based on the slip structure, which didn’t work |
| 82 | +well for presentations that primarily used a single slip (as is often the case |
| 83 | +with compiled presentations). |
| 84 | + |
| 85 | +The new sidebar-style table of contents is now generated from headers, making it |
| 86 | +more intuitive and aligned with the presentation’s structure—resulting in a much |
| 87 | +smoother navigation experience! |
| 88 | + |
| 89 | +#### Breaking change: Subslips |
| 90 | + |
| 91 | +The HTML structure for subslips has evolved, in particuler to avoid having to |
| 92 | +provide the scale of your subslips. |
| 93 | + |
| 94 | +Support for subslip in the new engine is not mature and will be announced in the |
| 95 | +next release, but bear in mind that if your presentation relies on them, you |
| 96 | +might want to wait a bit before migrating to the new engine! |
| 97 | + |
| 98 | +### Compiler |
| 99 | + |
| 100 | +While this release focuses on the engine, the compiler has also seen improvements, including bug fixes (particularly in the parser) and a new feature: |
| 101 | + |
| 102 | +#### `--markdown-output` for markdown exports |
| 103 | + |
| 104 | +If you want to print your presentation or host it as a static webpage, the |
| 105 | +default format can be cluttered with annotations. The new `--markdown-output` flag |
| 106 | +lets you generate a clean, GitHub Flavored Markdown (GFM) file without |
| 107 | +annotations. |
| 108 | + |
| 109 | +### Other |
| 110 | + |
| 111 | +Beyond technical improvements, there are some important project-wide updates: |
| 112 | + |
| 113 | +- License Change: The project has transitioned from MIT to GPLv3, aligning |
| 114 | + better with its values. |
| 115 | +- npm Distribution Discontinued: Maintaining an npm package added unnecessary |
| 116 | + complexity with minimal benefit. Please use binary releases — or better yet, |
| 117 | + contribute to getting Slipshow packaged in distributions! |
| 118 | + |
| 119 | +### Looking ahead |
| 120 | + |
| 121 | +Several improvements did not make it in this release, but are already quite |
| 122 | +advanced. So here is a little peek into the future: |
| 123 | + |
| 124 | +- Subslip returns! After having been a little left over since the introduction |
| 125 | + of the compiler, are coming back, with a better though implementation! |
| 126 | +- Full mobile support is on its way! It has already been improved, but is not |
| 127 | + yet mature enough to be announced in this release. |
| 128 | + |
| 129 | +### Conclusion |
| 130 | + |
| 131 | +Looking forward to your bug reports! |
| 132 | + |
| 133 | + |
5 | 134 | ## [v0.0.33] September 13th, 2024.
|
6 | 135 |
|
7 | 136 | ### Fixed
|
|
0 commit comments