Commit Graph

401 Commits

Author SHA1 Message Date
Hosted Weblate b7b10bc2cd Merge remote-tracking branch 'origin/develop' into develop 2026-01-04 14:24:07 +00:00
Weblate (bot) e0309635a6 Translated using Weblate (French) (#309)
Currently translated at 40.4% (579 of 1432 strings)

Translation: agregarr/Agregarr Frontend
Translate-URL: https://hosted.weblate.org/projects/agregarr/agregarr-frontend/fr/

Co-authored-by: Sulli <susu.leduc@gmail.com>
2026-01-05 03:24:03 +13:00
Hosted Weblate 7f46e86d33 Merge remote-tracking branch 'origin/develop' into develop 2026-01-04 13:54:56 +01:00
Tom Wheeler fecdfb8bba feat(placeholders): placeholder folders can now be created per-library
changes from global movie/tv root folders to per-library, including migration

fix #251, fix #252
2026-01-05 01:54:33 +13:00
Tom Wheeler 531099fea6 chore(tmdb-poster-cache): add to .gitignore 2026-01-05 01:54:31 +13:00
Hosted Weblate d65dcb005e Merge remote-tracking branch 'origin/develop' into develop 2026-01-04 13:31:40 +01:00
bitr8 be4e100ec8 fix(collections): sync networksCountry to sources array on change (#304)
When editing an existing Networks collection, changing the country
dropdown updated the top-level networksCountry but not sources[0].networksCountry.
The form submits the sources array, so the old value was sent to the API.

Fixes #296

Co-authored-by: bitr8 <bitr8@users.noreply.github.com>
2026-01-05 01:31:35 +13:00
Hosted Weblate 36a749c129 Merge remote-tracking branch 'origin/develop' into develop 2026-01-04 12:31:10 +00:00
bitr8 e33e641a2f fix(overlays): fetch Maintainerr collections in overlay test route (#303)
The overlay test endpoint wasn't fetching Maintainerr collections, so
daysUntilAction was always empty when testing overlays. This made it
impossible to preview Maintainerr-based overlay conditions.

Now fetches collections (when Maintainerr is configured) and passes them
to buildRenderContext, matching the behavior of the main overlay service.

Fixes #291

Co-authored-by: bitr8 <bitr8@users.noreply.github.com>
2026-01-05 01:31:05 +13:00
Hosted Weblate d54f8efc55 Merge remote-tracking branch 'origin/develop' into develop 2026-01-04 13:30:29 +01:00
bitr8 70eb9091cf fix(overlays): return episodeNumber from fetchReleaseDateInfo for countdown overlays (#302)
The episodeNumber field was being extracted from TMDB's next_episode_to_air
but not included in the return object, causing {episodeNumber} in overlay
templates to always show 1 (from Plex item.index) instead of the upcoming
episode number.

Fixes #290

Co-authored-by: bitr8 <bitr8@users.noreply.github.com>
2026-01-05 01:30:25 +13:00
Sulli 6246b25a05 Translated using Weblate (French)
Currently translated at 40.4% (579 of 1432 strings)

Translation: agregarr/Agregarr Frontend
Translate-URL: https://hosted.weblate.org/projects/agregarr/agregarr-frontend/fr/
2026-01-04 10:58:48 +01:00
Tom Wheeler 9395447089 fix(placeholders): ensure movie placeholder parent folders are deleted on cleanup 2026-01-04 15:52:41 +13:00
Tom Wheeler 6709810601 fix(placeholders): add warning when placeholder creation is enabled without respective filtered hub 2026-01-04 14:05:20 +13:00
Tom Wheeler af701fc045 fix(placeholders): add check for plex poster, apply TMDB poster if not present 2026-01-04 14:05:18 +13:00
Weblate (bot) c47c7ce264 Translations update from Hosted Weblate (#298)
* Translated using Weblate (Italian)

Currently translated at 23.3% (334 of 1432 strings)

Translation: agregarr/Agregarr Frontend
Translate-URL: https://hosted.weblate.org/projects/agregarr/agregarr-frontend/it/

* Translated using Weblate (French)

Currently translated at 29.7% (426 of 1432 strings)

Translation: agregarr/Agregarr Frontend
Translate-URL: https://hosted.weblate.org/projects/agregarr/agregarr-frontend/fr/

* Translated using Weblate (French)

Currently translated at 29.7% (426 of 1432 strings)

Translation: agregarr/Agregarr Frontend
Translate-URL: https://hosted.weblate.org/projects/agregarr/agregarr-frontend/fr/

* Translated using Weblate (French)

Currently translated at 29.7% (426 of 1432 strings)

Translation: agregarr/Agregarr Frontend
Translate-URL: https://hosted.weblate.org/projects/agregarr/agregarr-frontend/fr/

* Translated using Weblate (Spanish)

Currently translated at 24.6% (353 of 1432 strings)

Translation: agregarr/Agregarr Frontend
Translate-URL: https://hosted.weblate.org/projects/agregarr/agregarr-frontend/es/

* Translated using Weblate (Dutch)

Currently translated at 24.6% (353 of 1432 strings)

Translation: agregarr/Agregarr Frontend
Translate-URL: https://hosted.weblate.org/projects/agregarr/agregarr-frontend/nl/

* Translated using Weblate (Hungarian)

Currently translated at 59.4% (852 of 1432 strings)

Translation: agregarr/Agregarr Frontend
Translate-URL: https://hosted.weblate.org/projects/agregarr/agregarr-frontend/hu/

* Translated using Weblate (Hungarian)

Currently translated at 59.4% (852 of 1432 strings)

Translation: agregarr/Agregarr Frontend
Translate-URL: https://hosted.weblate.org/projects/agregarr/agregarr-frontend/hu/

* Translated using Weblate (Russian)

Currently translated at 25.3% (363 of 1432 strings)

Translation: agregarr/Agregarr Frontend
Translate-URL: https://hosted.weblate.org/projects/agregarr/agregarr-frontend/ru/

* Translated using Weblate (German)

Currently translated at 24.1% (346 of 1432 strings)

Translation: agregarr/Agregarr Frontend
Translate-URL: https://hosted.weblate.org/projects/agregarr/agregarr-frontend/de/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 24.4% (350 of 1432 strings)

Translation: agregarr/Agregarr Frontend
Translate-URL: https://hosted.weblate.org/projects/agregarr/agregarr-frontend/pt_BR/

---------

Co-authored-by: Sulli <susu.leduc@gmail.com>
Co-authored-by: Axel <axelcotte2007@gmail.com>
Co-authored-by: Koch Norbert <kochnorbert@icloud.com>
2026-01-04 12:57:58 +13:00
Lucas Charles 85ef834b0e chore(collection-config): fix typo (#283)
chore: Fix typo, s/limiations/limitations
2026-01-03 22:17:42 +13:00
bitr8 5daf4fe78e fix(collections): filter daily shows from Coming Soon collections (#278)
Skip series with seriesType='daily' (soaps like EastEnders, Coronation Street)
as they always have upcoming episodes which pollutes the collection.

Co-authored-by: bitr8 <bitr8@users.noreply.github.com>
2026-01-03 22:15:40 +13:00
bitr8 37591405ef perf(overlays): add TMDB poster caching and fix race conditions (#277)
P0 Critical fixes:
- Add TMDB poster file cache with 7-day TTL (reduces API calls by ~99%)
- Add per-job TMDB URL cache with Promise coalescing for concurrent requests
- Add per-library mutex lock to prevent concurrent overlay processing
- Fix variable shadowing where passed tmdbId was ignored

P1 High priority fixes:
- Fix silent failure path - propagate errors from base poster failures
- Add cache cleanup at job start to prevent stale data

P2 Medium priority fixes:
- Fix neq condition evaluation for undefined/null fields
- Handle rejected promises in URL cache (remove on failure)

---------

Co-authored-by: bitr8 <bitr8@users.noreply.github.com>
Co-authored-by: Tom Wheeler <thomas.wheeler.tcw@gmail.com>
2026-01-03 22:14:12 +13:00
Tom Wheeler cbe5e627a2 chore(github-actions): update to native arm64 build via oracle cloud 2026-01-03 21:54:49 +13:00
Basti Qdoba cc9dc828d1 feat(overlays): add Radarr/Sonarr tag support for overlay conditions (#276)
Enables users to conditionally apply overlays based on Radarr/Sonarr tags.
Allows dynamic overlays based on audio languages or custom tagging schemes.

Implements feature request #272
2026-01-03 19:02:20 +13:00
Basti Qdoba 47465ea6c7 fix(bulk-edit): Fix Firefox bulk edit table rendering issue (#271)
Adds select-none CSS class to all sortable column headers in the bulk
edit collections modal to prevent text selection when clicking to sort.

This fixes a Firefox-specific error where clicking column headers would
trigger the Selection API, causing "IndexSizeError: Selection.getRangeAt:
0 is out of range" and preventing the table from rendering properly.

Firefox has unique multi-range table selection behavior and stricter
Selection API error handling compared to Safari/Chrome. By preventing
text selection on interactive headers, the Selection API is never
involved during click events, resolving the error.

The fix also improves UX - clickable headers shouldn't be selectable.

Fixes #270

Co-authored-by: Basti Qdoba <webmaster@qudiqudi.de>
2026-01-03 16:55:00 +13:00
Tom Wheeler d47b965e6f chore(github-actions): update push events to self-hosted 2026-01-03 01:00:31 +13:00
Tom Wheeler c30692ce0c fix(placeholders): fixes Days Ahead not being respected
fix #253, fix #268
2026-01-02 13:48:20 +13:00
Tom Wheeler 21b65fef1b chore(overlays): comment out metacritic in (future implementation)
re #250
2026-01-02 13:24:14 +13:00
Tom Wheeler f4acd17144 fix(networks): fix parsing of hyphenated lists
fix #259, fix #263
2026-01-02 04:22:02 +13:00
Tom Wheeler b2b7e3f3f3 fix(tmdb auto-franchise): add grab missing item
fix #205
2026-01-02 04:20:09 +13:00
Tom Wheeler 74e4dabe49 fix(missing item filtering): fixes country/language exclusions
removes deprecated functions and fields

fix #262
2026-01-01 18:20:53 +13:00
Tom Wheeler 9efac40145 chore(title variables): update helper text to only show for relevant collection types
fix #267
2026-01-01 17:11:25 +13:00
Tom Wheeler 1a73555ca9 chore(languages): add hungarian base translation file from overseerr, update translations 2026-01-01 16:48:00 +13:00
Tom Wheeler 691ae055f8 fix(plex libraries): improved error handling. remove dual update paths
re #255
2026-01-01 14:03:23 +13:00
Tom Wheeler 464825d28c fix(language): add Hungarian as language option (locale and TMDB) 2026-01-01 13:59:45 +13:00
Tom Wheeler f5792601bc fix(overseerr): fixes radarr/sonarr settings not being avaialable when only a single server is setup
fix #154
2026-01-01 13:55:19 +13:00
Tom Wheeler 3eeaf2704c fix(tautulli): fixes changes to tautulli minimum plays not being respected 2026-01-01 09:05:20 +13:00
Tom Wheeler 424c8f2347 fix(missing items filtering): adds RT audience as missing item filter
fix #246
2026-01-01 09:03:57 +13:00
Tom Wheeler 82a04d33fe fix(collection config): prevents closing form when clicking outside of modal
fix #237
2026-01-01 07:48:38 +13:00
Tom Wheeler a3fec4027f fix(tmdb posters): language option can now be selected per-library
fix #220
2026-01-01 07:36:44 +13:00
Tom Wheeler 02999acad6 fix(posters): add custom fonts support
add fonts to /config/fonts/ and they will be auto detected

fix #219
2025-12-31 14:46:40 +13:00
Tom Wheeler b2e645bc95 fix(overlays): add backend support for DoVi, add preset for HDR and DoVi
fix #183
2025-12-31 10:44:57 +13:00
Tom Wheeler 553e99a8a0 fix(api): fix caching of api clients causing settings to not reflect in sync 2025-12-26 08:22:39 +13:00
Tom Wheeler 858f7934a6 feat(overlays): add support for overlays based on maintainerr action
fix #233
2025-12-24 12:29:45 +13:00
Tom Wheeler 9b32601d1d chore(config form): add helper text for placeholders 2025-12-24 01:09:20 +13:00
Tom Wheeler 8c94464c17 fix(item order): fixes item ordering in plex collections
fix #225
2025-12-24 00:46:29 +13:00
Tom Wheeler ea2d07b74a fix(overlays): add date formatting options for nextSeasonAirDate
fix #231
2025-12-24 00:24:18 +13:00
Tom Wheeler 162926a798 fix(imdb): fix tvMovie media type being categorised as tv
fix #229
2025-12-24 00:16:59 +13:00
Tom Wheeler 376d83c1a2 fix(sync): prevent collections sync and overlays sync running concurrently 2025-12-23 23:51:18 +13:00
Tom Wheeler 5640152859 fix(overlays job): migrate old default job to 3am default to avoid conflitc with collections sync 2025-12-23 23:50:40 +13:00
Tom Wheeler 7f0962e5fe fix(job scheduling): fixes cron parsing for following execution time 2025-12-23 23:49:42 +13:00
Tom Wheeler 192ed954f8 fix(overlays): adds condition for gap in awaiting download preset template 2025-12-23 23:33:56 +13:00
Tom Wheeler 6f58a6caa3 chore(placeholders): add youtube cookies frontend helper 2025-12-23 23:33:16 +13:00