Add the Bot-tab backfill control room and media strip rules

This commit is contained in:
Fisto
2026-09-17 09:04:27 +02:00
parent 16ce809270
commit 6ae2ff5ab3
14 changed files with 949 additions and 85 deletions
+14
View File
@@ -40,6 +40,20 @@ mobile draft at 390px.
- [x] C11 preview caching: Discord-hosted image/GIF previews (WebP 320px, hash-addressed, 5 MiB
cap, one attempt) run after every walk in both modes. Live run `...-20260916090722`:
`previewed: 2`; thumbs served over `/api/media/<scrape>/<item>/thumb` (200).
- [x] C43 Bot-tab backfill control room and media-tab strip rules. The engine gained
`previewBatch`/`rateLimitStatus`/`updateOptions`; a new `BackfillQueue` groups preview work per
chat (paused and resumed scrapes of a chat combine), runs one job at a time in batches, and
reports pending/cached/failed per kind, throughput, measured and settings-based ETA, and the
live cooldown. `MediaService` drives it and exposes `GET /api/media/backfill` plus start/pause;
`/api/preferences` now carries `media.tunables` (Backfilling / Scraping / Timers, persisted and
applied live). The Bot tab shows totals with a Bot/Puppet split, per-chat job cards with
progress and Start/Pause, **Start backfill** / **Pause all**, the red `API timed out, increase
timers` banner, and the three settings groups. The media strip shows running plus one paused
scrape, dismisses a paused one on Stop without stopping it, turns red while limited, and shows
a session-only `N scrapes completed` note. The old `VESKSLOP_MEDIA_*` tuning env vars are gone.
New unit tests cover batching, the cooldown, live retuning, and queue grouping/finish/pause;
the Playwright smoke test covers the Bot tab. Live: daemon restarted, 6018 pending / 13321
cached / 652 failed, ETA 4h 7m at 21.4 rows/min, settings round-trip verified.
- [x] C42 Preview attempts cap. The restart log showed the backfill retrying dead hosts (Gfycat
DNS is gone, Streamable answers 400) forever as "transient". Rows now carry
`preview_attempts`; after `VESKSLOP_MEDIA_PREVIEW_MAX_ATTEMPTS` (3) the row is marked