AEO Bob Lite - changelog of older versions (newer versions are in readme.txt) = 1.5.77 - 2026-07-28 = * Fixed: Applied suggestions now update the AEO and SEO scores — scores are recalculated and saved after a one-click apply instead of keeping the pre-apply values * Fixed: Re-Score in the optimizer panel read the wrong field in the analyze response and always showed 0 * Fixed: Elementor pages scored near zero because the scorers only read post_content — they now read the page's Elementor content * Fixed: Selecting only a title suggestion on an Elementor page no longer fails with a generic error, and unsupported selections now show the Elementor notice instead = 1.5.76 - 2026-03-03 = * Documentation: Added readme disclosure for Anthropic, Google Gemini, Perplexity, and Cohere APIs (code paths exist in shared SEO analyzer; Lite uses OpenAI only). Each service now has Terms and Privacy Policy links per WP.org external-service requirements. = 1.5.75 - 2026-03-03 = * Compliance: Removed all trialware/locked-feature code and copy per WP.org Guideline 5 * Removed: Elementor panel limit counter, preview mode UI, remainingOptimizations, isLimitReached * Removed: Optimizer stubs (has_reached_post_limit, get_optimized_count, mark_post_optimized, is_post_optimized) * Removed: Preview-mode i18n strings (previewModeActive, previewModeDesc, upgradeUnlimited, etc.) * Fixed: Upgrade page tagline no longer implies Lite lacks one-click apply * Compliance: Removed development markdown files from plugin root (DEVELOPMENT-NOTES-LITE, LITE-TO-PRO-IMPROVEMENTS, LITE-FEATURES-TO-PORT, REVIEWER_REPLY, OWNERSHIP, DEV_NOTES) = 1.5.74 - 2026-02-26 = * Compliance: Removed 3-post one-click apply limit — all AI features fully available per WP.org Guideline 5 * Compliance: Removed Anthropic, Gemini, Perplexity, and Cohere from External Services disclosure (those providers are only in the separate AEO Bob Pro plugin; Lite only uses OpenAI) * Accuracy: Corrected Lite vs Pro feature comparison table — AI suggestions and one-click apply now correctly shown as available in Lite * Accuracy: Updated plugin description and FAQ to accurately reflect Lite capabilities * Accuracy: Author URI updated to reflect plugin ownership = 1.5.73 - 2026-02-09 = * Enhancement: Synced enhanced scoring algorithm from Pro v2.3.09 * Enhancement: AEO score now uses gradient FAQ detection (4 methods instead of binary) * Enhancement: SEO score now uses gradient scoring for all factors (more achievable 90+ scores) * Enhancement: Question headings (H2-H4 ending with ?) now detected for AEO scoring * Enhancement: Multiple schema meta keys checked (supports Yoast, AIOSEO, Rank Math) * Enhancement: Better internal link detection (absolute, relative, and simple relative URLs) * Enhancement: More answer-focused content patterns detected (5 patterns vs 3) * Technical: Word count scoring now has 6-7 tiers instead of 3-4 = 1.5.72 - 2026-02-02 = * Security: Enhanced inline documentation explaining security model in Elementor integration * Security: Improved JSON handling comments explaining why decode happens before sanitization * Compliance: Clearer security documentation for WordPress.org review * Technical: No logic changes - documentation and comments only = 1.5.71 - 2026-02-02 = * Security: Removed all $_GET['post'] usage - now uses global $post for safe post ID retrieval * Compliance: Refined External Services section with specific API endpoints per wp.org requirements * Compliance: Documented exact URLs for Anthropic, Perplexity, Cohere, and Google Gemini APIs * Packaging: Removed markdown files from plugin distribution (dev docs kept in repo only) * Technical: Elementor and admin enqueue now use global $post instead of URL parameters = 1.5.70 - 2025-02-02 = * Security: Added permission validation in Elementor integration (current_user_can check) * Security: Improved JSON input sanitization in AJAX handlers with strict validation * Compliance: Comprehensive External Services documentation for WordPress.org reviewer * Compliance: Documented all AI providers (OpenAI, Anthropic, Google Gemini, Perplexity, Cohere) * Compliance: Added data transmission disclosure per WordPress.org guidelines = 1.5.69 - 2025-01-09 = * Fixed: CRITICAL - Sidebar scores now display immediately on first ANALYZE click * Fixed: Added normalizeScores() helper to handle both API response shapes * Fixed: renderSidebarState() now explicitly called after successful analysis * Fixed: ANALYZE button now correctly becomes OPTIMIZE button without requiring post save * Technical: Surgical fix for score display - no changes to other functionality = 1.5.68 - 2025-01-09 = * Fixed: CRITICAL - jQuery closure scope issue preventing ALL event handlers from executing * Fixed: Re-capture window.jQuery at the START of every function that uses jQuery * Fixed: handleAnalyze(), handleReanalyze(), handleRescore() now use fresh jQuery instance * Fixed: All helper functions (updateSidebarScores, getCurrentScores, etc.) now re-capture jQuery * Technical: Event handlers were binding successfully but executing with stale jQuery reference * Technical: Functions inherited closure-captured $ which became orphaned after WordPress jQuery Migrate replaced global instance = 1.5.67 - 2025-01-09 = * Fixed: CRITICAL - Event handlers not binding due to jQuery instance mismatch * Fixed: Re-capture window.jQuery inside bindEvents() to ensure correct instance * Fixed: Added defensive checks to verify jQuery availability before binding * Added: Console logging to trace init() and bindEvents() execution * Added: "Events bound successfully" confirmation log * Technical: WordPress jQuery Migrate was replacing jQuery after initialization = 1.5.66 - 2025-01-08 = * Fixed: CRITICAL - Active jQuery polling to handle async/delayed jQuery loading * Fixed: Script now waits up to 5 seconds for jQuery to become available * Fixed: Handles WordPress configurations where jQuery loads after our script * Added: 50ms polling interval to detect when jQuery becomes available * Added: Console logging showing when jQuery is found and initialization begins * Technical: Completely rewrote initialization to actively wait for jQuery = 1.5.65 - 2025-01-08 = * Fixed: CRITICAL - jQuery initialization timing issue preventing event handlers * Fixed: Added proper jQuery ready wrapper to ensure $ is available * Fixed: Event handlers now bind correctly on all WordPress configurations * Added: jQuery availability checks before initialization * Added: Error logging if jQuery not available * Technical: Wrapped initialization in both document.ready and jQuery ready check = 1.5.64 - 2025-01-08 = * Fixed: CRITICAL - Reverted to pre-v1.5.56 working code for sidebar updates * Fixed: Sidebar scores now appear immediately on first ANALYZE (restored v1.5.50 behavior) * Fixed: ANALYZE button now transitions to OPTIMIZE correctly on first click * Removed: Complex Promise-based approach that caused silent failures * Restored: Simple, reliable direct DOM updates with slideDown animation * Technical: Reverted to proven working code while keeping error logging = 1.5.63 - 2025-01-08 = * Fixed: Critical syntax error preventing sidebar UI updates after ANALYZE * Fixed: Added .catch() and .finally() to Promise chain for proper error handling * Fixed: Button state now always resets even if Promise fails * Added: Comprehensive console logging to trace execution flow * Added: Fallback update mechanism if waitForSidebarElements() fails * Technical: Promise chain now properly handles all success/error/completion cases = 1.5.62 - 2025-01-08 = * Fixed: Sidebar scores now appear immediately on first ANALYZE click (DOM timing fix) * Fixed: ANALYZE button now transitions to OPTIMIZE button reliably on initial load * Added: waitForSidebarElements() utility to ensure DOM readiness before updates * Improved: More defensive visibility forcing with .css('display', 'block') * Technical: Prevents race condition where AJAX response returns before metabox fully renders = 1.5.61 - 2025-01-08 = * Fixed: Sidebar score visibility now reliably updates on first ANALYZE click (selector scoping fix) * Fixed: Score container visibility selectors now properly scoped to .aeo-bob-scores-sidebar * Improved: Consistent jQuery selector scoping prevents DOM targeting issues * Technical: All sidebar visibility toggles now use scoped selectors for reliability = 1.5.60 - 2025-01-07 = * Fixed: Sidebar now displays existing scores immediately on initial page load (no more "No scores yet" bug) * Fixed: Sidebar button state (ANALYZE vs OPTIMIZE) now updates correctly when scores exist * Fixed: Unified state management ensures consistent UI regardless of load timing * Added: renderSidebarState() function for reliable state transitions * Improved: Better initialization timing with score container check * Improved: All state transitions now consistent and reliable = 1.5.59 - 2025-01-07 = * Fixed: Sidebar scores now display immediately after first ANALYZE click (no post save required) * Fixed: Analyze button properly transitions to OPTIMIZE button after first analysis * Fixed: FAQ copy instructions no longer included when selecting FAQ content * Improved: Better score container visibility management (removed conflicting show/slideDown calls) * Enhanced: Added defensive element checks before jQuery operations * Enhanced: Added conditional debug logging (WP_DEBUG only) = 1.5.58 - 2025-01-07 = * Improved: FAQ suggestions in manual mode now display as editor-ready content (no HTML) * Removed: "Copy HTML" buttons for cleaner FAQ display * Enhanced: FAQ blocks now show Q:/A: format ready for direct copy/paste into Visual editor * UX: Clear visual indication that FAQ content can be selected and copied = 1.5.57 - 2025-01-07 = * Fixed: Analyze failures now fallback to displaying last saved scores (no blank screen on error) * Improved: FAQ suggestions now formatted as clean h3/p HTML blocks with copy button * Improved: More robust Gutenberg editor content detection with error handling * UX: When analysis fails, UI shows "Showing last saved scores" message = 1.5.56 - 2025-01-07 = * Fixed: Scores now display immediately on initial page load (no need to save post first) * Fixed: Analyze button works reliably on first click (added post ID validation and fallback) * Fixed: Inline error messages now display in metabox (not just console/alert) * Improved: Robust initialization with retry logic (handles timing issues in WordPress admin) * Added: New AJAX endpoint to fetch existing scores without re-analyzing = 1.5.55 - 2025-01-07 = * Fixed: Score selectors now use data attributes consistently (no more position-based .eq() selectors) * Fixed: getCurrentScores() now correctly reads from sidebar, not optimization panel * Fixed: Optimization panel scores now update immediately after ANALYZE (not just on page reload) * Fixed: Both sidebar and panel scores stay perfectly in sync * Improved: More specific DOM selectors prevent selector conflicts between sidebar and panel = 1.5.54 - 2025-01-06 = * Fixed: Sidebar meta box now always displays saved scores on page load * Improved: Optimization panel score styling with high-contrast white text on gradient * Enhanced: JavaScript score update selectors for more reliable DOM targeting * Accessibility: Improved readability of score displays throughout the plugin = 1.5.53 - 2025-01-06 = * Removed: Debug logging (error_log, var_export) for WordPress.org compliance * Improved: Production-clean code without development functions * Maintained: All ANALYZE functionality and error handling intact = 1.5.52 - 2025-01-06 = * Fixed: Enhanced AJAX error handling with detailed diagnostics * Fixed: Added WP_DEBUG-aware logging for troubleshooting ANALYZE issues * Fixed: Improved error messages with HTTP status codes and actionable guidance * Fixed: Explicitly defined ajaxUrl to prevent undefined variable issues * Improved: Better visibility when analysis fails (console logging + user-friendly alerts) = 1.5.51 - 2025-01-06 = * Packaging: Removed all hidden and OS files from distribution (.DS_Store, dotfiles) * Packaging: Distribution ZIP now contains ONLY WordPress.org-approved files * Improved: Clean package with comprehensive file exclusions for WP.org compliance = 1.5.50 - 2025-01-06 = * Fixed: Sidebar scores now display correctly after first ANALYZE (no more blank scores) * Fixed: Score DOM elements always rendered to prevent JavaScript update failures * Fixed: Local analysis works independently of optimization credits * Improved: More reliable first-time user experience = 1.5.49 - 2025-01-05 = * Added: DEVELOPMENT-NOTES.md for contributor guidance and architectural documentation * Added: .gitignore for repository hygiene * Changed: Cleaned up readme.txt changelog for clarity * Docs: Established clean baseline for WordPress.org submission = 1.5.48 - 2025-01-04 = * Fixed: All WordPress.org Plugin Check issues resolved * Fixed: Added translator comments for i18n placeholders * Fixed: Ordered placeholders for proper translation * Fixed: PHPCS ignores for database queries with proper justification * Fixed: Variable prefix compliance = 1.5.47 - 2025-12-11 = * Security: WordPress.org Plugin Check compliance * Compatibility: Tested up to WordPress 6.9 * Refactored: Database queries use inline $wpdb->prepare() * Security: Table names escaped with esc_sql() = 1.5.26 - 2025-12-05 = * Added: Elementor integration with native sidebar panel * Fixed: Script loading moved to admin_enqueue_scripts * Fixed: Optimization panel JavaScript reliability = 1.5.21 - 2025-12-05 = * Security: Fixed input sanitization * Compliance: All WordPress.org security issues resolved = 1.0.0 - 2024-11-01 = * Initial release of AEO Bob Lite