R-67: the NAS share appears in FileBrowser (v0.160.0)

Network shares bind their share ROOT :rslave into FileBrowser — no
skeleton, no userdata scoping, nothing written toward the NAS. Gate is
the stub classifier (stub ⇒ excluded from mounts AND sources — an
exposed stub swallows uploads the real mount later shadows); idle autofs
is healthy and included. Drives byte-identical. Add/remove trigger the
debounced sync. Phase-0 probe on demo-hp: GO (in-container rslave access
wakes the idle trigger). Red-proofs A + B run.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UuFPHmHNrCJj1VhY6QdDMU
This commit is contained in:
2026-07-22 14:12:43 +02:00
parent 9610906916
commit 59cd260e57
7 changed files with 295 additions and 25 deletions
@@ -325,6 +325,9 @@ func (s *Server) handleNetStorageRemove(w http.ResponseWriter, r *http.Request)
s.logger.Printf("[WARN] [web] netstorage deregister %q: %v", where, err)
}
s.logger.Printf("[INFO] [web] network storage removed: %s", name)
// R-67: drop the share's FileBrowser source + mount line on the next sync (F2 change-detection
// forces the recreate).
go s.SyncFileBrowserMounts()
writeDiskJSON(w, http.StatusOK, true, "", map[string]any{"removed": true, "name": name})
}