GateLink Manager - Changelog

= 1.8.3 - 2024-10-14 =
* BUG FIX: Fixed SSO login URL generation to use query parameters instead of pretty URLs
* BUG FIX: Fixed Add Site table refresh - newly added sites now appear immediately in table
* COMPATIBILITY: SSO login now works with all WordPress permalink structures (Plain, Post Name, Custom)
* COMPATIBILITY: No longer requires rewrite rules or permalink flushing on client sites
* UX: Improved Add Site workflow - table updates automatically without page reload
* UX: Better visual feedback during AJAX operations
* SYNC: Version synchronized with Client plugin v1.8.3 for consistency
* TECHNICAL: Changed SSO URL format from /gatelink-sso-login/ to /?gatelink_login=1
* TECHNICAL: Enhanced AJAX response to include site row HTML for dynamic table insertion

= 1.8.2 =
* Removed trial support from Freemius configuration.

= 1.8.1 =
* FIX: Fixed Connect flow - proper nonce verification for Manager → Client REST handshake
* ENHANCEMENT: AJAX Add Site with automatic table refresh - no more page reloads
* COMPLIANCE: Enhanced nonce verification with dedicated connect_nonce for security
* UX: Improved error handling with detailed troubleshooting messages for connection failures


= 1.8.0 =
- SECURITY: Enhanced sanitization and validation of super-globals, notably $_SERVER['REMOTE_ADDR']
- STANDARDIZATION: Unified all prefixes to gate_manager_ for consistent naming across the plugin
- MIGRATION: Added automatic migration logic to map old option names and keys to new unified names
- COMPATIBILITY: Maintained backward compatibility with existing installations - no data loss
- VALIDATION: Verified nonces and capability checks across all AJAX endpoints and admin forms

= 1.7.9 =
- DASHBOARD: Unlocked dashboard cards for all users including free plan - no more premium gating
- UX: Added AJAX functionality for adding and deleting sites - no more page reloads
- PERFORMANCE: Site operations now use AJAX for smoother user experience
- UI: Enhanced responsiveness and workflow for site management
- ACCESSIBILITY: Improved user experience with instant feedback for site operations

= 1.7.8 =
- WORDPRESS.ORG READY: Complete WordPress.org compliance achieved - plugin ready for directory submission and approval
- COMPLIANCE: All WordPress.org requirements met including unique prefixes, no premium gating, proper enqueuing, and security standards
- SECURITY: Enhanced HMAC-SHA256 authentication with time-limited tokens, nonce protection, and HTTPS enforcement
- ERROR HANDLING: Enhanced HTTP 404 error messages with specific troubleshooting guidance for REST API connection failures
- TROUBLESHOOTING: Added detailed diagnostic suggestions for common trust establishment issues including permalink and plugin activation checks
- UX: Improved error messages provide actionable steps for resolving "Trust establishment failed" errors
- VERSION: Synchronized version number with all plugin components for consistency

= 1.6.2 =
- FIX: Immediate plan unlock after license activation - no more 20-30 minute delay
- Cache: Reduced TTL from 5 minutes to 60 seconds with fresh entitlement bypass mechanism
- API: New gatelink_refresh_entitlements AJAX endpoint for instant UI updates
- Events: Enhanced Freemius hooks with immediate cache clearing and success notices
- Cache: Scoped purges for LiteSpeed/NitroPack/Airlift, fresh flag bypasses cache
- UX: Success notices after activation, Support/Contact visibility updates immediately
- Version: Minor bump to 1.6.0 for behavior change (immediate unlock)

= 1.5.6 =
- Cache: Smart cache compatibility with LiteSpeed, NitroPack, Airlift - auto-purge only plugin-related URLs, no blanket site clearing
- Cache: Added no-cache headers for SSO endpoints, allowlisting guidance for CDN/security plugins
- Freemius: Menu logic refined - Free plans show Support only, Paid/Trial plans show Contact only (exactly one visible)
- Performance: Scoped cache invalidation after mutations (connect, verify, login URL, site changes, license actions)
- Logging: All cache operations logged for debugging, no PII stored
- Version: Synchronized Manager and Client to v1.5.6

