Skip to content
Gaurav TiwariChangelog

Plugin changelog

Core Support

A WordPress helpdesk with an agent inbox, a customer portal, and configurable email replies.

Latest
0.9.8
Releases
28
Updated
October 18, 2026
  1. Stable

    0.9.8

    A collection's version can follow its changelog, and addresses with spaces or other encoded characters work again.

    Read full notes 4 changes
    • Added A collection's version can follow a changelog. Collections → a collection → Current version now offers No version, Type a version (as before), or From a changelog: the current version of the changelog you pick, which updates with each new release, so docs never show an old version again. The changelog linked to the collection is listed first, each with its current version. A doc's own version still wins; if the changelog is removed or has no releases yet, the typed version shows.
    • Fixed Changelog sources with spaces in the file name stopped syncing. Saving a changelog removed the percent-encoding from its addresses, so .../blob/main/Commerce%20Bridge%20for%20Hoster.txt was stored as .../CommerceBridgeforHoster.txt and the sync got a 404. "Check source" still worked, because it never saved. Addresses now keep their encoding, and a file address is no longer encoded twice when it is fetched from GitHub, GitLab, Bitbucket, Gitea or Forgejo (%20 became %2520). A changelog saved with the broken address needs its address entered again once.
    • Fixed The same encoding loss affected a collection's Product page, Community and Source code links and a doc's Old addresses, which are now kept as entered.
    • Fixed Docs with non-Latin or other encoded characters in their address redirected to themselves. The check that sends a doc to its one canonical address read the requested address without its encoded characters, so it never matched and the page looped. It now compares the address as requested.
  2. Stable

    0.9.7

    New connected sites never vanish.

    Read full notes 1 change
    • Fixed A new connected site could vanish. About 1 in 300 new connected sites got an id made only of digits, which WordPress stored as a number, so Core Support never listed the site and its contact form, portal and docs answered "not connected". Site ids now always contain a letter. Sites created before stay as they are.
  3. Stable

    0.9.6

    Choose whether your theme's styles and scripts load on docs pages.

    Read full notes 4 changes
    • Added Your theme on docs pages. Settings → Header and footer has a new card that names the active theme, and its parent when it is a child theme, and says when Core Support recognizes it (built-in rules that also cover its add-on plugins and generated CSS). Two switches, both off by default, load the theme's styles or its scripts on docs pages:
    • Added Styles: the theme's stylesheets, theme.json global styles and Additional CSS load, so its fonts and colors reach the docs.
    • Added Scripts: the theme's scripts load and run.
    • Added Either way, the theme's header, footer and other page markup stay out: from the theme's head and footer code, only the chosen style or script tags come through. Changelog and portal pages still load only Core Support's files.
  4. Stable

    0.9.5

    Docs pages leave other plugins' video players alone.

    Read full notes 3 changes
    • Fixed Core Support restyled video players inside docs. A player from another plugin, such as TruePlayer, Presto, Plyr or Video.js, got Core Support's text-field look on its volume and seek sliders (border, padding, white background, 36px height), Core Support's fonts and focus outline on its buttons, and doc styles on its links, menus, posters and video. A forced auto height and 16:9 ratio could also resize its video or embedded YouTube frame. Docs pages now skip any element that holds media together with player controls, so the player looks as it does on any other page. Ordinary doc content keeps its styles.
    • Fixed Sliders and file pickers never get text-field styles. Range, file, submit, button, reset and image inputs are left as their own plugin or the browser draws them, on every Core Support page.
    • Added csp-not-prose class. Add it to any block in a doc (Advanced → Additional CSS class) to keep Core Support's doc typography off that block and everything inside it.
  5. Stable

    0.9.4

    Changelogs sync from private GitLab, Bitbucket, Gitea and Forgejo repositories, and every settings section links its guide.

    Read full notes 5 changes
    • Added Tokens for GitLab, Bitbucket, Gitea and Forgejo. Settings → Changelogs has a token for each service beside GitHub's, and an address for a self-hosted GitLab or Gitea/Forgejo server. A changelog can sync from a repository, a folder or file in one, or its releases on any of them. Each token is sent only to its own service. Bitbucket has no releases, so it reads changelog files only.
    • Added Exact token permissions in Settings. Each token field names what the token needs: Contents: Read-only on GitHub, the read_api scope on GitLab, Repositories: Read on Bitbucket, read:repository on Gitea and Forgejo.
    • Added A question mark beside each settings section opens its guide on gauravtiwari.org in a new tab, and a tooltip names the guide. It is on Settings, Connections, Connected sites, Integrations, Chat, Diagnostics and License. The core_support_docs_url filter points the links elsewhere, or hides them when it returns an empty string.
    • Fixed A GitHub token without file access read as "needs an access token". A fine-grained token that can see a repository but was not given Contents now gets "The GitHub token can see the repository but not its files", with the setting to change. Other services name the permission their token needs.
    • Fixed A later "not found" hid a refused token. When the first changelog file was refused and the next names were not found, the sync reported the last 404. It now reports the refusal. A 404 with a token says the token may not cover the repository.
  6. Stable

    0.9.3

    The agent inbox follows the support portal's header and footer.

    Read full notes 1 change
    • Fixed The inbox ignored Settings → Header and footer. The agent workspace always showed the logo, the brand name and "Core Support / By Gatilab" in its footer, whatever the support portal pages were set to. It now uses the Support portal pages settings: the logo, the site name (hidden from view but still read out when switched off), the label beside it, and the footer text, credit and links. The version badge and the agent links stay.
  7. Stable

    0.9.2

    Chat keeps private docs private, a Support Manager role, privacy tools for tickets, an opt-in clean uninstall, and clearer wording across the help desk.

    Read full notes 14 changes
    • Security Chat no longer learns content meant for some readers only. Password-protected posts and docs in collections set to "Signed-in visitors" were learned like any other post, so Chat could quote them to anyone. Chat now never learns them, forgets a collection's docs the moment it is closed to signed-in visitors, and learns them again when it is opened. On update, everything restricted that Chat had learned is forgotten once.
    • Added Support Manager role. Support Agent now works tickets, incoming mail, Chat conversations and docs. Support Manager does all of that plus Settings, Connections, Connected sites, Integrations and Diagnostics. Updating moves existing Support Agents to Support Manager, so nobody loses access; new agents get tickets only.
    • Added Tickets in WordPress's privacy tools. Tools → Export Personal Data includes every ticket opened with the address, with its public conversation, and email received from it. Tools → Erase Personal Data removes the customer's name, address, subjects, own messages, attachments and original emails, and keeps the team's replies.
    • Added Settings → Data: delete everything on uninstall. Off by default. When on, deleting Core Support from the Plugins screen removes its tables, settings, docs, changelogs, collections, private attachment files, roles and scheduled tasks on that site, and gives back the homepage if the support page held it. Files in an R2, S3 or Bunny bucket stay there.
    • Added Conversation titles can use no model. The Conversation titles menu has "No model: first words of the question".
    • Added A warning on Core Support screens when attachment storage needs attention, since new files go to the database until it is fixed.
    • Fixed Saving Chat settings switched model-written conversation titles off. The setting had no field, so every save turned it off. It now follows the Conversation titles menu.
    • Fixed The core_support_chat_rate_limit filter did nothing. Every Chat limit now goes through it: chat_session, chat_ip, chat_global and contact_ip, and a limit of 0 turns a bucket off.
    • Fixed Chat introduced itself with an empty name when its own brand name was blank. It now uses the help desk brand, which falls back to the site title.
    • Fixed Chat with no key for its answer model showed its button and then failed every question. The button now stays hidden until the provider has a key, and the warning on the Chat screen says so.
    • Fixed The learning card counted posts with nothing to learn. A published post with no text of its own, such as a docs section that only groups its docs, can never be learned, yet it counted as published, so Docs read 172 of 202 on a site with 30 such sections. These posts are now recorded when Chat finds nothing to learn in them and left out of the card's counts, the Knowledge tab's Published column and the "Learn all now" summary; the card says how many are not counted. A post that gains text is learned and counted again. On upgrade, published posts that were checked but never learned are checked once more by the 30-minute check.
    • Fixed The hourly limit on new tickets and replies said "Hourly demo limit reached". It now says "You have reached the hourly limit" and can be translated.
    • Fixed Delivery activity said "Handed to WordPress mail" even when Emailit, Resend, Brevo or SendGrid sent the email. It now names the mail service in use.
    • Fixed The Logo help text described the old fallback, and the connected-site portal switch asked for WordPress mail when any mail delivery except Capture only works.
  8. Stable

    0.9.1

    The Cloudflare relay Worker delivers mail again.

    Read full notes 1 change
    • Fixed The Cloudflare relay Worker never delivered a message. On Cloudflare, the bundled tools/mail-relay Worker failed every delivery before sending it: it asked fetch for redirect: 'error', which Workers rejects, and called the global fetch as a method of its dependencies, which Workers refuses as an illegal invocation. Each email was retried three times and then forwarded to the fallback address, or rejected without one, so no relayed mail became a ticket. The Worker now fetches with redirect: 'manual' (a redirect still counts as a failed delivery and is not retried) and calls fetch directly. Redeploy the Worker from this version; nothing changes in WordPress or in the signature format.
  9. Stable

    0.9.0

    Docs on your other websites, share buttons, plugin assets on docs pages, badges in any colour, and the current version in every changelog passage Chat learns.

    Read full notes 6 changes
    • Added Docs on a connected website. Core Support → Connected sites → a website → Docs on this website shows the docs collections ticked for it on that site, from one script tag that works on static sites and site builders. The docs open in a frame that grows with its content and keeps search, navigation, videos and code blocks working. Only the ticked collections appear there: search, the docs home and the navigation leave the others out, and any other collection sends the reader back to the docs home. Only that site's addresses may frame them. Collections that need sign-in cannot be shown. Embedded pages are not indexed, so the docs site keeps its search ranking. Each collection also has its own start address, for a product's own site.
    • Added Share buttons on docs and changelogs (Settings → Header and footer → Sharing): X, LinkedIn, Facebook, Bluesky, Threads, Reddit, WhatsApp, email and copy link, as plain links to each network's share page with no scripts from them. Off until you tick networks.
    • Added Badges in any colour. A badge's colour can be your own: a hex code (#7c3aed), an rgb(), hsl() or oklch() value, or a CSS variable from your theme (var(--brand)), mixed so it reads in light and dark mode. The badges editor now lists the built-in badges (New, Improved, Fixed, Removed, Deprecated, Security, Breaking) first, to recolour them or add words, with a colour picker for your own colours.
    • Changed Docs pages leave out only your theme. Every plugin's and block's styles and scripts now load on docs pages, so video players (TruePlayer, Presto and the like), Code Block Pro and analytics work. What goes is the theme's: files in the theme's folder, handles named after it, and rules for popular themes and their pro add-ons (Astra, GeneratePress, Kadence, Blocksy, OceanWP, Neve, Hello Elementor, Divi, Avada, Bricks, Storefront, Flatsome and more, and Marketers Delight); WordPress's theme layer (theme.json global styles, classic theme styles, Additional CSS); and code the theme hooks into the page head and footer. Block plugins whose names start like a theme's, such as GenerateBlocks and Kadence Blocks, stay. Settings → Header and footer → Other plugins on docs pages lists plugin handles to leave out as well, and the core_support_theme_handle_prefixes filter adjusts the theme rules; on docs pages the core_support_standalone_handles filter keeps a theme handle that would otherwise go. Changelog and portal pages still load only Core Support's styles and scripts.
    • Changed Code blocks that bring their own highlighting and copy button (Code Block Pro and the like) keep their look on docs pages and get no second copy button.
    • Fixed "What is the current version?" still answered with an old release on a changelog with many releases. On gauravtiwari.org, "what is the current Stackless version?" found the 1.0.4 release passage, not the passage naming 1.5.1, and Chat answered 1.0.4. Every passage of a changelog now starts with "{Product} changelog (current version X, released D)", so whichever release search finds, the current version comes with it. Learned changelogs are marked once on upgrade and learned again by the next 30-minute check.
  10. Stable

    0.8.5

    Chat keeps what it learned current on its own, and learns post types without an editor, such as a site's tools, from their excerpt, terms and custom fields.

    Read full notes 9 changes
    • Added Excerpts, terms and custom fields. Every learned post now also gives Chat its excerpt, its terms and its custom fields (Advanced Custom Fields or Secure Custom Fields, and meta registered for the post type), so post types without an editor are learned at all: before, a post with no content was skipped. A field group tab that opens with an on/off field that is off is left out, so a switched-off deal is never quoted; underscore fields, images, files, passwords and hash-like values are never read. Chat → Knowledge → Custom fields to leave out lists more. Filter core_support_chat_post_fields.
    • Added A custom field changed without a post save (an import, WP-CLI, the REST API) marks the post for the next check, and so does a change to any of its terms.
    • Changed Changes are learned every 30 minutes, and only what changed. Publishing or updating a post of a learned type, a store price, option or license change, a changelog's text, synced release dates, pre-releases or kept history, and a doc moving to another collection (or its collection being renamed) now mark the post as changed instead of learning it at once. A new 30-minute check (core_support_chat_sweep, schedule core_support_chat_30min) learns marked posts again, oldest change first, then posts modified since they were learned, then published posts of a learned type that were never learned, so a backlog of missed posts never holds back a change just made. Each post is embedded only when its passages differ from what was learned, so an unchanged post costs no embedding request. Up to 25 posts a check and 20 seconds (core_support_chat_sweep_batch, core_support_chat_sweep_seconds); the rest waits for the next check. Each check also compares up to 10 unchanged learned posts, oldest first, for changes no hook reports (core_support_chat_sweep_checks, 0 turns it off), and forgets learned posts that are no longer published. Three embedding failures in a row end a check; a post that keeps failing moves behind the others.
    • Changed The daily store check now compares every learned product with what Chat learned and marks the changed ones, instead of queueing every product.
    • Changed Unpublishing, trashing and deleting still forget a post at once. "Learn all now" still learns at once.
    • Changed What Chat has learned shows on the Knowledge tab only, no longer above Conversations.
    • Changed The learning card shows how many posts are waiting for the check and what the last check did. Filter core_support_chat_watched_meta lists post meta whose changes mark a post.
    • Fixed "What is the current version?" answered with an old release. Every changelog release is its own passage, and none said which one is newest, so Chat answered from whichever release matched the question best. Each changelog now starts with a passage that names the current version and its date, the newest pre-release when there is one, and the six most recent releases. On upgrade, every learned changelog is marked once so the next check learns it again.
    • Fixed A post type with no pages of its own was offered as a source link that led nowhere; it no longer shows one.
  11. Stable

    0.8.4

    Your own header and footer on the docs, changelog and support portal pages, and smaller, deferred assets.

    Read full notes 3 changes
    • Added Header and footer settings. Settings → Header and footer has a card for each of the docs, changelog and support portal pages. Show or hide the logo and the site name, change or remove the label beside them, show or hide the docs search box, and add links and buttons to the header, each a plain link, a button or a primary button, in any order. The footer can be hidden, can carry its own text such as © {year} {site}, can show or hide the footer credit, and can list its own links. Addresses can be full https:// addresses, paths on the site, or Core Support pages such as {docs} and {support}. On phones, plain header links move into a menu. The defaults match the pages before this release.
    • Added Filters core_support_header_links and core_support_footer_links change a page's links.
    • Changed Minified, deferred assets. Release builds include a minified copy of every stylesheet and script (a third smaller before compression), served unless SCRIPT_DEBUG is on. The portal and block scripts and the admin scripts now load deferred, like the docs and changelog scripts already did. Embed snippets for connected sites name the minified scripts; snippets copied before keep working.
  12. Stable

    0.8.3

    Custom badges for changelog labels.

    Read full notes 2 changes
    • Added Custom badges. Settings → Changelogs has a Custom badges editor: a label (such as Beta or Docs), a colour (green, blue, orange, red, yellow or gray) and other words that show the same badge, with a live preview. Changes labelled with those words, as [Beta], Beta: or under a ### Beta heading, show the badge on changelog pages, in feeds and the visual editor's suggestions, and come through the API as category custom-{label}. Custom words win over built-in ones, so Docs can be a badge of its own; a badge named after a built-in one (New, Improved, Fixed, Removed, Deprecated, Security or Breaking), such as Fixed | green | patch, changes its colour and adds words to it, and its category stays fixed. Up to 20 badges, stored one per line as Label | colour | other, words, which also works without JavaScript.
    • Added Filters core_support_changelog_category and core_support_changelog_tone set a label's badge and colour.
  13. Stable

    0.8.2

    Bring existing courses and changelogs over: FluentCommunity courses become docs, other changelog sites become kept release history, and every docs collection gets clean addresses of its own.

    Read full notes 4 changes
    • Added Import FluentCommunity courses as docs. wp core-support docs import fluentcommunity <course> turns a course on this site into a collection: sections keep their titles and order, each published lesson becomes a doc, and links between lessons (also into courses imported earlier) point at the new docs. --retire hides the course in the community and redirects its lesson and course addresses to the docs, although FluentCommunity still answers them. An "&" in a section title no longer turns into "amp" in its address.
    • Added Kept release history for changelogs. wp core-support changelog history <url> --changelog=<slug> keeps every release from a published changelog page (one that lists releases as <article class="release">, following its /page/N/ pages) beside the changelog's own or synced text. Syncing never removes history, and where a version is in both, the history's notes show. Feature headings become badged changes with their details below, and the one-line summary is not repeated. Chat learns the full history, one passage per release.
    • Fixed --no-images on wp core-support docs import was rejected as an unknown parameter; it now leaves image addresses as they are.
    • Fixed Doc addresses are resolved inside their collection. Two collections can each have a "Getting started" section at /docs/{collection}/getting-started/ instead of the second becoming getting-started-2, and an address always opens the doc in the collection it names. Imported top-level docs keep their clean slug, and plain-permalink doc links name the collection too.
  14. Stable

    0.8.1

    Chat finds the right passage among all of a site's docs, and relearning never leaves it without answers.

    Read full notes 6 changes

    Upgrading

    • Changed Search reads every passage. Each question is compared with every learned passage instead of a shortlist of about 50, and that ranking is combined with the database's word search, so a passage that names the exact product, setting or error code still comes first. Only the best passages' text is read. With a persistent object cache (Redis or Memcached), the vectors are kept there. Above 5,000 passages at 512 dimensions (proportionally fewer with longer vectors, and 2,000 for keyword search without FULLTEXT), Chat compares a shortlist as before; the core_support_chat_full_scan_max_chunks filter changes the limit. See the [retrieval benchmark](docs/chat-retrieval-benchmark.md).
    • Changed Smaller vectors. OpenAI text-embedding-3 and Voyage 4 search models store 512 numbers per passage instead of 1,536 or 1,024, so search reads a third to a half of the data, at a small cost in accuracy. The core_support_chat_embedding_dimensions filter sets another size, or 0 for the full one.
    • Changed Every passage knows its doc. Passages start with the doc's title and the product it documents ("Core Forms › Install the plugin"), both for search and for the model, and follow the doc's H2 and H3 sections instead of breaking in the middle of one. A long section's later passages repeat its heading. Text from neighboring blocks no longer runs together.
    • Changed A new search model keeps Chat answering. After you choose another search model, every post is learned with it in the background while Chat keeps answering with the old one; Chat switches once every post is learned, then deletes the old passages. The learning card on the Knowledge and Conversations tabs shows the progress. Before, answers stopped until everything was learned again by hand.
    • Fixed Safe relearning. A post's passages are replaced in one database transaction, so a failed save keeps the old ones and a question never meets a half-written post. One process learns a post at a time; a post saved while it is being learned is learned again right after. Duplicate passages left by earlier versions are removed, and the database now refuses new ones.
    • Fixed Updating from 0.8.0 learns every post again in the background, with one embedding request per post for OpenAI and Voyage search models. Chat answers from the stored passages until it finishes. While Chat is off, this waits until it is turned on.
  15. Stable

    0.8.0

    Chat answers more directly and on point, and learning shows its progress as it happens.

    Read full notes 11 changes
    • Added How Chat answers. Chat → Settings has a new card: answer length (short, balanced or detailed), what Chat answers questions about (this site and its products, or anything with the site's content first), asking one short question when a question is unclear, suggesting a person for accounts, orders, billing, refunds and bugs, and your own rules, one per line (up to 20). Your rules win over the built-in ones, except never asking for passwords or keys.
    • Added Built-in answer rules. Chat answers the question in its first sentence, uses the docs for facts about the site and copies names, prices, menu paths and setting labels exactly, answers for the product, plan or version the visitor means, writes steps as a numbered list, replies in the visitor's language, and ends without filler.
    • Added Limits in every answer. Each answer length has a word limit (about 80, 180 or 400 words) and a matching output cap, never above "Longest answer". Chat asks at most one question and adds at most two links per answer, never says it checked, changed or sent something, never promises refunds, prices, dates or features the docs do not state, keeps to the docs on legal, tax, medical and security questions, and ignores instructions hidden in docs or messages that try to change its rules.
    • Added A model and thinking level for each task. Chat → Settings sets the thinking level for answers (off, low, medium or high) and, for follow-up questions and conversation titles, its own model and thinking level. Follow-up questions such as "what about teams?" can be rewritten by a model into a full search, so the right docs are found; the built-in rules stay the default. Test connection checks every chosen model once.
    • Added Store data in Chat's knowledge. WooCommerce products, FluentCart products and Easy Digital Downloads are learned with their store data, not only their description: price and sale price, options and their prices, SKU, stock status, attributes, categories, subscription terms (billing period, trial, sign-up fee), and license terms (sites per license, validity, current version, WordPress and PHP requirements). Stackless subscription and software licensing terms on WooCommerce products are included while those Stackless modules are active. Products are re-learned when their prices, options, stock status or terms change, and once a day for changes no hook reports; unchanged products are skipped without an embedding call. The core_support_chat_product_facts filter adds facts for any post type.
    • Added Learn all now, five posts at a time. The Knowledge tab learns a post type in batches of five while the screen is open, and the Learned column, the summary and the progress bars update after every batch. A failing key stops the run with the provider's reason instead of working through every post. Without JavaScript the old background queue still runs.
    • Fixed Token usage on streamed replies. OpenAI and DeepSeek streams now ask for usage, Claude streams count input tokens from the start of the reply as well as output tokens, and a reply from a provider that sends no usage is estimated from its text, so the daily token budget holds. Follow-up rewrites and conversation titles count toward the budget too.
    • Fixed Thinking level for Claude. The level is sent as Claude's effort, thinking is switched off where the model allows it (Claude Haiku 5.5, Sonnet 5 and Opus 5; Sonnet 5.5 drops up-front thinking), and Opus and Sonnet 4.6 to 4.8 think when a level above Off is chosen. Before, the setting did nothing for Claude.
    • Fixed Room to think. Thinking tokens count toward a reply's output cap on every provider, so answers, titles and connection tests get extra output room when thinking runs, and a thinking model no longer spends the cap before it writes a word.
    • Changed Background learning runs in batches of five posts instead of twenty, and the Learned column and summary update while jobs are waiting.
    • Changed "Extra instructions" is now "Tone and extra instructions" under How Chat answers, added after your rules.
  16. Stable

    0.7.0

    Docs, Changelogs and Chat join the help desk: product documentation at /docs/, release history at /changelogs/ synced from GitHub or written in wp-admin, and an AI assistant that answers from the docs and hands over to a ticket. Telegram joins team alerts.

    Read full notes 25 changes
    • Added Changelogs at /changelogs/. One changelog per product or service and every release across products, with a product list, Stable only filter, an address per release (#v1.2.0), RSS and a JSON API. Each changelog's releases are one text in WordPress readme or Markdown style, written in wp-admin or synced every 24 hours (customizable) from a readme.txt, CHANGELOG.md or changelog.txt at any address, a GitHub repository (private ones with a token) or its GitHub releases, or wordpress.org. Undated versions take their dates from GitHub releases. Labels such as [NEW], [IMPROVED], [BUG FIX] and [REMOVED] become badges. See [integrations](docs/integrations.md#changelogs-release-history-at-changelogs).
    • Added Changelog editor. The Releases panel starts with a choice: write releases here, or sync them from GitHub or a file. Written changelogs have a visual editor (release cards with version, date, summary and labeled changes, Enter for the next change) and the same changelog as text, kept in step through the site's own parser. Synced changelogs show what an address points at, Check source to preview it before saving, which token applies, the schedule, a status card with the file being read, Sync now in place, and the synced releases read-only.
    • Added One GitHub token for changelogs. Settings → Changelogs holds a fine-grained token used for every changelog synced from GitHub (private repositories included) unless a changelog sets its own. Saving it re-checks failed changelogs at once, and failed syncs are retried hourly.
    • Added Current models built in: GPT-6 Astra, GPT-6.1 Sol and GPT-6 Luna (default), Claude Fable 5.1, Opus 5.5, Sonnet 5.5 and Haiku 5.5, and DeepSeek V4.1 Flash, each with the previous generation. GPT-6 models are sent as reasoning models, "Off" reasoning becomes "low" for Astra and Sol, and Claude 5 models are sent without temperature.
    • Added Test connection for Chat. Chat → Settings sends a one-line test to the chosen chat and search models, with a key typed in the form or the saved one, and says whether each answered, how fast, and why not (refused key, unknown model, rate limit, server error). Nothing is saved and keys never come back.
    • Added Learning progress. The Conversations and Knowledge tabs show how much of the chosen content Chat has learned, per post type, and what is waiting; the bars update while learning runs.
    • Added Chat model lists stay current. With an API key saved, each provider's newest models and up to three previous versions are listed, refreshed daily.
    • Added Chat learns from any post type. Chat → Knowledge lists every public post type with what it has learned, Learn all now and Forget.
    • Added Chat placement. Choose where the chat button shows: every page, docs pages, support portal pages, the home page, single posts of each type, extra addresses (with * for a whole section), and addresses where it never shows. Docs and support pages are the default.
    • Added Footer credit. Settings → Branding sets the text that replaced "Powered by Core Support" on portal and docs pages, with an optional link, or hides it.
    • Added Portal and docs color mode. Visitors get a light portal, docs and chat widget by default; Dark and Automatic are options. The wp-admin workspace keeps its own color mode.
    • Added Docs at /docs/. Product documentation in collections, sections and pages with branded standalone pages, instant search, "On this page", previous and next, callout and steps block styles, "Was this helpful?" feedback, signed-in-only collections, redirects from old addresses, and a Docs insights screen for empty searches, unhelpful docs and stale pages. See [integrations](docs/integrations.md#docs-product-documentation-at-docs).
    • Added Chat. An AI assistant that answers from your docs, ported from Alpha Chat: OpenAI, Anthropic, xAI or DeepSeek, OpenAI or Voyage embeddings or keyword search with no extra key, streaming replies with source links, and "Talk to a person" handoff into a ticket with the transcript. One script tag embeds it on connected sites, with origins checked and conversations owned by a server-issued token. Encrypted keys or CORE_SUPPORT_CHAT in wp-config.php, a daily token budget, rate limits, message and turn caps, retention, and privacy export and erase. Core Support → Chat has settings, knowledge indexing, conversations and embed code.
    • Added Docs importers (wp core-support docs import): docs sites by sitemap or page, Markdown files and GitHub wikis, and wordpress.org readmes, as drafts. Native blocks that pass editor validation, images copied into the media library, links between pages rewritten, old addresses recorded for redirects, and safe re-runs that never overwrite edited or published docs.
    • Added Telegram team alerts. Alerts can go to a private chat, a group, a forum topic or a channel through your own bot. Settings → Team alerts checks the token with Telegram when you save it, and Find my chat lists the chats the bot has seen so nobody has to look up a chat ID. Customer text is escaped, link previews are off, and the ticket link is a button when the site uses HTTPS.
    • Added Alert settings in wp-config.php. The CORE_SUPPORT_ALERTS constant can hold any team-alert setting, including tokens, for one site or a map of blog IDs. Constant values show read-only and are never copied into the database.
    • Added The core_support_alert_channels filter lets add-ons register their own alert channels.
    • Changed Standalone pages (docs, portal, changelogs) use the system sans-serif when the font is set to "Theme font", since theme CSS is not loaded there.
    • Changed Docs and changelog pages have clear titles ("Documentation", "Product changelog", "Product 1.2.0 release notes") instead of archive titles.
    • Changed Chat settings are grouped into cards, checkboxes are tiles that follow light and dark mode, and selects keep readable text on hover in dark mode.
    • Changed Docs and standalone portal pages load only Core Support's CSS and JavaScript. Theme and plugin styles and scripts are removed, including styles WordPress 6.9+ moves into the head after the page is built; titles, meta tags, canonical links and JSON-LD stay. The core_support_standalone_handles filter keeps chosen handles.
    • Changed Dark workspace screens in wp-admin paint the whole page, not only the Core Support panel.
    • Changed Chat indexes nothing while it is switched off.
    • Changed Each channel is delivered on its own. Every alert becomes one WP-Cron job per channel, so a slow or failing service no longer delays the others. Rate limits, server errors and timeouts retry after 1, 5 and 30 minutes (or later when the service asks), up to three times; other rejections are reported at once. Alerts queued by earlier versions still go out.
    • Changed Team alerts screen: one card per channel, each with its own Save, Send a test alert, last-delivery status (Ready, Working, Retrying, Failed, Paused) and a switch that pauses the channel without forgetting its settings. Problems never show saved credentials.