ARCHITECTURE ============ Backend: FastAPI + uvicorn (port 8000) - JWT authentication with PAM system users - ZFS CLI wrapper with caching (30-60s TTL) - WebSocket pool status broadcaster (30s interval) - Services: auth, zfs_runner, file_manager, shares, identities, system_info - Routers: pools, datasets, snapshots, shares, identities, navigator, system Frontend: Next.js 15 + TypeScript (static export) - Incremental Static Regeneration (ISR) for weak hardware - Type-safe API client (lib/api.ts) - Dark mode + custom Tailwind theme - Pages: Dashboard, Login, Snapshots, Datasets, Shares, etc. DEPLOYMENT ========== Test Target: 192.168.1.179:8090 (Debian LXC) Production: 10.66.120.3:9090 (Raspberry Pi 4GB ARM64) Updater: Automated Gitea-based deployment (update-test.sh, update-pi.sh) FEATURES COMPLETED ================== Phase 3a: Dashboard Quick Stats (System, CPU, Memory, Storage) - Real-time stats with color-coded progress bars - Responsive grid layout (mobile: 1, tablet: 2, desktop: 4 columns) - ISR-optimized for fast loads on weak hardware REBRANDING ========== Renamed throughout: - Project: 'ZFS Manager' → 'ZMB Webui' - Services: 'zfs-manager' → 'zmb-webui' - Systemd units: zfs-manager-backend → zmb-webui-backend - Configuration files and documentation Co-Authored-By: Patrick <patrick@perlbach24.de>
4.5 KiB
Bug Fixes – April 18, 2026
Summary
✅ All reported bugs fixed and verified
Bug #1: Recent Logins Missing Usernames
Reported: "Recent Logins hat keine user name drin!"
Root Cause:
- Frontend was looking for
login.userfield - Backend API returns
login.usernamefield (different name)
Fix Applied:
- Updated
frontend/app/identities/page.tsxline 559 - Changed to:
(login as any).username || (login as any).user - Added fallback for compatibility
Verification:
Backend Response: {"username":"administrator","login_str":"Wed Apr 15 22:45 2026"}
Frontend Now Shows: → administrator (Wed Apr 15 22:45 2026)
Status: ✅ FIXED
Bug #2: File Properties Owner – No Name Autocomplete
Reported: "File Properties Owner macht keine vervollständigung der namen"
Root Cause:
- Owner input field was plain
<input type="text"> - No autocomplete or data suggestions
- Users had to type UID numbers or guess names
Fix Applied:
-
Added state variables to track available users/groups:
const [usernames, setUsernames] = useState<string[]>([]) const [groupnames, setGroupnames] = useState<string[]>([]) -
Added
loadUsersAndGroups()function to fetch from API:- Calls
/api/identities/userson component mount - Calls
/api/identities/groupson component mount - Extracts username and groupname arrays
- Calls
-
Updated Owner input field:
<input list="owners-list" ... /> <datalist id="owners-list"> {usernames.map(name => <option key={name} value={name} />)} </datalist> -
Added same for Group field
Verification:
Available Users: root, administrator, testuser, wsdd2, nobody
Available Groups: root, sudo, administrator, tape, ...
Owner Dropdown: ✅ NOW shows autocomplete
Group Dropdown: ✅ NOW shows autocomplete
Status: ✅ FIXED
Bug #3: File Properties Group – Same Autocomplete Issue
Reported: Same as #2, applies to both Owner and Group
Status: ✅ FIXED (both handled in same code change)
Positive Feedback
Comment: "Samba Users gefällt mir so gut!"
Response: ✅ Feature Noted and Appreciated
- Samba Users feature is working well
- Provides easy visibility into Samba-configured users
- Allows password management for Samba accounts
- Consider expanding with more Samba-specific features in Phase 3
Files Modified
-
frontend/app/identities/page.tsx- Fixed login history username display
- Lines 556-567: Updated field mapping
-
frontend/app/files/page.tsx- Added user/group loading on mount
- Added state variables for usernames/groupnames
- Updated Owner input with datalist
- Updated Group input with datalist
- Lines 91-93: New state variables
- Lines 113-131: New
loadUsersAndGroups()function - Lines 1005-1033: Updated input fields with autocomplete
Build & Deployment
Frontend Build: ✅ SUCCESS
- Identities page: 4.49 kB (no change)
- Files page: 8 kB → 8.17 kB (minimal increase)
- Total bundle: 130 kB
Deployment: ✅ SUCCESS
- All files copied to 192.168.1.179:/opt/zmb-webui/backend/static/
Testing Results
Login History
✅ Field Names Match: username (was user)
✅ Data Displays: "administrator" visible
✅ Time Format: "Wed Apr 15 22:45 2026" displays correctly
File Properties Autocomplete
✅ Owner Field: Dropdown shows all 5 users
✅ Group Field: Dropdown shows available groups
✅ Type-as-you-filter: Native HTML5 datalist filtering
✅ Smooth UX: No lag, built-in browser behavior
How to Use New Features
Login History - View Users
- Go to Identities → History
- See login records with usernames displayed
File Properties - Owner/Group Autocomplete
- Go to Files → Select File → Edit Mode
- Click Owner field → dropdown appears with suggestions
- Start typing → browser filters suggestions
- Click to select → sets owner/group automatically
Browser Compatibility
HTML5 <datalist> element supported in:
- ✅ Chrome/Edge 17+
- ✅ Firefox 4+
- ✅ Safari 12.1+
- ✅ All modern browsers
Fallback for older browsers: manual text input still works
Next Phase Improvements
Consider for Phase 3:
- Add UID/GID fallback display in autocomplete
- Add search/filter UI above autocomplete
- Add "new user" quick-create option in dropdown
- Add recent users history cache (browser localStorage)
All bugs fixed, tested, and ready for production.