Skip to content

v2.6.0

Latest

Choose a tag to compare

@bitr8 bitr8 released this 05 Jul 05:01

v2.6.0

Eight days after 2.5.0. Two features and a stack of fixes, nearly all of them straight from reports on the fork tracker or upstream's. Everything here has been running live on a production server, and several of the fixes are confirmed by the people who reported them.

Docker tags

Tag What it tracks
bitr8/agregarr:latest Stable releases. This is what you want.
bitr8/agregarr:2.6.0 Pinned to this exact release.
bitr8/agregarr:develop Bleeding edge. Builds on every push, breaks sometimes.

Upgrading from 2.5.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

Episode media scanning

Plex's show-level metadata doesn't always match what's on disk. A show with one 4K episode out of 99 can report as "4K", and a fully upgraded library can still say "1080p". Overlay badges built on that metadata get it wrong too.

This release scans the actual episode files and aggregates by majority vote: resolution, HDR, Dolby Vision, and audio channels roll up to series level, with ties breaking to the higher quality. An HDR badge means 50%+ of the episodes really are HDR. It reads what's on disk, per file, not what TMDB thinks the show is. Kometa doesn't do this.

Episode scanning toggle

It's built to be cheap. Fetching the episode list takes about 19 seconds on a 21,000-episode library; the expensive stream-detail pass (roughly another two minutes) only runs when a template actually uses HDR or DV fields. Results cache in SQLite for 7 days with hash-based invalidation, so later syncs finish in seconds, and cached entries upgrade themselves if you add HDR/DV fields to a template down the track.

Templates get new variables too: episodeCount, episode4kPercent, episodeHdrPercent, episodeDvPercent, plus the raw show-level values preserved as showResolution, showHdr, and friends. All usable in both variable text and application conditions. Season 0 specials are excluded from aggregation, since they're usually low-quality extras.

Off by default. Enable per library under Overlays > library config > "Use episode files for quality badges" (show libraries only).

Season collections get proper poster grids

Collections made of seasons (Maintainerr leaving-soon collections, manual season collections) rendered an empty poster grid, or occasionally a completely different show. Turns out Plex tags seasons with TMDB IDs from the season-object namespace, which look like show IDs but aren't. The auto-poster grid queried them as shows and got 404s or collisions.

Grid tiles now use each season's own Plex artwork, so the collage matches what you see in Plex. Poster editor previews for season and episode items work too. One note: some metadata agents serve show-style art as the season poster, so a season tile can look like a show tile. That's faithful to Plex; season-number badges on tiles are coming (see Next up). (fork #29, thanks jmjviana)

Watch Provider Region in the UI

The Streaming Provider overlay's region (which country's services appear on posters) could only be set by editing settings.json. It's now a dropdown in Settings > General, next to TMDB Language. Defaults to US. (fork #12)

Fixed

FlixPatrol Top 10 collections stopped working

These broke twice, for unrelated reasons (upstream #609). First FlixPatrol went behind Cloudflare, which rejects Node's TLS fingerprint, so every fetch got a challenge page instead of a chart. v2.5.0 fixed that with a real browser solve (thanks clomax85 for the fingerprint diagnosis). Separately, FlixPatrol removed Crunchyroll, Discovery+, Peacock, and Hulu from their Top 10 overview page, which was the only page global charts were read from, so those four stayed broken. They now fall back to the platform's own Top 10 page. Peacock and Hulu have no world chart at all (US-only services), so they fall through to FlixPatrol's US page.

All 10 platforms checked live before this release, both chart types, plus a country-page regression pass.

Coming Soon dates were off by one day

Dates on Coming Soon and next-episode overlays could render a day early or late depending on your server's timezone and the episode's air time. Two separate bugs stacked: date-only strings (TMDB 2026-07-04) and full datetimes (Sonarr 2026-06-28T23:00:00Z) need opposite timezone handling, and the overlay job's prefetch cache stored TMDB's US broadcast date without the Sonarr datetime pass that the uncached path applies. Both fixed, and the job and the preview now agree with each other. (fork #30, thanks jmjviana)

Edit Mappings dialog closed without saving

Picking an icon in a mapped layer's Edit Mappings dialog closed the whole dialog and saved nothing, which made icon mappings effectively uneditable (upstream #533, reported by two users on two browsers). The icon dropdown renders through a React portal, so the modal's backdrop logic read clicks inside it as clicks outside the dialog and cancelled before the selection landed. Fixed in the shared modal component, which covers every portaled dropdown and tooltip inside any modal, not just this one. Submitted upstream as #613.

Collections stuck in a broken state now fix themselves

One family of failures behind [object Object] errors and "Failed to process collection X" in Overseerr-driven syncs:

  • Plex sometimes returns responses the plex-api library can't parse (a charset suffix in the Content-Type header is enough). The collection got created but Agregarr couldn't see the result, leaving an unlabelled orphan it tripped over on every following sync. Orphans are now found and adopted by title.
  • Collections that appear in listings but 404 on writes no longer abort the whole sync. Sort order is cosmetic; not worth killing a sync over.
  • Stale collection IDs that keep 404ing on writes get deleted and recreated once, instead of erroring forever.

(fork #5, upstream #562, thanks Sdhb1)

Streaming Provider overlay

  • Preview shows the item's real provider from TMDB instead of always Netflix
  • No more empty overlay boxes when a provider matches the condition but has no icon
  • Provider ID mappings expanded from 14 hardcoded entries to 60+ services, with name mappings scanned from the icon set on disk
  • Icon directory listing cached for the process lifetime (was hitting the filesystem per provider, per item, during overlay runs)

Smaller things

  • Overlay date formatting routed through timezone-safe parsing everywhere, not just the reported code paths
  • About page cleaned up for the fork: dead upstream links and donation buttons removed

Next up

Season-number badges on grid tiles and a Maintainerr deletion countdown on season posters are in progress (fork #29's second half). Importable collection presets (fork #31) are next on the list after that. No dates; they land when they're tested.

Upstream

Nothing new to pull since April; upstream has been quiet. Fixes from the fork keep going up as PRs where they apply: 13 open now, including #613 from this release. Fork stays GPL-3.0.

Full feature docs in the README. Issues and feature requests on GitHub.