diff --git a/frontend-modern/src/components/Backups/UnifiedBackups.tsx b/frontend-modern/src/components/Backups/UnifiedBackups.tsx index b82807bcbc..898642bd28 100644 --- a/frontend-modern/src/components/Backups/UnifiedBackups.tsx +++ b/frontend-modern/src/components/Backups/UnifiedBackups.tsx @@ -56,6 +56,28 @@ const UnifiedBackups: Component = () => { const pbsBackupsState = createMemo(() => state.backups?.pbs ?? state.pbsBackups); const pmgBackupsState = createMemo(() => state.backups?.pmg ?? state.pmgBackups); const [searchTerm, setSearchTerm] = createSignal(''); + + // PBS enhancement banner: Check if user has PBS storage via PVE passthrough but no direct PBS connection + const [pbsBannerDismissed, setPbsBannerDismissed] = createLocalStorageBooleanSignal( + 'pulse.pbsEnhancementBannerDismissed', + false + ); + + // Detect PBS storage accessed via PVE passthrough (storage.type === 'pbs') + const hasPBSViaPassthrough = createMemo(() => { + const storageList = state.storage || []; + return storageList.some((s) => s.type === 'pbs'); + }); + + // Check if user has direct PBS instances configured + const hasDirectPBS = createMemo(() => { + return (state.pbs || []).length > 0; + }); + + // Show banner if: PBS via passthrough exists, no direct PBS, and not dismissed + const showPBSEnhancementBanner = createMemo(() => { + return hasPBSViaPassthrough() && !hasDirectPBS() && !pbsBannerDismissed(); + }); const [selectedNode, setSelectedNode] = createSignal(null); const [typeFilter, setTypeFilter] = createSignal<'all' | FilterableGuestType>('all'); const [backupTypeFilter, setBackupTypeFilter] = createSignal<'all' | BackupType>('all'); @@ -1143,6 +1165,69 @@ const UnifiedBackups: Component = () => { searchTerm={searchTerm()} /> + {/* PBS Enhancement Banner - shown when PBS storage exists via PVE but no direct PBS connection */} + +
+ +
+
+ + + + +
+
+

+ Get more from your PBS backups +

+

+ You're viewing PBS backups through your PVE connection. Add your PBS server directly to unlock: +

+
    +
  • + + + + Deduplication factor and storage efficiency stats +
  • +
  • + + + + PBS server health monitoring (CPU, memory, uptime) +
  • +
  • + + + + Sync, verify, prune, and GC job status +
  • +
+ +
+
+
+
+ {/* Removed old PBS table */} 0}> @@ -2152,6 +2237,15 @@ const UnifiedBackups: Component = () => { ? 'PVE' : 'PBS'} + {/* Data source indicator for PBS via passthrough */} + + + via PVE + + { {agent.lastSeen ? formatRelativeTime(agent.lastSeen) : '—'} - +
+ + +
)}