soulsync/tests/downloads
dev f55a4fcf72 fix(downloads): stop active tasks from starving terminal rows out of the list
Root cause of "completed/failed/unverified don't show during a running
batch, only after it ends" (F5 didn't help): build_unified_downloads_response
sorted live tasks active-first (downloading/searching/queued = priority 0-3,
completed/failed = 4-7) then truncated the whole array at items[:limit] (300).
During a busy batch the active+queued tasks filled the limit and pushed every
terminal task off the end, so /api/downloads/all never returned them — the
Completed/Failed/Unverified tabs filter client-side and had nothing to show.

Fix: `limit` now bounds only the persistent-history tail. Live in-memory
tasks are always returned in full — they're already bounded by the 5-min
cleanup automation, and array order is presentation-only since the page
filters per tab client-side.

Verified with a repro (320 queued + 1 completed + 1 failed → terminal rows
were absent at limit=300; now present).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 21:36:27 +02:00
..
__init__.py
test_album_bundle_staging_sweep.py
test_album_serialize_drain.py Wishlist: serialize album-bundle downloads so they stop flooding the search pool (Sokhi #740) 2026-06-09 10:06:53 -07:00
test_background_download_worker.py Add 5 test additions JohnBaumb suggested 2026-05-05 13:04:18 -07:00
test_candidate_ordering.py feat(downloads): best-quality search mode + clearer fallback UI 2026-06-14 18:46:01 +02:00
test_deezer_pinning.py
test_download_engine.py
test_download_orchestrator.py
test_downloads_cancel.py fix(downloads): keep terminal tasks visible during active batch + concurrent pool 2026-06-14 20:08:56 +02:00
test_downloads_candidates.py #797: stop AcoustID quarantining correct non-English-artist downloads 2026-06-05 16:02:01 -07:00
test_downloads_cleanup.py
test_downloads_history.py
test_downloads_lifecycle.py Album-bundle staging: clean Soulseek copies + sweep orphans at startup 2026-05-27 22:18:42 -07:00
test_downloads_master.py Playlists: wire materialize triggers + retire per-track routing flag 2026-06-12 13:37:59 -07:00
test_downloads_post_processing.py
test_downloads_staging.py
test_downloads_status.py fix(downloads): stop active tasks from starving terminal rows out of the list 2026-06-14 21:36:27 +02:00
test_downloads_task_worker.py feat(downloads): best-quality search mode + clearer fallback UI 2026-06-14 18:46:01 +02:00
test_downloads_validation.py
test_file_finder.py Fix: a '/' in a song title was treated as a path separator (#835) 2026-06-10 16:29:09 -07:00
test_hifi_pinning.py
test_lidarr_pinning.py
test_orchestrator_search_mode.py feat(downloads): best-quality search mode + clearer fallback UI 2026-06-14 18:46:01 +02:00
test_playlist_folder_exists.py Fix organize-by-playlist downloads: library entries, wishlist, and stale Spotify cache 2026-06-03 10:26:32 +02:00
test_qobuz_pinning.py
test_rate_limit_policy.py
test_soulseek_pinning.py
test_soundcloud_pinning.py
test_tidal_pinning.py
test_track_detail.py Downloads: add per-track detail endpoint for the track-detail modal 2026-05-31 20:18:35 -07:00
test_track_link.py Manual download search: paste a Tidal/Qobuz track link to grab the exact version (#813) 2026-06-08 15:03:54 -07:00
test_track_metadata_backfill.py
test_wishlist_aggregator.py
test_youtube_pinning.py