=== HiveEO — AI Search Visibility Suite ===
Contributors: clifford19
Tags: AEO, AI search, schema, structured data, SEO
Requires at least: 6.0
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 5.0.52
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Get your business cited in ChatGPT, Perplexity, Gemini and Claude. Schema auto-inject, AEO checklist, comment generator, and AI visibility tracking.

== Description ==

HiveEO is an Answer Engine Optimisation (AEO) toolkit for WordPress. It doesn't just optimise your content for AI search — it generates it, publishes it, tracks whether AI is actually citing you, and builds authority through real distribution. Get your business, products, and services cited and recommended by ChatGPT, Perplexity, Google Gemini, and Claude.

Also called Generative Engine Optimization (GEO), AIO, or AI SEO — different names for the same shift: search results are being replaced by a single AI-written answer, and the only question that matters now is whether your business is the source that answer is built from.

Two ways in: click **HiveEO** in your WordPress admin sidebar — it's there the moment you activate the plugin, no setup step needed to see it. Or add `[hiveeo]` to any page if you'd rather it live on the front end. Either way the full tool renders immediately. One real step still required before anything AI-powered works: paste a free Gemini API key into Settings (takes under a minute, no billing needed) — the interface itself needs no configuration, but generation, comments, and probing all need that key first.

🚨 **Why this matters right now:** AI Overviews already appear on roughly half of all Google searches, and organic click-through collapses hard the moment one shows up on a query — unless your page is the one being cited, in which case cited pages see meaningfully *more* clicks than before. The pages winning that citation are increasingly not the ones ranking #1. A large share of AI Overview citations now come from pages outside the top 5 organic results entirely. Traditional domain authority barely correlates with getting cited anymore. What does correlate: clean structured data, direct-answer content formatted for extraction, real author expertise signals, and topical depth across a whole content cluster — not one lucky blog post.

📊 **What Google and AI search engines actually demand in 2026 — and how HiveEO addresses each one:**

* **Structured data / schema markup.** The large majority of pages cited by Google's AI Mode and by ChatGPT carry structured data. → HiveEO's Schema Builder auto-injects Organisation, Product, and FAQ schema into your site's `<head>` — no copy/paste, no separate plugin.
* **Extractable, front-loaded answers.** AI systems retrieve short, self-contained passages — a direct answer in the first sentence or two of a section, not three paragraphs of preamble first. → HiveEO's Create tab writes to AEO rules by default: direct-answer leads, FAQ sections, question-phrased subheadings.
* **E-E-A-T and named author expertise.** AI Overview citations skew overwhelmingly toward sources with clear expertise and trust signals — this became a *stricter* filter through 2026, not a looser one. → HiveEO's Entity Strength score and Infrastructure panel are built around exactly this signal.
* **Topical authority via content clusters**, not isolated posts. → This is what AutoPilot's Pillar/Cluster pipeline is for — building out a full topic, not one article.
* **Multi-format presence.** Content combining text, structured data, and video sees a substantially higher citation rate than text alone. → HiveEO's NotebookLM Studio and YouTube distribution exist specifically because video is currently the fastest-growing single source AI engines cite from.
* **Genuine off-site authority signals** (Reddit is currently the single most-cited domain across every major AI engine). → HiveEO's Threads tab and Growth Nexus outreach exist for exactly this reason — AEO isn't just an on-page problem.
* **llms.txt — included, honestly framed.** HiveEO generates and auto-updates yours. To be straight with you: Google has said on the record it doesn't use llms.txt for Search or AI Overviews, and no major AI provider has officially confirmed reading it at inference time either. Perplexity and Claude show more retrieval interest in it than the others. It costs you nothing to have, it's part of the emerging agent-readiness stack, and we're not going to pretend it's a bigger lever than it currently is.

✅ **What You Get For Free (WP.org):**

✅ **AEO Checklist** — Setup, Entity, and Presence categories, a real action plan not just a score
✅ **Schema Builder** — Organisation, Product, and FAQ schema, auto-injected into your site's `<head>`
✅ **Create** (Gemini BYOK) — AI blog post generator and repurposer, AEO writing rules, A/B headline/hook variants, social copy for LinkedIn/Facebook/Instagram/Pinterest/X, Article + DefinedTerm schema
✅ **Community Comment Generator** (Gemini BYOK) — unlimited; no other AEO plugin in this category has one
✅ **Thread Creator** (Gemini BYOK) — unlimited
✅ **AI Visibility Tracker** (BYOK) — probe ChatGPT, Perplexity, and Gemini directly, see whether you're actually being cited
✅ **Infrastructure Panel** — llms.txt editor (auto-updating), AI bot allowlist, crawler log, entity strength score
✅ **Action Guide** — Module 1, 4 lessons, built on our EPPM framework
✅ **Dashboard** — real progress metrics, not a static score

⚡ **Additional features at haiv3.com/hiveeo:**

