From 5c4f251fa693cdc32a5eda2c57d5c729c8406072 Mon Sep 17 00:00:00 2001 From: Dymas Date: Sun, 17 May 2026 21:49:27 +0200 Subject: [PATCH] Fix ready border condition on watchlist cards --- CHANGELOG.md | 4 ++++ README.md | 2 +- VERSION | 2 +- app_support.py | 2 +- test_app.py | 4 ++-- watchlist_page.py | 2 +- 6 files changed, 10 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 13d2be2..72a75bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 0.32.5 - 2026-05-17 + +- Fixed the green ready-border highlight so it applies to any watchlist card with both subbed and dubbed episodes complete, instead of only cards filed under the `Finished` category. + ## 0.32.4 - 2026-05-17 - Highlighted fully ready finished watchlist entries with a thin green card border when both subbed and dubbed episodes are complete, making download-complete anime easier to scan quickly. diff --git a/README.md b/README.md index 6506d50..8c2e38f 100644 --- a/README.md +++ b/README.md @@ -157,7 +157,7 @@ The app currently includes: - Per-show watchlist refresh queueing now also deduplicates in-flight refreshes, so the same show is not fetched twice back-to-back while one refresh is already running. - The watchlist page now silently refreshes itself while queued per-show refresh work is still being processed, so queued entries settle into their updated state without a manual reload. - The watchlist page now also avoids re-triggering the same unresolved thumbnail warm-up request on every silent poll cycle while a show's thumbnail state is unchanged. -- Finished watchlist cards with both sub and dub fully ready now get a thin green border for quicker visual scanning. +- Watchlist cards with both sub and dub fully ready now get a thin green border for quicker visual scanning, regardless of which category tab they are in. - Background `Refresh All` execution with status polling, no inline thumbnail downloads during the bulk job, and a configurable delay between shows to reduce upstream request bursts. - Optional scheduled background watchlist refreshes with Config page controls for enable/disable and refresh period. - Scheduled background refresh runs now log queue, start, and completion status to stdout so container logs show whether they finished successfully, with errors, or failed. diff --git a/VERSION b/VERSION index eb77136..366b834 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.32.4 +0.32.5 diff --git a/app_support.py b/app_support.py index f56c807..4453c15 100644 --- a/app_support.py +++ b/app_support.py @@ -16,7 +16,7 @@ from uuid import uuid4 PROJECT_ROOT = Path(__file__).resolve().parent ANI_CLI = os.environ.get("ANI_CLI_BIN") or shutil.which("ani-cli") or "ani-cli" APP_NAME = "ani-cli-web" -VERSION = "0.32.4" +VERSION = "0.32.5" ALLANIME_BASE = "allanime.day" ALLANIME_API = f"https://api.{ALLANIME_BASE}" ALLANIME_REFERER = "https://allmanga.to" diff --git a/test_app.py b/test_app.py index 673cedb..f48f4bf 100644 --- a/test_app.py +++ b/test_app.py @@ -1481,9 +1481,9 @@ class TemplateHelperTests(unittest.TestCase): self.assertIn("else if (state.queuedCount > 0)", APP.WATCHLIST_HTML) self.assertIn("fetchWatchlist(state.watchlistPage, { silent: true })", APP.WATCHLIST_HTML) - def test_watchlist_page_highlights_fully_ready_finished_cards(self): + def test_watchlist_page_highlights_fully_ready_cards(self): self.assertIn(".anime-card.fully-ready", APP.WATCHLIST_HTML) - self.assertIn('item.category === "finished" && item.sub_complete && item.dub_complete', APP.WATCHLIST_HTML) + self.assertIn("const isFullyReady = item.sub_complete && item.dub_complete;", APP.WATCHLIST_HTML) self.assertIn("card.className = watchlistCardClassName(item);", APP.WATCHLIST_HTML) def test_watchlist_thumbnail_warmup_skips_repeated_attempts(self): diff --git a/watchlist_page.py b/watchlist_page.py index ac7810e..fac8a22 100644 --- a/watchlist_page.py +++ b/watchlist_page.py @@ -709,7 +709,7 @@ WATCHLIST_HTML = r""" } function watchlistCardClassName(item) { - const isFullyReady = item.category === "finished" && item.sub_complete && item.dub_complete; + const isFullyReady = item.sub_complete && item.dub_complete; return `anime-card${item.status === "error" ? " error" : ""}${isFullyReady ? " fully-ready" : ""}`; }