Repository navigation
Releases: SandObserver/Posteryard
Releases · SandObserver/Posteryard
Release list
v0.10.0
Added
- Publish the image to Docker Hub as
sandobserver/posteryardtoo, with the same tags as ghcr.io.
Changed
- Give a Live TV title without art its channel's logo large over the logo's blurred colours, in place of the title on dark grey.
- Give a Live TV block named after its channel the same card, in place of art from the channel's show with the most airtime.
- List what Posteryard needs and its Live TV posters in the Unraid template.
- Install Posteryard on Unraid from the Apps tab, listed in Community Applications.
- Default the Unraid webhook port to 8098, as many Unraid apps already use 8000.
- Restart the Unraid container after a crash.
- Show the latest release notes in the Unraid template, and take its settings help from the README.
- Show the settings panel's lines for the install method picked on the landing page.
- Name Posteryard's version and project page in every web request, as Wikimedia asks of programs that download its logos.
Fixed
- Show the Posteryard icon in the Unraid Docker tab, which cannot show SVG icons.
- Upload Live TV posters again at the next sweep when Plex deletes them while cleaning bundles.
- Give a Plex guide title a poster when Plex returns another entry for it, such as "News" for "News at Ten".
Security
- Update Pillow to 13.0.0 for its JPEG decoder buffer overflow and other image decoding fixes.
v0.9.0
Added
- Add posters for the Live TV guide on Plex and Jellyfin with
LIVE_TV.
Changed
- Try a request again at once, without a warning, when a server has dropped an idle connection.
Security
- Update the Python base image to 3.13.16 for CVE-2026-19445.
v0.8.1
Fixed
- Treat zoomed, cropped and widened versions of the same art as one picture, so
art nextand season posters move to different art.
Security
- Send the Plex token in a header and refuse redirects from Plex, so a redirect cannot pass the token to another host.
- Refuse redirects for TMDB requests that carry an API key.
- Hide tokens and API keys in error messages when a server repeats them in its error page.
v0.8.0
Added
- Add
TEXT_CHECK=falseto skip reading text on art, for machines with little memory such as a Raspberry Pi. - Support Emby 4.10 as the media server, with
EMBY_URLandEMBY_API_KEYand its built-in webhooks. - Refuse to start with a data folder that belongs to another media server.
- Give collections that are not a streaming service Apple TV's category tile: the art in a genre palette with the name.
- Draw Persian, Arabic, Hebrew, Hindi, Thai, Chinese, Japanese and Korean names with matching fonts and shaping.
- Add a service mark for ADN (Anime Digital Network).
- Use TMDB network logos as streaming marks for services without a built-in mark, such as Exxen, SkyShowtime, U-NEXT, JioHotstar, BINGE, discovery+ and Shudder.
- Add
NOTIFY_EVENTSto also send alerts for new posters, with the image, and a daily summary. - Send an alert when TMDB, the media server, Maintainerr, scheduled runs or service collections work again.
- Print the settings in use at start, and log each name in
LIBRARIESthe server does not have. - Document what Posteryard changes on the server and how to undo each change.
- Add the
why TITLEcommand to list a poster's art candidates and why each was used or not. - Add the
healthcommand, which the Docker health check now runs. - Document starting Posteryard with
docker runinstead of Compose.
Changed
- Leave the black fade off posters whose white logo, labels and badges already read on the art.
- Shorten the README to setup and settings, and move commands, server notes, alerts, troubleshooting and design details into pages in
docs/. - Read series art for season posters only when a season needs it, and stop at the first usable image. The first season poster of a show no longer reads up to 12 images it does not use.
- Stop the text reader after 10 idle minutes and drop downloaded images while idle, to use less memory. A read that hangs stops the text reader at once instead of holding up the worker.
- Write the log as logfmt lines with the title and the art source, one line per image, and end each full pass with a summary.
- Keep the 6-hour alert limit across restarts, and try an undelivered alert again after 10 minutes.
- Use TMDB's best-voted textless poster before Apple TV art; with
APPLE_ART, Apple TV art now fills in before backdrops. - Leave the unused sympy library out of the image, about 31 MB smaller.
- Process leaving titles again only when their Maintainerr date changes, and all of them once a day, instead of every sweep.
- Skip titles the server has not matched to TMDB, IMDb or TVDB with one log line, instead of failing, retrying and counting them in the daily summary.
Fixed
- Queue only the titles in
ONLY_RATING_KEYSin full passes and sweeps, instead of fetching every title to skip it. - Measure the fade and logo ink again when the poster design changes, instead of reusing values from the old design. Every poster is measured once after the update.
- Delete cached art choices and measurements from older versions at start.
- Stop rejecting clean art when OCR reads a large shape, such as a window or an emblem, as one character. Art is checked again once after the update.
- Turn off onnxruntime's telemetry, which looked up Microsoft's telemetry server from the container, and its warning in the log.
- Hide image decoder messages from the debug log.
- Find Jellyfin and Emby titles by name and year, such as
why "Dune 2021". - Stop within a second on
docker stop, instead of after up to 30 seconds, which Docker ended with a kill after 10. - Upload an image again when a stop or crash cut its upload off, instead of treating the poster as changed by hand, and give it back with
restore --all. - Ignore Plex webhooks with an invalid rating key, including a Jellyfin-style ID, instead of retrying them forever.
- Wait 2 minutes after a failed scheduled run, as the log says, instead of 30 seconds.
- Name the media server in the
--seasonerror, instead of always Plex. - Keep a mistyped
NOTIFY_URLSaddress, and the secret in it, out of the log. - Match Jellyfin library folders on Windows servers, so their titles are no longer skipped.
- Give seasons of a Jellyfin or Emby show without season folders their show's library, so they are no longer skipped.
- Draw in dark ink only when the logo, the badges and the label each read where they sit.
- Leave out automatic streaming marks that turn into a solid shape or specks in one colour, such as Sony LIV, without showing another service's mark instead.
- Keep white letters of a coloured logo, such as the "HI" of HIDIVE, in its one-colour mark.
- Use the Sky mark for Sky X.
- Draw the streaming mark black or white without a shadow, by contrast where the mark sits.
- Keep one logo design per show: draw a one-colour logo dark on light art instead of switching to another logo.
- Choose a dark logo only when it reads where the logo sits, not across the whole bottom of the art.
- Treat crops and redrawn versions of a picture as the same picture when giving seasons their art.
- Keep
art nextworking when art it skipped earlier has since been deleted from TMDB or Apple TV. - Give collections that only start with a service's name, such as Max Payne Collection, a category tile instead of that service's channel tile.
- Select the right image when a render is identical to one uploaded before, so an expired label no longer stays on the poster.
- Give Sky service collections the channel tile instead of the category tile.
- Keep a show the server has not matched in the service collections it is in, instead of removing it or deleting a collection left with fewer than 3 shows.
- Count Maintainerr's leaving days in the container's time zone, so the label is no longer one day off.
- Skip only one image when removing the
posteryard-nextlabel fails and is retried. - Remove a
posteryard-nextlabel typed with capital letters. - Leave the
posteryard-nextlabel and the art unchanged whileDRY_RUNis on. - Run the Docker health check on
LISTEN_PORTinstead of port 8000. - Retry and alert on unexpected errors like other failures.
- Keep the record of an uploaded episode thumbnail while
DRY_RUNis on, sorestore --allcan still give it back. - Keep the record of every uploaded image while
DRY_RUNis on, so going live again leaves posters changed by hand alone and does not upload unchanged images again.
v0.7.0
Added
- License Posteryard under the Apache License 2.0.
- Add an Unraid Community Applications template that runs Posteryard as Unraid's
nobodyuser. - Stop at startup with the path and user named when the data folder or its database is not writable.
Removed
- Remove
NTFY_URL,NTFY_TOPICandNTFY_TOKEN. Send ntfy alerts throughNOTIFY_URLS, such asntfys://tk_ACCESS_TOKEN@your-server/topic. Posteryard refuses to start while the old settings are set.
Fixed
- Use custom art from
art setorposteryard-customfor titles that have no clean art on TMDB, Apple TV or fanart.tv, also while fanart.tv is down. - Keep the last Apple TV art found, or use other art, when Apple TV or Wikidata cannot be reached or an Apple TV image cannot be loaded, instead of failing the title.
- Skip only a title's background when its backdrop cannot be looked up, instead of failing the whole title.
- Skip cable and live TV services such as Spectrum On Demand, Philo and Sling TV when choosing a show's streaming mark.
v0.6.0
Added
- Use Apple TV's own key art as poster art with
APPLE_ART; per-title overrides still win. - Add service marks for Crunchyroll, Tubi, Pluto TV, Starz, MUBI, Viaplay, Sky, NOW, RTL+, Movistar Plus+ and Channel 4.
- Give other streaming services a mark cut from their TMDB icon when the icon is clean, such as BBC iPlayer, Stan, Canal+ and CBC Gem.
- Try fanart.tv art, title logos and backdrops when TMDB has none usable, with
FANART_API_KEY. - Find a title's TMDB id from its IMDb or TVDB id, including titles matched by Plex's legacy agents.
- Refuse to start with a
state.dbfrom a newer release, so a downgrade cannot damage it. - Add
restore --allto give every uploaded image back to the server's own before removing Posteryard. - Read secrets from files with
TMDB_API_KEY_FILE,PLEX_TOKEN_FILEand the other_FILEsettings. - Accept TMDB's API Read Access Token as
TMDB_API_KEY. - Set the log detail with
LOG_LEVEL. - Attach an SBOM and build provenance to the published image.
Changed
- On light art, draw a dark title logo, captions, badges, season number and service mark without the black fade, when the art leaves near-black at 4.5:1 contrast and TMDB has a dark logo.
- Deepen the fade under a white logo until it reaches 4.5:1 contrast.
- Count The Roku Channel, Criterion Channel and Channel 4 as streaming services; only add-on channels sold through Amazon, Apple TV or Roku are skipped.
- Make fewer TMDB requests: one per title and one per season, instead of up to five per title and one per episode.
- Keep connections to Plex, Jellyfin and TMDB open between requests, and wait as long as a server asks with
Retry-After.
Fixed
- Delete custom art files once they are replaced or reset, so
./data/customno longer grows. - Handle titles from the webhook and labels before the rest of a running full pass, instead of after it.
v0.5.1
Removed
- Remove the status page at
/;/healthzstays for monitoring.
v0.5.0
Added
- Support Jellyfin with
JELLYFIN_URLandJELLYFIN_API_KEY, including its Webhook plugin, tags as labels and collections. - Accept
LIBRARIESas the library list for either server;PLEX_LIBRARIESstill works. - Add collection posters with
COLLECTION_POSTERS, with Apple TV's channel tile for streaming service collections. - Keep one collection per streaming service in TV libraries with
SERVICE_COLLECTIONS. - Show coloured labels above the logo for just added titles, new episodes and seasons, and a season's start date; turn them off with
STATUS_LABELS=false. - Draw the season number large in the top left corner of season posters.
- Add SDH, CC and AD badges on their own line with
QUALITY_ACCESSIBILITY. - Choose episode thumbnails with
EPISODE_THUMBNAILS:plain,titledoroff. - Choose title logo languages with
LOGO_LANGUAGES. - Prefer wide title logos over emblems, white ones first, then coloured ones such as red or yellow; turn it off with
PREFER_WORDMARK=false. - Set the title in white when TMDB has no title logo, instead of skipping the poster.
- Add a status page at
/with health, schedule, failures and the latest images. - Publish the image for 64-bit ARM hosts, such as a Raspberry Pi 4 or 5, as well as x86.
Changed
- Place the title logo and the lines under it as on Apple TV tiles: the logo sits lower and moves up only for the lines present.
- Make episode thumbnails plain stills by default; set
EPISODE_THUMBNAILS=titledfor the previous design. - Leave the streaming service mark off season posters.
- Look up streaming services in the US by default; set
STREAMING_REGIONSfor another country. - Give every streaming service mark the same visual size, so stacked marks such as HBO Max are no longer small, and darken the corner behind it until the white mark reaches 4.5:1 contrast.
- Use the
latestimage tag in the README and the compose example. - Move the streaming service mark to the top left corner, where Plex's unwatched count and watched checkmark do not cover it.
Fixed
- Draw captions translucent as designed; they were fully opaque.
- Render titles whose TMDB original is too large to load, such as Fallout and Challengers, from TMDB's 1280 px copy.
v0.4.0
Added
- Accept title names in commands, such as
art next The Office, plus--season N; a name that matches several titles or none changes nothing. - Add
find WORDSto list matching movies and shows with their rating keys. - Send alerts to Discord, Telegram, Gotify, email and about 100 other services through Apprise with
NOTIFY_URLS. - Add
test-alertto check the notification setup. - Call
HEARTBEAT_URL, such as an Uptime Kuma push monitor, every minute while healthy. - Report each health check, the last sweep and the last full pass on
/healthz, and answerHEAD /healthz. - Exit when an internal thread stops, so the container restart policy starts a fresh one.
Changed
- Update onnxruntime to 1.30 in the image.
- Explain each setup value, rating keys, Plex labels and common errors in the README.
- Lock down the example compose file with a read-only filesystem, no capabilities and
no-new-privileges. - Make 2 fewer TMDB requests per title.
- Render a title right away after
forget, which now takes one title instead of several rating keys. - Take one title in
preview, with--season Nfor seasons of a Plex show.
Fixed
- Keep the schedule running after an unexpected error, alert about it, and report unhealthy if a service thread stops.
- Recheck known titles missing from a full pass one by one instead of forgetting them, so manual changes survive a Plex or settings hiccup.
- Stop a full pass and alert when no Plex library matches
PLEX_LIBRARIES, and reject an emptyPLEX_LIBRARIES. - Ignore malformed Maintainerr answers instead of failing every title.
- Answer malformed webhook requests with an error instead of dropping the connection.
- Refuse images over 50 megapixels and downloads over 64 MB before they use up the container's memory.
- Reject settings and rating keys written with non-ASCII digits.
v0.3.1
Fixed
- Render an item fresh when its
posteryard-ignorelabel is removed, instead of treating a poster chosen meanwhile as a manual change.