= 1.6.0 [2026-08-05] =

* New: Force Logout — end any user's session from the User Sessions screen. The session is terminated in WordPress itself, so the next request from that browser is signed out.
* New: User Sessions is now backed by a dedicated session ledger, tracking each login separately with status (active, idle, expired, revoked), login time, last activity, duration, browser, device, and IP / country.
* New: User Sessions list table with per-user filtering, adjustable rows per page, pagination, and bulk delete.
* New: Sessions that already existed before Logify started tracking are imported automatically, so users who were logged in before the upgrade can be force-logged-out too.
* New: Stale sessions are retired automatically on an hourly schedule, so the list reflects who is actually online.
* New: Every forced logout is recorded in the activity log as its own event, with the administrator who performed it.
* New: Logins are tagged with the method used — a login through Magic Link or a Temporary Login link is labelled as such in the Activity Logs list.
* New (Pro): Track URL Shortify short links — created, updated, and deleted.
* Update: Outbound links now carry campaign parameters so link performance can be measured, and all upgrade and pricing links point to the Logify product page.
* Update: The email log table is renamed to use the plugin's standard table prefix. The rename runs automatically on update.
* Fix: Force Logout did nothing on sites where the session predated the feature — the imported session could never be matched back to the browser's login cookie.
* Fix: Forced logouts were recorded as an empty activity log entry, with no event type, action, or acting user.
* Fix: Session duration was calculated incorrectly for sessions that had ended.


= 1.5.3 [2026-07-27] =

* New: Before / After change view — the log details panel now shows the previous and updated value side by side for profile updates, WordPress settings, taxonomy terms, widget layouts, and status changes.
* New: Delete a single log entry directly from the Activity Logs row actions, with a confirmation prompt.
* New: Refresh button on the Dashboard to rebuild the cached statistics on demand instead of waiting for the cache to expire.
* New: Country lookups now run in the background after the log entry is saved, so geolocation never slows down the page that triggered the event.
* New: Multi-source country detection with automatic fallback — trusted CDN headers (opt-in), a local MaxMind / GeoIP2 database when installed, then ipapi.co with ipwho.is as backup, plus caching and a lookup lock to avoid repeat requests.
* New (Pro): Email Logs — every email WordPress sends is recorded with recipient, CC, BCC, Reply-To, subject, body, attachments, IP, and delivery status, including the error message when a send fails.
* New (Pro): User Sessions screen — active and expired sessions per user with login time, last activity, duration, browser, device, IP / country, and a per-user filter.
* Update: User profile updates now record exactly which fields changed (display name, email, roles) instead of a generic "profile updated" message.
* Update (Pro): Dashboard "Top IP Addresses" card is now "Top Countries", showing full country names.
* Update: Database schema is upgraded automatically to add the email log table on update.
* Update: Admin styles and scripts refreshed for the new screens.


= 1.1.1 =

* Update: Generate .POT file.

= 1.1.0 =

* New: Added more user activities to log.
* Update: WordPress 6.8.2 compatibility.
* Update: Generate .POT file.

= 1.0.11 =

* Update: WordPress 6.7.2 compatibility.

= 1.0.10 =

* Update: WordPress 6.7.1 compatibility.

= 1.0.9 =

* New: Add blueprints for live preview.

= 1.0.8 =

Fix: Integration issue.

= 1.0.7 =

* Update: Assets

= 1.0.6 =

* Fix: Include missing directory.

= 1.0.5 =

* Fix: DB query issue.

= 1.0.4 =

* Fix: Issues reported by Plugin Check plugin & Plugin Review team.

= 1.0.3 =

* Fix: Code sanitization.

= 1.0.2 =

* Code improvements.

= 1.0.1 =

* Code improvements based on the plugin check.

= 1.0.0 =

* Initial commit.