v0.51.0: offsite-backup UI (felhom-pbs DR) + Model-A double-nest fix

- Backups page: whole-guest backup shown as real DR — target label "Biztonsági szerver –
  külön hardver (PBS)"; app-data "Távoli mentés" card now reflects the PBS offsite tier
  (guestBackupView.Offsite) instead of "nincs beállítva".
- Model-A double-nest fix: appbackup path helpers take a felhom-data NAMESPACE ROOT (no
  internal felhom-data join); backup.Manager.namespaceRoot/AppNamespaceRoot resolve
  HDD-vs-systemDataPath provenance so a drive-resident app's backups land single-nested
  (<drive>/backups/... on the guest = <drive>/felhom-data/backups/... on the host) instead
  of .../felhom-data/felhom-data/.... Writes, deletion (GetStackBackupData/RemoveStack/
  ProtectedHDDPaths), wipe-warning scan, and export updated coherently; legacy double-nest
  dirs kept protected. New appbackup test asserts no doubled segment.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-12 20:26:52 +02:00
parent 1e82eebc5e
commit 63484a0bd4
12 changed files with 221 additions and 58 deletions
+15 -8
View File
@@ -87,19 +87,26 @@ func humanizeBytes(b int64) string {
}
// --- function forwarders (paths) ---
//
// NOTE: the path helpers below take a felhom-data NAMESPACE ROOT, not a bare drive path. Use
// NamespaceRoot (or Manager.namespaceRoot / Manager.AppNamespaceRoot) to resolve the root first.
func PrimaryBackupPath(drivePath string) string {
return appbackup.PrimaryBackupPath(drivePath)
func NamespaceRoot(drivePath string, inGuestDrive bool) string {
return appbackup.NamespaceRoot(drivePath, inGuestDrive)
}
func AppDBDumpPath(drivePath, stackName string) string {
return appbackup.AppDBDumpPath(drivePath, stackName)
func PrimaryBackupPath(nsRoot string) string {
return appbackup.PrimaryBackupPath(nsRoot)
}
func AppVolumeDumpPath(drivePath, stackName string) string {
return appbackup.AppVolumeDumpPath(drivePath, stackName)
func AppDBDumpPath(nsRoot, stackName string) string {
return appbackup.AppDBDumpPath(nsRoot, stackName)
}
func AppDataDir(drivePath, stackName string) string {
return appbackup.AppDataDir(drivePath, stackName)
func AppVolumeDumpPath(nsRoot, stackName string) string {
return appbackup.AppVolumeDumpPath(nsRoot, stackName)
}
func AppDataDir(nsRoot, stackName string) string {
return appbackup.AppDataDir(nsRoot, stackName)
}