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
+20 -9
View File
@@ -169,9 +169,13 @@ that deletion is irreversible. The delete button is disabled for a 5 second coun
downloads, an ffprobe probe. GIF tiles carry a translucent **GIF** label top-left; the cached
preview is a static frame and the animated GIF plays while hovering. The status row reads
`(Images/Videos) | Downloaded I/V | Cached I/V | Loaded I/V` — image counts include GIFs, and
each slot is the count for the active filters. A scrape strip shows live progress with Stop; it
polls every 4 seconds while the tab is open, lists only queued/running jobs (paused ones live in
History), and shows `X/Yp (~Z%)` when the search total is known. The grid scrolls infinitely
each slot is the count for the active filters. A scrape strip shows live progress and polls every
4 seconds while the tab is open. It shows every queued/running job plus at most one paused scrape
(the newest not dismissed); **Stop** on a paused scrape only hides it here, so a new paused scrape
can take its place while the hidden one stays resumable. The strip text turns red and reads
`API limited, retry in Ns` while Discord throttles media traffic, and a translucent
`N scrapes completed` line appears when scrapes finish — it lives until the tab is reloaded. Each
row shows `X/Yp (~Z%)` when the search total is known. The grid scrolls infinitely
(a **Load more** button appears as a fallback). Media whose source answers `403` shows a
**PRIVATE** tile and `404`/`410` shows **GONE**, with the reason in the tooltip. Some channels deny the bot the search endpoint (`Missing Access`) even though history
reads work, so the total is optional.
@@ -183,13 +187,20 @@ that deletion is irreversible. The delete button is disabled for a 5 second coun
backdrop click, X, or Close. Only active scrapes show in the strip; the view fills the window
below the header and the call strip. The Bot tab lists bot and scrape errors with a red badge
that disappears when the tab is opened and a Clear button.
- **Bot** tab: slopbot connection state, the scrape queue, and the storage limit with a usage bar.
The bar is segmented and colour coded by media kind (images, GIFs, video, audio, other) plus the
database overhead.
- **Bot** tab: slopbot connection state, the backfill queue, per-backend stats, and the tunables.
**Backfill** shows totals (pending, cached, failed, downloaded, stored bytes), an ETA at the
current settings, and a Bot/Puppet split of pending/cached/failed. One job card per chat lists its
member scrapes (paused and resumed scrapes of the same chat are combined), per-kind pending
counts, a cached/total progress bar, a measured ETA, and **Start**/**Pause**; the section header
carries **Start backfill** and **Pause all**. A red banner reads `API timed out, increase timers`
while a Discord cooldown holds the queue. **Settings** holds three collapsible groups —
Backfilling, Scraping, Timers — each with a Save button; values persist in `preferences.json` and
apply to live jobs immediately. The **Errors** list keeps the bot and scrape errors with the red
badge and Clear button.
- Settings gains one collapsible group. Its name is **Bot** while the bot path is active, and
**Media** if the bot path is removed. It holds the limit field with the info tooltip, the usage
bar (segmented by image, GIF, video, audio, and other), and the clean button with its 5 second
countdown.
**Media** if the bot path is removed. It holds the storage limit field with the info tooltip, the
usage bar (segmented by image, GIF, video, audio, and other), and the clean button with its
5 second countdown. Pacing and batching knobs live in the Bot tab, not here.
- Mobile is out of scope for now.
## MCP