AEO Bob Lite

Changelog

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

Plugin Website
Visit website

Author
Master22
Version:
1.5.76
Last Updated
March 15, 2026
Requires
WordPress 5.0
Tested Up To
WordPress 6.9.4
Requires PHP
7.4

Share Post

Join our newsletter.

Get insights into what’s happening at ChangelogWP right in your inbox. We don’t believe in spam.