⚡ AutoPilot — fully automated Pillar/Cluster content pipeline: citation-gap discovery → generation → publish → social distribution, on a schedule
⚡ Growth Nexus — outreach CRM: AI Prospector, Outreach & Backlinks, Network Analytics
⚡ GA4 Analytics Chat — ask questions about your real traffic data, grounded in a live report, with real charts
⚡ Confirmed AI Citations — cross-references real AI-referred traffic against what you're actually being cited for
⚡ Multi-platform social distribution — YouTube, TikTok, Binance Square, LinkedIn, Facebook, Instagram, Pinterest, Telegram, X
⚡ NotebookLM Studio — multi-format audio/video generation from your content
⚡ Podcast Feed — automatic RSS feed built from your generated audio content
⚡ Compiled eBooks with marketplace reference links
⚡ Distribution Status — one unified view across every publishing channel
⚡ Intent Match & Voice of AI — query-intent classification and per-engine sentiment tracking
⚡ Google Search Console integration — real opportunities feeding straight into your citation gap bank
⚡ Brand Defence comment mode — get ahead of misinformation before AI cites it
⚡ Reverse Discovery — find out who AI is citing in your space instead of you
⚡ URL scraper and AI product description generator
⚡ Sitemap batch importer
⚡ Full 13-category AEO checklist with per-engine strategies
⚡ Action Guide — all 18 lessons (Modules 2–4)
⚡ Agency white-label and multi-client dashboard

💪 **Why HiveEO is different from a typical AEO plugin:** most AEO tools score your existing content and stop there — you still have to go write the fix yourself. HiveEO generates the content, publishes it, distributes it across social and video, and then tells you whether any of it actually got cited. Optimisation, generation, and distribution in one place instead of three separate tools.

👤 **Who this is for:** professionals, consultants, founders, and businesses who want to be the source AI chooses to reference — not just another page Google ranks.

**Bring Your Own API Key (BYOK)**

HiveEO uses your own API keys (Gemini, OpenAI, Perplexity). Keys are stored in your WordPress database. AI generation requests are sent directly from your server to your chosen AI provider — there is no relay or intermediary server.

