JavOrganizer v1.5.1
Two automation defects fixed
Both found by exercising every background path end-to-end on a live server, and both cost real work on every run.
1. Collections re-downloaded every poster on every run
A guard that skipped the download when a collection already carried the right image was lost in the 1.4.0 rewrite, so each daily pass re-fetched all ~198 performer portraits from the remote CDNs.
Measured: a run took over five minutes instead of seconds, for bytes already on disk. Downloads are now skipped when the item already holds the image that source would produce. Repeat runs measured at 5.1 seconds with all 197 posters intact.
2. A title with no English release was re-scraped forever
When the language is English, a cached record whose title is still Japanese is retried so an English variant can replace it - but nothing bounded that retry, and substantive records bypassed the 6-hour grace gate. Any title with no English release anywhere (e.g. SDMF-010) triggered a full multi-site scrape on every scan, indefinitely, for no possible gain. The retry is now capped at 3 attempts, with the count carried across the cache rewrite.
Verified live on Jellyfin 12.0.0
- Startup auto-scan fires on every boot (~38s after plugin load)
- FlareSolverr starts as a direct child of Jellyfin and reports healthy
- All three scheduled tasks carry the expected triggers: 6-hourly scan, daily cache clean at 04:00, daily collections at 04:30
- All three manual buttons work; the concurrency guard refuses a second scan while one runs, and a cancelled scan restarts immediately
- Cache cleanup removed exactly one expired record, one expired not-found marker and one orphan - no over-deletion (636 records before and after)
- Offline suite now 217 checks, all five Jellyfin targets build with zero warnings