v2.7.0
Maintainerr deletion countdowns now work on season posters, plus twelve fixes, most of them from reports on the fork tracker or upstream's. Everything here has been running live on a production server.
Docker tags
| Tag | What it tracks |
|---|---|
bitr8/agregarr:latest
| Stable releases. This is what you want. |
bitr8/agregarr:2.7.0
| Pinned to this exact release. |
bitr8/agregarr:develop
| Bleeding edge. Builds on every push, breaks sometimes. |
Upgrading from 2.6.0 is just a pull; config volumes are compatible. If you run :develop you already have everything below, the release just pins it. Coming from upstream, see the v2.5.0 notes for the one-line compose change. Release tags ship amd64 and arm64 (Apple Silicon, RPi 4+).
What's new
Maintainerr deletion countdowns, now on seasons
Agregarr has drawn "deleting in N days" overlays on movies and shows for a while. Seasons were the gap. Maintainerr renders its own overlays and handles seasons fine, but if Agregarr manages your overlays you keep its rendering off, so a rule cleaning up old seasons of a show you are still watching left the poster saying nothing.
Seasons now get the same countdown.
Seasons were never a media type the overlay pipeline visited. A library's overlay config is movie or show; seasons live underneath and were skipped entirely. So the countdown runs as its own pass over the seasons Maintainerr names, with its own poster lifecycle.
A season's original poster is stashed before the countdown is drawn over it, and put back when the season leaves the Maintainerr collection, when you switch the toggle off, or when you delete the library's overlay config outright. That last one needs an explicit sweep, since a library with no overlay config is otherwise never visited again.
If Maintainerr is unreachable, nothing is touched. "The collection is empty" and "we couldn't read the collection" are different facts, and only the first one authorises putting posters back.
Setting it up. In Maintainerr, add a rule group against your TV library with Media type: Seasons and set Take action after days. That number is what the countdown counts down from. The Sonarr action can be Do nothing if you only want the overlay. Needs Maintainerr 3.4.0 or newer; older versions report a numeric collection type and are skipped, leaving movie and show countdowns unaffected. A Seasons rule triggers a full-library rescan on each run, about 8 minutes on a large library here.
In Agregarr, go to Settings > Sources > Maintainerr Settings (Poster Overlays Only) and enter host, port and API key. Then in Overlays > library config, turn on Season deletion countdown (show libraries only, greyed out until Maintainerr is connected). Finally enable a template that uses daysUntilAction; the Maintainerr Deleting Soon preset works as-is.
Maintainerr's own overlay rendering stays off. Agregarr reads /api/collections/overlay-data for the dates and draws the poster itself, so season posters match the rest of your library.
Season numbers on collection posters
2.6.0 gave season collections a proper poster grid and said season-number badges were coming. They're here. Each season tile now carries an S1, S2 badge, which matters because some metadata agents serve the show's key art as the season poster, so four tiles of the same artwork was a real possibility. (fork #29, thanks jmjviana)
Active-only filter on the overlays page
The overlays page lists every template you have. A checkbox now hides the inactive ones, which is the view you want when you're checking what a library is actually applying.
Fixed
Quality badges no longer flicker off between syncs
HDR, Dolby Vision and resolution badges would vanish from show posters after a collection or quick sync, then come back after the nightly overlay run. The collection sync path never populated episode-level media data, so on show libraries the quality fields came back empty, the quality template dropped out of the matched set, and the poster was rebuilt without the badge.
Collection and quick syncs now read the aggregated episode data straight from the cache the nightly scan already wrote, so the badge holds. A related cache bug is fixed alongside it: a row could be marked as having stream detail when the fetch that would have provided it failed, which left HDR and Dolby Vision reading false with no way to self-correct. The flag now records whether a fetch completed, not whether the data looked interesting, and existing rows reset once on upgrade. (fork #32, thanks jmjviana)
Collection sync checks with Plex before it acts
A 404 from Plex's collection endpoints doesn't mean what it looks like. The endpoint that renames a collection is scoped to a library section, so it returns 404 when the section is wrong, even when the collection is perfectly healthy. The endpoint that sets sort order returns 404 when the rating key isn't a collection. Neither one reports that a collection is missing.
Agregarr now reads the rating key back from Plex and decides from that. A collection that is still there is left alone. A rating key that Plex confirms is gone, or that turns out to point at a movie rather than a collection, has its stored reference cleared so the collection is recreated cleanly. Anything ambiguous (a timeout, an auth failure, a reverse proxy answering instead of Plex) is treated as "still there" and nothing is touched.
Agregarr also stops writing its management label onto a rating key that isn't a collection. And a collection whose configured library doesn't match where its items actually live now logs a warning naming the real library, instead of silently producing an empty collection. (fork #5)
Placeholder cleanup only removes files it can prove it created
Cleanup used to decide what was a placeholder from the shape of the filename, tokens like {tmdb-N} and {edition-Trailer}, plus a best-guess check. A real file can carry the same tokens: one you copied in yourself, one another tool left behind, or a placeholder made before markers existed.
The .comingsoon marker that the creation flow writes is now the authoritative gate. No marker, or a damaged one, means the file stays. A movie marker only clears the file whose {tmdb-N} matches the marker's own id, so a token-carrying neighbour can't ride along. Filename tokens are a hint and never enough on their own, and every deletion path fails closed when there's any doubt.
The post-creation scan is scoped to the movie or show folder too, validated against the library's own section paths, rather than sweeping the whole library.
Release dates ignored your region
The Coming Soon and release-date overlays picked the earliest release date anywhere in the world, so a film out in France in January showed a January date to a viewer in Australia. They now prefer the region you set under Settings > General, falling back to the global earliest only when your region has no date. This changes cached values, so the first sync after upgrading refreshes them. (upstream #534)
FlixPatrol matched the wrong film
FlixPatrol charts identify a title by name, so two films sharing one produce a coin flip. Matches are now disambiguated by release year, read from the film's own detail page rather than guessed from the URL. A slug ending in a year is ambiguous by nature, since wonder-woman-1984 is a 2020 film. (upstream #493)
Poster templates were overwritten on restart
Editing a poster template and restarting the container could reset it to the shipped default. The re-seed now leaves an edited template alone. A background-only poster with no elements is a deliberate save, not a broken one. (upstream #517)
Apple TV+ and other network icons went missing
Networks whose TMDB name doesn't match their icon filename resolved to nothing. TMDB calls it "Apple TV", the icon set calls it "Apple TV+". Aliases now resolve through the mapping table. (upstream #528)
Rotten Tomatoes ratings missed alternate titles
A film released under a different title in another market wouldn't match on the RT lookup and the rating came back empty. Alternate and international titles are now tried. (upstream #582)
Smaller things
- Overlays regenerate when a local base poster file changes, instead of keeping the old composite. (upstream #519)
- Tautulli's most-watched-by-duration list ranks by watch duration rather than play count, which is what the option says it does. The wrong titles were a symptom of the wrong sort. (upstream #523)
- Season cleanup failures are contained per library, so one library's problem can't stop the sweep for the rest.
- Timezone handling in the date test suite is pinned, so the suite doesn't pass or fail depending on where it runs.
Known and unfixed
- Restoring a base poster larger than 1000x1500 downscales it. This affects movies and shows too, not just seasons.
- Restored posters stay locked in Plex.
