⚠️ Pre-release — this is a beta build for early testing. Report issues at the GitHub discussion page #36.
What's New
Self-Hosted Controller Support
- Cookie-based authentication for self-hosted UniFi Network Application (
POST /api/loginwithremember: true) - Automatic site
_idresolution — self-hosted requires the unique site ID, not the site name - Session re-authentication on 401/403 or
api.err.LoginRequiredresponses - Wizard controller type selector: "Cloud Gateway (UniFi OS)" vs "Local Gateway (Self-Hosted)"
- Saved credentials with encrypted storage (Fernet) — re-use on reconnect without re-entering
- Credentials excluded from config export for security
Firewall Gating
- Firewall management disabled for self-hosted controllers (
supports_firewall: false) - Info banner in Settings Firewall section explaining the limitation
- Setup wizard skips firewall step when connected to self-hosted
Diagnostics (Temporary)
- In-app Diagnostics tab in Settings for self-hosted API exploration
- Backend endpoint probes ~16 API endpoints and returns raw JSON
- Copy/Download JSON for sharing diagnostic data
Key Files Modified
receiver/unifi_api.py—_build_url(),_login_session(),_resolve_site_id(), re-auth logic, feature flag gatingreceiver/routes/unifi.py— Self-hosted credential handling in test/save endpointsui/src/components/UniFiConnectionForm.jsx— Controller type toggle, username/password fieldsui/src/components/SetupWizard.jsx— Firewall step gating for self-hostedui/src/components/SettingsFirewall.jsx—supports_firewallinfo banner