ByTheWeb GEO - Full Changelog

= 1.3.1 =
* Improved Help & Guides navigation across the plugin.
* Updated the LocalBusiness Schema business types reference to the new Help Center documentation.
* Updated SEO Title validity checks to 10-100 characters.
* Updated Meta Description validity checks to 50-200 characters.
* Improved SEO Title and Meta Description feedback and character counters across the plugin.
* Removed misleading character counters from dynamic SEO templates.
* Fixed character counters not refreshing after AI-generated SEO metadata was inserted from the Dashboard.

= 1.3.0 =
* Added compatibility with Rank Math SEO.
* Prevented duplicate SEO titles, meta descriptions, canonical tags, robots directives, sitemaps, breadcrumbs, and structured data when Rank Math is active.
* Added Rank Math Schema graph integration for FAQ, Short Answer, AI Summary, Organization, Person, LocalBusiness, Service, Article, sameAs, and ContactPoint data.
* Added provider-aware Schema enrichment for Yoast SEO and Rank Math while preserving each plugin's existing core Schema graph and entity IDs.
* Updated post and taxonomy SEO interfaces to respect the active external SEO plugin while keeping ByTheWeb GEO features available.
* Improved SEO provider switching so rewrite rules are refreshed automatically when Yoast SEO or Rank Math is activated or deactivated, without requiring a manual Permalinks save.
* Improved LLM indexability handling so Yoast SEO and Rank Math remain responsible for determining indexability when either plugin is active.
* Added detection and admin warnings when Yoast SEO or Rank Math is also configured to generate llms.txt, helping prevent competing LLM file generators.

* Fixed Breadcrumb Schema handling when Yoast SEO is active, allowing Yoast to remain responsible for its own BreadcrumbList output.
* Improved Organization and Person primary entity handling across standalone, Yoast SEO, and Rank Math configurations.
* Improved Article and BlogPosting enrichment so Short Answers and AI Summaries enhance existing provider Schema without creating competing Article entities.
* Improved Schema relationships for publisher, provider, parentOrganization, ContactPoint, LocalBusiness locations, and Services.

* Redesigned the Entity & Schema settings with dedicated configuration for Primary Entity, Business Locations, Customer Support Contact, Services, and Article Schema.
* Added support for multiple LocalBusiness locations.
* Added support for LocalBusiness plus 130 additional supported Schema.org LocalBusiness descendant types.
* Added support for multiple Service entities.
* Added dedicated Customer Support ContactPoint fields instead of relying only on primary business contact details.
* Redesigned the Entity & Schema admin interface with consistent cards, modal configuration screens, provider-specific guidance, repeatable Locations and Services, and searchable Business Type selection.

* Improved sitemap counting and pagination so noindex content and password-protected posts are excluded before sitemap pages are generated.
* Added sitemap eligibility summaries in the admin interface to show included URL counts for selected post types and taxonomies.
* Improved standalone post and taxonomy Indexing & Discovery controls with explicit per-item Index/Noindex overrides, override counts, and filtered admin views.

* Expanded `llms.txt` and `llms-full.txt` generation to process content in batches instead of stopping after 50 items per content type.
* Added separate configurable character limits for `llms.txt` and `llms-full.txt`, with defaults of 50,000 and 200,000 characters.
* Updated LLM file robots headers to respect the global WordPress search engine visibility setting.
* Added standalone per-post and per-taxonomy LLM exclusion controls, allowing individual items to be excluded from both `llms.txt` and `llms-full.txt` without affecting search engine indexing or `sitemap.xml`.
* Added LLM eligibility summaries in the admin interface for selected post types and taxonomies.
* Improved LLM eligibility reporting to use the same indexability rules as the generated LLM files.

* Improved dashboard issue counting so each content item requiring attention is counted once, together with images that require optimization.
* Added a clear confirmation disclosure before post or page content is sent to ByTheWeb Cloud for AI generation.

* Removed automatic plugin activation and deactivation analytics requests.
* Removed the Yoast SEO migration tools, related AJAX endpoints, and the "Migrate to ByTheWeb" tab.
* Removed the legacy scheduled Needs Attention score recalculation cron and replaced it with direct issue counting.

= 1.2.5 =
* Added the new bytheweb branding.

= 1.2.4 =
* Added frontend meta indicators for ByTheWeb GEO and active ByTheWeb AI plugin detection.
* Added Robots.txt AI Policy Manager with selectable crawler blocking for major AI and search user agents, while keeping all bots allowed by default.
* Added automatic ByTheWeb GEO sitemap reference to the virtual robots.txt output when Yoast SEO is not active.
* Added llms-full.txt generation for a fuller Markdown version of public, indexable site content.
* Added configurable llms-full.txt character limit to prevent oversized responses on large sites.
* Extended llms.txt settings so selected post types and taxonomies apply to both llms.txt and llms-full.txt.
* Added Short Answer, AI Summary, cleaned content, last modified date, and Elementor text extraction support for llms-full.txt.
* Improved admin notices for robots.txt compatibility with physical robots.txt files, cache plugins, security plugins, firewalls, and server-level rules.

= 1.2.3 =
* Improved llms.txt generation with cleaner multilingual output, better content filtering, and exclusion of noindex or password-protected content.
* Added a one-time rewrite rules refresh after plugin updates to improve sitemap.xml availability.
* Enhancement: Fully synchronized the plugin's indexing rules with the global WordPress "Discourage search engines" setting to prevent indexing conflicts. The global WordPress setting will now strictly override any individual page/taxonomy index settings.
* UI/UX: Added a prominent alert notice in the SEO Settings dashboard when the site is globally blocked from search engines.
* Tweak: Added a helpful UX hint under the Physical Address field to assist users with GPS coordinate fetching without compromising LocalBusiness Schema accuracy.
* Tweak: Temporarily added local textdomain loading (`load_plugin_textdomain`) for Hebrew translations until the official GlotPress language pack is fully approved.