= 1.5.5 =
- Fix: Freemius license activation/reset flow stabilized; eliminated SDK warnings after license reset; unified plan detection; enforced site limits (Free 3 / Pro 20 / Business unlimited); dynamic Support/Contact menus via Freemius.

= 1.5.3 =
- Menu: Consolidated Contact into a single Support page (plan-aware). Removed Diagnostics tab and all related code. Menu order: Dashboard → Client Sites → Settings → Support.
- Support: Single Support page with plan-aware content (Free: forum only; Professional: forum + Freemius contact; Business: forum + Freemius contact + priority support).
- Cleanup: Removed Diagnostics tab, functions, and AJAX endpoints. Added safe redirects for old Diagnostics URLs with dismissible notices.
- Compliance: Enhanced security with proper nonce validation, capability checks, and input sanitization.
- Version: Both Manager and Client plugins updated to v1.5.3 for consistency.

= 1.5.2 =
- Fix: Diagnostics tab fatal due to missing callback; consolidated Contact into a single plan-aware page (Free: forum only; Pro: forum + Freemius form; Business: forum + Freemius form + priority info); menu cleanup and UI polish; added safe guards and refresh in Diagnostics.
- Menu: Reordered plugin menu logically (Dashboard → Client Sites → Settings → Contact & Support)
- Contact: Implemented plan-aware Contact & Support page with different content for Free/Professional/Business plans
- Diagnostics: Added proper nonce-protected refresh functionality and defensive error handling
- Security: Enhanced nonce protection, capability checks, and input sanitization across admin pages
- UI: Applied consistent styling with primary color #E91919 for CTAs and improved accessibility

= 1.5.1 =
- FIX: Dashboard & Diagnostics fatal due to missing Freemius method; unified Freemius plan API; stronger SDK guards; Diagnostics stabilized; plan gating corrected so paid/trial plans are fully enabled.
- API: Unified stable Freemius API - get_display_plan_name(), get_plan_state(), is_paid(), is_trial(), get_trial_end(), get_license_last4(), refresh_cache()
- STABILITY: Added comprehensive error handling and safe fallbacks for all Freemius SDK calls
- DIAGNOSTICS: Enhanced with unified API self-check section showing plan state, trial info, and cache status
- PERFORMANCE: Force cache invalidation on Freemius plan/license change hooks for immediate UI updates
- COMPLIANCE: Verified Business/Professional plans are properly detected and not treated as Free

= 1.5.0 =
- NEW: Dedicated Dashboard page with consolidated metrics and quick actions
- NEW: Live AJAX search on Client Sites (search by label or URL, debounced, accessible)
- RESTRUCTURE: Client Sites now focuses on site management only; dashboard metrics moved to separate page
- ENHANCEMENT: Dashboard placed above Client Sites in admin menu for better UX
- ACCESSIBILITY: Search includes aria-live announcements and keyboard support (Enter/Escape)
- PERFORMANCE: Server-side search endpoint with proper pagination and caching
- SECURITY: Search functionality secured with nonces and capability checks

= 1.4.3 =
- Settings page restored and made available to all users (previously premium-only)
- Added tabbed Settings structure: General (placeholder), Reset, Uninstall/Data Cleanup
- Reset License functionality enhanced with improved UI and plan state refresh
- Reset Plugin Settings now requires typing "RESET" confirmation and redirects to onboarding
- Added Uninstall/Data Cleanup tab with toggle and detailed deletion information
- Updated color scheme to plugin primary color #E91919 for Reset tab and primary actions
- Enhanced JavaScript with proper modal confirmations instead of browser alerts
- All actions secured with nonces and capability checks for compliance
- Mobile responsive design with proper accessibility features

= 1.4.2 =
- Free plan: Dashboard now shows Logs card only; other stats hidden for free users
- Logs page added to menu for all plans  
- Contact Us page added with plan-specific behavior (WordPress.org forum for free, email support for premium)
- Server-side gating added for premium features with friendly locked state screens
- Settings page now restricted to premium plans
- Billing menu item hidden for free plan users
- Optional upgrade CTA added to free plan dashboard

= 1.0.0 =
- Initial release
- Client Sites CRUD (Add, Edit, Delete)
- Verify handshake saves client_id + shared token
- One-click login via time-limited HMAC link
- Tailwind-styled admin UI and basic logs
