Share Buttons & AI-powered Summaries — Full changelog For each release, see the entries below. The latest version is always at the top. The current release notes also live in readme.txt under "== Changelog ==". = 2.4.2 = * Improved: Tested up to WordPress 7.1, with no changes needed. The editor sidebar panel already works inside the always-iframed post editor, and the settings screen was reviewed against the jQuery UI 1.14.2 update that ships with this release. = 2.4.1 = * Improved: A prompt, a custom text or any of the section titles you write yourself can now be translated from WPML String Translation or Polylang, through the multilingual configuration the plugin ships * Fix: The AI prompt no longer gets stuck in the language of whoever saved the settings. It was written to the database on activation and again on the first save, so on a multilingual site every reader was asking the AI for a summary in that one language. It is resolved per reader again, and a stored copy of the bundled prompt is cleaned up on update. A prompt you wrote yourself is kept untouched, and an empty one still means send no instructions * Fix: The editor sidebar panel was still titled "AI Share & Summarize", the name the plugin had before it was renamed = 2.4.0 = * New: Bullet-list format for the AI summary. A new "Summary format" checkbox in the AI Summary tab renders the summary as a concise bullet list instead of paragraphs: new AI summaries are generated as one key point per line, and already stored summaries are split into one item per sentence without regenerating. Works with the extractive fallback and every visual style. * New: Separator lines setting. Two checkboxes under Share Buttons let you show or hide the thin horizontal lines above and below the buttons block, which until now could only be removed with custom CSS. Both stay on by default, keeping the previous look. * Improved: The noindex exclusion now recognizes the Visibility SEO plugin (native-aeo-pack). Content marked noindex by Visibility — per post or through its bulk per-content-type rules with their per-post exceptions — hides the share buttons and the AI summary like with any other supported SEO plugin, and the settings screen reports it as detected. = 2.3.0 = * New: Dedicated "AI Summary" settings tab. The summary settings now live on their own screen with their own Save button, stored in their own option and saved independently from the share buttons settings. The former "Settings" tab is now called "Share Buttons", which is what it configures. Existing configuration is migrated automatically. * New: Per-post "Hide AI summary on this content" control in the block editor sidebar and the classic meta box. Until now the single "Hide share buttons" checkbox silently hid the summary too; each feature now has its own independent control (posts excluded before this version keep both hidden). * Improved: The summary content-type list is now truly independent from the share buttons. The silent fallback to the buttons' list is gone (the inherited value is migrated as-is), summaries can display on post types the buttons are not configured for, unchecking every type genuinely turns automatic summaries off, and the AI Summary tab shows a clear warning when that happens. = 2.2.2 = * Improved: Caches are refreshed right after an automatic summary is generated, so it shows up without waiting for a page cache to expire. New `ayudawp_aiss_summary_generated` action lets cache plugins purge the affected URLs. * Fix: The automatic AI summary was not generated when a scheduled post went live (and could be missed on some interrupted publishes) on certain hosts. It is now generated reliably as soon as the post publishes, with self-healing on the first view and a daily rescue sweep as safety nets. * Fix: In the classic editor, emptying the manual summary field left the content hash behind, so automatic generation never refilled it. The hash is now cleared too. = 2.2.1 = * Improved: the "Automatic" model setting now uses each provider's cheapest model (Haiku on Anthropic) instead of a mid-tier one, and keeps the rest of the provider's catalog as an ordered fallback chain, so summaries stay cheap and keep working when a model is unavailable. * Fix: AI summaries could stop generating after the active provider changed its available models — a listed model that is not actually usable, or a corrupted cached model list on sites with a persistent object cache. Generation now degrades to the next model and refreshes the cached model list automatically instead of failing until the cache expires. * Fix: corrected the summary "content types" help text, which claimed to be fully independent from the share buttons list while it actually falls back to that list when left empty. = 2.2.0 = * New: AI model selector for the summary. Pick the provider and model used for generation, or leave it on Automatic to use a fast, cost-effective model per provider instead of the newest, most expensive flagship. * Improved: AI Summary generation is now a single, explicit mode selector (AI with extractive fallback / AI only / Extractive only / Disabled), replacing the two checkboxes. Extractive-only is now a real choice without removing your AI provider. * Fix: summaries could fail when the configured provider's newest model was not available to your account (for example a limited-access flagship). Generation now defaults to a sensible model and no longer breaks in that case. * Fix: prevented a possible fatal error during analytics cleanup on WordPress older than 6.1, so the minimum is now WordPress 6.1. The AI summary needs WordPress 7.0; on earlier versions you can still use the extractive summary. = 2.1.1 = * Improved: Background (cron) AI summary generation now retries transient provider errors — e.g. a malformed API response — up to 2 times with a short backoff before falling back to the extractive summarizer. Editor- and visitor-triggered generation still fails fast. The retry count is filterable via `ayudawp_aiss_ai_retry_attempts`, and the stored error now reports how many attempts were made. * Improved: The "Settings > Connectors" link in the AI Summary settings section now opens in a new tab so you keep the plugin settings page open. * Fix: Bare video/oEmbed URLs (YouTube, Vimeo, X...) placed on their own line or paragraph to embed a player no longer leak into the AI and extractive summaries. The content cleanup now mirrors WordPress core's autoembed detection and removes them before summarizing; linked URLs and URLs written inside a sentence are preserved. Note: already-stored summaries are not regenerated by the update — edit the post or use "Regenerate now" on affected posts. = 2.1.0 = * New: Summary block appearance — choose a style for the inline AI summary block and its Generate button (minimal, outline, brand, dark, or custom colors), set the background and text colors, and place the icon on the left, on the right, or hidden. * New: Customizable summary text — set your own label for the summary block heading and for the visitor-facing "Generate AI summary" button (both translatable; leave empty to keep the defaults). * Improved: The AI summary now renders each sentence on its own line for easier reading, for both the AI Client and the extractive providers. * Improved: Summary accessibility — visible keyboard focus on the block toggle and the Generate button, and focus moves to the freshly generated summary so screen readers announce the new content. * Fix: The summary in the "before content" position did not appear on sites whose theme, plugins or snippets rewrite `the_content` with `DOMDocument` (image optimizers, lazy-load, "nofollow" on image links, table-of-contents, etc.), which dropped the block when reserializing the content. The before-content summary is now injected after those filters and its critical CSS is printed in the page `
`, so the block survives; the share buttons keep their position. * Fix: Hardening — the section/title tag is now built through an allowlist helper (closing the class of the 2.0.x XSS against future refactors), the activation-notice dismissal now also verifies the user capability, and a redundant `unserialize()` was removed from the SEO noindex detection. = 2.0.4 = * Fix: Contributor+ stored XSS through the `title_style` attribute of the `[ayudawp_share_buttons]` shortcode. The value was emitted in HTML tag-name position with only `esc_attr()`, which does not encode spaces or `=`, so a user with the `edit_posts` capability could inject arbitrary attributes and event handlers. `title_style` is now validated against an allowlist (`h2`-`h6`, `p`, `span`, `div`) at every entry point (admin save, shortcode attribute, render). Reported by Haitam Lazaar. = 2.0.3 = * Fix: Buttons not appearing on entries without a manual excerpt when the active theme or a third-party plugin calls `the_excerpt()` / `get_the_excerpt()` from the `` to compose Open Graph, Twitter Card or similar meta descriptions. WordPress's `wp_trim_excerpt()` applies the `the_content` filter internally to auto-truncate posts without a manual excerpt — the 1.9.2+ id-match guard accepted that early invocation as legitimate, marked the post as processed and blocked the subsequent real call from the post template. The filter now early-returns and stays out of the processed-posts guard when running inside the excerpt pipeline. = 2.0.2 = * Fix: Buttons not appearing on entries other than the latest published post on themes/plugins that call `setup_postdata()` from a header/sidebar without a matching `wp_reset_postdata()`. The strict id-match guard added in 1.9.2 (for Divi Theme Builder, FSE and Bricks) now falls back to verifying that the filtered content belongs to the queried post when `get_the_ID()` and `get_queried_object_id()` disagree, so legitimate singular content still gets the buttons while widgets and footers running `the_content` on arbitrary text remain protected. = 2.0.1 = * Fix: Visitor-facing "Generate AI summary" click made the summary box look empty until the page was reloaded — the placeholder element was being replaced by the inline critical CSS `