Session 0009: Dashboard Rewrite Committed & Gen-Timers Migration
Date: 2026-02-23
Status: Completed
Origin: MDF Webseiten session 0047
Work Done
- [x] Committed ops-dashboard rewrite (8 files, rebuild.py reduced from 707 to 348 lines)
- [x] Browser-tested all 5 dashboard pages: Dashboard, Backups, Schedules, Operations, MDF drill-down
Frontend Fixes (app.js)
- [x] Fixed environment parsing —
cfg.environments returns objects, needed .map(e => e.name) for promote/sync/lifecycle sections
- [x] Removed
has_coolify gate — Container Lifecycle section was incorrectly hidden entirely
- [x] Changed all "Coolify API" text references to "docker compose"
- [x] Fixed leftover banner bug — "Go to Backups" banner from Recreate persisted across subsequent Restart/Rebuild operations
Gen-Timers Migration
- [x] Rewrote
cmd_gen_timers to read from all_projects() descriptors instead of registry.yaml
- [x] Orphan timer auto-cleanup (removed
backup-coolify.timer)
- [x] Schedule
PUT endpoint now writes to project.yaml (not registry.yaml) — registry.yaml is now dead code
Seafile Healthchecks
- [x] Added Docker HEALTHCHECK to
prod-mdf-seafile (curl localhost:80, 60s start_period)
- [x] Added Docker HEALTHCHECK to
prod-mdf-seafile-redis (redis-cli ping)
- [x] All 3 Seafile containers now report
healthy in dashboard
Backup Bug Fixes
- [x] Fixed single-env backup — MDF CLI
--all flag was always backing up all envs even when one env was requested
- [x] Fixed
bk.create delegation — only delegates when command template contains {env}
Known Issues Remaining
- Restore chain broken: offsite downloaded file path not reaching actual restore (shows wrong filename)
- Backups page shows all entries as "Remote" (local/remote distinction broken in frontend)
Key Decisions / Learnings
project.yaml descriptors replace registry.yaml as source of truth for all ops commands
has_coolify gate should be removed — dashboard should always show lifecycle section
- Browser testing after every batch of changes is essential — environment parsing bug only visible in browser
Tags: #Session #OpsDashboard #Refactor