diff --git a/frontend/src/components/JobStatusPanel.jsx b/frontend/src/components/JobStatusPanel.jsx index 029f4cf..1cba0e1 100644 --- a/frontend/src/components/JobStatusPanel.jsx +++ b/frontend/src/components/JobStatusPanel.jsx @@ -2,14 +2,14 @@ export function JobStatusPanel({ job }) { const percent = Math.round(job?.progress?.percent || 0); return ( -
+

Job Status

{job?.status || 'idle'}
-
+
@@ -18,17 +18,17 @@ export function JobStatusPanel({ job }) { {job?.error ? : null}
-
+
- {job?.progress?.detail || job?.currentStep || 'No active job'} + {job?.progress?.detail || job?.currentStep || 'No active job'} {job ? `${percent}%` : '-'}
-
+          
             {(job?.logs || ['No logs yet.']).join('\n')}
           
diff --git a/frontend/src/components/RestoreModal.jsx b/frontend/src/components/RestoreModal.jsx index 274cda2..f019e7e 100644 --- a/frontend/src/components/RestoreModal.jsx +++ b/frontend/src/components/RestoreModal.jsx @@ -10,7 +10,7 @@ export function RestoreModal({ snapshot, vmName, confirmText, onCancel, onConfir
-

Destructive Restore

+

Destructive Disk Restore

- Warning: The VM will be stopped and the current disk will be irreversibly overwritten with - snapshot {snapshot.id.slice(0, 8)}. + Warning: The VM will be stopped and its current disk will be irreversibly overwritten with + snapshot {snapshot.id.slice(0, 8)}. Incus config, profiles, devices, and metadata are not restored by this action.

diff --git a/frontend/src/components/SnapshotTable.jsx b/frontend/src/components/SnapshotTable.jsx index 128390e..d7a26a9 100644 --- a/frontend/src/components/SnapshotTable.jsx +++ b/frontend/src/components/SnapshotTable.jsx @@ -1,6 +1,7 @@ import { Eye, RotateCcw } from 'lucide-react'; export function SnapshotTable({ onInspect, onRestore, snapshots }) { + const dataSnapshots = snapshots.filter((snapshot) => !(snapshot.tags || []).includes('metadata')); return (
@@ -17,7 +18,7 @@ export function SnapshotTable({ onInspect, onRestore, snapshots }) { - {snapshots.map((snapshot) => ( + {dataSnapshots.map((snapshot) => ( {snapshot.id.slice(0, 8)} {formatTime(snapshot.time)} @@ -38,13 +39,13 @@ export function SnapshotTable({ onInspect, onRestore, snapshots }) { type="button" > - Restore + Restore Disk
))} - {!snapshots.length ? ( + {!dataSnapshots.length ? ( No snapshots found. diff --git a/management/src/routes/proxy.js b/management/src/routes/proxy.js index 43c9fe0..44a07c7 100644 --- a/management/src/routes/proxy.js +++ b/management/src/routes/proxy.js @@ -57,7 +57,8 @@ proxyRouter.get('/jobs', async (_req, res) => { proxyRouter.get('/snapshots/:nodeId/:vmName', async (req, res, next) => { try { const node = requireNode(req.params.nodeId); - res.json(await agentRequest(node, `/snapshots/${encodeURIComponent(req.params.vmName)}`)); + const snapshots = await agentRequest(node, `/snapshots/${encodeURIComponent(req.params.vmName)}`); + res.json(snapshots.filter((snapshot) => !(snapshot.tags || []).includes('metadata'))); } catch (error) { next(error); }