Important
This is a beta release. Use it with care.
This is a major improvement for Jellyfin Newsletter, but bugs could have been introduced during the rewrite.
❤️ Your help is highly appreciated to test this new engine
Caution
This version includes breaking changes. Make sure to review it and adapt your configuration file before running it.
🐳 New docker images
This release is available in the following tags : v1.0.0-dev.10
Exact tag :
ghcr.io/seaweedbraincy/jellyfin-newsletter:1.0.0-dev.10
Major change
This version brings a full rewrite of the jellyfin-newsletter engine from python to Go. The full explanation is listed here.
The main impact for the user is about the performance that are tremendously improved.
Comparison of the 2 engine
| Python Engine (version <1.0.0) | Go engine (version >= 1.0.0) | Improvement | |
|---|---|---|---|
| Docker image size | 810 Mo | 29 Mo | 27x lighter |
| Memory usage | 35 Mo | 3.5 Mo | Consume 10x less |
Overall, the Go engine brings a much cleaner architecture, more efficient and ready to have more features or plugin easily plugged.
Breaking changes
Placeholders
Placeholders in config file
Placeholders are now parsed using Go built-in template package (pkg.go.dev/text/template). Therefore the old placeholders {variable_name} will not be recognized anymore and need to be replaced with the new synthax: {{.VariableName}}. Variables names also changed.
Here is a complete list of the old and new available placeholders :
| Description | Old placeholder (version <1.0.0) | New placeholder (version >=1.0.0) |
|---|---|---|
Date of the day. Format Y-m-d.
| {date}
| {{.Date}}
|
| Today's day name, localized. | {day_name}
| {{.DayName}}
|
| Today's day number of the month. | {day_number}
| {{DayNumber}}
|
| Current month name, localized. | {month_name}
| {{.MonthName}}
|
| Current month number. | {month_number}
| {{MonthNumber}}
|
| Current year. | {year}
| {{.Year}}
|
First date new addition are taken into account. Depends on observed_period_days config parameter. Format Y-m-d.
| {start_date}
| {{.StartDate}}
|
| Day name of the first observed date. | {start_day_name}
| {{.StartDayName}}
|
| Day number of the first observed date. | {start_day_number}
| {{.StartDayNumber}}
|
| Month name of the first observed date. | {start_month_name}
| {{.StartMonthName}}
|
| Month number of the first observed date. | {start_month_number}
| {{.StartMonthNumber}}
|
| Year the first observed date. | {start_year}
| {{.StartYear}}
|
Placeholders in template
Template have been entirely re-built to use the go template synthax. Please refer to themes for more informations
Dry run
When dry run is enabled, the key dry-run.output_directory is now mandatory.
Docker compose - User passed as environment variables
Due to a simplification of the entrypoint and filesystem management, the user which will run the newsletter cannot be supplied anymore as environment variables. Those variables will be ignored.
By default, the user 1000:1000 will run the script, even if no user if provided. To change to user/groups, use the docker user configuration. Example :
services:
jellyfin-newsletter:
container_name: jellyfin-newsletter
image: "ghcr.io/seaweedbraincy/jellyfin-newsletter:latest"
environment:
- USER_UID: 1000
- USER_GID: 1000
+ user: "1000:1000"✨ What's new
- The entire codebase as been rewritten in Go. PR #117, #116, #115, #114, #113, #112, #111, #110, #109, #101, #99 by @SeaweedbrainCY. Especially;
- Add the support of non-authenticated SMTP connections, using
email.smtp_tls_type: "NONE". PR #113 by @SeaweedbrainCY. - Add support of 2 logging format
consoleandjson. Can be configured underlog.format. PR #99 by @SeaweedbrainCY. - Add unit test with 70% coverage. PR #116 by @SeaweedbrainCY.
- Add integration test with end to end workflow. PR #116 by @SeaweedbrainCY.
- Improve jellyfin connection test to help troubleshoot connectivity issues. PR #101 by @SeaweedbrainCY
- Add the support of non-authenticated SMTP connections, using
- Create weblate.seaweedbrain.xyz to support easily new translations. PR #110 by @SeaweedbrainCY.
- Add integration of weblate in the embedded localization. PR #110 by @SeaweedbrainCY.
- Add support of Catalan, German, Finnish, Portuguese and improve Italian. PR #110 by @GerardUmbert.