soulsync/webui/static
BoulderBadgeDad 3af3a1cd24 video downloads Phase C: auto-retry + alternate-query requery
When a grabbed release fails (transfer error / peer-cancel / never lands), the engine
now retries instead of giving up — the music-style depth:
- Grab stores the OTHER accepted results as a retry pool + the search context (schema
  v16: candidates / search_ctx / tried_queries / tried_files / attempts).
- core/video/retry.py (pure, tested): plan_retry() → try the next-best candidate; when
  the pool is dry, next_query() generates an ALTERNATE query (movie: drop the year; TV:
  numbering variants) to re-search; budget MAX_ATTEMPTS=6. merge_candidates dedupes
  against already-tried releases.
- Monitor: on failure, _fail_or_retry hops to the next candidate inline; if none, flips
  the row to a new 'searching' state and a background requery thread re-searches the
  alternate query, evaluates against the profile, and starts the best fresh hit — or
  marks failed once truly exhausted. 'searching' rows are owned by their thread.
- Page: 'Searching' status (Trying another release…) + a 'Nx' attempt badge.
16 tests (retry engine + candidate-retry transition); ruff clean on touched files.
2026-06-19 17:12:44 -07:00
..
docs
vendor
video video downloads Phase C: auto-retry + alternate-query requery 2026-06-19 17:12:44 -07:00
amazon.svg
api-monitor.js
artists.png
audiodb.png
auto-sync.js
automation.png
basic-search-v2.css
beatport-ui.js
blocklist.js
core.js
dashboard.png
discover-section-controller.js
discover.js
discover.png
docs-images-needed.md
docs.js
downloads.js
enrichment-manager.js
enrichment.js
explorer.png
favicon.png
help.png
helper.js
hydrabase.png
import.png
init.js
library.js
library.png
manifest.json
media-player.js
mobile.css
my-accounts.js
origin-history.js
pages-extra.js
particles.js
placeholder-album.png
pwa-icon-192.png
pwa-icon-512.png
search.js
search.png
service-switch.js
settings.js
settings.png
setup-wizard.css
setup-wizard.js
shared-helpers.js
shell-bridge.js fix: video sidebar highlight needed two clicks (music chrome wiped it) 2026-06-19 13:36:00 -07:00
stats-automations.js
style.css
sw.js
sync-lastfm.js
sync-listenbrainz.js
sync-services.js
sync-soulsync-discovery.js
sync-spotify.js
sync.png
track-detail.js
trans.png
trans2.png
watchlist-history.js
whisoul.png
wishlist-tools.js
worker-orbs.js