Get a free Gemini key at [aistudio.google.com](https://aistudio.google.com/app/apikey) — no billing required.

**Privacy**

== External Services ==

This plugin connects to the following external services:

**1. Google Gemini API (generativelanguage.googleapis.com)**
Used to generate community comments, seed threads, AI product descriptions, blog posts and social copy in the Create tab, and visibility probe responses. Requests are made only when you click a generate button — never automatically. Your Gemini API key is sent directly from your WordPress server to Google. Data sent includes your prompt text (business context, product details, thread content, and — for the Create tab — your topic, tone, or pasted/fetched content to repurpose). See Google's [Privacy Policy](https://policies.google.com/privacy) and [Terms of Service](https://ai.google.dev/gemini-api/terms).

**2. OpenAI API (api.openai.com)**
Used optionally in the Visibility Tracker to probe ChatGPT responses, and optionally as an alternate generation provider in the Create tab. Only used if you add an OpenAI API key in Settings. See OpenAI's [Privacy Policy](https://openai.com/policies/privacy-policy) and [Terms of Service](https://openai.com/policies/terms-of-use).

**3. Perplexity API (api.perplexity.ai)**
Used optionally in the Visibility Tracker to probe Perplexity responses. Only used if you add a Perplexity API key in Settings. See Perplexity's [Privacy Policy](https://www.perplexity.ai/hub/legal/privacy-policy) and [Terms of Service](https://www.perplexity.ai/hub/legal/terms-of-service).



**4. Reddit API (reddit.com)**
Used in the Threads tab to fetch live trending threads from relevant subreddits. Requests are made only when you click "Refresh live threads" — never automatically. No personal data is sent. Data received includes public post titles, scores, and URLs. See Reddit's [Privacy Policy](https://www.reddit.com/policies/privacy-policy) and [Terms of Service](https://www.reddit.com/policies/user-agreement).

**5. Hacker News API (hacker-news.firebaseio.com)**
Used in the Threads tab to fetch live trending Hacker News stories. Requests are made only when you click "Refresh live threads" — never automatically. No personal data is sent. Data received includes public story titles, scores, and URLs. See Y Combinator's [Terms of Service](https://www.ycombinator.com/legal) and [Privacy Policy](https://www.ycombinator.com/legal#privacy).

**6. User-provided URLs (Create tab)**
When generating or repurposing content, HiveEO fetches the page content of any URL you enter in the "Reference link" field, any URL used for "Repurpose from URL", and any URL mentioned in the "What is this entity?" description (e.g. "see HEX.com"). This is requested only when you click a generate button. The fetched text is included in the prompt sent to your chosen AI provider (Gemini or OpenAI) as factual reference material — it is not stored or sent anywhere else. No data is sent to any third party other than the site whose URL you entered (a normal page request) and your chosen AI provider.

== Local Data Storage ==

**AI Bot Visit Log**
The plugin optionally logs visits from known AI crawlers (GPTBot, ClaudeBot, PerplexityBot, etc.) to your site. This data is stored entirely within your own WordPress database — no data is sent to any external service. Each log entry stores: the bot name, the URL visited, the timestamp, and a 12-character hash of the visitor IP address (derived using your site's WordPress salt — the original IP is never stored). This log is used only to display AI crawler activity in the Infrastructure panel.

== Installation ==

1. Upload the plugin files to `/wp-content/plugins/hiveeo/` or install via the WordPress plugins screen
2. Activate the plugin
3. Click **HiveEO** in your WordPress admin sidebar — the full tool is already there, no page needed. (Prefer it on a public page instead? Create a WordPress page, add `[hiveeo]` to the content, and publish — same tool, either location.)
4. Go to the Settings tab, paste your free Gemini API key
5. Start with the AEO Checklist to set up your business entity

== Third-Party Libraries ==

This plugin bundles the following open-source libraries locally (no CDN):

* **Alpine.js** v3.15.12 — MIT License. Source: https://github.com/alpinejs/alpine
* **Tailwind CSS** v3.4.19 — MIT License. Source: https://github.com/tailwindlabs/tailwindcss
* **Tabler Icons** v2.47.0 — MIT License. Source: https://github.com/tabler/tabler-icons

== Frequently Asked Questions ==

= Do I need to pay for the AI features? =
No. HiveEO uses your own free Gemini API key (Google AI Studio). The free tier of Gemini 2.5 Flash has no billing requirement and is sufficient for all core features.

= Does HiveEO store my API keys on its servers? =
Your API keys are stored in your WordPress database. They are sent directly from your server to the respective AI provider (Google, OpenAI, Perplexity) — never to haiv3.com.

= What is AEO? =
Answer Engine Optimisation is the practice of structuring your online presence so that AI assistants like ChatGPT, Perplexity, and Gemini recommend and cite your business when users ask relevant questions.

= Will this affect my existing SEO? =
No. HiveEO adds structured data (JSON-LD schema) to your site's `<head>` which is additive — it enhances your existing SEO signals without removing or overriding anything.

= What WordPress version is required? =
WordPress 6.0 or higher. PHP 7.4 or higher.

= Is this plugin compatible with caching plugins? =
Yes. HiveEO includes specific compatibility code for Hummingbird Pro to prevent schema tags from being delayed or minified. Other caching plugins should work without configuration.

== Screenshots ==

1. Dashboard — real progress metrics across your whole AEO setup, not a static score
2. AEO Checklist — Setup, Entity, and Presence categories with a real action plan
3. Content Calendar — every published and scheduled post across the month, at a glance
4. Community Comment Generator — Gemini-powered, unlimited, built specifically for AEO-relevant threads
5. AI Visibility Tracker — probe ChatGPT, Perplexity, and Gemini directly to see whether you're actually being cited
6. Infrastructure panel — auto-updating llms.txt, AI bot allowlist, crawler log, and entity strength score

== Changelog ==

= 5.0.52 =
* Readme: added Screenshots section with real image assets (icon, banner, screenshots)
* No functional code changes in this release

= 5.0.51 =
* Feature: llms.txt now auto-updates whenever a product is saved, settings are changed, or a post is published via the Create tab — no manual regeneration needed
* Enhancement: llms.txt now includes a "Recent Articles" section listing the 20 most recently published posts (title, URL, date, excerpt) so AI crawlers discover new content immediately

= 5.0.50 =
* Fix: WP.org compliance — replaced "unlocks" in Threads tab UI copy to avoid false-positive upsell language flag

= 5.0.49 =
* UI: In-progress gap items now sort to the top of both Site Scan and Quick Scan results lists
* UI: Scan History blocks removed from bottom of Site Scan and Quick Scan panels — now consolidated in the collapsible toggle at the top of the Citation Gap panel

= 5.0.48 =
* Fix: Article generation truncation — PHP execution timeout and wp_remote_post timeout were killing the Gemini response mid-generation for longer articles. Timeouts increased to 240s (PHP) and 180s (HTTP). set_time_limit() called before generation.

= 5.0.47 =
* UI: Scan History moved to top of Citation Gap panel as a collapsible toggle — "▾ Scan History (N)" button appears next to the subtitle when history exists. Shows Site Scans and Quick Scans combined. Collapsed by default.

= 5.0.46 =
* Fix: Resume button now shows "Resume existing scan" when urls_processed count is unavailable (after a status reset), instead of "Resume from 0 pages"

= 5.0.45 =
* Fix: Resume button now derives page count from unique URLs in existing results when status counter was reset — shows correct count instead of "0 pages"

= 5.0.44 =
* Fix: Site Scan Resume button now correctly shows pages processed (not result count) — "Resume from 86 pages" not "Resume from 255 pages"
* Fix: Resume now correctly excludes already-processed URLs even for scans that predate processed_urls tracking, by deriving the exclusion list from existing results

= 5.0.43 =
* UI: Dashboard Schema Conflicts card simplified — shows count and plugin name/risk only, no action text. "View details in Infrastructure" link added.
* Fix: Dashboard and Intelligence Suite Citations now show "X of N queries" instead of the meaningless "5/2 probes" fraction — cited count from log vs configured probe count were different things being mixed together.

= 5.0.42 =
* New: Site Scan Resume — if a scan is cancelled or stuck, a "Resume from N pages" button appears that continues from where it left off, preserving all existing gap results. Previously-processed URLs are tracked and excluded from the resumed queue.

= 5.0.41 =
* Fix: Site Scan stuck state — Cancel now fully resets scan status to idle and clears the cooldown so a fresh scan can start immediately. "Scan stuck? Reset & restart" button added alongside Cancel when scan is running.

= 5.0.40 =
* Fix: Recent Work remove (✕) and Clear all buttons now work correctly — inline @click handlers with heredoc quoting issues replaced with proper Alpine methods (removeRecentWork, clearRecentWork)

= 5.0.39 =
* New: Recent Work entries can now be individually removed with the ✕ button, or the entire list cleared with "Clear all" (with confirmation)

= 5.0.38 =
* Fix: Edit in WP button now works — admin URL was being output as literal PHP tag text inside heredoc string
* Fix: Open in Create now restores all social copy fields (LinkedIn, Facebook, Instagram, Pinterest, X, Hashtags, Image Prompt, Meta Description) — save_recent_work was using wrong key "social" instead of individual social_linkedin etc. fields

= 5.0.37 =
* Fix: Dashboard Schema Conflicts card now shares state with Infrastructure panel — both read from the same REST call, no contradictions possible. Conflicts detected on page load and shown consistently everywhere.
* Fix: Empty social copy boxes (LinkedIn, Facebook, etc.), meta description, and image prompt now hidden when not present — e.g. when loading a WP post into Create tab
* Fix: Gutenberg block comment markup stripped when fetching WP post content into Create tab

= 5.0.36 =
* Fix: Recent Work buttons now correctly appear — nested x-data scope was preventing Alpine from calling parent methods. Refactored to use parent scope methods (openRecentWork, loadRecentWorkPost) instead.

= 5.0.35 =
* New: "Link WP post" button on Recent Work entries without article content — paste any WordPress post ID to load that post's content into the Create tab. Works for any post regardless of how it was created (Gutenberg, Classic Editor, imported, HiveEO or manually written).

= 5.0.34 =
* New: Legacy Recent Work entries (saved before v5.0.33) are automatically backfilled with article content from the saved WordPress post on next page load — the "Open in Create" button will appear without any manual action needed
* Fix: post_id is now written back into Recent Work immediately when a post is saved, enabling future backfill if needed

= 5.0.33 =
* New: Recent Work entries now store the full generated article, FAQs, social post, topic, target query, and callout URL. Each entry shows an "↩ Open in Create" button that restores the full result back into the Create tab exactly as it was. "✏ Edit in WP" link also shown when a post has been saved.

= 5.0.32 =
* UI: Citation Gap ring now same size as Optimization Score ring (70px)

= 5.0.31 =
* UI: Citation Gap section in the Optimization Score card now has its own SVG ring chart showing citation rate % — red at 0%, amber when improving, green above 50%. Mirrors the AEO Score ring visual language. Stats compact to 3 (Gaps/Cited/Queries) alongside the ring.

= 5.0.30 =
* UI: Citation Gap data merged into the Optimization Score card as a subsection below the category bars, with Top Products restored as the right-column pair. Stats (Gaps/Cited/Queries/Rate), rate bar, and top gap with Fix button all inside the card.

= 5.0.29 =
* Fix: Schema Conflicts wording corrected — "No conflicts detected" was contradictory; now reads "Clean — no competing SEO plugins detected"
* Fix: Article output area now shows a visible scrollbar and has correct heading colours (h2 white, h3 light green) so headings are readable against the dark green background
* UI: Article output area height increased to 420px

= 5.0.28 =
* New: Site Scan results now appear live as pages are scanned — newest results shown at the top with a "Live — results appearing" indicator during scanning. Results re-sort to gaps-first when scan completes. Fixed unstable Alpine keys that were preventing live rendering.

= 5.0.27 =
* New: Citation Gap dashboard card — standalone card below Optimization Score showing Gaps / Cited / Queries / Citation Rate with a colour-coded progress bar and top gap with one-click Fix button. Sources Site Scan results first, Quick Scan as fallback. Shows Run Scan prompt if no scan yet.

= 5.0.26 =
* New: Citation Rate row added to the Optimization Score card on the Dashboard — shows your latest citation rate as a colour-coded bar (green >50%, amber >20%, red below). Sources from Site Scan results first, Quick Scan as fallback. Shows "Run scan to see →" link if no scan has been run yet.

= 5.0.25 =
* Fix: Site Scan progress bar now correctly fills as pages are processed — values parsed as integers before calculation to prevent NaN from PHP string coercion
* UI: Countdown timer removed from Site Scan (was inaccurate given variable Gemini response times)

= 5.0.24 =
* New: "In progress" gap items now show a "↩ Resume in Create →" button that re-populates the Create tab with the original question and context, plus a "↺ Reset" button to revert back to gap status. Applies to both Site Scan and Quick Scan.

= 5.0.23 =
* Fix: Site Scan was timing out silently — batch size reduced from 5 to 2 pages per poll (each page requires 3 Gemini calls ~25s total, exceeding PHP max_execution_time at 5 pages). set_time_limit(120) added as safety net. Questions per page reduced from 5 to 3. Countdown timer updated to match.

= 5.0.22 =
* Fix: Reddit threads now load correctly — Reddit blocks direct browser fetch() requests (CORS/403), so fetching is now routed through a PHP REST endpoint (hiveeo/v1/fetch-reddit) with a proper user-agent. HN fetching unchanged.

= 5.0.21 =
* New: Site Scan now shows estimated time remaining (calculated from pages left at 35 seconds per 5-page batch) and a note to keep the tab open
* New: Affiliate / reference link field now has a "Fetch description" button — clicks fetch the page meta description and auto-fill the description field, which remains editable

= 5.0.20 =
* Fix: Site Scan no longer relies on WP-Cron to process batches — each front-end poll (every 35 seconds) now directly triggers the next batch via the REST API. WP-Cron is kept as a fallback only. This fixes scans stuck at 0/100 on low-traffic sites where WP-Cron never fires.

= 5.0.19 =
* Fix: Hacker News "View post" links now go to the HN discussion thread (news.ycombinator.com/item?id=...) instead of the external article being submitted — item.url was incorrectly taking priority over the discussion link

= 5.0.18 =
* Fix: Citation Gap action buttons (Fix this gap, Mark resolved, Undo) now correctly appear — Alpine expressions in HTML attributes had incorrectly escaped single quotes (\') which were being output literally rather than as quote characters, causing all status conditions to evaluate false

= 5.0.17 =
* Fix: Citation Gap action buttons now correctly appear — citationGapLast, siteScanResults, scoreHistory and related keys were missing from the initial Alpine config declaration, preventing Alpine reactivity from picking them up on page load

= 5.0.16 =
* Fix: Citation Gap results action buttons (Fix this gap, Mark resolved, Undo) now correctly appear on results from previous scans where status was not yet stored — treats missing status as gap

= 5.0.15 =
* New: Schema Conflict Detector — detects Yoast SEO, Rank Math, All in One SEO, SmartCrawl, and SEOPress running alongside HiveEO and flags potential duplicate schema types with specific fix instructions
* New: HiveEO now automatically skips FAQPage schema injection when another active plugin has already output FAQ schema for that post (covers Yoast FAQ blocks, Rank Math rich snippets, SmartCrawl, SEOPress, The SEO Framework, AIOSEO)
* Update: Schema Conflicts section added to Infrastructure tab

= 5.0.14 =
* New: Gap results persist as a task queue — gaps stay in the list with status tracking (gap / in progress / resolved). "Fix this gap" marks the item in-progress, "Mark resolved" strikes it through. Undo available.
* New: Scan history — last 10 scans stored for both Site Scan and Quick Scan, showing date, gap count, cited count, and citation rate trend. Click any entry to view its full results.
* New: History viewer modal — view any historical scan's full results without losing the current scan.

= 5.0.13 =
* Improvement: "Fix this gap" now uses the Gemini response excerpt as reference context so the Create tab knows what shape of answer to beat, not just the question to target
* New: "Fix this gap" behaviour setting in Settings — choose between navigating to Create tab manually or auto-generating immediately

= 5.0.12 =
* Update: GSC Settings notice updated — clarifies that GSC integration requires OAuth2 and is available in HiveEO Premium; directs free users to Citation Gap Scan as the immediate alternative

= 5.0.11 =
* New: Site Scan — crawls your sitemap, reads each page, generates probe questions from the actual content, then checks whether Gemini cites you for each. Runs as a background WP-Cron job (5 pages every 2 minutes), updates results in real time, 100 pages per scan, 12-hour cooldown. Citation Gap tab now has two modes: Site Scan and Quick Scan.

= 5.0.10 =
* Fix: Citation Gap Scan now works with all Gemini models — removed responseMimeType parameter that some models reject, added robust JSON extraction from response text with multiple fallback strategies, increased timeout to 45s, and now surfaces the actual Gemini error message on failure

= 5.0.9 =
* Fix: Citation Gap Scan was reading business name from a non-existent settings wrapper key — now reads directly from hiveeo_business_name user meta, matching how Settings saves it

= 5.0.8 =
* Fix: Backup and Restore routes were missing — now implemented
* Fix: Saved entities migration — entities saved under Buzz AI meta keys are automatically migrated to HiveEO on first load
* Fix: GSC API key approach replaced with clear OAuth2 notice; Create tab GSC panel hidden until OAuth is implemented; Citation Gap Scan (no GSC needed) pointed to as the immediate alternative

= 5.0.7 =
* New: Citation Gap Scan — discovers the questions AI engines should cite you for (based on your Products & Settings), probes Gemini with each, and returns a cited/not-cited report with one-click "Generate post for this gap" on every gap found. Located under Probe in the sidebar.

= 5.0.6 =
* New: AEO Score trend history — a sparkline chart now appears on the Dashboard AEO Score card showing your score over the last 30 days, with a delta indicator (e.g. ↑ +12pts). History is recorded automatically every time you tick a checklist item.

= 5.0.5 =
* Fix: posts saved from the Create tab now attach FAQPage schema (Question + acceptedAnswer) instead of DefinedTermSet — FAQPage is the correct schema type for Q&A content and is what Google uses for AI Overviews rich results
* UI: Intelligence Suite dashboard cards (Citation Gap, Intent Match, Entity Strength, Voice of AI) now show "ELITE" label alongside "Coming soon" so users understand these are a paid tier feature, not just a timing thing

= 5.0.4 =
* Security fix: [hiveeo] shortcode now restricted to administrators only. Previously any logged-in user on a site could access the full HiveEO interface via the shortcode page. If you use the shortcode on a front-end page, update immediately.
* Security: Save as post (Create tab) now requires edit_posts capability
* New: Google Search Console integration (v5.0.3) — add GSC API key in Settings to see striking-distance queries on the Create tab

= 5.0.3 =
* New: Google Search Console integration — add your GSC API key and verified site URL in Settings to pull striking-distance queries (position 4–20, 10+ impressions) directly onto the Create tab as one-click content suggestions

= 5.0.2 =
* New: "Go Premium" tab under Overview — a dedicated "What's included in Premium" panel listing all paid features across Create Suite, Visibility & Probe, Products & Schema, and Learn & Agency, with a link to the pricing page
* Improvement: mobile bottom nav rebalanced — Go Premium added to Set 1, Products moved to Set 2, Infrastructure moved to Set 3 (all 12 tabs now reachable across 3 sets)

= 5.0.1 =
* New: FAQ promotion — Products tab "Import FAQs from a Create-tab post" flow: pick a saved post, select FAQs to append to the product, with an option to also refresh that post's DefinedTermSet schema
* Fix: DefinedTerm schema names were truncated question fragments (e.g. "What natural resources does"); now correctly extracts the subject as a noun phrase (e.g. "Africa's natural resources")
* Fix: Learn section moved to just below Overview in the sidebar, now collapsible so experienced users can hide it; Action Guide reordered above AEO Checklist
* Fix: Learn section auto-expands when navigating to Action Guide or AEO Checklist tabs

= 5.0.0 =
* Improvement: Create tab now fetches the content of any reference URL you provide (the reference link, or a URL mentioned in "What is this entity?") and gives it to the AI as factual material to cite — previously such links were decorative only
* Fix: softened the brand-accuracy rule so it no longer suppresses accurate AI knowledge about well-known entities (e.g. established cryptocurrencies, products, companies) — it still prevents invented details about unfamiliar/niche entities
* Fix: Dashboard Top Products badge now reads ON/OFF (was OK/OFF) and correctly shows ON for products saved before the schema-injection toggle existed, matching the Products and Schema tabs
* Compliance: corrected outdated readme references to a haiv3.com relay — AI requests have been sent directly to providers since v4.1.x; readme now matches actual behaviour
* Compliance: documented the new Create-tab URL-fetching behaviour as External Service #6

= 4.2.1 =
* Fix: Products tab was missing the list of saved products (a regression from earlier compliance work) — restored, with Edit and Delete wired to the existing product management functions
* Fix: corrected a div-nesting issue in the product Add/Edit form (URL slug, Purchase URL, and Info page URLs are now properly separated form sections)

= 4.2.0 =
* New: Create tab — AI blog post generator and repurposer (Gemini/OpenAI BYOK), with AEO writing rules, brand-accuracy grounding, A/B hook variants, social copy for 5 platforms, and Recent Work history
* New: Save generated posts as drafts or published posts directly from the Create tab, with Article/BlogPosting and DefinedTerm schema attached automatically
* New: Settings — Author Profile, Monetize URL, Callout description, Voice training sample, and a saved Entities list for quick brand-grounding
* New: navigation reorganised into Establish / Publish / Probe / Monetize / Learn sections following the EPPM workflow

= 4.1.97 =
* Fix: restored full UI from v4.1.80 — previous versions had incorrectly stripped Schema, Checklist, Settings and Products tab content
* Fix: applied only required compliance fixes to restored UI — removed Google Fonts CDN, quota UI, trialware terms, ELITE TIER badge
* Fix: height script registered as wp_register_script(false) with hiveeo-alpine dependency — WP.org compliant, no raw script tags

= 4.1.96 =
* Fix: moved hiveoApp function to hiveeo-height script handle — ensures it outputs after Alpine loads, fixing Alpine x-data initialisation

= 4.1.95 =
* Fix: height/fullscreen script now registered as a proper wp_register_script handle with no src and hiveeo-alpine as dependency — WP.org compliant, no raw script tags, correct execution order guaranteed by WordPress dependency system

= 4.1.94 =
* Fix: removed defer from Alpine.js enqueue — caused race condition where hiveoApp() was defined after Alpine initialised x-data
* Fix: removed incorrect 'before' position from hiveoApp inline script — must run after Alpine loads, not before
* Fix: corrected DOMContentLoaded script string termination

= 4.1.93 =
* Fix: removed stray closing brace in generate_comment() in class-api.php — left from relay removal, caused fatal syntax error on activation

= 4.1.92 =
* Security: added sslverify:true to all 5 wp_remote_post calls in class-api.php (Gemini, OpenAI, Perplexity)

= 4.1.91 =
* Fix: moved $hiveeo_exclude_handles out of global scope into hiveeo_get_exclude_handles() function
* Fix: removed unused $biz_url variable from AJAX thread handler
* Fix: corrected Version header spacing alignment

= 4.1.90 =
* Fix: removed Domain Path header and languages folder — no translations exist, both caused Plugin Check errors

= 4.1.89 =
* Fix: created /languages folder — Domain Path header now resolves correctly
* Fix: Upgrade Notice section trimmed to single short notice (max 300 chars)
* Fix: added phpcs:disable for false-positive PrefixAllGlobals warnings in class-api.php — all flagged functions are class methods inside HiveEO_API, not global functions

= 4.1.88 =
* Code: removed dead relay/licensing comment block from hiveeo.php
* Code: updated misleading comment in class-engine.php (relay → premium features)
* Code: updated misleading file header in class-action-guide.php
* Code: removed stale tier comment from class-schema.php

= 4.1.87 =
* readme: removed haiv3.com from external services list — plain HTML links are not external service connections; 5 genuine data-transmitting services remain documented
* hiveeo.php: fixed plugin header — added Requires at least, Requires PHP, Tested up to, License URI, Domain Path; fixed extra space on Version line; fixed define() indentation — plain HTML links are not external service connections; 5 genuine data-transmitting services remain documented

= 4.1.86 =
* readme: corrected haiv3.com external service entry — links only, no automatic data transmission

= 4.1.85 =
* Compliance: updated haiv3.com readme entry — relay no longer used, prompts are embedded
* Compliance: renamed hiveeo-tier-paid CSS class to hiveeo-tier-pro
* Confirmed: all 7 include files have ABSPATH direct access prevention on line 18
* Confirmed: all inputs sanitized, all outputs escaped, all SQL uses prepare()

= 4.1.84 =
* Compliance: removed HIVEEO_ENGINE_SECRET constant — relay removed, secret is now unused dead code
* Compliance: changed "unlock the comment generator" to "enable the comment generator" — unlock implies a paywall
* Compliance: removed "tier and feature gates" comment from init code
* Compliance: removed launch countdown comment block

= 4.1.83 =
* Compliance: embedded all AI prompts directly in class-engine.php — relay to haiv3.com no longer required for core functionality
* Compliance: removed relay() method and haiv3.com HTTP dependency from class-engine.php
* Compliance: perm_read upgraded from is_user_logged_in() to current_user_can('manage_options') for /crawler-log and /conflicts endpoints
* Compliance: moved DOMContentLoaded height/fullscreen inline script to wp_add_inline_script()

= 4.1.82 =
* Compliance: moved phpcs:ignore for $_POST nonce check inline on the exact flagged line in class-admin.php

= 4.1.81 =
* Compliance: added phpcs:ignore PluginCheck.CodeAnalysis.WriteFile.ABSPATHDetected to all three llms.txt file writes — llms.txt must live at domain root for AI crawler discovery; wp_upload_dir() would place it at the wrong path

= 4.1.80 =
* Final WP.org compliance pass — full line-by-line audit of every file
* readme.txt: corrected free features list to accurately reflect unlimited generation and all features available
* readme.txt: removed inaccurate feature limits (was incorrectly stating "up to 5 products", "up to 5 comments")
* class-action-guide.php: removed dead auth_check() method
* hiveeo.php: HIVEEO_VERSION constant synced to match plugin header version

= 4.1.79 =
* Removed all tier/licensing system remnants from class-engine.php (get_tier_config, get_user_tier, get_tier_data, tier_features, checklist_visible_cats)
* Removed handle_backup() and handle_restore() dead methods
* Removed /verify-license, /register-free, /tier, /backup, /restore endpoints
* Removed hiveeo_generate_product_ai and hiveeo_batch_scrape_page AJAX handlers (paid features not in WP.org build)
* Removed generateProductAI() JS function and productAI state from shortcode
* Removed URL scraper, sitemap importer, and reverse discovery UI and endpoints entirely
* Removed brand defence mode from comments UI and API
* Fixed: readme.txt free/paid feature descriptions now accurately match plugin behaviour
* Fixed: all permission_callback method references replaced with inline lambdas in class-engine.php and class-action-guide.php
* Fixed: "Free tier capped at 7 days" comment removed from class-aeo-infrastructure.php
* Fixed: admin closure structure corrected in class-admin.php

= 4.1.78 =
* Compliance: removed all trialware remnants — tierFeatures, tierLimits, isPaid, canAccess, hasFeature, atLimit, ELITE TIER badge, projectPass
* Compliance: removed upgradeUrl() function and upgrade_url parameter entirely from free build
* Compliance: all paid-version UI text replaced with neutral external links
* Compliance: template and div balance restored to 0/0 after feature removals
* Fixed: OpenAI and Perplexity probing always visible — removed key-length visibility gate

= 4.1.77 =
* Compliance: HIVEEO_VERSION constant fixed to match plugin header version
* Compliance: full audit from actual zip file rather than working folder

= 4.1.76 =
* Compliance: removed all hasFeature/atLimit/canAccess/tierLabel functions from WP.org build
* Compliance: template balance fixed after feature stripping operations
* Compliance: removed all orphaned closing tags from previous feature removals

= 4.1.75 =
* Compliance: removed scrape-url, sitemap-urls, reverse-discovery stub functions and endpoints
* Compliance: removed brand defence defend mode from generate_comment endpoint
* Compliance: removed projectPass state object from Alpine data
* Compliance: removed all paid-version API comments and 404 stubs
* Compliance: removed ELITE TIER badge from dashboard

= 4.1.74 =
* Compliance: removed all upgrade_required gates, daily quotas, and feature limits
* Compliance: removed all hasFeature() UI gates from shortcode
* Compliance: removed sitemap importer UI, URL scraper UI, and brand defence UI entirely
* Compliance: removed reverse discovery UI entirely

= 4.1.73 =
* Compliance: removed Google Fonts CDN call — system font fallback used
* Compliance: $_POST nonce suppression added with explanation comment
* Compliance: verify_manage_options inlined in permission callback

= 4.1.72 =
* Compliance: $_GET['page'] check separated into own add_action closure in class-admin.php
* Compliance: NonceVerification warning addressed with phpcs:ignore and explanation

= 4.1.71 =
* Author email updated to info@haiv3.com across all plugin files

= 4.1.70 =
* Removed Support submenu from free WP.org build

= 4.1.69 =
* Added headers_sent() fallback with meta refresh for Upgrade redirect
* Support and Upgrade submenus now redirect correctly in all environments including Playground

= 4.1.68 =
* Removed debug console.log from thread generator

= 4.1.67 =
* readme.txt: added Hacker News Terms of Service link (was missing, only Privacy Policy was linked)

= 4.1.66 =
* Compliance: all permission_callback method references replaced with inline lambdas
* is_user_logged_in() now explicitly visible in every permission callback lambda
* verify_manage_options inlined with current_user_can('manage_options') explicit

= 4.1.65 =
* Compliance: removed hiveeo-app.js from zip (dead code containing undocumented HN fetch calls)
* Compliance: removed remaining hasFeature('dash_vt') upgrade prompt block
* Compliance: renamed verify_nonce method to require_logged_in_user

= 4.1.64 =
* Action Guide: completedCount now validates against current guide lesson IDs only
* Action Guide: added Reset progress button
* Action Guide: added /action-guide/reset REST endpoint

= 4.1.63 =
* UI: content area padding set to 20px 28px for equal left/right breathing room

= 4.1.62 =
* Fixed: horizontal scrollbar on WP admin page — html/body/wpwrap overflow-x:hidden added

= 4.1.61 =
* Fixed: horizontal scroll caused by wpwrap not being in overflow rules

= 4.1.60 =
* Compliance: phpcs:ignore with PluginCheck.Security.DirectDB.UnescapedDBParameter added inline on get_results() lines

= 4.1.59 =
* Compliance: DB query phpcs:ignore annotations added at exact flagged line numbers

= 4.1.58 =
* UI: button border-radius unified to 8px across all tabs
* UI: global button reset rule fixed — was overriding all hr-btn class rules
* UI: topbar restructured — hamburger · title · spacer · FREE · User Guide → · fullscreen
* UI: content padding halved to reduce excessive whitespace
* UI: mobile bottom nav More tray replaces 4 hidden tabs
* UI: action guide lesson menu toggle added
* UI: optimization score bars show correct free-tier categories with emerald gradient
* UI: custom CSS checkboxes replace native browser checkboxes
* UI: splash screen removed (commented out for easy restoration)
* Fixed: action guide progress bar — server is sole authority, localStorage fallbacks removed
* Fixed: completed lesson count validates against current guide IDs only

= 4.1.32 =
* Schema: FAQ conflict detection added for Yoast, Rank Math, AIOSEO, SEOPress, SmartCrawl, TSF
* Infrastructure: entity strength score added (0-100)
* Infrastructure: llms.txt inline editor added
* Infrastructure: AI bot allowlist UI added with per-bot allow/block toggles
* Infrastructure: AI crawler visit log added (hashed IP, stored locally)
* Products: unlimited products confirmed — no limit in free version
* Checklist: Setup, Entity, Presence categories in free build
* Action Guide: Module 1 (4 lessons) in free build

= 4.1.16 =
* Compliance: moved inline styles and scripts to wp_add_inline_style() and wp_add_inline_script()
* Compliance: added Reddit and Hacker News to External Services documentation
* Fix: reverted load-lock script to inline render to prevent site-wide scroll lock

= 4.1.15 =
* Compliance: moved inline styles and scripts to wp_enqueue functions

= 4.1.14 =
* AI generation: switched to gemini-2.5-flash with response_schema for reliable JSON output
* AI generation: added keywords field to AI-generated product data

= 4.1.1 =
* Fix: added clifford19 to Contributors field in readme.txt
* Fix: corrected Alpine.js enqueue version string to 3.15.12 to force cache bust

= 4.1.0 =
* AI generation: switched to gemini-2.0-flash for faster responses
* Schema: fixed author field being ignored in BlogPosting/Article schema output
* Schema: fixed product page matching when stored slug differs from WordPress post slug
* Schema: added URL-based page matching via purchase_url and info_urls as fallback
* Updated Alpine.js to 3.15.12
* Compliance: documented Reddit and Hacker News as external services in readme
* Compliance: added clifford19 as contributor

== Upgrade Notice ==

= 5.0.51 =
llms.txt now updates automatically whenever you save a product, change settings, or publish a post. Also adds a Recent Articles section so AI crawlers discover new content immediately.

== License ==

HiveEO is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.
