What's New
Settings Redesign
- Sidebar navigation — Settings page restructured into three sections: WAN & Networks, Firewall, and Data & Backups
- Gateway device image — Shows your UniFi gateway model image alongside connection status
- Extracted settings into dedicated components for cleaner architecture
Configurable Retention
- Retention slider — Adjust log retention from 60 to 365 days via Settings > Data & Backups
- DNS retention — Separate configurable retention for DNS logs (default 10 days)
- Environment variables —
RETENTION_DAYSandDNS_RETENTION_DAYSfor Docker-level configuration - Estimated log counts displayed per retention tier
Config Backup & Restore
- Export all settings (WAN, network labels, UniFi connection, retention) as a downloadable JSON file
- Import configuration on the same or a new instance with preview and confirmation flow
- Option to include or exclude UniFi API key from exports
Mobile Responsive
- Collapsible filter panel on mobile with active filter count badge
- Hidden stats bar (AbuseIPDB, MaxMind, logs count) on small screens
- Full-width log table — removed truncation on mobile so cells aren't cut off
Dashboard & Filters
- Extended time ranges — Dashboard and Log Stream now support 90d, 180d, and 365d ranges
- Dynamic range filtering — Time range options auto-adjust based on available data and retention setting
- Shared utility — Extracted
filterVisibleRangesto eliminate duplicated logic
Bug Fixes
- Fixed NAT direction icon rendering as emoji with gray background on iOS
- Fixed zone matrix horizontal scrollbar in Settings (container width restored to
max-w-6xl) - Fixed time range filter gap when
maxFilterDaysfell between available range options - Fixed 60-day stats bucketing (uses
daybucket instead of unsupported value) - Improved schema migration safety with
IF NOT EXISTSfor indexes
Key Files Modified
ui/src/components/SettingsOverlay.jsx— Refactored into sidebar layout with three sectionsui/src/components/SettingsDataBackups.jsx— New component for retention slider and backup/restoreui/src/components/SettingsWanNetworks.jsx— New component for WAN and network displayui/src/components/FilterBar.jsx— Collapsible mobile filters, dynamic time rangesui/src/components/Dashboard.jsx— Extended time ranges with dynamic filteringreceiver/routes/setup.py— Config export/import and retention endpointsreceiver/routes/stats.py— Extended bucket map for longer time rangesreceiver/db.py— Configurable retention support in cleanup task