Backend:
- ListStorageJobs, ListSambaShares, ListNFSExports, ListUsers,
ListDirty, ListApplyLog, ListWatchedMounts: initialize with
make([]T, 0) instead of var x []T to avoid JSON null on empty.
Fixes "Cannot read properties of null" crash on /storage.
Frontend:
- Storage.tsx: defensive setJobs(res.jobs ?? []) to guard against
API returning null.
Tests:
- Add TestListStorageJobsEmptyReturnsSlice.
Version: 0.7.1
NFS exports: replace plain-text options string with typed booleans
(read_only, async, root_squash, subtree_check) + advanced JSON blob.
fsid is auto-generated via crypto/rand with collision retry and is
never user-settable. Breaking API change (options field removed).
Dashboard: filter disks to manual+samba+nfs sources only; no more
auto-discovery of all /proc/mounts entries.
Settings: new 'Puntos de montaje vigilados' card with add/remove
for manual mount points. AllowedRoots validation applied.
Version bump: 0.1.10 -> 0.2.0