Commit Graph

427 Commits

Author SHA1 Message Date
Hosted Weblate cebd50f588 Merge remote-tracking branch 'origin/develop' into develop 2026-01-06 06:43:13 +01:00
bitr8 4541ea145c fix(collections): surface per-collection sync errors to UI (#321)
Collection sync errors were being logged server-side but not surfaced
to the UI, leaving users with blank error messages when multi-source
collections failed to process.

- Added lastSyncError and lastSyncErrorAt fields to CollectionConfig
- MultiSourceOrchestrator now returns error in sync result
- CollectionSyncService persists errors and doesn't mark failed syncs as successful
- Settings methods to set/clear per-collection errors
- Individual sync route also handles and persists errors

Fixes #299

Co-authored-by: bitr8 <bitr8@users.noreply.github.com>
2026-01-06 18:43:09 +13:00
Hosted Weblate b2fbb823e9 Merge remote-tracking branch 'origin/develop' into develop 2026-01-06 05:40:37 +00:00
Tom Wheeler b46f42575c chore(prettier): satisfy prettier single quotation 2026-01-06 18:39:25 +13:00
Hosted Weblate 930bb712ed Merge remote-tracking branch 'origin/develop' into develop 2026-01-06 05:31:52 +00:00
Tom Wheeler e370b71207 fix(collection-posters): fixes custom icons not being saved correctly
fix #308
2026-01-06 18:30:09 +13:00
Hosted Weblate d8f32a9bef Merge remote-tracking branch 'origin/develop' into develop 2026-01-05 11:47:03 +01:00
Weblate (bot) 4cf1ad5105 Translations update from Hosted Weblate (#310)
* 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/

* Translated using Weblate (Hungarian)

Currently translated at 73.4% (1052 of 1432 strings)

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

* Translated using Weblate (French)

Currently translated at 54.1% (775 of 1432 strings)

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

* Translated using Weblate (German)

Currently translated at 25.4% (364 of 1432 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 77.2% (1106 of 1432 strings)

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

* Translated using Weblate (French)

Currently translated at 55.4% (794 of 1432 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 77.8% (1115 of 1432 strings)

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

* Translated using Weblate (German)

Currently translated at 25.1% (360 of 1432 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 79.6% (1140 of 1432 strings)

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

---------

Co-authored-by: Sulli <susu.leduc@gmail.com>
Co-authored-by: Koch Norbert <kochnorbert@icloud.com>
2026-01-05 23:46:58 +13:00
Hosted Weblate 4f42f7a191 Merge remote-tracking branch 'origin/develop' into develop 2026-01-05 10:46:35 +00:00
Koch Norbert 8ccdfab0e4 Translated using Weblate (Hungarian)
Currently translated at 79.6% (1140 of 1432 strings)

Translation: agregarr/Agregarr Frontend
Translate-URL: https://hosted.weblate.org/projects/agregarr/agregarr-frontend/hu/
2026-01-05 10:46:35 +00:00
Sulli b0cfcc9425 Translated using Weblate (German)
Currently translated at 25.1% (360 of 1432 strings)

Translation: agregarr/Agregarr Frontend
Translate-URL: https://hosted.weblate.org/projects/agregarr/agregarr-frontend/de/
2026-01-05 10:46:34 +00:00
bitr8 027bf11474 fix(logging): downgrade library mismatch message to debug level (#305)
The "Target library X not found or is not a movie/TV library" message
was logged at warn level, but this is a normal scenario when a collection
targets a specific library type. This caused log spam during syncs.

Fixes #265

Co-authored-by: bitr8 <bitr8@users.noreply.github.com>
2026-01-05 23:46:28 +13:00
Hosted Weblate 1f5c2d4585 Merge remote-tracking branch 'origin/develop' into develop 2026-01-05 11:38:49 +01:00
Koch Norbert 858775e7c7 Translated using Weblate (Hungarian)
Currently translated at 77.8% (1115 of 1432 strings)

Translation: agregarr/Agregarr Frontend
Translate-URL: https://hosted.weblate.org/projects/agregarr/agregarr-frontend/hu/
2026-01-05 11:38:48 +01:00
bitr8 5a19db7efe fix(overlays): use uniform scaling for non-standard poster aspect ratios (#306)
Posters with non-standard sizes (e.g., 1000x1426 instead of 2:3 ratio)
caused overlay elements to drift outside poster edges due to separate
X/Y scaling.

Changed to uniform scaling with centering offsets:
- `scale = Math.min(scaleX, scaleY)` ensures overlays stay within bounds
- Offsets center the template area on non-standard posters
- Updated all render methods for consistency
- Recalculate dimensions after safety resize

Fixes #297

Co-authored-by: bitr8 <bitr8@users.noreply.github.com>
2026-01-05 23:38:42 +13:00
Hosted Weblate bd9e817417 Merge remote-tracking branch 'origin/develop' into develop 2026-01-05 11:31:48 +01:00
Sulli 0758518ca7 Translated using Weblate (French)
Currently translated at 55.4% (794 of 1432 strings)

Translation: agregarr/Agregarr Frontend
Translate-URL: https://hosted.weblate.org/projects/agregarr/agregarr-frontend/fr/
2026-01-05 11:31:47 +01:00
Koch Norbert 48662c75f6 Translated using Weblate (Hungarian)
Currently translated at 77.2% (1106 of 1432 strings)

Translation: agregarr/Agregarr Frontend
Translate-URL: https://hosted.weblate.org/projects/agregarr/agregarr-frontend/hu/
2026-01-05 11:31:46 +01:00
Sulli 15cf93f117 Translated using Weblate (German)
Currently translated at 25.4% (364 of 1432 strings)

Translation: agregarr/Agregarr Frontend
Translate-URL: https://hosted.weblate.org/projects/agregarr/agregarr-frontend/de/
2026-01-05 11:31:43 +01:00
Tom Wheeler 8e105d93c2 fix(collection-posters): exclude items without tmdb poster path in content grid
fix #288
2026-01-05 23:30:37 +13:00
Tom Wheeler 309f196e3b chore(mdblist): add axios error logging 2026-01-05 23:16:38 +13:00
Tom Wheeler e2ebf90db4 fix(placeholders): ensure placeholder days ahead is respected for non-coming soon collections
re #253, re #268
2026-01-05 23:16:36 +13:00
Tom Wheeler 5e8958a43e chore(locale): add swedish 2026-01-05 23:16:35 +13:00
Tom Wheeler 9788b43fe6 chore(placeholders): fix form validation for placeholder root folders 2026-01-05 23:16:33 +13:00
Sulli 392e92b5ae Translated using Weblate (French)
Currently translated at 54.1% (775 of 1432 strings)

Translation: agregarr/Agregarr Frontend
Translate-URL: https://hosted.weblate.org/projects/agregarr/agregarr-frontend/fr/
2026-01-05 10:31:47 +01:00
Koch Norbert 19e1865087 Translated using Weblate (Hungarian)
Currently translated at 73.4% (1052 of 1432 strings)

Translation: agregarr/Agregarr Frontend
Translate-URL: https://hosted.weblate.org/projects/agregarr/agregarr-frontend/hu/
2026-01-05 10:31:41 +01:00
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