Amaso AI (Amaso Lite) — full changelog. The readme shows a summary of the latest version.

= 1.2.0 - 2026-10-29 =
* FIXED: Content Audit no longer says AI checks need a key (free checks need none) and asks for 3 FAQ questions, the number Amaso counts. Schema: no promise of more citations, and the outdated "rich results" and "sitelinks search box" labels are gone. llms.txt has no empty "Topics" heading.
* NEW: the guided setup suggests first the search a new customer types for your kind of business in your city ("best restaurant in Kigali", "meilleur restaurant à Douala"). Your business name alone is still offered but no longer ticked: an AI repeats a name it is given.
* IMPROVED: the Welcome step plays the complete Amaso AI film (about 2 minutes, English or French) and shows the eye logo.
* FIXED: the end of the guided setup said "IndexNow active" although IndexNow is off until you turn it on. It now mentions IndexNow only when it is on, and no longer says it reaches ChatGPT.
* FIXED: a free check refused because the site runs on a local or test address said "not available right now"; it now says why. The setup no longer quotes a typical monthly cost for your own AI key.
* FIXED: Settings → AI crawlers now lists the crawlers that decide whether assistants show your site (OAI-SearchBot and ChatGPT-User, Claude-SearchBot and Claude-User, Perplexity-User), allowed by default like the others, and their visits are counted. GPTBot, ClaudeBot and Google-Extended are described as what they are: training crawlers; Google-Extended does not change Google Search or AI Overviews.
* FIXED: the "Quick feedback" answer and the opt-in usage statistics were sent with WordPress's default user agent, which contains the site address. They now use their own user agent, so the site address is sent only when you tick "You may email me about this".
* CHANGED: the plugin is now named "Amaso AI" (amaso means "eyes" in Kinyarwanda, and search engines mixed the two up). Nothing else changes: same slug, same settings.
* NEW: the weekly technical check now asks for your home page as Googlebot, Bingbot, GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot and PerplexityBot. When your host, its firewall or its CDN refuses one of them although robots.txt allows it (Hostinger answered GPTBot with "429" on our own site), "What to fix first" names the crawler and says where to allow it. These requests go to your own site only.
* IMPROVED: the guided setup that opens after activation has a Welcome step (what Amaso does, the Amaso video, which loads from YouTube only when you click play), named steps instead of dots, and an "Exit guided setup" link on every step.
* NEW: when Amaso is deactivated, a short "Quick feedback" window asks why (optional, nothing sent on Skip; see External services). It also shows how to reach support before leaving.
* FIXED: Claude answers with web search began with the sentence Claude writes before it searches ("I'll search for…"); only the answer that follows the search is kept.
* NEW: AI Citations shows where each answer places you in the list of businesses it gives (#1 = named first) and the tone of the sentences that name you (positive, neutral or negative, estimated from their words, English and French). Both are read from the answer Amaso already receives: no extra AI request, nothing sent anywhere. The average place and the share of positive answers appear at the top of AI Citations.
* IMPROVED: llms.txt topics link to their category and, when the category has no description, name its latest articles instead of the filler "Expert content about …". The default "Uncategorized" category is left out.
* NEW: the technical check runs by itself every week (WordPress scheduled tasks, a few pages a minute) and now also reads your latest articles, not only the main pages. Its main findings appear in "What to fix first": pages Google cannot show, titles and descriptions Google will cut or write for you, pages without one clear main heading (H1).
* NEW: the technical check flags titles over 60 characters and search descriptions over 160 or under 70 characters (Google cuts them or replaces them).
* FIXED: "No clear next step for the visitor" was shown on legal pages whose address is longer than the usual name, such as the cookie-policy-eu and privacy-statement-eu pages Complianz creates. They are now recognised as legal pages.
* IMPROVED: llms.txt: a page is summed up by its SEO description when it has one, instead of its first words (which began with the page's big heading and stopped mid-sentence).
* FIXED: setup wizard keywords on Divi sites: words split by a line break in a Divi heading were glued together ("businessdeserves a film"), slogans and calls to action ("Compose your video") and legal pages ("Conditions de vente", "Terms of sale") were offered as keywords. Headings keep their spaces, phrases that speak to the reader and legal pages are left out, and pages such as "conditions-de-vente" or "confidentialite" count as legal pages.
* FIXED: on a site translated with Polylang or WPML, every keyword from the setup wizard was saved in the language with the most words (all "fr" on an English site with French pages). The site's main language is now the one Polylang or WPML gives, each suggestion keeps the language of the page it was read on, and the business profile lists services in the main language.
* FIXED: running the setup wizard twice saved every keyword twice. A keyword already tracked in the same language is kept once (a paused one asked for again is switched back on).
* FIXED: business scan: a scan made by an older version or before a page was edited was kept for a week, so the profile could show 0 words on Divi 5 pages, a broken Instagram link and old prices. The scan is now redone after an update of Amaso and after any page, post or product changes, and the profile takes prices, key pages and links from it at once.
* FIXED: business scan: on a translated site, key pages and prices are read from the main language; prices keep their currency ("Dès 39 $") and a following number is no longer glued to them; FAQs are read from Divi 5 toggles (a section title such as "Who we are" is not a question); promises listed under "What we promise" or "Why choose us" are read as value propositions; the schema printed by Yoast SEO, Rank Math, AIOSEO or SEOPress, and JSON-LD inside a Divi code module, are counted.
* FIXED: a scheduled run that measured nothing only said "No data stored". The dashboard now says why, for example that no keyword was tracked yet when it ran (the first run starts a few minutes after installation) or that Search Console is not connected.
* FIXED: AI citations: an answer that only repeated the business name given in the question ("I couldn't find any information on AfrikCru Kigali") was counted as a citation. For a question that names the business (or its domain), only a link to the site counts now; checks already stored that way are corrected once on update.
* NEW: AI Citations and the monthly email keep searches that contain your business name apart from the others ("Cited when your name is not in the search"): an AI repeats a name it is given, so only the second ones show whether new customers are sent to you.
* FIXED: on hosts with a persistent object cache (LiteSpeed, Redis, Memcached), a redirect added with WP-CLI or by another request could be ignored, or a deleted one still followed, until the cache expired. Redirects are checked against the database for addresses that would otherwise be "not found". The scheduled check is put back if a cached copy of the schedule dropped it, and the IndexNow log is re-read before it is extended.
* FIXED: business scan: social and WhatsApp links inside Divi 5 and other block content were stored with escaped HTML glued to them (for example …/u0022u003eInstagram…), and the earlier fix for this did not run on two of the scanned sources. Links are now cut where they end and checked, and a link already saved that way is cleaned before it goes into the schema.
* FIXED: schema: the WebPage and Article description was empty on pages built with a page builder. It now uses the excerpt, then the SEO description, then the page's own text (Divi 5 included). A theme can name its own description field with the `geo_vt_meta_description_keys` filter.
* NEW: Settings → "Visitors can search this site". Untick it when your theme has no search or sends searches to the homepage: the homepage schema then stops offering a site search (SearchAction). Developers: `geo_vt_schema_search_action` filter.
* NEW: Settings → Target Markets accepts a region or a continent, such as "Africa": the schema lists it as an area served, without a made-up postal address. When you list markets, your primary location is given as the organization's location instead of being added to the areas served.
* FIXED: the business profile kept describing the site as it was before a launch (for example "5 pages") until the next weekly check. Amaso now checks it again in the background a few minutes after pages are published or taken down, and scans the site again when it has changed size.
* FIXED: business type: a video or motion-design studio could be guessed as "Real Estate" ("studio", "in-house", "location"). Video, film and production studios now read as Creative / Design / Media, and a type Amaso is not sure of is shown as not sure (choose it in Setup) and is not used to word keyword ideas.
* NEW: when Yoast SEO, the Hostinger plugin or another tool writes a llms.txt file on your server (served instead of Amaso's), the Amaso screens and "What to fix first" say so and how to turn it off.
* FIXED: pages built with Divi 5 were read as empty (0 words, no headings, no FAQ) by the business scan and llms.txt. Amaso now reads the text, headings, FAQ items and buttons of Divi 5 modules.
* FIXED: llms.txt answered /llms.txt with a redirect to /llms.txt/, which some AI crawlers do not follow. It now answers at the exact address.
* FIXED: llms.txt "Key Pages" listed cart, checkout, account and thank-you pages and missed the main ones. It now leaves out shop system pages, noindex pages and hidden products, lists pages from your menus first, and uses the SEO description when a page has no plain text. The intro no longer ends with two periods.
* FIXED: business scan: hidden or noindex products were used to guess what the business sells.
* FIXED: Dashboard → What to fix first: "No clear next step for the visitor" no longer appears on pages whose buttons say "Apply now", "Choose Pro", "Try it free", "Get … free", "Install" or the same in French.
* FIXED: Dashboard → What to fix first: "The homepage never names what you offer" appeared when a service came from a long site title ("Brand – What you do for whom") and the homepage said it in its own words. A service now counts as named when all its meaningful words appear on the page.
* FIXED: Dashboard → What to fix first: when the address was missing from the business profile, Amaso said "No business address found on your site" and asked to write it on the contact page, even when it was already there. It now says the address is not confirmed and points to the business profile, where Amaso reads it.
* FIXED: Schema: choosing a quick-start template (LocalBusiness, FAQPage, WebSite, Article) filled the JSON field with "[object Object]" instead of the template.
* FIXED: AI keys: spaces, line breaks and invisible characters picked up when copying a key are removed before it is saved. A key that cannot work is refused with the reason (a Claude Pro/Max sign-in token or an Admin key instead of an API key, or a key pasted in another provider's field), and when Anthropic rejects a Claude key the message says what to check.
* NEW: free checks by Amaso. Without an AI key, you can ask whether an AI assistant recommends your site for your first searches: Amaso asks ChatGPT (OpenAI) or Claude (Anthropic), as set on amasoai.com, for you, on its own account, and each answer is shown under the assistant that gave it. Off until you click "Allow" (setup wizard step 3, the check buttons, or Settings); the button says what is sent (your site address and the search, with your profile's city when the search names none). The setup wizard ends with your first answer and the websites it relied on. Turn it off in Settings → API Keys.
* IMPROVED: Upgrade screen: after you check current prices, each plan shows the price it is sold at (yearly) and, while one runs, the current offer with the regular price struck through.
* IMPROVED: Upgrade screen: when a plan is also sold as a one-time lifetime license, its price is shown under the yearly price.
* CHANGED: Upgrade screen: the prices bundled with the plugin (shown before any price check) are the current yearly prices: Starter $35.99, Pro $79.99, Agency $199.99 a year.
* CHANGED: AI Citations, the Dashboard and the keyword list show your whole citation history again, not only the last 30 days. Nothing was ever deleted: every result stored on your site is visible in the free edition.

= 1.1.0 - 2026-10-16 =
* CHANGED: Amaso Lite now focuses on the diagnosis: on-demand AI citation checks (unlimited, with your own key), the websites the assistants consulted, your business profile, schema, llms.txt, AI crawler permissions, the content audit and the technical health check. Scheduled (automatic) AI checks, AI content fixes and the FAQ generator, the in-admin Assistant, the redirect manager with its 404 monitor and the broken-link checker are now part of the paid plans.
* CHANGED: AI Citations, the Dashboard and the keyword list show the last 30 days of results. Nothing is deleted: older results stay in your database.
* CHANGED: redirects you already created keep working.
* FIXED: Settings → AI Engines: the Allow / Disallow choices and the crawler descriptions can now be translated (they stayed in English on a French site).

= 1.0.26 - 2026-10-14 =
* FIXED: links to Keywords, Business Profile, SEO Rankings and other former pages (from the Dashboard, Setup and notices) opened "Sorry, you are not allowed to access this page". They now open the right tab.
* CHANGED: the plugin is now listed as "Amaso – AI Search Visibility & GEO" so its purpose shows in search results (same plugin, same slug, nothing to do).
* IMPROVED: Upgrade screen: when you check current prices, the list of what each plan adds now comes from amasoai.com too, so it matches the pricing page. Without a check, the list bundled with the plugin is shown.
* CHANGED: removed a report request handler this edition never used (it has no Reports screen).
* FIXED: robots.txt: the AI crawler rules were written twice, and each bot named there stopped seeing your site's own rules (for example keeping out of wp-admin and cart links). Each bot is now named once and keeps those rules; blocked bots stay blocked, and a site that discourages search engines is left alone.

= 1.0.25 - 2026-10-10 =
* CHANGED: requires WordPress 6.2 or later.
* CHANGED: the admin screens load their scripts and styles as files through the WordPress script and style API; translated text reaches them through wp_localize_script.
* CHANGED: every database query goes through $wpdb->prepare(), with table names bound as identifiers.
* FIXED: some admin styles (Assistant, Keywords, Schema, Settings and others) were not applied.
* FIXED: when you choose to remove data on uninstall, the AI sources and missions tables are now removed too.

= 1.0.24 — 2026-10-04 =
* CHANGED: Amaso Lite no longer includes the remote MCP server, Application-Password and OAuth connection. The Assistant inside the WordPress admin stays: it reads and audits your site and can track and pause keywords and mark pillar pages. The changes to pages (titles, descriptions, links, redirects, structured data) are made on the Amaso screens, which are all in Lite; having an assistant apply them for you is part of the separate paid edition.
* NEW: the Dashboard opens on your week: how often AI assistants cited you in the last 7 days against the 7 before, your missions, and the three fixes worth doing now (a blocking technical problem first).
* NEW: Visibility → Missions: choose a search you want to be recommended for; Amaso records where you start, builds a plan (on your site and across the web) and measures the result at every check, with an honest verdict ("too early", "no change yet", "improving").
* NEW: AI Citations shows the websites the assistants actually consulted for your searches (your site, reviews and directories, social and video, guides and forums, other websites), each with what to do.
* NEW: Optimize → Technical health: what stops Google and AI assistants from reading your key pages (errors, redirects, noindex, canonical, titles, H1, phone viewport, HTTPS, image descriptions, hreflang, robots.txt, sitemap), most severe first, with the fix. Optional speed test per page through Google PageSpeed Insights, only when you click (see External services).
* NEW: Optimize → Shop (WooCommerce): product pages missing what AI shopping answers need (price, photo, descriptions, category, reviews, identifiers), worst first. WooCommerce products are now included in every content feature.
* NEW: Amaso panel in the block editor: the GEO score updates as you write, with a Google preview, and the search title and description can be edited there (or written with your own AI key). The classic editor keeps the meta box.
* NEW: the Assistant has ready-made workflows (weekly review, why am I not recommended, start a mission, improve my product pages, write the missing cluster articles) and tools for AI sources, page comparison, technical and shop audits.
* IMPROVED: after a redirect, a search title or a search description is saved, the cached copy of that page is cleared in LiteSpeed Cache, WP Rocket, W3 Total Cache, WP Super Cache or SiteGround Optimizer, so the change shows at once.
* NEW: Redirects suggests the page an old address used to be (matching words in the address and your page titles) and redirects the confident ones in one click; addresses your own pages link to are listed first, with the page that holds the link; automatic probes are no longer recorded.
* NEW: the Assistant can read a page, pause weak keywords and mark a pillar page, each undoable.
* IMPROVED: internal links read pages built with Divi, Elementor and other builders as visitors see them.
* NEW: Keywords flags single common words, pricing words and past years (each tracked keyword costs AI credit) and pauses them in one click; the setup wizard no longer pre-selects them.
* IMPROVED: readability and accessibility: larger small text, stronger contrast, visible keyboard focus, reduced motion respected, plain-language activity log.
* IMPROVED: French translation of every new screen.

= 1.0.23 — 2026-10-03 =
* NEW: "Fix these first" after setup and on the Dashboard: up to five concrete findings with the screen that fixes each.
* NEW: optional monthly email report (off until you turn it on).
* NEW: the Assistant can diagnose why AI assistants may not recommend you for a search, and list what to fix first.
* NEW: MCP tools get_cluster_gaps and draft_cluster_article: a connected Claude or ChatGPT can write the articles a topic cluster is missing, saved as drafts linked to the pillar page.
* FIX: Plugin Check errors (exception messages now escaped, a translator comment, a WordPress 6.5 function on a 6.0 minimum).
* NEW: optional, off-by-default anonymous usage statistics (see External services).
* FIX: the setup wizard no longer spins forever after the site scan.
* SECURITY: request data is sanitized as soon as it is read (business profile, Schema JSON, service account, utm_source, Schema form fields).

= 1.0.22 — 2026-09-28 =
* NEW: Setup → Locations — describe each shop, clinic or office once (address, phone, opening hours, coordinates) and link it to its page. Amaso prints that place as its own LocalBusiness structured data on that page only, refuses invalid values with a reason instead of dropping them silently, and warns when the page text does not show the details the structured data claims. The Assistant gets get_locations.
* NEW: Search title. The Assistant can now set a page's search title — the headline shown in Google — written into your SEO plugin's field when you use one, or printed by Amaso when you don't (as the whole title tag, only on themes that support title tags). Undoable, like every change.
* IMPROVED: Settings → AI Engines → MCP now shows, in plain steps, how to connect Claude.ai or ChatGPT to your site (paste the connection URL, approve on the consent screen, switch the connector on in a chat) — the instructions used to be hidden behind the Application Password button.

= 1.0.21 — 2026-09-28 =
* NEW: the Assistant now works with Claude, ChatGPT (OpenAI) or Gemini using your own key, remembers your conversation between visits, and every change it makes is listed under "Recent actions" with an Undo button.
* NEW: connect Claude.ai, ChatGPT or any MCP client with a sign-in flow (OAuth) instead of an Application Password; connected apps can be disconnected at any time from Settings.
* NEW: Optimize → Links scans your published content for broken links, in small batches so it never slows the site.
* NEW: Optimize → Redirects — a 404 monitor (path, count and referring host only; no IP, user agent or cookie) and a redirect manager.
* NEW: Optimize → Internal links lists published pages that nothing links to and, for each, the pages that could link to it using words already written there. Links are added one click at a time, never inside headings or existing links, and never in page-builder pages.
* NEW: Optimize → Topic clusters — mark a pillar page and see which supporting pages link to it and which it links back to, with a one-click fix for each gap.
* NEW: Schema → import structured data from a URL (private and local addresses are refused).
* NEW: a fallback XML sitemap when WordPress's own is unavailable.
* FIX: with no SEO plugin active, a search description set by Amaso was stored but never printed in the page head. Amaso now prints a single description tag in that case only; with Yoast, Rank Math, All in One SEO or SEOPress active it writes to their field and prints nothing. Unfilled template values such as %%excerpt%% are never printed.
* FIX: plain Gutenberg content was wrongly detected as built with a page builder.
* FIX: restoring or writing content through Amaso could corrupt backslashes and accented characters in some cases.
* FIX: uninstall now removes all of Amaso's tables, options and saved conversations.

= 1.0.20 — 2026-09-27 =
* NEW: Assistant tab (Amaso → Optimize → Assistant) — a chat built into Amaso's own admin, backed by the same tools the MCP server exposes to an outside client. It runs your own configured Claude key server-side, so no external app or MCP client is needed for day-to-day questions and actions; every tool call it makes is shown in the conversation as it happens. Free, like the rest of the BYOK model.
* NEW: MCP/Assistant can now write a full blog article draft on a topic (grounded in your real business profile, always saved as a draft — never published automatically) and can preview then apply an FAQ section to help a page's GEO score, in the same reviewed-before-saved pattern the existing Content Audit fix flow already uses.
* NEW: Settings → AI Engines → MCP now has a one-click "Generate an Application Password for MCP" button, a "Test connection" button that verifies the connection live from the browser, and a ready-to-copy Claude Desktop configuration snippet.
* FIX: the MCP "Test connection" button could fail with an unrelated 401 because the browser's own logged-in session cookies were sent alongside the Application Password, triggering WordPress's cookie nonce check before the password was even considered.

= 1.0.19 — 2026-09-27 =
* NEW: MCP server, off by default. Turn it on in Amaso → Settings → AI Engines and paste the connection URL into Claude, ChatGPT or any other MCP client (using a WordPress Application Password — no separate key to create). Your assistant can then read this site's GEO score, tracked keywords, citation stats, business-page audit, site structure and real searches, and — only when you ask it to and see it happen in the conversation — track a keyword, set a page's search description, or add structured data through the guided Schema builder. Free in both editions; nothing here is gated by plan.
* NEW: every MCP tool call is a single, explicit, named action, validated field by field before anything runs — there is no open-ended "do whatever seems right" tool.
* FIX: the business-pages audit occasionally returned a stale "limit" figure when serving a cached result for a smaller request than the one already cached.

= 1.0.18 — 2026-09-24 =
* FIX: activating the plugin now schedules the weekly automated check correctly. The weekly interval was not yet registered at activation time, so the schedule silently failed while the plugin recorded a next run that did not exist.
* SECURITY: opening the Content Audit page or the post editor no longer saves GEO scores. Scores are stored only when a post is saved, when you click "Rescan all" or "Re-analyse" (both nonce and permission checked), or by a background batch after an update.
* SECURITY: the GEO score saved alongside a post no longer depends on an optional nonce; it reads no request input and checks that the user can edit the post.
* IMPROVED: the Content Audit filter tabs carry a nonce.
* IMPROVED: the AI Citations screen's script and styles are now loaded as files through WordPress instead of inline tags; JSON-LD is printed with WordPress's own script-tag helper.
* FIX: the Terms & privacy link in this readme pointed to a page that does not exist.

= 1.0.17 — 2026-09-24 =
* FIX: WordPress Plugin Check reported four errors in the guided Schema builder (a text-cleaning function WordPress discourages). They are fixed: text typed into a Schema form field is now cleaned with WordPress's own function.
* IMPROVED: code-quality clean-up flagged by Plugin Check, with no change in behaviour. Queries on the plugin's own tables now state in place why they are safe, the two places that read posted data say how it is cleaned, and the requests that ask PHP for more time (asking several AI engines, scanning many pages) go through one helper instead of five copies.
* FIX: the kinds of business offered in the guided Schema form (Restaurant, Hotel, Pharmacy…) can now be translated; they could not be extracted before.
* FIX: on the Lite edition, Settings and the setup checklist no longer raise PHP "undefined array key" warnings (visible with WordPress debugging on) when there is no Search Console detector to describe.

= 1.0.16 — 2026-09-22 =
* FIX: Schema Markup ("Structured data about the business is switched off") no longer accuses your own settings when it isn't the cause. Every check is now read from the published page itself — the one search engines and AI actually receive — so a site where Yoast SEO, Rank Math or another SEO plugin already writes the structured data is credited for it by name, instead of Amaso claiming there is none.
* NEW: Guided Schema — add LocalBusiness, Service, Product, Event, FAQ, How-to or Software structured data by filling in a form (name, address, phone, opening hours, prices, questions and answers…), with one clear message per missing or wrong field. No JSON-LD to write, and it works whether or not an SEO plugin is also active.
* FIX: on a page built with a page builder whose content only exists on the public site (Divi 5 and similar), Amaso now reads the published page itself for its Schema check too, instead of silently seeing nothing.

= 1.0.15 — 2026-09-21 =
* FIX: pages built with a page builder that renders only on the public site (Divi 5, Bricks, Oxygen…) showed "0 words" and a score of 16 in Content Audit, because their content does not exist in the admin. Amaso now reads the published page as a visitor gets it (main content only, without menu, sidebar or footer), keeps the result for twelve hours and never asks more than a few pages per screen. If the server refuses to reach its own address, the page is marked "not scored: could not be read" instead of "Poor".
* FIX: a page that is only a grid of articles (a blog page built with a page builder), and the WooCommerce Shop page, are no longer scored or listed among your business pages: they are listings, judged through what they list.
* FIX: on a site where Yoast SEO, Rank Math or AIOSEO writes the structured data, the homepage check no longer says "Auto-Schema is switched off": the SEO plugin owns the schema.

= 1.0.14 — 2026-09-21 =
* NEW: "How your site is organised" in Content Audit. Amaso now reads how WordPress serves your content: which page is the homepage, whether a Blog page lists your articles, your categories and tags, the content types your theme or plugins add, and whether tag, author and date pages can be indexed. It keeps three kinds of address apart: pages (the business), articles (your topics) and listing pages.
* NEW: it flags what goes wrong when they are mixed up: a homepage that is only a list of latest articles, a homepage and Blog page that are the same page, articles with no listing page, articles left in the default category, tags that hold a single article, category pages with no introduction, author and date pages that repeat the Blog page, and a missing XML sitemap. A one-page site with no articles gets no findings.
* IMPROVED: nothing is guessed. Indexing is read from Yoast SEO and Rank Math settings; with another SEO plugin it says "not readable" instead of blaming a setting it cannot see.
* NEW: each finding becomes an Action Plan task and is marked verified once it is no longer raised.

= 1.0.13 — 2026-09-21 =
* NEW: "What people actually search". Amaso can show the real searches around your topics from Google Autocomplete (what people type; free, no key, in your language; a local business is asked about its city, then its country). It is available in Setup wizard step 2 and on the Keywords page, only runs when you click, and gives no search volume or difficulty because Autocomplete has none. Documented under External services.

= 1.0.12 — 2026-09-21 =
* NEW: "Fix first: your business pages" in Content Audit and the Action Plan. Homepage, services, contact, pricing, about and FAQ pages are checked for what each one must say — a search description, enough text, a phone number a crawler can read, a way to write (form, email or WhatsApp), prices, a clear next step, your city — and listed most urgent first. Articles are not part of this list.
* NEW: pages are listed most urgent first: homepage, contact, services, pricing, about, then FAQ. Amaso makes no claim about how Google treats a page unless it has real data for it.
* NEW: the Action Plan tracks these pages one by one and marks a page verified once a re-audit finds nothing left to fix.
* FIX: the homepage is scored on its own text — the titles and excerpts of the articles a theme lists on it no longer count as homepage content.

= 1.0.11 — 2026-09-21 =
* FIX: the setup wizard and Business Profile now read the site the way its owner describes it — SEO title and description, tagline, menu, page and product names, headings — instead of counting words across page-builder text. A WordPress-plugin SaaS is no longer classified as a café, and "chatgpt perplexity" / "inside wordpress" are no longer suggested as keywords.
* FIX: the business type is only pre-selected when the scan is confident (and shows the words it was based on). Otherwise the wizard asks, because whatever it shows is saved as the business profile that every other feature trusts.
* IMPROVED: keyword suggestions carry the reason they were chosen ("your homepage SEO title", "your menu"), only the strongest are pre-checked, the business's own city is added once (not "… Douala Douala"), and keywords are saved in the site's language instead of always "en". English and French sites are supported.
* FIX: GEO Score and Content Audit no longer confuse pages and articles. Each item is judged as what it is (article, homepage, service page, product, about, contact, pricing, FAQ) — a Contact page is no longer asked for an author bio and external citations. Legal, cart, login and account pages are not scored, so they never appear as "poor content"; Autopilot no longer proposes fixes for them.
* NEW: Content Audit has Pages / Articles / Products tabs and a "Not scored" list.
* NEW: a saved API key can be replaced or removed from Settings → API Keys (Remove asks for confirmation).
* IMPROVED: business-type labels no longer carry emoji.

= Earlier changes (undated) =
* FIXED: Remove a request header rejected by WordPress Playground networking, which caused HTTP 400 on manual/automatic price checks. Preserve the cache-busting URL, validated catalogue and consent settings.
* FIXED: Keep the last verified plan prices when the cache ages or a request fails; show the last successful check and validate complete responses, including zero-priced plans.
* NEW: Explicit, reversible automatic price checks on Upgrade page visits (12 hours), off by default; manual checks remain available.
* CLARIFIED: Preserve the existing successful keyword-and-engine batch quota unit (at least one stored variant), separate it from 1–5 variant requests and possible retry/search costs, and explain that failed batches do not consume AMASO successful-batch quota. Lite remains unlimited.
* DOCUMENTATION: Reconcile Lite's included local/BYOK features and remove obsolete Lite keyword, market and citation quotas. Separate Autopilot, GSC/GA4, Share of Voice and PDF reporting from Lite; provider charges remain separate.
* CORRECTED: Describe scores as heuristic page checks and distinguish citations, crawlers, referrals and business outcomes. No ranking, AI-indexing, conversion or revenue guarantee is made.
* PRIVACY: Document optional provider processing, background schedules, public output, stored configuration/private notes, export limits and IndexNow's default-off opt-in. Retain the explicit public-price check and disclose request metadata.
* DOCUMENTED: Local action plan with baseline/latest evidence, private notes, user IDs and a journal capped at the latest 100 events; current notes/statuses are stored separately.
* FIXES DOCUMENTED: Exact-host referral attribution, durable business corrections, passive Divi content extraction and explicit query-filter preservation.
* Historical entries below are retained as release history; the current sections above describe the updated behavior.

= 1.0.10 — 2026-09-08 =
* CHANGED: Amaso now has its own dedicated domain, amasoai.com — replacing fosiarw.com (Fosia Ltd's agency site) as the license/pricing server referenced by this plugin, and fokwasiaka.com (the developer's personal domain) as the Author URI. No functional change for Lite users: this build still makes zero outbound calls except the two documented opt-in exceptions (your own AI provider key; the "Check current prices" button), which now point at amasoai.com instead of fosiarw.com.

= 1.0.9 — 2026-09-07 =
* NEW: SEO Rankings now has a "Striking Distance" panel — active keywords currently ranking #11-#20 (page 2), the cheapest wins available, instead of only showing a raw list mixed with harder long-shot keywords.
* NEW: Business Profile's Deep Scan results now include a "Manual action list for the GEO specialist" — concrete, numbered to-dos (write the N missing meta descriptions, connect GSC, review auto-extracted keywords for generic/template noise) instead of raw counts a human has to interpret themselves.
* FIX: a rejected/expired AI provider API key now shows an actionable message ("this key was rejected — generate a fresh one and re-save it") instead of just echoing the provider's raw error text.

= 1.0.8 — 2026-09-07 =
* IMPROVED: reworded the plugin description and reordered the free feature list to lead with the SEO fundamentals (keyword tracking, schema markup, IndexNow) that make AI citation possible in the first place, instead of presenting AI-citation features as a separate, disconnected track.
* IMPROVED: llms.txt is now described honestly as an unofficial, not-yet-widely-adopted file — not "the standard" — and moved lower in the feature list, matching its actual (unconfirmed) adoption by AI crawlers today.

= 1.0.7 — 2026-09-07 =
* IMPROVED: the GEO Score meta box now shows a plain-language disclaimer — it's a heuristic on-page checklist correlated with AI citation, not a guarantee, and ranking well in classic Google search is still the main prerequisite.
* IMPROVED: the Dashboard's System Health panel now detects a WP-Cron event that is scheduled but overdue (a common failure mode on low-traffic shared hosting where WP's pseudo-cron never actually fires) instead of showing a false "Scheduled" green check.
* IMPROVED: Settings → API Keys now has a step-by-step "get a free Gemini key in under a minute" guide next to the Gemini field — no credit card required, the most accessible of the four supported AI providers.
* IMPROVED: the Dashboard now presents SEO ranking and AI citation tracking as one pipeline (SEO first, AI citations second) instead of two unrelated charts, with a short explanation of why the former drives the latter.

= 1.0.6 — 2026-09-07 =
* FIX: removed `suppress_filters => true` from every internal content-scanning query (business profile scan, site discovery, llms.txt generation) — it bypassed other active plugins' query filters (e.g. a multilingual plugin's language filtering) with no real benefit, and Plugin Check flags it as an error. These queries now behave like a normal WordPress query.

= 1.0.5 — 2026-09-07 =
* NEW: the Upgrade screen has a "Check current prices" button — click it to fetch the live Amaso Pro/Starter/Agency prices from fosiarw.com instead of the numbers bundled with the plugin. Strictly opt-in: nothing is fetched automatically, and this remains the only page in Amaso Lite that ever contacts a Fosia server without you first adding your own third-party API key.

= 1.0.4 — 2026-09-07 =
* IMPROVED: full pass on Plugin Check's output-escaping findings — every dynamic value echoed in the admin UI (counts, icons, exception messages) now goes through `esc_html()`/`absint()`/`wp_kses()` at the point of output instead of relying on earlier, harder-to-audit escaping.
* IMPROVED: `parse_url()` → `wp_parse_url()`, `strip_tags()` → `wp_strip_all_tags()` (discouraged-function warnings).
* IMPROVED: a handful of `// phpcs:ignore` comments on already-safe, hardcoded-table-name queries were incorrectly placed (on the statement's first line instead of the line the linter actually flags) and were not suppressing anything — corrected.

= 1.0.3 — 2026-09-07 =
* FIX: two `%s` placeholders left unnumbered in a translatable string (missed in 1.0.2's translators-comment pass).
* IMPROVED: the Settings → API Keys layout — the Google Service Account card (JSON textarea + setup guide) is now full-width instead of being paired with a much shorter provider card, which left an awkward empty gap next to it.

= 1.0.2 — 2026-09-07 =
* FIX: Deep Scan (full-site content analysis) is now genuinely unlocked in this build — it's pure local computation with no external service and no cost to provide, so it's no longer gated behind a plan check.
* FIX: this build no longer deactivates Amaso Pro (or vice-versa) automatically — an incompatibility notice with a one-click link is shown instead, so only the site admin decides.
* FIX: an unrelated helper plugin used on the developer's own site (`site/amaso-docs-cpt`) was accidentally bundled into this ZIP — removed from the build entirely.
* FIX: two broken links in the External Services section of this readme (IndexNow/Bing privacy policy, Perplexity terms of service) now point to the correct, live pages.
* FIX: a manually-entered JSON-LD schema value could break out of its `<script>` tag; now escaped with `JSON_HEX_TAG` wherever schema JSON is saved or displayed.
* FIX: added missing `sanitize_*()` calls on a handful of raw `$_SERVER`/`$_POST` reads, and added the `translators:` comments required by every translatable string that has a placeholder.
* IMPROVED: `load_plugin_textdomain()` removed (discouraged since WP 4.6 for wp.org-hosted plugins — translations are auto-loaded by core).
* IMPROVED: "Tested up to" bumped to 7.1; plugin name in this readme now matches the plugin header exactly.

= 1.0.1 — 2026-09-04 =
* FIX: removed every locked/upgrade-prompt control from the free build (AI Suggestions, Deep Scan, Content Audit AI-fix, AI Citation article generation, the Intelligence Engine dashboard preview) — features not included in this build are simply not shown, instead of appearing as a clickable but paywalled control.
* IMPROVED: keyword tracking and target markets are no longer capped — both are pure local computation with no cost to provide for free.
* IMPROVED: all inline `<script>`/`<style>` blocks in the admin UI now go through `wp_add_inline_script()` / `wp_add_inline_style()` instead of being echoed directly, as recommended by the WordPress.org Plugin Check.
* FIX: a gettext call using a ternary as its text argument (untranslatable) is now two separate, translatable strings.
* Chart.js updated to 4.5.1.
* Documented all third-party services (IndexNow, and the optional bring-your-own-key OpenAI/Claude/Gemini/Perplexity used by the Prompt Simulator) in this readme.

= 1.0.0 — 2026 =
* Initial WordPress.org release of Amaso Lite: automatic JSON-LD schemas, llms.txt generator, AI crawler detection, GEO Score, Business Profile auto-scan, keyword tracking, manual SEO ranking log, IndexNow, data export, WordPress Privacy integration.
