Fix watchlist refresh progress fill
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
+3
-1
@@ -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)
|
||||
|
||||
+9
-5
@@ -283,8 +283,10 @@ WATCHLIST_HTML = r"""<!doctype html>
|
||||
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"""<!doctype html>
|
||||
<span>Refresh progress</span>
|
||||
<span id="refreshJobCount">0 / 0</span>
|
||||
</div>
|
||||
<div class="refresh-progress-track" aria-hidden="true">
|
||||
<div class="refresh-progress-track" aria-valuemax="100" aria-valuemin="0" aria-valuenow="0" role="progressbar">
|
||||
<div class="refresh-progress-fill" id="refreshJobFill"></div>
|
||||
</div>
|
||||
<div class="refresh-progress-current" id="refreshJobCurrent"></div>
|
||||
@@ -926,7 +928,8 @@ WATCHLIST_HTML = r"""<!doctype html>
|
||||
if (!el) return;
|
||||
if (!job) {
|
||||
el.classList.remove("visible");
|
||||
$("refreshJobFill").style.width = "0%";
|
||||
$("refreshJobFill").style.transform = "scaleX(0)";
|
||||
el.querySelector(".refresh-progress-track").setAttribute("aria-valuenow", "0");
|
||||
$("refreshJobCount").textContent = "0 / 0";
|
||||
$("refreshJobCurrent").textContent = "";
|
||||
return;
|
||||
@@ -935,7 +938,8 @@ WATCHLIST_HTML = r"""<!doctype html>
|
||||
const total = Number(job.total || 0);
|
||||
const percent = refreshJobPercent(job);
|
||||
el.classList.toggle("visible", job.status === "running" || job.status === "pending");
|
||||
$("refreshJobFill").style.width = `${percent}%`;
|
||||
$("refreshJobFill").style.transform = `scaleX(${percent / 100})`;
|
||||
el.querySelector(".refresh-progress-track").setAttribute("aria-valuenow", String(percent));
|
||||
$("refreshJobCount").textContent = `${completed} / ${total}`;
|
||||
if (job.status === "pending") {
|
||||
$("refreshJobCurrent").textContent = job.message || "Waiting to start refresh.";
|
||||
|
||||
Reference in New Issue
Block a user