Session 0003: Backup v8-v9 Delete, Multi-Select, URL Routing
Date: 2026-02-22
Status: Completed
Origin: MDF Webseiten session 0031
Work Done
v8: Delete + Granular Restore
- [x]
DELETE /api/backups/{project}/{env}/{name} endpoint with path traversal validation
- [x] Restore
mode query param (full/db/wp) → passes --db-only/--wp-only to ops CLI
- [x] Delete button on every backup row in Level 2 drill-down
- [x] Restore Mode radio buttons (Full / Database only / WP-Content only) in restore modal
v9: Multi-Select, Upload, Source Selector, URL Routing
- [x] URL hash routing —
#/backups/mdf/dev, #/dashboard/table, #/system — browser refresh preserves location
- [x] Multi-select delete — checkboxes per row, select-all header, blue selection bar, bulk delete
- [x] Upload to offsite — purple "Upload" button on local-only backups
- [x] Restore source selector — Local/Offsite radio buttons when backup exists in both locations
Key Decisions / Learnings
- Path traversal validation is required on delete endpoint (user-supplied filename in URL)
- Static files are volume-mounted (not COPY'd) — frontend changes don't require container rebuild
- URL hash routing lets users bookmark specific dashboard views and survive page refresh
- Granular restore (db-only / wp-only) avoids full restore when only one component needs recovery
Pending
- Selection bar spacing CSS gap not taking effect (possible browser cache issue)
Tags: #Session #OpsDashboard #Backups