= 1.2.2 =
* Added sameAs official profile URLs for stronger entity recognition.
* Added ContactPoint customer support schema using existing business contact fields.
* Added Service schema for businesses that offer a primary service.
* Added Yoast SEO schema graph integration for sameAs, ContactPoint, Service, and LocalBusiness schema.
* Improved LocalBusiness / Service settings labels and descriptions.
* Fixed LocalBusiness schema output when Yoast SEO is active.

= 1.2.1 =
* Fix: Resolved a compatibility issue with Yoast SEO where the plugin's XML sitemap rewrite rules inadvertently overrode Yoast's `sitemap_index.xml` redirection.
* Enhancement: Improved `llms.txt` file delivery by enforcing a 200 HTTP status (preventing false 404s), clearing output buffers for a clean text output, preventing caching, and adding `X-Robots-Tag: index, follow` to ensure proper crawling and indexing by AI bots.

= 1.2.0 =
* Added GA4 tracking for plugin activation events.

= 1.1.8 =
* Enhancement: Expanded access for Editors (`edit_others_posts`). Editors can now fully access the main GEO Dashboard, modify GEO/SEO settings templates, use the AI Auto-Fix tools, and execute the Yoast SEO data migration tools.

= 1.1.71 =
* UI/UX: Syntax error

= 1.1.7 =
* UI/UX: Swapped the layout order of the main dashboard cards to display "AI Readiness (GEO)" first, aligning the layout with the post editor Metabox structure.
* Fix: Resolved a calculation mismatch where the top small alert counters for SEO Titles and Meta Descriptions didn't check for global fallback templates, causing false alerts on optimized pages.
* Fix: Updated the SEO Analyzer engine to check for site-wide global Open Graph/Social Media default images before flagging a page for missing media, ensuring accurate independent scoring.

= 1.1.6 =
* Fix: Fixed a JSON decoding issue (`wp_unslash`) that caused FAQ schemas with inner quotes to break and disappear from the dashboard modal and the frontend.
* Fix: Improved Yoast SEO integration by properly declaring the `@type` as `FAQPage` within the Yoast graph, ensuring Google correctly indexes the FAQ Rich Snippets.

= 1.1.5 =
* Compatible with WordPress 7.0
* Feature: Evolved "Focus Keyword" into "AI & SEO Keyword (Target Entity)". The analyzer now actively checks if your main entity is naturally included within your AI Summary, Short Answer, and FAQ Schema for maximum AI alignment.
* Enhancement: Completely rebuilt the GEO & SEO Analyzer engine. Removed direct content-scraping checks (word counts, H2/H3 headings, image alts) to guarantee 100% compatibility with page builders like Elementor and completely eliminate false-positive errors.
* Enhancement: Rebalanced the GEO and Classic SEO scoring algorithms to accurately reflect modern search priorities on a perfect, independent 100-point scale.
* Tweak: Improved UX by replacing the harsh red error for missing keywords with a friendly "Optimization Tip" and a dedicated guide link.
* Tweak: Redesigned the Metabox and Dashboard UI—moved the AI & SEO Keyword input to the very top for immediate access.
* Fix: Resolved an issue where GEO and SEO accordions (toggles) wouldn't open or close properly inside the Dashboard "Edit & Fix" modal.
* Fix: Removed duplicate keyword input fields from the Taxonomy edit screens.

= 1.1.4 =
* Feature: Added dedicated Elementor widgets (AI Summary, AI Short Answer, Breadcrumbs) to easily design and embed optimized GEO content directly within the Elementor page builder.
* Enhancement: Upgraded the 'llms.txt' generator to output advanced, semantic Markdown formatting (using blockquotes for Short Answers and structured lists for AI Summaries) to maximize LLM ingestion and readability.
* Enhancement: Injected the 'abstract' property natively into the global WebPage JSON-LD Schema (and seamlessly into Yoast's Schema graph) across all post types, complying with official Schema.org standards.

= 1.1.31 =
* Fix: Adjusted hook priorities for `llms.txt` and `sitemap.xml` to prevent WordPress from applying unintended canonical redirects or trailing slashes.

= 1.1.3 =
* Fix: Updated hardcoded core paths to use includes_url().
* Tweak: Renamed shortcodes and JS variables to use a unique 4-character prefix (btwgeo).

= 1.1.2 =
* Security: Added strict sanitization using `sanitize_key()` for array keys and `map_deep()` for all `json_decode()` operations to meet WordPress security standards.
* Tweak: Updated the plugin display name and slug to `bytheweb-geo` to better align with WordPress.org trademark and naming guidelines.
* Tweak: Refined the readme description to remove promotional language and provide clearer, objective instructions.
* Fix: Resolved a PHP warning/error during taxonomy meta saving.
* Fix: Addressed minor variable initialization notices in the frontend schema output.

= 1.1.1 =
* Fixed plugin slug and Text Domain to 'bytheweb-geo'.

= 1.1.0 =
* Initial release on the WordPress.org repository.
* Added comprehensive Site-wide GEO Dashboard.
* Introduced llms.txt auto-generation.
* Added advanced XML Sitemap with Video and Image support.
* Added Trust Signals (Organization & LocalBusiness Schema).
* Added full Yoast SEO compatibility mode.