You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Added generic cache invalidation for configuration models. Models can declare cache dependencies using CacheDependency, and the new print\_cache\_dependencies management command can be used to inspect the dependency graph.
Added WHOIS lookup and geographic location estimation for devices, including WHOIS details in the admin UI, automatic refresh of stale WHOIS data, estimated-location notifications and warnings, and admin and API filters for estimated locations.
Allowed deleting organizations containing active devices while displaying a warning about the active devices that will be affected.
Enforced the deactivated device state across OpenWISP Controller. Deactivated devices no longer receive configuration, management, remote command, registration, or automatic template operations, while necessary cleanup and security operations remain enabled.
Replaced the third-party jsonfield implementation with Django's built-in JSONField#1061, including migration handling for databases upgraded from older OpenWISP Controller versions.
Changed VPN synchronization errors and recovery events to use generic\_message notifications #1049.
Improved command status visibility in the admin interface by highlighting statuses with different colors #812.