Dashboard:
- Server IPs card showing all non-loopback IPv4 interfaces
- Restart buttons next to smbd/nfsd status dots (POST /api/service/<name>/restart)
- Active SMB connections table (smbstatus -b parsed in backend)
SMB edit modal:
- Read only toggle (writable vs read only in smb.conf)
- Recycle Bin toggle (vfs objects = recycle, files go to .recycle folder)
Docs: PLANNING.md phase 3.5, README recycle bin + read-only, CLAUDE.md JS overview
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Linux setquota/repquota require quota support on the underlying
filesystem. The target deployment is a Proxmox LXC on ZFS storage where
this is not available inside the container.
Removed: /api/quota endpoint, _quota_supported, _quota_usage,
_find_quota_fs, quotas.js, quota modal, dashboard quota table,
Quota button from share rows.
PLANNING.md updated: notes quota as out of scope with reason.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- _quota_supported() checks df -T /srv; returns false + reason for ZFS,
tmpfs, overlay — surfaces as quota_supported/quota_reason in dashboard API
- Dashboard quota section shows the reason string instead of an empty table
- Quota button hidden from share rows when quota_supported is false
- Prevents setquota errors for ZFS-backed Proxmox LXC containers
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- main.js: show live countdown "Updated HH:MM:SS — next in Xs" so the
30s auto-refresh is visually obvious instead of just a static timestamp
- app.py: rename _find_mountpoint → _find_quota_fs and fix the stale
call site that caused a NameError; function now returns mountpoint from
df, falling back to the path itself if df returns /
- README: add full quota setup section (fstab usrquota, quotacheck,
quotaon, verify with repquota); fix stale "127.0.0.1" bind note
(service already uses 0.0.0.0); update Auth section (sessions, not
Basic Auth)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>