diff --git a/documentation/TODO__Agents.md b/documentation/TODO__Agents.md index 25c96d6b..e03df04c 100644 --- a/documentation/TODO__Agents.md +++ b/documentation/TODO__Agents.md @@ -122,7 +122,7 @@ Sorting baseline is now `build_tmp_sort` (ASC chain, no `.reverse()` on tmp-sort - [ ] **[Backend] `event_file` — add `cfg_json` column (post-CMSC)** — The per-file display override currently uses a localStorage workaround (`launcher_loc.current.file_display_overrides`) because `event_file` has no JSON blob column. Proper fix: add `cfg_json` to the `event_file` DB table, expose it through the FastAPI model, then migrate the frontend back to reading/writing the backend field (restoring global/cross-device persistence). Frontend code is in `launcher_file_cont.svelte` — search for `file_display_overrides`. - [x] **[Backend] Hosted file delete — V3 CRUD regression fix** — `DELETE /v3/action/event_file/{id}` now handles atomic cleanup (link removal, physical file, hosted_file record). Frontend updated to use this endpoint directly (2026-06-18, commit `5689bfebb`). - [x] **[Backend] Hosted file orphan scan endpoint** — `GET /v3/action/hosted_file/orphan_scan` live. `/core/files/` "Check Orphans" updated to use it — single call replaces N+1 per-file link fetches (2026-06-18, commit `5689bfebb`). -- [ ] **[Files] Multi-select delete + quick delete on `/core/files/`** — Two options to explore: (1) checkbox multi-select with a "Delete Selected" bulk action, (2) a toggle to suppress the per-file confirm dialog for faster single-file cleanup sessions. Useful for clearing orphan backlog after running Check Orphans. +- [x] **[Files] Multi-select delete + quick delete on `/core/files/`** — Implemented (2026-06-23): checkbox column with select-all header, selection action bar with "Delete X selected" (one confirm for the batch, sequential delete with progress tracking), and "Quick delete" toggle to suppress per-file confirms on single deletes. - [ ] **[Backend] Re-add `Access-Control-Allow-Private-Network: true` CORS header.** - [x] **[DevOps] Service worker `skipWaiting` + `clients.claim`** — Root cause of "users see old code / can't reproduce in dev testing": the SW sat in waiting state until all tabs closed. IDAA members leave idaa.org open all day. Fixed 2026-06-03: both calls added to `src/service-worker.js`. See mistake #16 in `BOOTSTRAP__AI_Agent_Quickstart.md`. - [ ] **[DevOps] Nginx proxy buffer tuning** — Buffer settings copied from PHP guide; not optimal for Node.js. `proxy_busy_buffers_size` technically exceeds safe limit. Re-examine when enabling compression (now re-enabled) stabilizes. diff --git a/src/routes/core/files/+page.svelte b/src/routes/core/files/+page.svelte index 29a5ed41..057ed962 100644 --- a/src/routes/core/files/+page.svelte +++ b/src/routes/core/files/+page.svelte @@ -1,6 +1,6 @@
@@ -527,6 +613,12 @@ async function check_all_for_orphans() { · {fmt_size(total_size)} total
+ + {#if orphan_filter}
+ + {#if selected_ids.size > 0} +
+ + {selected_ids.size} file{selected_ids.size !== 1 ? 's' : ''} selected + + + +
+ {/if} +
+ + class:opacity-50={!file.enable} + class:bg-error-100={selected_ids.has(file.hosted_file_id)}> + -
+ +
+ toggle_select(file.hosted_file_id)} /> +
@@ -725,7 +863,7 @@ async function check_all_for_orphans() { {#if links_map.has(file.hosted_file_id)} {@const file_links = links_map.get(file.hosted_file_id) ?? []}
+ {#if file_links.length === 0} No links found — file may be an orphan. {:else}