Skip to content

v2.0.0

Latest

Choose a tag to compare

@tommcfarlin tommcfarlin released this 24 Mar 17:55
51ae35e

Changed

  • Refactored plugin into OOP architecture with PSR-4 autoloading under TomMcFarlin\MMN namespace
  • Mute preference is now stored per-user in wp_usermeta instead of a single site-wide wp_options row
  • Notifications are now hidden server-side via inline CSS in admin_head, eliminating flicker on page load
  • Toggle button uses POST instead of GET for the AJAX request
  • Admin bar button now shows state-aware label ("Mute Notifications" / "Unmute Notifications") with dashicon
  • Hidden elements use display: none instead of visibility: hidden to eliminate layout gaps
  • JavaScript loads in the footer and is browser-cacheable with a static version string
  • Removed the on-page-load AJAX call; mute state is passed to JS via wp_localize_script

Added

  • Self-hosted updater via GitHub Releases using the update_plugins_github.com filter (WP 5.8+)
  • Per-user mute preference so each administrator has an independent toggle state
  • ARIA attributes, keyboard navigation, and screen reader support
  • Visual error feedback when AJAX toggle fails
  • Capability check (update_plugins) on AJAX handler and admin bar button
  • Nonce verification via check_ajax_referer()
  • uninstall.php for proper cleanup on plugin deletion
  • Unit tests with PHPUnit and Brain Monkey (31 tests, 40 assertions)
  • WPCS compliance

Removed

  • Deactivation hook (replaced by uninstall.php)
  • Second AJAX endpoint no longer needed
  • Dead URLSearchParams code in JavaScript

Security

  • All AJAX handlers now verify current_user_can( 'update_plugins' )
  • Admin bar toggle and assets only render for authorized users