Periscope — Full changelog

For each release, see the entries below. The latest version is always at the top.
The current release notes also live in readme.txt under "== Changelog ==".

= 1.1.0 =
* New: Announcements. Post your own messages at the top of the widget, with an optional link, an expiry date, pinning and a choice of notice style (the plugin colour or the four standard WordPress ones). They have their own settings tab, and are ordered with pinned first, then the ones expiring soonest. Turns the widget into a channel to reach the people who log into the site
* New: Role visibility. Choose which user roles see the dashboard widget
* New: Feed health. Each feed shows its last check, how many items it returned and the age of the latest one, so a dead feed no longer disappears silently
* New: Configurable number of events and filtering by meetup or WordCamp
* New: Filters for developers: periscopio_feeds, periscopio_items, periscopio_settings, periscopio_events_args, periscopio_announcements and periscopio_show_widget
* New: uninstall.php removes every option, cached item and stored user location when the plugin is deleted
* Improved: The Refresh button now really refetches the feeds. It used to clear only the plugin cache while WordPress kept serving its own copy for up to 12 hours
* Improved: The cache duration setting now applies to the WordPress feed cache too, so a shorter duration really shows news sooner
* Improved: Events are cached per location, so users in different cities no longer see each other's events
* Improved: A failed request to the events API is reported as such instead of "No events found nearby", and is not retried on every dashboard load
* Improved: Accessibility of the widget and the settings page: field labels, descriptive remove buttons, status messages announced to screen readers, real buttons with focus handling in the location bar
* Improved: Minimum WordPress version is now 6.0, matching the functions the plugin actually uses
* Improved: Promotional banner now shows AyudaWP services
* Fix: Relative dates were off by the site timezone offset, so a post published ten minutes ago could show as "2 hours ago"
* Fix: Feed items with no date showed as "55 years ago" and items dated in the future showed as if already published
* Fix: A single network glitch could freeze an empty widget for up to 72 hours, because the empty result was cached as if it were valid
* Fix: Titles containing ampersands or quotes were double escaped and rendered as "&amp;"
* Fix: Removing every feed, or emptying the footer links, silently restored the default values on save
* Fix: The default events location is no longer hardcoded. Leave it empty and the API resolves it automatically
* Fix: The widget is no longer registered as an empty box when both sections are disabled
* Fix: Added a capability check and a throttle to the refresh handler, and a capability check to the location handler
* Fix: The "Settings saved" notice was shown twice, because the plugin printed its own on top of the one WordPress already prints

= 1.0.2 =
* Improved: Plugin rebranded to "Periscope" for better international naming

= 1.0.1 =
* Fix: Fixed promotional banner button alignment on WordPress 7.0 due to core CSS specificity changes
* Tested up to WordPress 7.0

= 1.0.0 =
* Initial release
* Custom dashboard widget with events and RSS aggregation
* Two-column settings page with meta box layout
* Feed management with URL validation
* Configurable footer links for events and news sections
* Option to hide default WordPress widget
* Configurable cache duration
* Default feeds included
* Promotional banner with plugin recommendations
