Added
- "Adding N items to queue…" in-flight overlay on the Scanner. Clicking Add to queue on the estimate modal closed the modal immediately and then went silent for the duration of the API call — for hundreds or thousands of files that's a multi-second blank stare with no indication anything is happening. New full-screen overlay with a spinner and "Adding 1,234 items to queue… Resolving rules, deduping, inserting jobs." text appears for the duration of the request. Auto-dismisses on success or error; the existing toast still confirms the final count.
Fixed
- Bulk queue insert was N round-trips through aiosqlite when it should have been 1.
Queue.add_jobs_bulklooped per-row callingawait db.execute(INSERT, ...)— each await is a thread-pool round-trip. With AUTOINCREMENT in WAL mode under a single writer SQLite gives contiguous IDs within a transaction, so the per-row execute was buying nothing the bulk path needed. Replaced with a pre-computed param list and a singleexecutemany, with IDs reconstructed fromcursor.lastrowidandcursor.rowcount. Same dedup/insert_next/queue_order semantics, same return shape (one ID-or-zero per input job). log_eventwas re-opening a fresh DB connection per call. The post-insert "queued" event log inadd_jobs_bulkfired onelog_eventper inserted job, and each one opened a connection, set pragmas, inserted, committed, closed. For a 1000-job add, that's 1000 connection cycles and 1000 commits — the dominant cost after the first fix landed. Addedlog_events_bulkthat takes the whole list and inserts via oneexecutemanyin one connection; queue.py uses it. Single-eventlog_eventis unchanged for one-off callers.
Net: a 1000-item add that previously felt like a freeze now finishes in well under a second on the server side, and the time it does take is filled with a clear progress affordance instead of a frozen UI.
Docker images
Pinned to this release:
docker pull ghcr.io/i-ial9000/shrinkerr:0.3.57 # portable (amd64 + arm64, CPU)
docker pull ghcr.io/i-ial9000/shrinkerr:0.3.57-nvenc # x86_64 + NVIDIA GPU (NVENC)
docker pull ghcr.io/i-ial9000/shrinkerr:0.3.57-edge # as above but ffmpeg master
docker pull ghcr.io/i-ial9000/shrinkerr:0.3.57-edge-nvencFloating tags (:latest, :edge, :nvenc, :edge-nvenc) track the most recent release of each lineage.