v0.325.0: share + escrow limiters reserve first; family sessions as fingerprints; samba renames apply; path guard widened; gates in a worktree
gates / gates (push) Successful in 45s

R-1111 reserveAttempt is the one limiter body (share password, escrow re-auth, dashboard sign-in). R-1112
family.json holds fingerprints; old files are converted at load. R-1113 the household's pass reuses its
family session. R-1109 the samba compose carries the smb.conf hash. R-1110 TestNoBareDrivePathToPathHelpers.
R-1114 shared_scripts.py resolves the felhom.eu sibling from a worktree. Each red-proved.

Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
admin committed 2026-10-17 09:36:34 +02:00
1 parent 7d41c2973c
commit 94f44931dd
28 files changed
+945 -190

No files matched your search

+4 -2
View File
@@ -3427,11 +3427,13 @@ func (s *Server) appDetailsForPath(storagePath string) []StorageAppDetail {
}
// Try to get data size from the storage subdirectory. F-S2: the app's real appdata dir name is
// NOT always the stack name (paperless-ngx writes appdata/paperless) — sum the resolved dir(s).
// Here hddPath == storagePath (the drive's in-guest mount is the namespace root, Model A).
// storagePath is a DRIVE path; through the resolver (R-1110). On an enrolled drive that is the path
// itself (Model A), on the system-data fallback it adds felhom-data — the only correct root either way.
nsRoot := appbackup.NamespaceRootFor(storagePath, s.cfg.Paths.SystemDataPath)
var total int64
var any bool
for _, name := range s.stackMgr.ResolveAppDataDirNames(stack.Name) {
d := backup.AppDataDir(storagePath, name)
d := backup.AppDataDir(nsRoot, name)
if fi, err := os.Stat(d); err == nil && fi.IsDir() {
total += dirSizeBytesWalk(d)
any = true