Instant VM/LXC modals via bulk hydration + server prewarmer

Backend keeps every guest's modal payload (details, backups, apps, schedule, mount points) warm in-memory and exposes them through a single `/api/vms/modal-cache-all` endpoint. The dashboard hydrates its entire modal cache from that one request on page load, so opening any guest — first click or after coming back later — renders instantly. Replaces ~84 per-guest fetches with 1.
This commit is contained in:
MacRimi
2026-08-13 22:35:13 +02:00
parent 3fe9a49ebc
commit 037421d762
17 changed files with 1769 additions and 460 deletions
+16 -7
View File
@@ -524,12 +524,21 @@ TEMPLATES = {
'title': '{hostname}: {app_name} update available on CT {vmid}',
'body': (
'{app_name} on CT {vmid} ({ct_name}) has a new version:\n'
' {installed} → {latest}\n'
'Registered via ProxMenux App Watch.'
' {installed} → {latest}'
),
'label': 'App update available (App Watch)',
'group': 'vm_ct',
'default_enabled': False,
'label': 'App update available',
# Grouped under `updates` (not `vm_ct`) so the user can toggle
# per-app upstream notifications independently from VM/CT
# lifecycle events (start/stop/reboot). Sitting alongside the
# other update templates keeps the Settings UI consistent and
# leaves the group ready for future OCI-image notifications
# that share the same "an upstream release is available"
# semantics.
'group': 'updates',
# Every other update template ships enabled by default; leaving
# this one off meant users who registered apps in the App tab
# never received the notification they explicitly asked for.
'default_enabled': True,
},
'vm_start': {
'title': '{hostname}: VM {vmname} ({vmid}) started',
@@ -1076,7 +1085,7 @@ TEMPLATES = {
'Kernel updates: {kernel_count}\n'
'Important packages:\n{important_list}'
),
'label': 'Updates available',
'label': 'Host package updates',
'group': 'updates',
'default_enabled': True,
},
@@ -1090,7 +1099,7 @@ TEMPLATES = {
'update_complete': {
'title': '{hostname}: System update completed',
'body': 'System packages have been successfully updated.\n{details}',
'label': 'Update completed',
'label': 'Host update completed',
'group': 'updates',
'default_enabled': False,
},