From 3e95252eb4d5c4c59a198e6787a99e4b34c0c039 Mon Sep 17 00:00:00 2001 From: Dymas Date: Tue, 18 Aug 2026 19:56:38 +0200 Subject: [PATCH] Fix watchlist refresh progress fill --- CHANGELOG.md | 4 ++++ README.md | 2 +- VERSION | 2 +- test_app.py | 4 +++- watchlist_page.py | 14 +++++++++----- 5 files changed, 18 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7fbef99..95d8423 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 0.52.16 - 2026-08-18 + +- Fixed the Watchlist refresh-all progress bar fill so it visibly advances as refresh progress updates arrive. + ## 0.52.15 - 2026-08-18 - Replaced duplicated Watchlist refresh-all progress text with a single progress bar and current-anime label. diff --git a/README.md b/README.md index ae69f6e..af1e9a7 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Kaizoku is a local web app for searching, tracking, and downloading anime from A - Save files with Jellyfin-friendly layout: `TV/Series Name/Season 01/Series Name - S01E01.mp4`. - Save English external subtitles when the provider exposes usable subtitle tracks. - Manage focused watchlists for `Watching`, `Planned`, `Finished`, and `Dropped`, with provider source tags and title links back to the original provider page. -- Periodically refresh selected watchlists with a single progress bar and auto-download newly available episodes. +- Periodically refresh selected watchlists with a single advancing progress bar and auto-download newly available episodes. - Sync watchlist download flags from the filesystem. - Hand completed libraries to Jellyfin TV or movie folders. - Export/import watchlist backups. diff --git a/VERSION b/VERSION index cac7789..b6d899f 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.52.15 +0.52.16 diff --git a/test_app.py b/test_app.py index ff830b1..661cf59 100644 --- a/test_app.py +++ b/test_app.py @@ -4304,8 +4304,10 @@ class TemplateHelperTests(unittest.TestCase): def test_watchlist_page_renders_single_refresh_progress_bar(self): self.assertIn('class="refresh-progress" id="refreshJobStatus"', APP.WATCHLIST_HTML) self.assertIn('class="refresh-progress-fill" id="refreshJobFill"', APP.WATCHLIST_HTML) + self.assertIn('role="progressbar"', APP.WATCHLIST_HTML) self.assertIn("function refreshJobPercent(job)", APP.WATCHLIST_HTML) - self.assertIn('$("refreshJobFill").style.width = `${percent}%`;', APP.WATCHLIST_HTML) + self.assertIn('$("refreshJobFill").style.transform = `scaleX(${percent / 100})`;', APP.WATCHLIST_HTML) + self.assertIn('setAttribute("aria-valuenow", String(percent))', APP.WATCHLIST_HTML) self.assertIn('`Refreshing ${job.current_title}`', APP.WATCHLIST_HTML) self.assertEqual(APP.WATCHLIST_HTML.count('id="refreshJobStatus"'), 1) self.assertNotIn("refreshed${job.current_title", APP.WATCHLIST_HTML) diff --git a/watchlist_page.py b/watchlist_page.py index 415bbbe..8fbccd2 100644 --- a/watchlist_page.py +++ b/watchlist_page.py @@ -283,8 +283,10 @@ WATCHLIST_HTML = r""" background: linear-gradient(90deg, var(--accent), var(--accent-2)); border-radius: inherit; height: 100%; - transition: width 0.2s ease; - width: 0%; + transform: scaleX(0); + transform-origin: left center; + transition: transform 0.2s ease; + width: 100%; } .refresh-progress-current { color: #ddd0ff; @@ -759,7 +761,7 @@ WATCHLIST_HTML = r""" Refresh progress 0 / 0 -