-
v1.8.0
Stablereleased this
2026-10-22 19:15:49 -05:00 | 0 commits to main since this releaseBased on upstream v2.0.0 (
900faea).Added
- A web page for a dry run and for the recipients list, switched on by
WEB_UI_PORT, the port to serve it on inside the container. It has no
login: publish it on a LAN port only, never through a public proxy. A form
posted from another site is refused, so a web page open on the LAN can't
use it. - Dry run: builds the email the next run would send, as of now, and shows
it on the page with its subject. Nothing is emailed and nothing is
recorded: not the announced items, not the last newsletter's date. Since
1.5.0 the whole library counts as announced once deployed, so a quiet week
previews as "nothing new". Tick "Include items already sent" to see
everything from the observed period instead. - Recipients: add, pause, switch on and remove addresses in
config.yml. The page edits the file's text, so every comment and the line
endings stay as they were. A paused address is its line commented out
(# - "…"), the way the file already pauses one by hand. Before an edit
is saved, the file has to pass the checks it gets at startup, and the last
address that is on can't be paused or removed, sinceconfig.ymldoesn't
load without one.
Changed
- The recipients are read from
config.ymlwhen the email goes out, not
only at startup, so a change made on the page, or by hand, applies to the
next email without a restart. If the file can't be read then, the list
from startup is used and a warning is logged.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- A web page for a dry run and for the recipients list, switched on by
-
v1.7.0
Stablereleased this
2026-10-06 20:15:47 -05:00 | 2 commits to main since this releaseBased on upstream v2.0.0 (
900faea).Changed
- Every new item is looked up on TMDB again. Since 1.0.4 only the items
the email shows were looked up, chosen by a second pass over the items
(DisplayedItemIDs) that repeated the email build's filtering and sorting.
It was written for a week of 500 re-created films. Since 1.5.0 those no
longer count as new, so the pass only saves a quick lookup per item past
max_displayed_itemsin a genuinely big week. Removing it takes seven of
the fork's edits out of upstream files. - The HTML and plain-text parts are built from one pass over the items
(template.BuildNewMediaEmail), instead of one each. - The fork's own strings are English only. The inbox preview line ("3 new
movies and 5 new shows") was translated into all ten languages. Other
languages now fall back to the English line, whole: its "and" is a fork
string too, so it is never half translated. - Files check out with LF line endings on every machine
(.gitattributes, as in mcp-gateway). Withcore.autocrlf, a Windows
checkout had CRLF everywhere, so gofmt flagged every file and the
plain-text template had to be stripped of\rwhen it was read. - CI no longer runs
go veton its own. The lint job already runs govet,
with every analyzer on.
Fixed
- Each
ignored_itemsmatch was logged twice, once for each part of the
email.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Every new item is looked up on TMDB again. Since 1.0.4 only the items
-
v1.6.0
Stablereleased this
2026-10-05 23:59:15 -05:00 | 4 commits to main since this releaseBased on upstream v2.0.0 (
900faea).Added
- An inbox preview line. The classic theme always had a hidden preheader
but left it empty, so inbox lists showed the email's first words ("New on
the server …") after the subject. It now says what's new, such as "3 new
movies and 5 new shows", counting every new item, including those beyond
max_displayed_items. The strings are in all ten languages, in the fork's
owni18n/fork.<lang>.tomlbeside upstream's files.
Changed
- The email is about a quarter of its old size. About three quarters of
the rendered HTML was the theme's indentation. Each run of whitespace now
collapses to one newline or space after rendering (<pre>excepted), which
mail clients render the same. An email of 6 movies and 6 shows went from
88 KB to about 22 KB. Gmail clips an email whose HTML passes ~102 KB, so
there is now room for summaries (display_overview_max_items: 0) and a
highermax_displayed_items: 6 per section with summaries measured 28 KB,
20 per section 76 KB.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- An inbox preview line. The classic theme always had a hidden preheader
-
v1.5.3
Stablereleased this
2026-10-05 22:53:39 -05:00 | 6 commits to main since this releaseBased on upstream v2.0.0 (
900faea).Fixed
- The integration test runs again. Its recorded Jellyfin traffic
predated the fork's own requests (the movie type filter in 1.0.3, the TV
library lookup in 1.4.1), so replay missed and the run retried until the
test timed out. The Jellyfin and TMDB traffic is re-recorded against
upstream's test Jellyfin (now 12.2), the test's fixed clock and date
assertions follow, and the whole suite passes with theintegrationtag.
No change to the newsletter itself.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- The integration test runs again. Its recorded Jellyfin traffic
-
v1.5.2
Stablereleased this
2026-10-05 22:40:28 -05:00 | 8 commits to main since this releaseBased on upstream v2.0.0 (
900faea).Fixed
- "Added on" could show tomorrow's date. Jellyfin's dates are UTC and
were printed as they came, so anything added in the evening in the
Americas showed the next day. They are now in the container's time zone
(TZ). - Spam filters counted the unsubscribe header against the email.
SpamAssassin scores aList-Unsubscribewithout aList-Idas an
incomplete set (+1.0). The email now has both, theList-Idnamed after
the sender's domain. On a local SpamAssassin run the email scores 0
(before 1.2.0 it scored 3.2: noDate, HTML only,Message-IDadded by
a relay).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- "Added on" could show tomorrow's date. Jellyfin's dates are UTC and
-
v1.5.1
Stablereleased this
2026-10-05 21:36:47 -05:00 | 10 commits to main since this releaseBased on upstream v2.0.0 (
900faea).Fixed
- "recieving" in every email's footer is now "receiving". The typo is
in upstream's English text.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- "recieving" in every email's footer is now "receiving". The typo is
-
v1.5.0
Stablereleased this
2026-10-05 21:06:34 -05:00 | 12 commits to main since this releaseBased on upstream v2.0.0 (
900faea).Added
- The newsletter remembers what it has announced, in
ANNOUNCED_ITEMS.jsonnext toconfig.yml. "New" used to mean only
"created in Jellyfin during the period", and Jellyfin re-creates an item
whenever Radarr or Sonarr renames or upgrades it, so old films came back
as new by the hundred. Now a movie is announced once per film (by TMDB
ID, so a 4K copy of an announced film isn't new either), and an episode
once per series, season and episode number, so a new season or episode
still is. The extra day the period reaches back no longer announces
anything twice. - On the first start without that file, the whole current library is
recorded as already announced, so the first newsletter has only what
arrives after the upgrade. The log says how many movies and episodes it
recorded. Delete the file to start over the same way. A dry run reads the
file but never writes it.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- The newsletter remembers what it has announced, in
-
v1.4.1
Stablereleased this
2026-10-05 20:55:31 -05:00 | 14 commits to main since this releaseBased on upstream v2.0.0 (
900faea).Fixed
- New episodes of some shows could be left out. TV was fetched with a
recursive query by the watched folder, and Jellyfin's answer to that
omits items whose ancestor index is stale, even though the same query by
library returns them. On one server it missed 13 of 52 series and 956
episodes in a folder, and logged 90 "series doesn't exist" warnings per
run. TV is now fetched through the library that lists the folder, keeping
only that folder's shows; a library can span several folders. If no
library lists the folder, or Jellyfin won't list libraries for the key,
it falls back to the old query.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- New episodes of some shows could be left out. TV was fetched with a
-
v1.4.0
Stablereleased this
2026-10-05 20:47:12 -05:00 | 16 commits to main since this releaseBased on upstream v2.0.0 (
900faea).Added
- A failed run is retried, after 5, 10 and 15 minutes. If it still
fails, the error is logged and a one-line notice goes to the new optional
email.failure_notice_recipient. A run that reached some recipients but
not others isn't retried, since that would send the email to the first
ones twice; the notice names who didn't get it. A dry run gets one
attempt and no notice.
Fixed
- One error stopped the whole program. Any failure during a run, such
as Jellyfin restarting or the mail server refusing a connection, called
Fatal, which exited the process, scheduler included. The container
restarted and waited for the next week, so that week's email was lost. - A request that never answered stalled the program for good. Jellyfin
and TMDB requests now time out after a minute, and the SMTP connection
after 30 seconds to connect and 10 minutes for the whole session. - A watched folder that failed to load was skipped silently, so the
email went out without its movies or shows. That now fails the run (and
so retries). A folder name Jellyfin doesn't have is still just a warning. - A recipient that failed was only logged. Sending now reports which
recipients weren't reached.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- A failed run is retried, after 5, 10 and 15 minutes. If it still
-
v1.3.0
Stablereleased this
2026-10-05 20:36:23 -05:00 | 18 commits to main since this releaseBased on upstream v2.0.0 (
900faea).Changed
log.format: jsonnow writes the shape Portainer's log viewer reads.
The keys aretime(local,YYYY-MM-DD HH:mm:ss),level,callerand
message, which Portainer colours, and an error's stack trace is a
stack_tracearray of up to 12{func, source, line}frames, which it
prints as an indented block. Before, the time was an ISO timestamp under
ts, the message wasmsg, and the stack was one long string. Levels
aboveerrorare shown aserror. Theconsoleformat is unchanged.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads