Very happy to release Jellyfin-Newsletter v1.0.0 ❤️
This version brings massive improvements, but has several breaking changes. Upgrade with care
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 : latest, 1.0 and 1.0.0
Major release tag (recommended) :
ghcr.io/seaweedbraincy/jellyfin-newsletter:1.0
Latest tag :
ghcr.io/seaweedbraincy/jellyfin-newsletter:latest
Exact tag :
ghcr.io/seaweedbraincy/jellyfin-newsletter:1.0.0
💎 Major changes
Go engine
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 engines
| 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.
Weblate localization
It is now easier than ever to contribute to Jellyfin-Newsletter localization ! Everyone can help translating the newsletter directly on weblate. Currently the supported languages are :
⛓️💥 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 syntax: {{.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 syntax. Please refer to themes for more informations
Dry run
When dry run is enabled, the key dry-run.output_directory is now mandatory.
✨ What's new
- The entire codebase has 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.
❤️ Special thanks
Special thanks to
- @filou1003 for the bug report and beta testing