chore: prepare for 0.13.0 changes (#568)

This commit is contained in:
Matias Fontanini 2025-04-25 06:09:22 -07:00 committed by GitHub
commit 4bf1f10d83
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 166 additions and 13 deletions

View File

@ -1,3 +1,51 @@
# v0.13.0 - 2025-04-25
## Breaking changes
* The CLI parameter to generate the JSON schema for the config file (`--generate-config-file-schema`) is now hidden behind a `json-schema` feature flag. The JSON schema file for the latest version is already publicly available at `https://github.com/mfontanini/presenterm/blob/${VERSION}/config-file-schema.json`, so anyone can use it without having to generate it by hand. This allows cutting down the number of dependencies in this project quite a bit ([#563](https://github.com/mfontanini/presenterm/issues/563)).
## New features
* Support for [slide transitions](https://mfontanini.github.io/presenterm/features/slide-transitons.html) is now available ([#530](https://github.com/mfontanini/presenterm/issues/530)):
* Add fade slide transition ([#534](https://github.com/mfontanini/presenterm/issues/534)).
* Add slide horizontally slide transition animation ([#528](https://github.com/mfontanini/presenterm/issues/528)).
* Add `collapse_horizontal` slide transition ([#560](https://github.com/mfontanini/presenterm/issues/560)).
* Add `--output` option to specify the path where the output file is written to during an export ([#526](https://github.com/mfontanini/presenterm/issues/526)).
* Allow specifying [start/end lines](https://mfontanini.github.io/presenterm/features/code/highlighting.html#including-external-code-snippets) in file snippet type ([#565](https://github.com/mfontanini/presenterm/issues/565)) - thanks @marianozunino.
* Allow letting [pauses become new slides](https://mfontanini.github.io/presenterm/configuration/settings.html#pause-behavior) when exporting ([#557](https://github.com/mfontanini/presenterm/issues/557)).
* Allow [using images on right in footer](https://mfontanini.github.io/presenterm/features/themes/definition.html#footer-images) ([#554](https://github.com/mfontanini/presenterm/issues/554)).
* Add [`max_rows` configuration](https://mfontanini.github.io/presenterm/configuration/settings.html#maximum-presentation-height) to cap vertical size ([#531](https://github.com/mfontanini/presenterm/issues/531)).
* Add julia language highlighting and execution support ([#561](https://github.com/mfontanini/presenterm/issues/561)).
## Fixes
* Center overflow lines when using centered text ([#546](https://github.com/mfontanini/presenterm/issues/546)).
* Don't add extra space before heading if prefix in theme is empty ([#542](https://github.com/mfontanini/presenterm/issues/542)).
* Use no typst background in terminal-* built in themes ([#535](https://github.com/mfontanini/presenterm/issues/535)).
* Use `std::env::temp_dir` in the `external_snippet` test ([#533](https://github.com/mfontanini/presenterm/issues/533)) - thanks @Medovi.
* Respect `extends` in a theme set via `path` in front matter ([#532](https://github.com/mfontanini/presenterm/issues/532)).
## Misc
* Refactor async renders (e.g. mermaid/typst/latex `+render` blocks, `+exec` blocks, etc) to work truly asynchronously. This causes the output to be polled faster, and causes jumping to a slide that contains an async render to take a likely negligible (but maybe noticeable) amount of time to be jumped to. This was needed for slide transitions to work seemlessly ([#556](https://github.com/mfontanini/presenterm/issues/556)).
* Get rid of `textproperties` ([#529](https://github.com/mfontanini/presenterm/issues/529)).
* Add links to presentations using presenterm ([#544](https://github.com/mfontanini/presenterm/issues/544)) - thanks @orhun.
## Performance improvements
* A few performance improvements had to be done for slide transitions to work seemlessly:
* Pre-scale ASCII images when transitions are enabled ([#550](https://github.com/mfontanini/presenterm/issues/550)).
* Pre-scale generated images ([#553](https://github.com/mfontanini/presenterm/issues/553)).
* Cache resized ASCII images ([#547](https://github.com/mfontanini/presenterm/issues/547)).
## ❤️ Sponsors
Thanks to the following users who supported _presenterm_ via a [github sponsorship](https://github.com/sponsors/mfontanini) in this release:
* [@0atman](https://github.com/0atman)
* [@orhun](https://github.com/orhun)
* [@fipoac](https://github.com/fipoac)
# v0.12.0 - 2025-03-24 # v0.12.0 - 2025-03-24
## Breaking changes ## Breaking changes
@ -41,7 +89,7 @@
It is now possible to sponsor this project via [github sponsors](https://github.com/sponsors/mfontanini). It is now possible to sponsor this project via [github sponsors](https://github.com/sponsors/mfontanini).
Thanks to @0atman for being the first project sponsor! Thanks to [@0atman](https://github.com/0atman) for being the first project sponsor!
# v0.11.0 - 2025-03-08 # v0.11.0 - 2025-03-08

2
Cargo.lock generated
View File

@ -655,7 +655,7 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
[[package]] [[package]]
name = "presenterm" name = "presenterm"
version = "0.12.0" version = "0.13.0"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"base64", "base64",

View File

@ -4,7 +4,7 @@ authors = ["Matias Fontanini"]
description = "A terminal slideshow presentation tool" description = "A terminal slideshow presentation tool"
repository = "https://github.com/mfontanini/presenterm" repository = "https://github.com/mfontanini/presenterm"
license = "BSD-2-Clause" license = "BSD-2-Clause"
version = "0.12.0" version = "0.13.0"
edition = "2021" edition = "2021"
[dependencies] [dependencies]

View File

@ -45,6 +45,7 @@ Visit the [documentation][docs-introduction] to get started.
* [Slide titles][docs-slide-titles]. * [Slide titles][docs-slide-titles].
* [Snippet execution][docs-code-execute] for various programming languages. * [Snippet execution][docs-code-execute] for various programming languages.
* [Export presentations to PDF][docs-pdf-export]. * [Export presentations to PDF][docs-pdf-export].
* [Slide transitions][docs-slide-transitions].
* [Pause][docs-pauses] portions of your slides. * [Pause][docs-pauses] portions of your slides.
* [Custom key bindings][docs-key-bindings]. * [Custom key bindings][docs-key-bindings].
* [Automatically reload your presentation][docs-hot-reload] every time it changes for a fast development loop. * [Automatically reload your presentation][docs-hot-reload] every time it changes for a fast development loop.
@ -52,7 +53,7 @@ Visit the [documentation][docs-introduction] to get started.
See the [introduction page][docs-introduction] to learn more. See the [introduction page][docs-introduction] to learn more.
# Presenterm in Action # Presenterm in action
Here are some talks and demos that feature _presenterm_: Here are some talks and demos that feature _presenterm_:
@ -76,6 +77,7 @@ Gave a talk using _presenterm_? We would love to feature it here! Open a PR or i
[docs-code-highlight]: https://mfontanini.github.io/presenterm/features/code/highlighting.html [docs-code-highlight]: https://mfontanini.github.io/presenterm/features/code/highlighting.html
[docs-code-execute]: https://mfontanini.github.io/presenterm/features/code/execution.html [docs-code-execute]: https://mfontanini.github.io/presenterm/features/code/execution.html
[docs-selective-highlight]: https://mfontanini.github.io/presenterm/features/code/highlighting.html#selective-highlighting [docs-selective-highlight]: https://mfontanini.github.io/presenterm/features/code/highlighting.html#selective-highlighting
[docs-slide-transitions]: https://mfontanini.github.io/presenterm/features/slide-transitons.html
[docs-layout]: https://mfontanini.github.io/presenterm/features/layout.html [docs-layout]: https://mfontanini.github.io/presenterm/features/layout.html
[docs-mermaid]: https://mfontanini.github.io/presenterm/features/code/mermaid.html [docs-mermaid]: https://mfontanini.github.io/presenterm/features/code/mermaid.html
[docs-latex]: https://mfontanini.github.io/presenterm/features/code/latex.html [docs-latex]: https://mfontanini.github.io/presenterm/features/code/latex.html

View File

@ -16,6 +16,7 @@
- [Themes](./features/themes/introduction.md) - [Themes](./features/themes/introduction.md)
- [Definition](./features/themes/definition.md) - [Definition](./features/themes/definition.md)
- [PDF export](./features/pdf-export.md) - [PDF export](./features/pdf-export.md)
- [Slide transitions](./features/slide-transitions.md)
- [Speaker notes](./features/speaker-notes.md) - [Speaker notes](./features/speaker-notes.md)
- [Configuration](./configuration/introduction.md) - [Configuration](./configuration/introduction.md)
- [Options](./configuration/options.md) - [Options](./configuration/options.md)

View File

@ -61,13 +61,25 @@ defaults:
If you would like your presentation to be left or right aligned instead of centered when the terminal is too wide, you If you would like your presentation to be left or right aligned instead of centered when the terminal is too wide, you
can use the `max_columns_alignment` key: can use the `max_columns_alignment` key:
```yaml ```yaml
defaults: defaults:
max_columns: 100 max_columns: 100
# Valid values: left, center, right
max_columns_alignment: left max_columns_alignment: left
``` ```
## Maximum presentation height
The `max_rows` and `max_rows_alignment` properties are analogous to `max_columns*` to allow capping the maximum number
of rows:
```yaml
defaults:
max_rows: 100
# Valid values: top, center, bottom
max_rows_alignment: left
```
## Incremental lists behavior ## Incremental lists behavior
By default, [incremental lists](../features/commands.md) will pause before and after a list. If you would like to change By default, [incremental lists](../features/commands.md) will pause before and after a list. If you would like to change
@ -81,6 +93,27 @@ defaults:
pause_after: true pause_after: true
``` ```
# Slide transitions
Slide transitions allow animating your presentation every time you move from a slide to the next/previous one. The
configuration for slide transitions is the following:
```yaml
transition:
# how long the transition should last.
duration_millis: 750
# how many frames should be rendered during the transition
frames: 45
# the animation to use
animation:
style: <style_name>
```
See the [slide transitions page](../features/slide-transitions.md) for more information on which animation styles are
supported.
# Key bindings # Key bindings
Key bindings that _presenterm_ uses can be manually configured in the config file via the `bindings` key. The following Key bindings that _presenterm_ uses can be manually configured in the config file via the `bindings` key. The following
@ -94,6 +127,16 @@ bindings:
# the keys that cause the presentation to move backwards. # the keys that cause the presentation to move backwards.
previous: ["h", "k", "<left>", "<page_up>", "<up>"] previous: ["h", "k", "<left>", "<page_up>", "<up>"]
# the keys that cause the presentation to move "fast" to the next slide. this will ignore:
#
# * Pauses.
# * Dynamic code highlights.
# * Slide transitions, if enabled.
next_fast: ["n"]
# same as `next_fast` but jumps fast to the previous slide.
previous_fast: ["p"]
# the key binding to jump to the first slide. # the key binding to jump to the first slide.
first_slide: ["gg"] first_slide: ["gg"]
@ -130,6 +173,8 @@ default won't apply anymore and only what you've defined will be used.
# Snippet configurations # Snippet configurations
The configurations that affect code snippets in presentations.
## Snippet execution ## Snippet execution
[Snippet execution](../features/code/execution.md#executing-code-blocks) is disabled by default for security reasons. [Snippet execution](../features/code/execution.md#executing-code-blocks) is disabled by default for security reasons.
@ -232,6 +277,10 @@ speaker_notes:
always_publish: true always_publish: true
``` ```
# Presentation exports
The configurations that affect PDF exports.
## PDF export size ## PDF export size
The size of exported PDFs can be configured via the `export.dimensions` key: The size of exported PDFs can be configured via the `export.dimensions` key:
@ -244,3 +293,13 @@ export:
``` ```
See [the PDF export page](../features/pdf-export.md) for more information. See [the PDF export page](../features/pdf-export.md) for more information.
## Pause behavior
By default pauses will be ignored in generated PDF files. If instead you'd like every pause to generate a new page in
the export, set the `export.pauses` attribute:
```yaml
export:
pauses: new_slide
```

View File

@ -30,6 +30,7 @@ Code highlighting is supported for the following languages:
| java | ✓ | | java | ✓ |
| javascript | ✓ | | javascript | ✓ |
| json | | | json | |
| julia | ✓ |
| kotlin | ✓ | | kotlin | ✓ |
| latex | | | latex | |
| lua | ✓ | | lua | ✓ |
@ -140,6 +141,18 @@ language: rust
``` ```
~~~ ~~~
If you'd like to include only a subset of the file, you can use the optional fields `start_line` and `end_line`:
~~~markdown
```file +exec +line_numbers
path: snippet.rs
language: rust
# Only shot lines 5-10
start_line: 5
end_line: 10
```
~~~
## Showing a snippet without a background ## Showing a snippet without a background
Using the `+no_background` flag will cause the snippet to have no background. This is useful when combining it with the Using the `+no_background` flag will cause the snippet to have no background. This is useful when combining it with the

View File

@ -5,8 +5,8 @@ Presentations can be converted into PDF by using [weasyprint](https://pypi.org/p
to install extra dependencies for the tool to work. to install extra dependencies for the tool to work.
> [!note] > [!note]
> If you were using _presenterm-export_ before, that tool already required _weasyprint_ so it is already installed in > If you were using _presenterm-export_ before it was deprecated, that tool already required _weasyprint_ so it is
> whatever virtual env you were using and there's nothing to be done. > already installed in whatever virtual env you were using and there's nothing to be done.
After you've installed _weasyprint_, run _presenterm_ with the `--export-pdf` parameter to generate the output PDF: After you've installed _weasyprint_, run _presenterm_ with the `--export-pdf` parameter to generate the output PDF:
@ -15,7 +15,8 @@ After you've installed _weasyprint_, run _presenterm_ with the `--export-pdf` pa
presenterm --export-pdf examples/demo.md presenterm --export-pdf examples/demo.md
``` ```
The output PDF will be placed in `examples/demo.pdf`. The output PDF will be placed in `examples/demo.pdf`. Alternatively you can use the `--output` flag to specify where you
want the output file to be written to.
> [!note] > [!note]
> If you're using a separate virtual env to install _weasyprint_ just make sure you activate it before running > If you're using a separate virtual env to install _weasyprint_ just make sure you activate it before running
@ -28,3 +29,7 @@ By default, the size of each page in the generated PDF will depend on the size o
If you would like to instead configure the dimensions by hand, set the `export.dimensions` key in the configuration file If you would like to instead configure the dimensions by hand, set the `export.dimensions` key in the configuration file
as described in the [settings page](../configuration/settings.md#pdf-export-size). as described in the [settings page](../configuration/settings.md#pdf-export-size).
## Pause behavior
See the [settings page](../configuration/settings.md#pause-behavior) to learn how to configure the behavior of pauses in
generated PDFs.

View File

@ -0,0 +1,24 @@
# Slide transitions
Slide transitions allow animating your presentation every time you move from a slide to the next/previous one. See the
[configuration page](../configuration/settings.md) to learn how to configure transitions.
The following animations are supported:
## `fade`
Fade the current slide into the next one.
[![asciicast](https://asciinema.org/a/RvxLw0FHOopjdF4ixWbCkWuSw.svg)](https://asciinema.org/a/RvxLw0FHOopjdF4ixWbCkWuSw)
## `slide_horizontal`
Slide horizontally to the next/previous slide.
[![asciicast](https://asciinema.org/a/T43ttxPWZ8TsM2auTqNZSWrmZ.svg)](https://asciinema.org/a/T43ttxPWZ8TsM2auTqNZSWrmZ)
## `collapse_horizontal`
Collapse the current slide into the center of the screen horizontally.
[![asciicast](https://asciinema.org/a/VB8i3kGMvbkbiYYPpaZJUl2dW.svg)](https://asciinema.org/a/VB8i3kGMvbkbiYYPpaZJUl2dW)

View File

@ -163,7 +163,7 @@ using another brace. e.g. `{{potato}} farms` will be displayed as `{potato} farm
#### Footer images #### Footer images
Besides text, images can also be used in the left and center positions. This can be done by specifying an `image` key Besides text, images can also be used in the left/center/right positions. This can be done by specifying an `image` key
under each of those attributes: under each of those attributes:
```yaml ```yaml
@ -173,7 +173,8 @@ footer:
image: potato.png image: potato.png
center: center:
image: banana.png image: banana.png
right: "{current_slide} / {total_slides}" right:
image: apple.png
# The height of the footer to adjust image sizes # The height of the footer to adjust image sizes
height: 5 height: 5
``` ```