Session 0016: Backup Drill-Down Redesign & Restore Fix
Date: 2026-02-22
Status: Completed
Origin: MDF Webseiten session 0030
Work Done
- [x] Fixed restore API call —
mdf CLI was falling into interactive selection because no backup filename was passed
app.js: startRestore() now includes &name=... from restoreCtx in the API URL
- [x] Implemented backups drill-down redesign (deployed as v7)
- Replaced flat filter state with 3-level drill state (project → env → backup file)
- Added cached backups to avoid re-fetching on drill-back
- Extracted
mergeBackups() helper function
- Implemented all 13 changes from the redesign plan
- [x] Fixed browser cache problem preventing new JS from loading after rebuild
- Rebuilt image and restarted container to force cache bust
Key Decisions / Learnings
- Restore API must include the backup filename explicitly — passing only project/env and letting the CLI choose interactively breaks in non-TTY server context.
- 3-level drill state (project → env → file) is the right UX pattern for hierarchical backup selection; flat filter state made navigation confusing and state management error-prone.
- Caching fetched backup lists at each level avoids latency on drill-back and reduces server load.
- Browser cache busting on vanilla JS apps requires either cache-control headers or a version query param — container restart alone does not always clear client caches.
Files Changed
/opt/data/ops-dashboard/static/js/app.js — startRestore() fix, 3-level drill state, mergeBackups() helper
- Docker image rebuilt and container restarted
Tags: #Session #OpsDashboard #BackupSystem