root
632b730fff
chore: migrate GRACE-Poly anchors to hierarchical dotted naming
...
Systematic rename of all semantic anchors (#region, [DEF], @RELATION)
across 1400+ files — backend Python, frontend Svelte/TS, specs, docs:
- Flat anchors become Namespace.Module.Entity
- @RELATION references updated to match new anchor paths
- Zero business logic changes
2026-07-22 11:48:15 +03:00
d630573402
fix(backup): orthogonal code review fixes + UI/UX overhaul
...
## Critical fixes
- H1: Fix env_id/env/environment_id triple inconsistency in API route
(_action_routes.py now passes 'environment_id', matches scheduler)
- H2: Decompose BackupPlugin.execute() — CC 13 → 5 methods, CC ≤ 5 each
- H3: Fix unhandled int() ValueError on non-numeric dashboard_ids
- H4: Add concurrent guard test with API-style params (env key fallback)
- H5: Make RetentionPolicy configurable via StorageConfig
(retention_daily/weekly/monthly in config model + backend plugin)
- Fix: storage DELETE route missing 'await' on async delete_file (bug)
## UI/UX overhaul
- NEW: centralized cron utility (frontend/src/lib/utils/cron.ts)
- validateCron(), calcNextCronRun(), formatNextRun()
- Used by BackupManager, BackupDashboardModal
- BackupManager: replace custom BackupList with shared FileList
- Adds: download, delete, bulk actions, search, sort, pagination
- Adds: cron next-run preview below schedule input
- Adds: auto-open TaskDrawer on backup task creation
- BackupDashboardModal: dead 'Cron Help' button removed
- Adds: live cron validation + next-run preview
- StorageSettings: adds retention daily/weekly/monthly fields
- BackupCreateRequest type fixed to match actual API contract
- i18n: 7 new keys for en/ru (next_run, retention_*)
2026-07-13 20:58:02 +03:00