PluginProbe
Search Atlas SEO – OTTO AI SEO Automation for WordPress / 2.7.2
Search Atlas SEO – OTTO AI SEO Automation for WordPress v2.7.2
2.7.1 2.7.2 2.7.0 2.6.26 2.6.25 2.6.24 2.6.23 2.6.22 2.6.21 2.6.20 2.6.19 2.6.18 2.6.17 2.6.16 2.6.15 2.6.14 2.6.13 2.6.12 2.6.11 2.6.10 2.6.9 2.6.8 2.6.7 2.6.6 2.6.5 All 141 releases
← All changes | readme.txt +75 -1315 2.6.26 → 2.7.2 View file →
@@ -3,10 +3,10 @@
3 3 Tags: seo, ai seo, otto, otto seo, schema
4 4 Requires at least: 6.3
5 5 Tested up to: 7.1
6 6 Requires PHP: 8.1
7 -Stable tag: 2.6.26
8 -License: GPL-2.0+
7 +Stable tag: 2.7.2
8 +License: GPL v3
9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.txt
10 10
11 11 AI-powered SEO & GEO for WordPress: OTTO auto-optimizes meta, schema & content, and helps you rank on Google and in AI search.
12 12
@@ -70,9 +70,9 @@
70 70
71 71 == Frequently Asked Questions ==
72 72
73 73 = What does the Search Atlas SEO plugin do? =
74 -It connects your WordPress site to Search Atlas so OTTO, our AI optimisation engine, can work on your pages. It applies titles, descriptions, alt text, headings, internal links and schema, and it lets you publish content straight from Search Atlas into WordPress in one click. You need a Search Atlas account to use it.
74 +It connects your WordPress site to Search Atlas so OTTO, our AI optimization engine, can work on your pages. It applies titles, descriptions, alt text, headings, internal links and schema, and it lets you publish content straight from Search Atlas into WordPress in one click. You need a Search Atlas account to use it.
75 75
76 76 = Do I need a paid Search Atlas account to use this plugin? =
77 77 Yes. The plugin connects to your Search Atlas account, and OTTO's AI-driven SEO features are available on paid Search Atlas plans.
78 78
@@ -95,8 +95,79 @@
95 95 = 2.6.22 =
96 96 2.6.22 fixes OTTO breaking Divi-built pages and stops a partly finished update from taking your site's front end down. Update as soon as you can.
97 97
98 98 == Changelog ==
99 += 2.7.2 =
100 +* New Feature: Opt-in product analytics for the plugin admin, sent only after the site owner gives consent; existing installs are asked once through a dismissible notice that can be snoozed
101 +* New Feature: The Classic Editor SEO box now includes the Breadcrumb Title, Language Alternates and Primary Category fields
102 +* New Feature: OTTO webhook deliveries are now recorded in an audit log that is kept for seven days
103 +* Fix: OTTO's canonical URL is now kept on every render path instead of falling back to the permalink when the full OTTO render is skipped
104 +* Fix: OTTO no longer saves the og:description as the page's meta description
105 +* Fix: OTTO deployments are no longer lost when a cache warm-up fails, and stored OTTO titles, descriptions and keywords now refresh when the OTTO cache expires, so a missed OTTO notification no longer leaves stale SEO values behind
106 +* Fix: Fresh OTTO titles and descriptions now take priority over older persisted copies, and focus keywords follow the same priority order with duplicate meta keywords tags removed
107 +* Fix: Persisted OTTO keywords are now stored separately and no longer overwrite the customer's own keyword; the global priority setting is now named SEO Meta Priority
108 +* Fix: OTTO is now skipped on paginated archive pages only on Divi sites instead of on every site
109 +* Fix: Invalid values can no longer be stored as the OTTO Pixel UUID, and the UUID field is now read-only
110 +* Fix: The OTTO crawl data option no longer grows without limit, and the old stored data is cleaned up on upgrade
111 +* Fix: External schema import now reports accurate eligibility and results for Yoast, Rank Math and AIOSEO, and schema fields are no longer lost when a schema type is saved before its fields finish loading
112 +* Fix: Content publishing no longer takes over and unpublishes an existing post with the same title, and updates now return the correct permalink
113 +* Fix: White-label branding is now preserved when the plugin settings are reset, and invalid branding can no longer be saved, with each field showing its own error
114 +* Fix: The old Instant Indexing admin URL now redirects to Indexation Control instead of showing an access error
115 +* Fix: Indexation Controls now save each checkbox correctly instead of switching other archive rules on
116 +* Fix: Maintenance and diagnostics tasks can no longer be triggered by anonymous visitors, and access checks, error logging, sitemap size reporting and the blank page template have been hardened
117 +* Fix: Redirects that have never been used now show "Never" instead of a zero date, and the redirect form no longer saves empty rows
118 +* Fix: MCP category and tag creation now returns the existing term instead of failing when it already exists
119 +* Fix: Resolved the remaining errors from WordPress.org Plugin Check scans
120 +* Improvement: Media, REST API and 404 Monitor queries are optimized for large sites, and the 404 log is now capped
121 +* Improvement: Redirects that share the same source path now show a "Shadowed" badge and a warning on save
122 +* Improvement: The 404 Monitor now has clearer summary labels, short and distinct chart labels (including for non-ASCII URLs), and a cleaner toolbar and pagination
123 +* Improvement: Compatibility toggles have moved to the Compatibility page, the unused HTTP option was removed from the SiteGround setting, and WP Rocket is now detected reliably
124 +* Improvement: The robots.txt "Never block your entire site" warning now appears at the top of the editor sidebar, and the Excluded URLs Recheck button and match type badges are now consistently sized
125 +* Improvement: The Breadcrumb Title Override is now hidden when breadcrumbs are disabled
126 +* Improvement: Plugin issue reports now include white-label context, and white-label settings are no longer exposed through the MCP plugin settings tool
127 +* Improvement: Removed the orphaned standalone Instant Indexing save path and obsolete temporary admin access code
128 +
129 += 2.7.1 =
130 +* Fix: The Changes Log admin page no longer shows misaligned headings or inconsistent toolbar control sizing
131 +* Fix: A "%" character in a saved settings value no longer fatals the page, and the plugin now survives partially-completed upgrades
132 +* Fix: Direct-access protection was added to PHP files that were missing it
133 +* Fix: Discouraged PHP functions were replaced with WordPress-native APIs across the codebase, confirmed dead code was removed, and the remaining intentional native calls are now documented
134 +* Fix: Audited and resolved SQL query safety findings across the plugin
135 +* Fix: Audited and resolved input sanitization and output escaping gaps across admin and public-facing code, including AJAX and settings save paths
136 +* Fix: Added missing nonce and capability checks across admin endpoints, AJAX handlers, and settings page actions
137 +* Fix: Redirects are now routed through safe WordPress redirect functions, data-directory writes are centralized, and legacy redirect rows with un-sanitized source URLs are healed automatically
138 +* Fix: Removed stray production debug logging and correctly scoped error handlers
139 +* Fix: The plugin FAQ now uses American spelling ("optimization"), matching the rest of the listing
140 +* Fix: Audited direct database queries, caching, and schema changes for WordPress.org compliance
141 +* Fix: Resolved internationalization findings so plugin text is properly translatable
142 +* Fix: Resolved the remaining zero-risk and newly-reported findings from ongoing WordPress.org Plugin Check scans
143 +* Improvement: Compatibility-checker plugin icons are now bundled locally instead of loaded from an external host
144 +
145 += 2.7.0 =
146 +* New Feature: Headless WordPress support — the WordPress backend and a decoupled public frontend now stay in sync through SSO and heartbeat, with SEO data exposed over WPGraphQL, frontend-aware canonical and og:url rehosting, taxonomy canonical overrides, bulk payload resolution, and a dedicated Headless Mode section in Advanced settings
147 +* New Feature: Safe OTTO Persistence restore — original Yoast, Rank Math and AIOSEO values are backed up before OTTO writes to them, nothing is written without explicit consent, and a restore action rolls every value back to its original state
148 +* New Feature: Language Alternates (hreflang) can now be switched on or off per post and page from the editor settings
149 +* New Feature: A global setting now controls whether OTTO or custom SEO values take priority across the site
150 +* Fix: Core infrastructure sweep — resolved deactivation data loss, wp-config fatals and media metadata corruption across the plugin
151 +* Fix: SEO Health now credits titles and descriptions that OTTO has already applied instead of reporting them as missing
152 +* Fix: Classic Editor post saves no longer discard persisted OTTO schema
153 +* Fix: OTTO titles and descriptions containing curly quotes or dashes now save correctly instead of failing silently
154 +* Fix: OTTO renders now keep third-party og:title and twitter:title instead of stripping them
155 +* Fix: Sitemaps no longer include URLs that redirect elsewhere, whether the redirect comes from MetaSync, Rank Math or Yoast
156 +* Fix: The Visual HTML Editor now refuses saves that cannot preserve the stored document, protecting landing pages and full-document templates
157 +* Fix: Redirect destination and loop guards now apply on every write path, closing the gaps that allowed self-referencing and looping redirects
158 +* Fix: Language Alternates no longer emit duplicate tags on WPML sites, always include a self-reference, and validate their entries
159 +* Fix: The Instant Indexing service account file can now be saved, with clear upload confirmation and the ability to remove or reselect it
160 +* Fix: Plugin updates no longer fatal on a stale admin class during a White Label import
161 +* Improvement: SEO Health missing title and description filters are now optimized for large catalogues
162 +* Improvement: SEO Health exclusion queries, counting and CSV export are optimized for sites with heavy post metadata
163 +* Improvement: Frontend assets are now loaded only where they are needed, and duplicate WebPage schema nodes are removed
164 +* Improvement: The third-party SEO plugin sync screen has been redesigned and now respects white-label branding
165 +* Improvement: The duplicate Instant Indexing admin page has been removed and its functionality consolidated into Indexation Control
166 +* Improvement: The duplicate Primary Category control has been removed from the MetaSync editor sidebar
167 +* Improvement: The redirection list no longer repeats the match type in the From column
168 +* Improvement: The Changes Log now distinguishes OTTO cleanup events from new SEO deployments, so log entries reflect what actually happened
169 +
99 170 = 2.6.26 =
100 171 * Fix: Yoast schema conflict handling no longer emits invalid JSON-LD on OTTO-covered pages
101 172 * Fix: Third-party SEO sync now reports success only when SEO data was actually written, preventing stale titles from being treated as current
102 173 * Fix: The Gutenberg SEO sidebar no longer uses OTTO suggestions as field values, so pages are not silently frozen out of OTTO
@@ -108,1316 +179,5 @@
108 179 * Fix: The Gutenberg SEO sidebar no longer shows a duplicate URL Slug field
109 180 * Fix: Social titles and descriptions no longer persist pre-filled post defaults, so renamed posts and edited excerpts update their social metadata correctly
110 181 * Security: White Label JSON imports no longer lock out the settings password recovery flow, so Forgot Password keeps working when a new whitelabel-settings.json is deployed
111 182
112 -= 2.6.25 =
113 -* Fix: Breadcrumb structured data no longer includes an invalid or dangling item on archive pages
114 -* Fix: The six Post/Page Editor "Disable" switches now actually suppress the matching frontend output, instead of only hiding the editor meta box
115 -* Security: Settings sanitization no longer lets raw POST input override sanitized values, closing a way crafted input could bypass sanitizers
116 -* Fix: Corrupted Local Business logo values are automatically repaired instead of continuing to serve a broken URL
117 -* Fix: Video sitemaps now detect theme-injected video players, instead of silently omitting every video on themes that inject players at render time
118 -* Security: The OTTO Debug page and its AJAX handlers are now fully disabled, instead of being reachable by any site admin
119 -* Improvement: The WordPress admin footer space is now hidden on MetaSync admin pages
120 -* Fix: OTTO no longer strips page content on Yootheme sites, by restricting link and heading persistence to Gutenberg blocks
121 -* Security: Whitelabel password recovery now uses single-use, short-lived reset links instead of emailing the password directly
122 -* Fix: Imported SEO values now consistently lose to OTTO through a single precedence resolver, instead of being overridden inconsistently across different code paths
123 -* Fix: The Menu Icon settings field no longer fatals when its value contains a percent sign
124 -* Security: Debug Mode's wp-config.php backups are now written atomically and no longer leave guessable, credential-bearing backup files in the web root
125 -
126 -= 2.6.24 =
127 -* Improvement: OTTO crawl notifications are now held in a durable queue with bounded retries and backoff, so large webhook batches are no longer silently truncated and each URL's outcome is recorded
128 -* Improvement: The sitemap settings screen no longer offers page-builder and internal post types in its post-type pickers
129 -* Improvement: The sitemap taxonomy picker now lists only genuine content taxonomies, hiding navigation menus, link categories and similar internal ones
130 -* Improvement: The promotional sidebar is now hidden once the site is connected, giving admin pages their full width back, and Quick Links point to working pages — the dead SEO Academy link is gone, Documentation and Contact Support were added, and branded links are hidden on whitelabeled installs
131 -* Improvement: The Local Business Type selector now shows a neutral "Select Type" placeholder instead of appearing pre-selected when no type has been chosen
132 -* Improvement: The Compatibility page now detects Bricks Builder when it is installed as a theme rather than a plugin
133 -* Security: MCP JWT tokens are now bound to the API key that issued them, so rotating the key or disconnecting the site revokes existing tokens immediately instead of leaving them valid for 24 hours
134 -* Security: Failed MCP API-key authentication attempts are now counted, throttled and locked out instead of being accepted at unlimited speed
135 -* Security: The schema markup editor's background requests now require edit permission on the target post, so lower-privileged users can no longer read other authors' drafts, private posts or password-protected content
136 -* Security: Removed the shared whitelabel/debug credential, required administrator rights for OTTO debug tools, gated Google Index credential and destructive debug actions, disabled raw database and option reads over MCP, and reduced telemetry to path-only context that honors opt-out
137 -* Security: The HTML editor and whitelabel recovery now require the matching capability, Developer Tools passwords are hashed and migrated off plaintext, and both MCP bridges run through one authenticated, rate-limited handler
138 -* Security: Redirect destinations are now validated before use, closing an open-redirect risk in the redirections module
139 -* Fix: A /sitemapN.xml URL with no sitemap behind it now returns 404 instead of serving the home page under a 200, which was creating unlimited soft-404 duplicate URLs for crawlers
140 -* Fix: Sitemap generation now reports a real failure when the sitemap could not be stored, instead of showing success while the site serves no sitemap
141 -* Fix: Opening an OTTO preview no longer signs administrators out of wp-admin or breaks the admin session check
142 -* Fix: MetaSync no longer emits a second Article JSON-LD block on posts that already have one from Yoast, Rank Math or AIOSEO
143 -* Fix: Slashes, backslashes and quotes are preserved in Local Business and Article schema values, so a name like 24/7 "Test" Plumbing is no longer output as 247 Test Plumbing
144 -* Fix: Search engine crawlers whose user agent omits the brand name (Yahoo's Slurp, Applebot, Sogou, Exabot and others) are now recognized as search engines and served optimized pages instead of being throttled
145 -* Fix: OTTO's category and tag SEO values are no longer mirrored into Yoast / Rank Math / AIOSEO storage when the matching OTTO Persistence setting is turned off
146 -* Fix: OTTO's structured data is no longer copied into Rank Math or Yoast storage when the structured data Persistence setting is turned off
147 -* Fix: Rank Math's robots tag is now suppressed when MetaSync holds a robots value for the post, so exactly one robots meta tag ships
148 -* Fix: Removing MetaSync's breadcrumb from a third-party schema graph no longer breaks Rank Math's own schema logic
149 -* Fix: Posts synced from Content Genius keep the page template the site actually uses, instead of being forced onto the theme's plain template and losing their layout
150 -* Fix: Redirects now preserve the incoming query string, including through redirect chains, and OTTO no longer serves mismatched HTML and SEO metadata when its internal fetch is redirected elsewhere
151 -* Fix: The WordPress admin sidebar no longer drifts down the screen while scrolling on MetaSync admin pages
152 -* Fix: The connect status box no longer squeezes the "Website Not Registered" message into a one-word-per-line column with a detached warning icon
153 -* Fix: The "Page Builder Detected" notice now appears only on the plugin settings screen where the setting lives, instead of repeating on every plugin page
154 -* Fix: Previewing a draft no longer serves the home page instead of the draft on sites using SiteGround Optimizer — OTTO now skips WordPress core preview requests
155 -* Fix: The Local Business logo is no longer lost when the settings are saved — the selected image survives the save instead of being rewritten into a broken link, so both the admin preview and the logo published in structured data stay correct
156 -* Fix: The SearchAtlas Dashboard admin page no longer fatals after an in-place upgrade when one plugin file is still being served from a stale cache
157 -* Fix: Redirections sweep — 24 verified issues fixed, including importers failing on serialized data, the search box triggering a bulk delete, a hit-counter race, non-deterministic rule ordering, duplicate rules on re-import, missing redirect-loop guards and silently dropped save failures
158 -* Fix: Media optimization sweep — 18 verified issues fixed, including data loss in the replace strategy (sub-size originals deleted while only the full-size URL was rewritten), an author-role privilege escalation, srcset entries pointing at missing files, and a race between cron and browser batch ticks
159 -* Fix: Robots / sitemap / indexing sweep — 25 verified issues fixed, including core's "discourage search engines" setting being overwritten, the virtual robots.txt never being served on the frontend, IndexNow rejecting platform keys, existing Sitemap: lines being destroyed on update, and uninstall leaving everything behind
160 -
161 -= 2.6.23 =
162 -* Improvement: The plugin now automatically detects when a host is blocking GET/POST traffic to Search Atlas, both on activation and on a weekly recheck, instead of requiring the site owner to run the check manually
163 -* Improvement: Pages that don't rely on sessions can now be cached by the host again on SiteGround/Oxygen sites using OTTO's HTTP render path, restoring page-load speed
164 -* Improvement: The Custom Pages STATUS column now shows "Published" / "Draft" / "Pending Review" instead of the raw "Publish" verb, and no longer looks like a clickable button
165 -* Improvement: The Excluded URLs table's description text is now readable in dark mode, and the Recheck button no longer deletes the entry it was rechecking
166 -* Improvement: OTTO's stale suggestion fallback is now retained for a fixed 12 hours
167 -* Improvement: Removed the non-functional "Grant Temporary Support Access" option from the Report Issue page, since it never actually granted any access
168 -* Improvement: Lowered the minimum required PHP version from 8.2 to 8.1 (AVIF image conversion still requires PHP 8.2+; WebP is unaffected)
169 -* Security: Schema/JSON-LD output is now safely encoded everywhere it's emitted, closing a script-injection risk from crafted field values
170 -* Fix: "Auto Draft" no longer gets stored as the page's social title/description when the social meta box is opened before a post has a real title
171 -* Fix: On non-English sites, a localized "Auto Draft" placeholder (e.g. "Automatischer Entwurf") no longer leaks into the page title, og:title or twitter:title — the earlier fix only recognized the English placeholder text
172 -* Fix: OTTO's status indicators (admin bar, debug bar, SEO columns) now correctly show a manually excluded URL as disabled instead of still reporting it as enabled
173 -* Fix: "Ends with" and "regex" OTTO URL exclusion rules are now honored on the page a visitor actually loads, not just when a URL is queued for optimization
174 -* Fix: A redirect rule no longer causes OTTO's internal page fetch to re-enter itself repeatedly, which could exhaust the site's PHP workers and take it offline
175 -* Fix: Restored host-level page caching on sites combining a booking plugin with SiteGround Optimizer, which had been forced into an always-uncached state
176 -* Fix: The page's <head> tag is no longer rewritten in a way that breaks other plugins or host layers that inject scripts or styles into the head
177 -* Fix: Google Fonts using multiple font families no longer get truncated to a single font on OTTO-rendered pages
178 -* Fix: Blog posts synced from Content Genius no longer lose their tables, and post markup is no longer mangled on PHP 8.4
179 -* Fix: Deleting the last excluded URL on a page beyond the first no longer dead-ends the list on a false "No excluded URLs found" state
180 -* Fix: Hidden admin pages (Local Business, Breadcrumbs, Site Verification, Setup Wizard) now show a proper browser tab title instead of a blank one
181 -* Fix: OTTO's internal values are no longer mirrored into Yoast / Rank Math / AIOSEO storage when the matching OTTO Persistence setting is turned off
182 -
183 -= 2.6.22 =
184 -* Improvement: The WordPress admin sidebar now shows a focused 8-item menu by default, with the remaining pages reachable from the plugin's in-page sidebar and a new search box for finding them
185 -* Improvement: The Redirections, 404 Monitor, Heartbeat Error Monitor and Media Optimization lists now have a results-per-page selector that remembers each user's choice
186 -* Improvement: The classic editor's separate MetaSync meta boxes (SEO, Robots, Canonical, Redirection, Social and Open Graph, Schema, Video Sitemap) are consolidated into a single tabbed "SEO Suite" box with a live social preview
187 -* Improvement: OTTO diagnostic response headers are now sent only while Debug Mode is on, so they no longer appear on public responses or leak the product name on white-labeled installs
188 -* Security: Refreshing the Plugin Auth Token now requires administrator permissions
189 -* Fix: Pages built with Divi are no longer broken by OTTO — an HTML parsing flaw discarded every attribute following an unquoted attribute value, which stacked carousel slides, threw the header and footer out of position and left the page growing without settling
190 -* Fix: Articles synced from Content Genius no longer repeat the contents of a bulleted list as plain paragraphs directly beneath it
191 -* Fix: SEO titles and descriptions imported from All in One SEO now have their smart tags resolved instead of being stored literally, which had left tokens such as #post_title rendering as the page title and suppressing OTTO
192 -* Fix: A page no longer emits two conflicting og:description tags when a third-party SEO plugin owns the output for that post
193 -* Fix: og:title and twitter:title are no longer left off the page when a third-party SEO plugin's tags are suppressed — a replacement is now emitted from the MetaSync title instead of the raw post title
194 -* Fix: When OTTO cannot apply its suggestions, the un-optimized page is now cached for at most 60 seconds instead of the host's full cache lifetime, so a brief hiccup no longer pins un-optimized markup for hours and looks like the OTTO title reverting
195 -* Fix: A slow or unreachable OTTO connection no longer ties up the site's PHP workers — repeated calls to a failing endpoint now pause briefly before being retried, and requests that never needed optimization (404s, static files, robots.txt and well-known paths) skip the lookup entirely
196 -* Fix: A partially updated install no longer takes the front end down with a fatal error when another plugin writes post meta
197 -* Fix: Stale or malformed scheduled OTTO background jobs are now skipped instead of causing fatal errors
198 -* Fix: Exporting white-label settings no longer downloads the file twice
199 -* Fix: The Local Business logo remove icon is now a small badge offset from the image instead of an oversized button overlapping the preview
200 -
201 -= 2.6.21 =
202 -* Improvement: The Sitemap Settings screen now warns when a generated News or Video sitemap contains 0 URLs, so it is clear whether that is expected or a misconfiguration
203 -* Improvement: Added optional SEO Title, Meta Description, Noindex and Nofollow columns to the Posts and Pages admin list (enable via Screen Options)
204 -* Fix: OTTO no longer emits a redundant Vary: Accept-Encoding header, which could cause CDN edge caches to treat pages as non-cacheable and route every visitor to origin PHP
205 -* Fix: Importing Yoast advanced robots meta no longer throws a fatal error when the stored value is not a plain string
206 -* Fix: Page-cache warmer and performance-auditor requests are no longer throttled by OTTO rendering, which had been preventing some sites page caches from populating and made PageSpeed scores appear artificially low
207 -* Fix: Removed the redundant Index checkbox from Common Robots settings, fixed a case where No Index set via the meta box could be silently ignored when advanced robots data was present, and simplified noindex output to only include indexing/crawling directives
208 -* Fix: The SEO Health dashboard now reads the same SEO title and description a page actually uses, instead of showing OTTO value when the customer own sidebar value was what really rendered
209 -* Fix: The plugin REST API no longer returns 401 on sites with a strict logged-in-users-only REST restriction from a security plugin or snippet, which had been silently breaking publishing and syncing on those sites
210 -
211 -= 2.6.20 =
212 -* Improvement: The OTTO Debug comparison panel now shows the Meta Description when OTTO delivers it as raw header HTML instead of a structured replacement
213 -* Improvement: Added a tooltip to the Content Genius Synchronization card explaining that "Sync Now" sends the site's categories and authors so published articles are assigned correctly
214 -* Security: Added the missing permission and nonce checks to the Heartbeat Error Monitor's bulk actions
215 -* Fix: The trash icon on the "Remove" button in the Schema Markup meta box is aligned correctly again
216 -* Fix: Sitemaps are no longer corrupted by stray PHP notices or warnings emitted by other plugins, which previously produced invalid XML that search engines rejected
217 -* Fix: The "Default Page Builder" dropdown no longer renders its option labels invisible unless they are hovered
218 -* Fix: Corrected the malformed robots meta tag produced when SEO data is synced into Rank Math
219 -* Fix: Open Graph and Twitter tags are no longer stripped when the per-post "Enable Open Graph and Social Media Tags" toggle is off, so Yoast SEO and All in One SEO can supply their own again
220 -* Fix: The delete icon in the Robots.txt Backup History panel now uses a consistent color across WordPress versions
221 -* Fix: The Compatibility page no longer reports the site's active theme as "Not installed" when the theme's display name differs from its folder name
222 -* Fix: The Local Business logo "Add or Upload File" button opens the media library again
223 -* Fix: Bulk actions chosen from the control at the bottom of the Redirections, 404 Monitor and Heartbeat Error Monitor lists now apply instead of doing nothing
224 -* Fix: Saved Local Business details are now output as LocalBusiness structured data on the front end
225 -* Fix: The per-page "Disable OTTO" toggle now also suppresses previously stored OTTO titles and descriptions instead of continuing to serve them
226 -* Fix: Values entered in the "Advanced Robots Meta" meta box are kept after saving a post instead of resetting on refresh
227 -* Fix: The "no results" placeholder no longer appears under short checkbox lists in Sitemap Settings when nothing has been searched
228 -* Fix: A custom SEO title or meta description set in the SEO sidebar now always takes precedence on the live page, instead of being overridden by OTTO when OTTO is connected
229 -
230 -= 2.6.19 =
231 -* Improvement: Removed the unused legacy "Optimal Settings" page
232 -* Improvement: Reworked the Search Atlas connection to a pull-based flow so sites behind firewalls that block inbound callbacks can still connect reliably
233 -* Fix: Resolved a case where content failed to sync to WordPress due to a www/non-www hostname mismatch during connection
234 -* Fix: robots.txt no longer continues to reference sitemap URLs after the sitemaps have been deleted or disabled
235 -* Fix: Sitemap generation, including video and news sitemaps, no longer exhausts server memory on sites with large content catalogs
236 -* Fix: The video sitemap no longer produces invalid XML when a post description contains HTML entities or shortcodes
237 -* Fix: OTTO no longer breaks concatenated CSS/JS URLs (for example Jetpack Boost), so optimized pages render with their styles intact
238 -* Fix: "Delete All Sitemaps" now reliably removes all sitemaps even when one is served from a stale cache
239 -* Fix: Restored compatibility with the Enfold/Avia builder so the Accordion Toggle Title field accepts letters, not just numbers
240 -* Fix: Deleted robots.txt backup history entries no longer reappear after refreshing the page
241 -
242 -= 2.6.18 =
243 -* Improvement: Increased the White Label plugin-name limit so custom plugin names of up to 18 characters are no longer truncated
244 -* Improvement: Added explanatory tooltips across the admin settings so the purpose of each option is clear
245 -* Improvement: Made the API key error message readable when a stored key cannot be read and re-authentication is required
246 -* Security: The Search Atlas API key is now masked in the settings UI and encrypted at rest
247 -* Fix: Customer-set Open Graph and Twitter/social values now take priority over OTTO on optimized pages, and a social image is always output
248 -* Fix: Reverting a single optimized image no longer deletes its converted WebP file, and re-syncing content restores images that were previously broken
249 -* Fix: Bing IndexNow verification no longer fails with "key not found" on hosts that serve the key as a static file
250 -* Fix: robots.txt no longer advertises a sitemap URL when the XML sitemap is disabled or not generated
251 -
252 -= 2.6.17 =
253 -* Improvement: Fixed the Refresh Token button's oversized icon and misalignment on the settings page
254 -* Improvement: The Redirections search field now triggers a search when pressing Enter, not only when clicking the Search button
255 -* Fix: Prevented a fatal error when WordPress internally checks for a white screen after saving a theme file
256 -* Fix: Prevented a fatal error when clearing edge cache for a single URL
257 -* Fix: Prevented invalid `http://Array` canonical URLs from being output and cleaned up already-corrupted stored values
258 -
259 -= 2.6.16 =
260 -* Security: Whitelabel password is now encrypted at rest instead of stored in plain text
261 -* Security: Prevented path traversal from unvalidated slugs in imported ZIP manifests
262 -* Security: Validated file paths built from ZIP manifest slugs before reading them
263 -* Performance: Capped image-processing resource usage to prevent unbounded memory consumption
264 -* Performance: Added a maximum image dimensions setting that downscales oversized images before conversion
265 -* Performance: Cached image dimensions to avoid repeated file reads on every page render
266 -* Performance: Batched the content URL rewrite query to prevent database table locks
267 -* Performance: Raised the memory limit before heavy image processing to avoid out-of-memory failures
268 -* Performance: Reduced memory usage during HTML rendering on large pages
269 -* Performance: Prevented memory exhaustion caused by bot and vulnerability-scanner traffic
270 -* Performance: Prevented image conversion from exceeding PHP's maximum execution time during media optimization
271 -* Improvement: Surfaced the Focus Keyword as a read-only field in the Gutenberg SEO sidebar
272 -* Improvement: Excluded Website Studio / custom HTML pages from SEO audit, inventory, and analysis surfaces
273 -* Improvement: Hid SEO meta fields on Website Studio-synced pages and show a read-only notice instead
274 -* Improvement: Labeled Website Studio-synced pages with a post state in the admin Pages list
275 -* Improvement: Stopped admin notices from causing layout shift and viewport scroll when navigating between plugin features
276 -* Improvement: Fixed checkbox alignment with their labels on the Redirections screen
277 -* Improvement: Bundled the default plugin logo locally instead of hotlinking it
278 -* Improvement: Fixed icon alignment on the Schema Markup metabox
279 -* Improvement: Show a sitemap conflict notice on the Video and News sitemap tabs when another SEO plugin is active
280 -* Improvement: Fixed a color mismatch and text crowding on the Schema Markup metabox Remove button
281 -* Improvement: Fixed the "Hide Dashboard" option so it actually hides the dashboard from the admin menu, and corrected its help text
282 -* Improvement: Streamlined the plugin entry file for maintainability
283 -* Fix: Fixed several bugs surfaced by static analysis
284 -* Fix: Fixed broken thumbnails for orphaned images and cleaned up converted files when the originals are deleted
285 -* Fix: Made multi-page imports idempotent so re-importing no longer creates duplicate pages when a slug collides
286 -* Fix: MetaSync REST authentication now coexists with third-party JWT authentication plugins
287 -* Fix: Heartbeat status badge now reflects a stale or dead sync instead of always showing "Connected"
288 -* Fix: Purge page and edge cache after import to prevent stale-asset white screens on republish
289 -* Fix: Fixed white-label leaks where product names appeared across admin, Site Health, toolbar, and import screens
290 -* Fix: Restored the XML Sitemap and other REST responses that could return blank
291 -* Fix: Prevented OTTO from silently serving un-optimized HTML on Divi and other page-builder pages
292 -* Fix: Ensured canonical optimization is reliably applied
293 -* Fix: Stopped query strings from being stripped, which caused search and query-only URLs to serve the home page for logged-in and cache-bypass users
294 -* Fix: The post-edit Redirection metabox now applies per-post redirects on the frontend
295 -* Fix: Stopped serving schema markup when no schema has been deployed
296 -* Fix: The canonical metabox now emits the configured canonical URL
297 -* Fix: Prevented the CPU load gate from dropping sync jobs on hosts where CPU-core detection fails
298 -* Fix: The XML sitemap no longer hijacks sitemap URLs when disabled or deleted, allowing Rank Math, Yoast, and AIOSEO sitemaps to work
299 -* Fix: Purge page and edge cache when clearing the OTTO cache, so stale optimized markup (such as a hidden injected heading) is no longer served
300 -* Fix: Removed duplicate <meta name="description"> tags on OTTO-optimized pages when MetaSync is the only active SEO plugin
301 -* Fix: Stopped the meta description from being dropped when a synced third-party SEO plugin (Yoast, Rank Math, AIOSEO) has an empty description field
302 -
303 -= 2.6.15 =
304 -* Improvement: Added a search icon to the SEO Health search field
305 -* Improvement: Fixed the sort-arrow placement in the SEO Health table column headers
306 -* Improvement: Prevented multi-page imports from nesting imported pages under existing unrelated (non-imported) parent pages
307 -* Fix: Stopped the plugin from removing featured images on sites that offload media with WP Stateless
308 -* Fix: Prevented og:description from auto-filling with raw page-builder shortcodes on Divi and Elementor pages, so social and link previews show clean text
309 -* Fix: Served the IndexNow key file dynamically instead of writing it to disk, so key verification works on read-only web roots and on nginx hosts that block direct access to static .txt files
310 -* Fix: Resolved the "IndexNow key not found" (400) error when configuring Bing IndexNow, so setup completes successfully
311 -* Fix: Made the Instant Indexing service-account JSON upload accept the file by its extension, so it saves reliably across all browsers and operating systems
312 -* Fix: Restored the white-label light logo in the admin header on light theme
313 -
314 -= 2.6.14 =
315 -* Improvement: Content Genius "User Roles to Sync" now lists only roles that can author content
316 -* Improvement: Added a dropdown arrow indicator to the Image Library "Bulk Actions" and "All Images" filter fields
317 -* Improvement: Added consistent top padding between Advanced Settings section headers and their content
318 -* Improvement: Stopped the OTTO debug toolbar from rendering twice on Oxygen Builder pages
319 -* Fix: Prevented OpenGraph description generation from rendering the full page in the head, which dropped Elementor loop-grid CSS and broke page layout
320 -* Fix: Scoped the OTTO Cache-Control private header to the HTTP render path so it no longer disables host/CDN caching site-wide
321 -* Fix: Scoped OTTO SiteGround no-cache to pages with suggestions, preventing a site-wide cache bypass and CPU spikes
322 -* Fix: Resolved a 500 error on plugin activate/deactivate on SiteGround and stopped OTTO from interfering with the Elementor editor
323 -* Fix: Fixed the Instant Indexing "Clear Configuration" button on the Indexation Control page
324 -
325 -= 2.6.13 =
326 -* Improvement: Made the Media Optimization "Optimize" and "Revert" buttons equal in size
327 -* Improvement: Fixed stacked filter dropdowns in the Changes Log filter bar
328 -* Improvement: Fixed the cache directory path overflowing its container on the Cache tab
329 -* Improvement: Improved breadcrumb code-box contrast in light mode and added click-to-copy on snippet boxes
330 -* Improvement: Added vertical spacing between the Auth Token field and Refresh Token button on the Settings page
331 -* Improvement: Added vertical spacing between settings form rows so blocks no longer merge together
332 -* Security: Wrapped admin nonce outputs in esc_attr() to prevent XSS in HTML attributes
333 -* Fix: Prevented lazy-load video iframe CSS from breaking page layout and hiding homepage content
334 -* Fix: Prevented a fatal "undefined constant" error during OTTO rendering on pre-2.6.11 installs
335 -* Fix: Corrected OTTO double-encoding of "&" in HTML attributes that broke theme icon fonts
336 -* Fix: Stopped OTTO from renumbering Divi column width classes and collapsing page layouts
337 -
338 -= 2.6.12 =
339 -* New Feature: The imported Webstudio(LPS) home page is now set as the WordPress front page
340 -* New Feature: Added persistent audit logging for Webstudio(LPS) ZIP imports
341 -* Improvement: Execution Settings fields now display side-by-side in a responsive two-column layout
342 -* Improvement: Hardened the White Label menu slug and fixed settings-save validation
343 -* Improvement: OTTO rendering is now skipped on custom and Webstudio(LPS)-imported pages
344 -* Improvement: Deleting a custom or Webstudio(LPS) page now cleans up shared assets and resets the front page when needed
345 -* Improvement: Webstudio(LPS) home imports now use the project UUID as the per-project deduplication key
346 -* Security: Added nonce and capability checks to the Instant Indexing AJAX handlers (Google GIAPI and Bing IndexNow)
347 -* Security: Added nonce and capability checks to the redirections list-table actions
348 -* Security: Added nonce and capability checks to the 404 Monitor list-table actions
349 -* Security: Hardened input sanitization for per-post snippets and the hero image URL
350 -* Fix: Prevented duplicate H1 headings on Content Genius synced posts
351 -* Fix: Resolved a fatal error during ZIP import caused by an undefined temporary-file helper in REST/MCP context
352 -* Fix: Prevented a fatal "class not found" error on plugin update when the installed directory name differs from the package slug
353 -* Fix: Batched SEO indexation option imports to prevent PHP memory exhaustion on large sites
354 -* Fix: Corrected connection status to show "Not Connected" after manual API key entry and Sync Now
355 -* Fix: Guarded get_current_screen() calls to prevent fatal errors in REST context
356 -* Fix: Execution Settings now reports the real server upload limit instead of a hardcoded 128 MB
357 -* Fix: Fixed a case where activating the plugin caused 404s on all pages except the home page
358 -* Fix: Prevented a TypeError when a non-string value was passed to meta element handling
359 -* Fix: The "Disable SEO Meta Box" setting now correctly hides the SEO meta box in the Classic editor
360 -* Fix: The "Disallow Empty Archives" toggle is now saved correctly on SEO Controls
361 -
362 -= 2.6.11 =
363 -* New Feature: Added SEO Title & Meta Description fields to the Classic editor, matching the Gutenberg sidebar
364 -* New Feature: Added a configurable OTTO cache TTL setting under Advanced Settings → Cache Management
365 -* New Feature: Added a ZIP upload endpoint and MCP tool for importing landing pages
366 -* New Feature: Import Open Graph and Twitter social titles and descriptions from Yoast, Rank Math, and AIOSEO
367 -* New Feature: Import Open Graph and Twitter social images from Yoast, Rank Math, and AIOSEO
368 -* Improvement: Added a pre-flight memory check before image conversion to avoid exhausting PHP memory
369 -* Improvement: Batch optimizer batch size now adapts to available server memory
370 -* Improvement: Replaced unbounded media queries with paginated queries in the batch optimizer
371 -* Improvement: Sub-size image conversion is now split across requests to reduce peak memory usage
372 -* Improvement: Cron batch processing now respects the server's max_execution_time limit
373 -* Improvement: WordPress core sitemap is automatically disabled while the MetaSync sitemap is active
374 -* Improvement: Redirect saves now warn when the destination URL does not resolve
375 -* Improvement: The MCP sitemap check now uses the plugin's virtual sitemap tracking instead of physical files
376 -* Improvement: 404 Monitor no longer logs WordPress system paths as broken links
377 -* Improvement: Added a magnifier icon to the Media Optimization search field
378 -* Fix: OTTO no longer corrupts inline JavaScript by collapsing modern operators during rendering
379 -* Fix: Resolved fatal errors on Divi sites during OTTO HTTP rendering and from a missing admin navigation class
380 -* Fix: Prevented fatal errors from missing dependencies — telemetry autoload, the 404 Monitor database class, the DOMDocument extension, and a removed Yoast SEO title separator method
381 -* Fix: OTTO titles, descriptions, and schema now persist reliably — saved even when unchanged, back-filled to SEO plugin fields, kept after un-deploy, and output when OTTO is off
382 -* Fix: Stopped duplicate Open Graph/Twitter tags and cleared social meta when duplicating a post
383 -* Fix: Archive pages now output their own canonical URL and og:url instead of the first post's
384 -* Fix: WebP picture tag rewriting now applies to Divi featured images
385 -* Fix: Sitemap now includes pages and custom post types when category/tag filters are set
386 -* Fix: Resolved a schema markup settings key inconsistency in the settings API
387 -* Fix: Settings saves no longer show a false error notice, meta-box checkboxes persist, and a race condition that could wipe settings was resolved
388 -* Fix: OTTO image alt text now applies when pages use relative image URLs
389 -* Fix: Polished admin UI — Optimization Rate stats card alignment, tab icon centering, and XML Sitemap checkbox spacing
390 -
391 -= 2.6.10 =
392 -* New Feature: Media Optimization — compress images and serve next-gen WebP/AVIF formats to improve page load speed
393 -* New Feature: Added post type, taxonomy, and URL exclusion controls across all sitemaps
394 -* New Feature: Added per-file Delete buttons for individual XML sitemaps (General, News, Video)
395 -* Improvement: Switched sitemap generation to virtual-only mode with regenerate-on-miss to resolve nginx 403 errors
396 -* Improvement: Renamed sitemap Save buttons to "Save & Generate Sitemap" across the General, News, and Video tabs
397 -* Improvement: Throttled bot crawl-log requests to reduce server load on high-traffic sites
398 -* Fix: Resolved a case where the plugin caused site outages on cart/checkout and non-GET requests
399 -* Fix: Restored meta boxes and SEO fields on custom post types
400 -* Fix: OTTO no longer reports as installed on projects with non-matching UUIDs
401 -* Fix: Preserved Divi's late-injected CSS during OTTO server-side rendering and fixed Divi blog/portfolio AJAX pagination
402 -* Fix: Respected Yoast SEO titles and descriptions when OTTO is undeployed
403 -* Fix: Scoped OTTO cache keys and rate limits per site on Multisite installs
404 -* Fix: Skipped OTTO rendering on XML endpoints to prevent invalid output
405 -* Fix: Sanitized malformed self-closing tags during OTTO rendering that could expand site navigation
406 -* Fix: Prevented duplicate H1 headings when content already contains the post title
407 -* Fix: Guarded the mime_content_type() call to prevent fatal errors on hosts without the fileinfo extension
408 -* Fix: Deduplicated URLs and filtered junk entries from the XML sitemap
409 -* Fix: The XML Sitemap sidebar now stays fixed instead of scrolling with the page
410 -* Fix: 404 Monitor date filters now persist across pagination and sorting and apply only when the filter button is clicked
411 -* Fix: Connection status no longer flips to "Not Connected" on idle plugin pages
412 -* Fix: Corrected WP Rocket compatibility render-mode detection
413 -* Fix: Suppressed admin notices from rendering inside the setup wizard header
414 -* Fix: Removed dangling breadcrumb references when stripping third-party BreadcrumbList schema
415 -* Fix: Breadcrumbs checkbox values now persist correctly when unchecked
416 -* Fix: Fixed the Quick Links table background and borders in dark mode
417 -* Fix: Fixed dashicon button icon misalignment on some sites
418 -* Fix: Tightened REST API auth callbacks and fixed primary category cleanup on custom post types
419 -* Fix: Fixed the perpetual Sync Now throttle message by separating the manual-sync cooldown from the heartbeat
420 -
421 -= 2.6.9 =
422 -* Security: Move API key authentication from query parameter to Authorization Bearer header
423 -* Security: Fix X-Forwarded-For IP spoofing in OTTO bot detector — trust Cloudflare header first
424 -* Security: Cache-Control changed from public to private to prevent CDN nonce sharing
425 -* Fix: OTTO heading replacement corrupted when heading contains inline elements (e.g. span tags)
426 -* Fix: SSO one-click auth fails on sites with external object cache
427 -* Fix: Guard against missing DOMDocument extension in check_and_fix_post_content
428 -* Fix: POST heartbeat before GET ping on manual API key save to register WPWebsiteHeartbeat
429 -* Fix: Strict-equality bug in is_virtual_mode() causing Virtual badge not to show after first request
430 -* Fix: Remove newline-to-br replacement that injects whitespace into synced content
431 -* Improvement: API key input field now reverts to previous valid key on validation failure
432 -* Improvement: Deployed OTTO titles no longer show on frontend when Disable OTTO for Logged in Users is enabled
433 -* Improvement: Robots.txt Disallow / warning now triggers correctly with fixed regex matching
434 -* Improvement: Robots.txt timestamps now respect WordPress timezone setting instead of hardcoded UTC
435 -
436 -= 2.6.8 =
437 -* Security: Use hash_equals() for timing-safe API key comparison in custom pages API
438 -* Security: Resolve 4 Snyk Code MEDIUM findings — DOM XSS and info exposure
439 -* Security: Fix open-redirect vulnerability in redirection plugin with domain validation
440 -* Fix: Original image permanently deleted before converted file is validated — data loss on Imagick memory failure
441 -* Fix: Light SA logo not visible on light theme
442 -* Fix: Strip OTTO post meta when WordPress pages are cloned or duplicated
443 -* Fix: Sitemap and LLMs.txt transients not invalidated when content is updated
444 -* Improvement: Make bot statistics table responsive at narrow viewports
445 -* Improvement: Refactor sitemap collect_all_urls() to eliminate N+1 query explosion
446 -* Improvement: Exclude Beaver Builder templates from sitemap generation
447 -* Improvement: Upgrade routine flag logic and unit tests for Beaver Builder template exclusion
448 -
449 -= 2.6.7 =
450 -- Fix: OTTO buffer caching empty/error pages
451 - - Fix: PHP lexicographic string comparison in execution time validation
452 - - Fix: Plugin causing server overload via unbounded cron accumulation
453 - - Fix: Replace TRUNCATE with bounded delete in 404 monitor add()
454 - - Fix: Add redirect-loop detection to edit and import paths
455 - - Fix: Non-atomic OTTO cache lock allowing concurrent workers to bypass lock
456 - - Fix: Remove duplicate inline JS causing double POST on excluded URL add
457 - - Fix: Replace TOCTOU rate limiter with atomic wp_cache_add/incr pattern
458 - - Fix: Fill empty catch blocks in OTTO render strategy with error_log and telemetry
459 - - Fix: Harden JWT verification and protect sensitive wp_options in MCP server
460 - - Fix: Breadcrumbs disable_schema checkbox state not persisting on save
461 - - Fix: OTTO title/schema override checks live suggestions when third-party SEO plugin active
462 - - Fix: Centralize cron-hook cleanup on plugin deactivation
463 - - Fix: API key validation fails when WordPress Home URL uses www subdomain
464 - - Fix: Add per-user transient caching to admin bar status indicator
465 - - Fix: Make sitemap generation memory-safe with streaming and filesystem fallbacks
466 - - Fix: Add static flag guard to eliminate redundant schema queries
467 - - Fix: Create Redirect button from 404 Monitor not opening redirection form
468 - - Security: Remediate 47 semgrep findings across plugin codebase
469 -
470 -= 2.6.6 =
471 -- Fix: Invalidate OTTO JS detection transient on settings save and cache clear
472 - - Fix: Harden MCP tool registration to prevent fatal error on missing class
473 - - Fix: Heartbeat public-hash cache-key mismatch
474 - - Fix: TypeError on strtolower() with array @type in OTTO crawl-notify endpoint
475 - - Fix: Gate admin JS loading to MetaSync pages only
476 - - Fix: Process OTTO webhook URLs in background via WP-Cron
477 - - Fix: Optimize sync history cleanup with fetch-then-delete pattern
478 - - Fix: Cache OTTO manual exclusion list with transient and add composite index
479 - - Fix: Use SELECT COUNT(*) instead of loading all records in get_count()
480 - - Fix: Remove blocking Facebook Graph API call from wp_head
481 - - Fix: Only load MetaSync admin CSS on plugin pages
482 - - Fix: Lazy-load MCP server and SEO-inventory controller for non-MCP requests
483 - - Fix: Broken SQL placeholder in get_attachment_by_name()
484 - - Fix: Refactor rate limiter to use per-key transients instead of wp_options blob
485 -
486 -= 2.6.5 =
487 -- Feat: Native-First SEO Write Layer — sync all MetaSync/OTTO optimizations to native WordPress SEO meta fields
488 - - Feat: Per-post advanced robots directives — nofollow, noarchive, nosnippet, noimageindex, max-snippet, max-image-preview, max-video-preview
489 - - Feat: Redirect health checker — MCP tool + admin panel
490 - - Feat: Redirect loop detection on create/save
491 - - Fix: Reduce memory footprint by gating heavy init on non-MetaSync AJAX requests
492 - - Fix: ArgumentCountError resolved by replacing printf with echo in code-snippets template
493 - - Fix: Unhook Elementor filters during MCP update_site_info under API key auth
494 - - Fix: Rename 16 non-prefixed AJAX actions to use metasync_ prefix
495 - - Fix: Promo sidebar overlap with main nav at narrow viewports
496 - - Fix: OTTO DOM corruption when page text contains less-than followed by digits
497 - - Fix: Restore case-sensitive SVG/HTML5 attributes after OTTO DOM processing
498 - - Fix: MetaSync status badge not updating on disconnect/reconnect
499 - - Fix: Remove duplicate canonical tags on sites without third-party SEO plugin
500 - - Fix: Submit Report button icon vertical alignment
501 - - Fix: 404 Monitor pagination layout and filter row overflow
502 - - Fix: Responsive layout for Redirections tablenav filters and search
503 -
504 -= 2.6.4 =
505 -- Fix: LLMs.txt settings now correctly persisted on save
506 - - Fix: Hidden diagnostic post no longer triggers Jetpack Social or RSS auto-share
507 - - Fix: mb_encode_numericentity() fatal on hosts without mbstring extension replaced with pure-PHP fallback
508 - - Fix: class-metasync-term-plugin-sync.php require_once guarded with file_exists to prevent fatal on Nexcess hosting
509 - - Fix: wp_tempnam() undefined fatal in Dimension Injector when called outside wp-admin context
510 - - Fix: WpeCommon::purge_url() undefined fatal in cache purge on WP Engine now guarded with method_exists
511 - - Fix: MCP_Tool_Cache_Purge_All class not found fatal guarded with class_exists check
512 - - Fix: Google Index require_once calls guarded with file_exists to prevent fatal when files are missing
513 - - Fix: PHP 8.1 add_submenu_page(null) deprecation fixed in import page and HTML visual editor
514 -
515 -= 2.6.3 =
516 -- Feature: BreadcrumbList schema auto-generated from post hierarchy with cross-plugin deduplication for Yoast, Rank Math, and AIOSEO
517 - - Feature: Hreflang language alternates support with WPML integration for multilingual sites
518 - - Feature: LLMs.txt generator with dedicated settings page and MCP tools
519 - - Feature: News sitemap and video sitemap generation
520 - - Feature: Taxonomy term SEO meta synced to Yoast, Rank Math, and AIOSEO for category and tag archive pages
521 - - Feature: Open Graph output extended with article timestamps, author, section, tags, and og:image dimensions
522 - - Feature: MCP tools for SEO plugin audit — read, diff, sync, and conflict detection across installed SEO plugins
523 - - Feature: MCP tools for OTTO pipeline — trigger optimization, check status, and verify SEO output
524 - - Feature: MCP cache-purge tools for per-URL and full-site cache invalidation
525 - - Feature: Whitelabel color personalization for admin UI
526 - - Improvement: Composer classmap autoloader covering all plugin classes, removing 55+ scattered require_once calls
527 - - Improvement: MCP rate limiter wired into all tool calls with proper 429 responses
528 - - Improvement: GA4 event tracking replaces Mixpanel for plugin analytics
529 - - Improvement: Execution time limit added to MCP database query tool to prevent long-running queries
530 - - Fix: OTTO title and meta replacement no longer strips dollar signs from values like $500
531 - - Fix: Google Instant Indexing now auto-submits on post publish
532 - - Fix: LLMs.txt generation now excludes noindex posts
533 - - Fix: Missing PHP DOM extension handled gracefully in HTML-to-builder converter
534 - - Fix: Yoast and AIOSEO term meta storage corrected; SEO conflict handler fixed for term archive pages
535 - - Fix: WP Engine cache integration no longer calls non-existent purge_url() method; Throwable errors now caught
536 - - Fix: Beaver Builder templates excluded from sitemap generation
537 - - Fix: Gutenberg blockquote block no longer shows invalid content error after OTTO applies changes
538 - - Fix: Redirections page filter and search controls no longer trigger add-redirection form validation
539 - - Fix: Settings page no longer shows Synced label and invalid API key error simultaneously
540 - - Fix: Unsaved changes notification close button now works correctly
541 - - Fix: Composer autoloader updated with missing class entries to prevent fatal errors on fresh installs
542 -
543 -= 2.6.2 =
544 -- Improvement: Whitelabel now supports separate logo uploads for light and dark admin themes
545 - - Improvement: Breadcrumbs settings panel redesigned with cleaner layout and more configuration options
546 - - Fix: Page title tags now update correctly when Yoast SEO is active
547 - - Fix: OTTO optimizations no longer disappear when Rank Math is installed alongside the plugin
548 - - Fix: Duplicate keywords meta tag no longer appears in page source after OTTO applies keyword recommendations
549 - - Fix: Theme builder selector no longer lists builders that are not installed or detected on the site
550 - - Fix: MCP server now returns descriptive error messages instead of generic failures
551 - - Fix: MCP server correctly handles post status and primary category fields
552 - - Fix: MCP server now supports Twitter card meta fields and bulk taxonomy term operations
553 - - Fix: Plugin sidebar icon and menu now match standard WordPress appearance
554 - - Fix: Long field labels in Settings no longer overflow their column
555 - - Fix: 404 Monitor bulk actions bar stays on one line instead of wrapping
556 - - Fix: Breadcrumbs settings section now shows its icon correctly
557 -
558 -= 2.6.1 =
559 -- Feature: Bulk SEO health dashboard — check pages missing meta title, description and schema
560 - - Feature: New schema types: LocalBusiness, HowTo, VideoObject
561 - - Feature: Extended schema types: Event, JobPosting, Review, Course, Organization, Person, WebSite
562 - - Feature: Breadcrumbs module with HTML output and BreadcrumbList schema
563 - - Feature: Primary category selector in post editor sidebar
564 - - Feature: Internal link suggestions in post editor
565 - - Feature: Site Verification page added to SEO navigation
566 - - Feature: CPU load awareness and deferral settings
567 - - Feature: Whitelabel-aware promo sidebar and quick links settings
568 - - Improvement: Replace all emoji icons with WordPress Dashicons across admin UI
569 - - Improvement: Compatibility page redesign: accordion rows, themes, CDN, troubleshooting section
570 - - Fix: Duplicate schema markup and meta descriptions on multiple pages
571 - - Fix: Sync handlers returning HTTP 200 with empty body on internal WP_Error — PHP 8 fatal prevented
572 - - Fix: Old UI flashing before new UI loads on page transition
573 - - Fix: UI misalignment on Dashboard and various admin pages
574 - - Fix: Schema markup not rendering correctly
575 - - Fix: NitroPack purge conflict on page-load path
576 - - Fix: Image alt-text fallback on Oxygen HTTP render path
577 - - Fix: Content Genius page sync full-width on Oxygen Builder
578 - - Fix: Crawl monitoring showing no data despite successful crawls
579 - - Fix: Oxygen Builder synced post content not visible on front-end
580 - - Fix: Restore Performance and CPU settings tab removed during refactor
581 - - Fix: Replace burst mode heartbeat with lightweight connection-ping
582 - - Fix: Render OTTO-persisted otto_jsonld in frontend schema output
583 - - Fix: schema_types returning empty array in wordpress_get_post_by_url
584 - - Fix: Correct Rate Now review URL and replace emoji star with Dashicon
585 - - Fix: Telemetry noise and whitelabel JSON decode bug
586 - - Fix: Add save button to Site Verification, Local Business, Code Snippets pages
587 - - Fix: Remove dead wp_ajax_metasync hook pointing to non-existent method
588 - - Fix: robots_txt_backups table missing on fresh activation
589 - - Fix: WP admin sidebar plugin icon vertical misalignment
590 -
591 -= 2.5.27 =
592 -- Fix: Image alt-text unreliable on Oxygen theme HTTP render path; added string-based fallback
593 -- Fix: Content Genius page sync renders full-width on Oxygen Builder
594 -- Fix: Apostrophe truncation in SEO extract functions causing content to be cut short
595 -- Fix: Crawl monitoring module shows no data despite successful crawl executions
596 -- Fix: Oxygen Builder synced post content not visible on front-end
597 -- Fix: CPU performance tab missing from Advanced Settings after refactor
598 -- Fix: JSON-LD schema deduplication: duplicate blocks on the same page
599 -- Fix: Schema/JSON-LD suppression for OTTO when third-party SEO plugins (Yoast, Rank Math, AIOSEO) are active
600 -- Fix: Remove dead `wp_ajax_metasync` hook pointing to non-existent `sync_items` method
601 -- Fix: Add missing `display_cpu_deferral_notice` method to `Metasync_Admin`
602 -- Fix: Oxygen Builder page template override guard in `create_page()` and `update_page()` (REST API)
603 -- Fix: Stale-options overwrite in `test_heartbeat_api_connection()`; replace burst-mode heavy heartbeat with lightweight connection-ping endpoint
604 -- Fix: Image alt-text string-based fallback in OTTO HTTP render path; Divi `data-et-multi-view` JSON attribute handling
605 -- Feature: Internal link suggestions in post editor sidebar
606 -- Feature: Replace burst-mode heavy heartbeat (`SyncCustomerParams`) with lightweight `connection-ping` endpoint — reduces payload and server load during key-pending state
607 -- Feature: MCP sync log: log changes, rollback, 90-day auto-clear, and manual clear button
608 -- Feature: Code minification and delivery (JS minifier)
609 -- Feature: CPU load awareness: adaptive deferral based on server load
610 -- Improvement: MCP `wordpress_get_post_by_url` extended to return full SEO metadata (title, description, schema, OG fields, focus keyword)
611 -- Improvement: MCP System diagnostics and read-only database access tools (`wordpress_get_system_info`, `wordpress_get_active_plugins`, `wordpress_get_cron_jobs`, `wordpress_db_query`)
612 -- Improvement: MCP `wordpress_get_seo_inventory` tool: bulk SEO health data across all posts in one call
613 -- Improvement: Log - fatal-only filtering — `capture_php_error()` now passes only `E_USER_ERROR` and `E_RECOVERABLE_ERROR`; warnings, notices, and deprecations are dropped
614 -- Improvement: Log - level gate in `send_to_sentry()` and `TelemetryManager::send_message()` — info/warning/debug events never reach the proxy
615 -- Improvement: Log - debug window reduced from 60 min to 15 min (900s transient TTL) for faster re-reporting of recurring fatal errors
616 -- Improvement: Logging cleanup - removed 15+ dead `log_heartbeat('info', ...)` calls (method already early-returns on `'info'`)
617 -- Improvement: Logging cleanup - removed operational noise from `Metasync_Rate_Limiter`, `Metasync_Cache_Purge`, and `Metasync_API_Backoff_Manager`
618 -
619 -= 2.5.26 =
620 -* Improvement: AIOSEO compatibility
621 -* Fix: preg_replace backreference injection in title deduplication (titles with \$N sequences)
622 -* Fix: Title tag deduplication and SEO plugin conflict handlers
623 -* Fix: API rate limiting causes stale cache and robots/canonical settings ignored
624 -* Fix: Dollar signs being stripped from image alt text
625 -* Fix: Heading deployment on Divi/page-builder sites
626 -* Fix: PHP 7.4 compatibility — polyfills for str_contains/str_starts_with/str_ends_with and match expression rewrites
627 -* Feature: NitroPack full flush + targeted object cache
628 -* Feature: WP Database & Object Caching cleanup
629 -
630 -= 2.5.25 =
631 -**Bug Fixes:**
632 -* Fix: OTTO persistence not syncing titles, descriptions, OG/Twitter fields were only written when persistence was enabled, but OTTO's own render filters read those same staging keys; added coverage for regular posts/pages; OG/Twitter persistence now also writes to RankMath and Yoast equivalents so SEO plugins pick up OTTO data; OG renderer falls back to OTTO staging keys when persistence keys are empty
633 -* Fix: DB column missing on older installs now self-heals all three required columns
634 -* Fix: Cap WP announce ping to max 5 per plugin activation lifecycle — removed unbounded cron retry; counter resets on fresh activation and clears on deactivation
635 -* Fix: Dollar signs stripped from image alt text during deployment
636 -* Fix: Heading deployment broken on some outdated Divi versions
637 -* Fix: One case of duplicate meta name="description tags when MetaSync and AIOSEO coexist
638 -* Fix: XML sitemap auto-update not triggering when posts published via Gutenberg
639 -* Fix: Divi header/footer hidden on blog posts synced via Content Genius
640 -
641 -= 2.5.24 =
642 -**Bug Fixes:**
643 -* Fix: Whitelabel slug not respected in admin links — \"Add Redirect\", \"404 Monitor\" tab, and \"Import from SEO Plugins\" buttons were using hardcoded `searchatlas-*` slugs instead of the configured WL slug
644 -* Fix: Hardcoded SearchAtlas/Search Atlas brand strings replaced with whitelabel-aware output across admin views, dev panel, site health checks, and MCP tool descriptions
645 -* Fix: \"SearchAtlas AI Pages\" dashboard widget title ignoring whitelabel plugin name setting
646 -* Fix: Whitelabel icon lost after exporting and importing the plugin on a different site — icon is now bundled inside the export ZIP and restored to the new site's uploads directory on import
647 -* Fix: Whitelabel icon not shown on WordPress Dashboard → Updates page — icon injected into the `update_plugins` site transient so the correct branded icon appears regardless of the update API response
648 -
649 -= 2.5.23 =
650 -**Bug Fixes:**
651 -* Fix: MetaSync WP plugin breaks Elementor front-end spacing — SimpleHtmlDOM `stripRN` was stripping whitespace between inline elements; now set to `false`
652 -* Fix: Elementor headings override Global Fonts after Content Genius sync — removed forced Roboto font so headings inherit site's Global Font settings
653 -* Fix: Elementor Canvas template incorrectly applied when syncing articles as posts
654 -* Fix: Admin bar status icon now reflects missing UUID as a distinct warning state (orange) rather than generic disconnected state
655 -
656 -**Improvements:**
657 -* Performance: Added transient cache to OTTO JS check to reduce overhead on every request
658 -* Improvement: Cache Purge — Added per-URL purge support
659 -* Improvement: Cache Purge — Query string normalization strips UTM/gclid/fbclid params before purge so all URL variants resolve to the same canonical URL
660 -* Improvement: Cache Purge — Edge CDN purge integrations targeted via configuration
661 -* Improvement: Remove non-publishable roles (Subscriber, Contributor) from Content Genius User Roles to Sync setting
662 -* Improvement: Validation message added when publishing AI Landing Pages with plain permalink structure
663 -
664 -**Features:**
665 -* Feature: WordPress Site Health Integration — MetaSync now registers checks in the WP Site Health panel
666 -* Feature: Media Optimization
667 -* Feature: Rate the Plugin notice — shows a dismissible prompt after 7 days of usage; hidden when whitelabel is enabled
668 -
669 -**Refactoring:**
670 -* Removed `instant-index/` vendor tree (~714 files); replaced Google SDK with native PHP implementation
671 -* Decomposed `Metasync_Admin` god object (17,849 lines) into 10 focused classes; admin reduced to ~3,986 lines
672 -* Decomposed `Metasync_Public` into focused classes; REST API routes extracted to `Metasync_Rest_Api`
673 -* Extracted 23 inline JavaScript blocks into proper `.js` files loaded via `wp_enqueue_script`
674 -
675 -= 2.5.22 =
676 -* Improvement: Heartbeat connection/pool logic to reduce the number of external requests
677 -* Improvement: Adapt scenarios of Idle WpRocket + Active Kinsta Cache that was preventing the cache to be purged.
678 -
679 -= 2.5.21 =
680 -###Features
681 - - Add hosting cache integration (WP Engine + Kinsta) with per-provider toggles in Advanced → Cache
682 - Management
683 - - Add WP Engine native cache purge (Varnish + Memcached) via `WpeCommon`
684 - - Add Kinsta native full-page cache purge via `KinstaCache::kinsta_cache_purge_full()`
685 -
686 - ###Bug Fixes
687 - - Fix: SEO placeholder tokens (%%title%%, %sitename%, #post_title#, etc.) now resolved to real values on
688 - import from Yoast / Rank Math / AIOSEO
689 - - Fix: Customer schema markup being injected into the global site header
690 - - Fix: WP Rocket compatibility — OTTO no longer disables WP Rocket JS/CSS optimization features
691 - - Fix: WP Rocket + Kinsta cache conflict causing meta title/description to revert
692 - - Fix: CSS injection methods (`enqueue_page_custom_css`, Elementor, Divi) missing from `Metasync_Public`
693 - - Fix: Plugin URI and Author URI fields silently discarding valid URLs
694 -
695 -= 2.5.20 =
696 -* Fixed a case where a empty Otto meta description was overwriting the existing one.
697 -
698 -= 2.5.19 =
699 -New Features
700 -
701 - - SEO Sidebar in Post Editor — Edit Meta Title, Meta Description and URL slug directly from the post/page
702 - editor sidebar
703 - - Bot Detection Layer for OTTO — Detects and tracks bots with statistics dashboard
704 - - Bing Instant Indexing — Submit URLs directly to Bing
705 - - Plugin Setup Wizard — Guided setup process for new users
706 - - Execution Settings — New controls under Advanced Settings
707 - - Debug Mode Auto-Disable & Safety Limits — Automatically disables after a set period
708 - - Enhanced Error Categorization — Improved monitoring with categorized error tracking
709 - - Virtual robots.txt / sitemap.xml — Served virtually when host blocks direct file writes
710 - - OTTO 404-Specific Filtering — Filter OTTO suggestions for 404 pages
711 - - Heartbeat reliability improvements
712 -
713 - Improvements
714 -
715 - - Schema Markup disable option — Can now be toggled per Post/Page Editor settings
716 - - Whitelabel form validation — Prevents partial saves without whitelabel mode activation
717 - - Host Blocking in whitelabel — Host blocking now covered by whitelabel settings
718 - - Support Token rate limiting — Properly enforced during login
719 - - Report Issue with Sentry User Feedback — Image attachments supported
720 - - MCP Tool API key auth — Fixed permission checks for API key-authenticated requests
721 -
722 - Bug Fixes
723 -
724 - - Fixed OTTO removing original meta description when no OTTO description deployed
725 - - Fixed plugin breaking Elementor front-end spacing when span tag was inner H1
726 - - Fixed WP Rocket + Kinsta cache conflict causing meta titles/descriptions to disappear
727 - - Fixed ALT text not applied on home page and other pages for Custom Theme
728 - - Fixed Plugin URI and Author URI not being saved
729 - - Fixed UI issues in admin screens
730 - - Fixed sync logs not showing newest info after filtering
731 - - Fixed exported whitelabel settings not uploading to another site
732 - - Fixed plugin settings hiding in plugin menu but not under WordPress General settings
733 - - Fixed Import SEO Data missing from access control list
734 -
735 - Stability / PHP 8.1+ Compatibility
736 -
737 - - 13 improvements with deprecated PHP functions below PHP V8.0
738 -
739 -= 2.5.18 =
740 -* Removed JWT-based temporary support access token system
741 -* Improved internal code documentation
742 -
743 -= 2.5.17 =
744 -* New: Administrator-Controlled Remote Support - Support access now requires explicit consent with secure, time-limited JWT tokens you generate and control
745 -* New: Support Access Management UI - Generate, view, and revoke support tokens directly from plugin settings
746 -* New: Email notifications when support tokens are generated, used, or revoked
747 -* Security: Connect to Search Atlas now uses time-limited, single-use tokens instead of persistent credentials
748 -* Security: Added rate limiting to Connect to Search Atlas authentication
749 -
750 -= 2.5.16 =
751 -* New: Administrator-Controlled Remote Support - Support access now requires explicit consent with secure, time-limited tokens you generate and control
752 -* Security: Enhanced Search Atlas SSO authentication with time-limited tokens
753 -* Security: Improved access control for administrative functions
754 -* Security: Added rate limiting to authentication endpoints
755 -* Improvement: Optimized token validation for better performance
756 -
757 -= 2.5.15 =
758 -* **Fix:** Improved compatibility with the **NitroPack** cache plugin.
759 -* **Fix:** Resolved a compatibility issue with the **Divi Timeline** widget.
760 -* **Fix:** Resolved a compatibility issue with the **Divi MultiView** widget.
761 -* **Fix:** Fixed an issue where static text in Advanced Settings displayed "OTTO/SA" instead of the **White Label** name.
762 -* **Fix:** Improved input validation within the **Redirection** form.
763 -* **Fix:** Fixed an issue where the **Cancel** button in the Redirection feature was not triggering.
764 -* **Fix:** Resolved an issue where **General Settings** would reset after a White Label password was set.
765 -* **Improvement:** Enhanced the filter and search modules in the **Redirection** section.
766 -* **Improvement:** When a new sitemap is generated, the **robots.txt** file will now automatically update with the correct link.
767 -* **Improvement:** Simplified plugin navigation for a better user experience.
768 -* **Improvement:** Removed deprecated files and unnecessary logs to optimize performance.
769 -* **Improvement:** Added **MCP** support.
770 -* **Improvement:** Added data persistence with **granularity** support.
771 -* **Improvement:** Improved notification messaging to better inform users about plugin updates.
772 -* **Feature:** Added full support for **Oxygen Builder**.
773 -* **Feature:** **Plugin Access Control:** Added a setting under Advanced Settings to define which user roles can access the plugin.
774 -* **Feature:** **Advanced Access Control:** White Label users can now disable specific settings or features per user role (**Settings \> White Label \> Advanced Access Control**).
775 -* **Feature:** Added a dedicated **Import SEO Data** screen.
776 -* **Feature:** Added an option to set all external links to `target="_blank"` (**Settings \> General \> Post/Page Settings**).
777 -* **Feature:** Added an option to add `rel="nofollow"` to all external links (**SEO \> Indexation \> Indexation Control**).
778 -* **Miscellaneous:** Minor cross-compatibility improvements for legacy PHP versions.
779 -
780 -= 2.5.14 =
781 -* **Fix:** Fixed a case of compatibility with Formidable Form Builder
782 -* **Fix:** Fixed a case of compatibility with Essentials Theme
783 -* **Fix:** Small adjustments in overall code for performance
784 -* **Improvement:** Improvement of OTTO SSR system
785 -* **Improvement:** Small adjustments in the UX
786 -* **Improvement:** Improvement of suggestions persistence in WP DB.
787 -
788 -= 2.5.13 =
789 -* **Fix:** Fixed a case where new published article was only showing headers
790 -* **Fix:** Fixed a case of compatibility with Essentials Theme
791 -* **Fix:** Small adjustments in overall code for performance
792 -* **New Feature: Whitelabel Plugin Export -** We included a feature to export a version of the plugin with your WL info. You could now easily install the plugin through different hosts, without the need to manually update/include the WL settings.
793 -* **New Feature: Import from RankMath/Yoast/AIOSEO -** We included a feature to import Robots.txt, Sitemap.xml, Schemas and Indexation Options from SEO Plugins.
794 -* **New Feature: Advanced Settings -> Clear Transient Cache -** We included a feature to clear the transient cache used to boost page performance. The cache stores the deployed changes from the platform, avoiding unnecessary process to apply the changes.
795 -* **Improvement:** Small adjustments in OTTO SSR
796 -* **Improvement:** Small adjustments in Light Theme version
797 -* **Improvement:** We included a option in the Settings to Disable OTTO Toolbar.
798 -* **Improvement:** Otto Toolbar is Whitelabel friendly (Apply WL name)
799 -
800 -= 2.5.12 =
801 -* **Fix:** Fixed a case of compatibility with Slider Revolution
802 -* **Fix:** Fixed a case of duplication in content synced
803 -* **Fix:** Small adjustments in PHP Warnings being triggered
804 -* **Fix:** Fixed a case of custom child theme triggering errors in error log
805 -* **New Feature: Light/Dark Theme -** We included a feature that allow users to switch the plugin colors to a light version.
806 -* **New Feature: Content Genius Authors -** We included a feature under settings where you could choose what user roles would be synced with Content Genius
807 -* **New Feature: OTTO Changes Viewer -** We included a feature to check what changes are being applied in a page optimized by OTTO.
808 -* **Improvement:** We improved the OTTO detection system.
809 -* **Improvement:** Changes in Robots.txt could be rollbacked with a historic of changes
810 -* **Improvement:** We included a option in the Indexation feature to disallow Category pages.
811 -* **Improvement:** Small optimizations in the code for page speed improvement.
812 -
813 -= 2.5.11 =
814 -* **Fix:** Fixed a case of compatibility with Woocommerce
815 -* **Fix:** Fixed a case of redirections not working when the target URL was deleted
816 -* **Fix:** Fixed a case of Error Logs not displaying correctly
817 -* **Fix:** Fixed a case of PHP Warning due outdated PHP version
818 -* **Fix:** Fixed a case of custom child theme triggering errors in error log
819 -* **New Feature: Report a Issue -** We included a feature that allow users to notify Issues directly from the plugin.
820 -* **Improvement:** We improved the Whitelabel settings to hide specific features if needed.
821 -* **Improvement:** Improvements on system messages
822 -
823 -= 2.5.10 =
824 -* **Fix:** Fixed a case of compatibility with Gravity Forms
825 -* **Fix:** Fixed a case of compatibility with Elementor Pro
826 -* **Fix:** Fixed a case of compatibility with DIVI
827 -* **Fix:** Fixed a case where the post editor preview was blocked
828 -* **Fix:** Fixed a case of original meta title and meta description being overwritten by OTTO
829 -* **New Feature: Custom Pages -** We included a feature that allow users to create custom pages bypassing existing Themes and Styles.
830 -* **New Feature:** **OTTO Excluded URLs -** We included under Compatibility Tab, a option to Turn off OTTO changes per URL.
831 -* **New Feature:** **Import Redirections -** Users could now import redirections from .csv file or directly from Yoast/RankMath/AIOSEO.
832 -* **Improvement:** We improved the Whitelabel settings to hide specific features if needed.
833 -* **Improvement:** Minor changes in core functions.
834 -* **Improvement:** Excluded from Sitemap generator URLs that aren't related with live pages.
835 -
836 -= 2.5.9 =
837 -* **Fix:** Fixed a case where the plugin was duplicanting the meta description tag
838 -* **Fix:** Fixed a case where the post editor was preventing user to save OG tags.
839 -* **New Feature:** We included in advanced settings a option to test the connectivity between host and the platform.
840 -* **New Feature:** Users could generate SITEMAP.xml directly in the plugin (This function will disable current sitemap.xml plugins)
841 -* **New Feature:** User could Enable/Disable storing OTTO Meta Title and Meta Description into the Database. When enabled, it will overwrite Meta Title and Meta Description of Yoast/RankMath, etc, and the old meta title and meta description
842 -* **Improvement:** We improved the Whitelabel settings to hide specific features if needed.
843 -* **Improvement:** Minor changes in cross-compatibility with outdated PHP versions.
844 -
845 -= 2.5.8 =
846 -* **Fix:** Some conditions was preventing saving new/edit posts directly from the editor
847 -* **Fix:** Non-standard tags found in body of the page, are being detect as plain text.
848 -* **New Feature:** White Label Clients could turn on/off Plugin features in Whitelabel Settings.
849 -* **Improvement:** Minor changes in cross-compatibility with outdated PHP versions.
850 -
851 -= 2.5.7 =
852 -
853 -
854 -= 2.5.6 =
855 -* **Prevention**: New error detection system.
856 -* **White Label**: 1-click Auth will sync the logo from the WL dashboard
857 -* **Fixes & UX**: Allow Rollback changes in Meta Title and Meta Description that was being stored in the Database.
858 -
859 -= 2.5.5 =
860 -* **Performance**: Significant improvement to dashboard loading speed.
861 -* **White Label**:
862 - * New dedicated White Label settings screen (Settings\>White Label).
863 - * Added password protection for White Label settings.
864 -* **Logging**: Introduced Sync Logs to display implemented website changes.
865 -* **Fixes & UX**: Minor UX adjustments and a fix for a false positive XSS issue in unused code.
866 -* **System**: Minor OTTO system optimizations to reduce disk space and memory usage.
867 -
868 -= 2.5.4 =
869 -* HotFix: In some cases, the **error log** was becoming too large, causing host performance to slow down.
870 -
871 -= 2.5.3 =
872 -* Included Compatibility Screen V.1, that shows most common Themes and plugins and compatibility
873 -* Improved error logs system
874 -
875 -= 2.5.2 =
876 -No changelog available.
877 -
878 -= 2.5.1 =
879 -* **Improved Dashboard Loading** for public dashboard URLs.
880 -* **Enhanced compatibility** with naked URLs (non-www) on the platform.
881 -* **Refined the Connection Status Bar.**
882 -* **Fixed a bug** where the Connection Tips Box didn't expand when clicked.
883 -* **Enabled the storage** of meta titles and descriptions in the database.
884 -* **Added an option** to disable the dashboard view from the settings page.
885 -* **Created a setting** to disable the Connection Status Bar from the admin bar.
886 -* **Implemented a new Telemetry system** to streamline bug detection.
887 -* **Resolved an issue** that caused error logs to be generated multiple times.
888 -* **Optimized the rendering of AMP pages** to prevent unrecognized HTML tags.
889 -
890 -= 2.5.1 =
891 -* **Improved Dashboard Loading** for public dashboard URLs.
892 -* **Enhanced compatibility** with naked URLs (non-www) on the platform.
893 -* **Refined the Connection Status Bar.**
894 -* **Fixed a bug** where the Connection Tips Box didn't expand when clicked.
895 -* **Enabled the storage** of meta titles and descriptions in the database.
896 -* **Added an option** to disable the dashboard view from the settings page.
897 -* **Created a setting** to disable the Connection Status Bar from the admin bar.
898 -* **Implemented a new Telemetry system** to streamline bug detection.
899 -* **Resolved an issue** that caused error logs to be generated multiple times.
900 -* **Optimized the rendering of AMP pages** to prevent unrecognized HTML tags.
901 -
902 -= 2.5.0 =
903 -* **Search Atlas SSO**
904 - * Users can now authenticate the plugin with a single click, eliminating manual setup steps and streamlining the entire process.
905 -* **OTTO One-Click Activation**
906 - * After successful authentication, if an OTTO project exists in Search Atlas, its configurations are automatically imported and applied within WordPress.
907 -* **White Label Branding**
908 - * The white label experience has been significantly improved. Upon one-click authentication, any configured white label settings are automatically imported. This includes:
909 - * Plugin Name
910 - * Logo
911 - * OTTO Name
912 - * Dashboard URL
913 - * From then on, all plugin connections reflect the customer’s white label branding. These settings are also accessible in a new **Advanced tab** within the plugin settings.
914 -* **Dashboard Access**
915 - * Direct access to the customer’s OTTO project dashboard is now available from within the plugin.
916 -* **Plugin Redesign**
917 - * The plugin has been fully rebranded with a refreshed design that aligns with the current Search Atlas dashboard, offering a more consistent and modern user experience.
918 -* **Reset Plugin**
919 - * A new option has been added to fully reset plugin configurations back to their default values.
920 -* **Error Logs**
921 - * Enhanced error logging is now available. When WordPress debug modes are enabled, the plugin can generate anonymous logs that may be shared with the specialist team for troubleshooting.
922 -* **Search Atlas SSO**
923 - * Users can now authenticate the plugin with a single click, eliminating manual setup steps and streamlining the entire process.
924 -* **OTTO One-Click Activation**
925 - * After successful authentication, if an OTTO project exists in Search Atlas, its configurations are automatically imported and applied within WordPress.
926 -* **White Label Branding**
927 - * The white label experience has been significantly improved. Upon one-click authentication, any configured white label settings are automatically imported. This includes:
928 - * Plugin Name
929 - * Logo
930 - * OTTO Name
931 - * Dashboard URL
932 - * From then on, all plugin connections reflect the customer’s white label branding. These settings are also accessible in a new **Advanced tab** within the plugin settings.
933 -* **Dashboard Access**
934 - * Direct access to the customer’s OTTO project dashboard is now available from within the plugin.
935 -* **Plugin Redesign**
936 - * The plugin has been fully rebranded with a refreshed design that aligns with the current Search Atlas dashboard, offering a more consistent and modern user experience.
937 -* **Reset Plugin**
938 - * A new option has been added to fully reset plugin configurations back to their default values.
939 -* **Error Logs**
940 - * Enhanced error logging is now available. When WordPress debug modes are enabled, the plugin can generate anonymous logs that may be shared with the specialist team for troubleshooting.
941 -* **Disable SSO**
942 - * Disable 1 Click WP Authentication from Dashboard
943 -
944 -BUG FIXES:
945 -
946 -* Disabled Canonical redirects generating loops
947 -* Check if URL could be crawled
948 -* Duplicated element with YITH plugin
949 -* FAQ format conflict with Theme Builder
950 -* Conflict with Hostify Booking Engine plugin
951 -* Old version of Elementro Pro breaking CSS
952 -
953 -= 2.4.4 =
954 -* Bug Fix: When user is logged via SSO, validate if the auth token is set
955 -
956 -= 2.4.3 =
957 -* HotFix 1: When user is logged via SSO, persist the session in the admin area
958 -
959 -= 2.4.2 =
960 -* Bug fix 1: large log size for heavy traffic sites
961 -
962 -= 2.4.1 =
963 -* Bugfix 1: Imported Posts published with duplicate images
964 -
965 -= 2.4.0 =
966 -* Feature 1: Single Sign On to WP from Dashboard
967 -* Feature 2: Modifying Existing Posts with CA AI
968 -* Improvement 1: Improved Error Handling for menu Image field
969 -* Improvement 2: Notification about permalink compatibility
970 -* Improvement 3: Remove outdate UI component (Clear Cache Button)
971 -* Improvement 4: Delete Zipped logs older than 30 days
972 -* Improvement 5: Displaying Block Quote elements from CA
973 -* Bug fix 1: Table of Contents not Working for some sites
974 -* Bug fix 2: FAQ Section not comming in correctly for some sites
975 -* Bug fix 3: Error warning while publishing to WP Elementor on some sites
976 -* Bug fix 4: Fatal Error triggered on invalid URI
977 -* Bug fix 5: Preserve redirection for forward slash ending urls
978 -
979 -= 2.3.11 =
980 -* Feature 1: Modifying Existing Posts with Content Assistant AI
981 -
982 -= 2.3.10 =
983 -* Bug fix 1: Critical Error with undeclared global Post Object
984 -
985 -= 2.3.8 =
986 -* Bug fix 1: Check out flow breaking on some sites
987 -
988 -= 2.3.7 =
989 -* Bug fix 1: Otto Interfering with some non-native Ajax requests
990 -
991 -= 2.3.6 =
992 -* Bug fix 1: Activating Otto SSR breaks UI on some sites
993 -
994 -= 2.3.5 =
995 -* Bug fix 1: Argument Count Error on some custom themes
996 -* Bug fix 2: Missing Title on some sites
997 -* Improvement 1: Serve Otto improved changes to Bot
998 -
999 -= 2.3.4 =
1000 -* Bug fix 1: Error Viewing blog posts in some Nginx sites
1001 -* Improvement 1: Otto Crawl monitoring
1002 -* Improvement 2: Remove redundant requests to back end
1003 -
1004 -= 2.3.3 =
1005 -* Bug fix 1: Checkout failure on some sites
1006 -
1007 -= 2.3.2 =
1008 -* Bug fix 1: Fatal Error on empty tag attributes
1009 -* Bug fix 2: Plugin Breaking Grid Page Sites
1010 -
1011 -= 2.3.1 =
1012 -* Improvement 1: Real Time Server Side Rendering - No HTML Cache
1013 -
1014 -= 2.3.0 =
1015 -* Bug fix 1: Fix 500 error when publishing a post
1016 -* Bug fix 2: Fix OTTO SSR disabling the WordPress edit menu
1017 -* Bug fix 3: Fix rest_forbidden error when publishing blog post
1018 -* Bug fix 4: Fix OTTO breaking website layout (top-bar)
1019 -* Improvement 1: Session Based Rendering
1020 -* Improvement 2: Reset Heartbeat API calls to 5-minute intervals
1021 -* Improvement 3: Update plugin layout and implement white-labelling
1022 -* Improvement 4: Implement new caching mechanism
1023 -
1024 -= 2.2.7 =
1025 -* Bug fix 1: Fix 429 page issue
1026 -* Improvement 1: Disabling Otto on error pages like 404
1027 -
1028 -= 2.2.6 =
1029 -* Improvement 1: Refactored CI/CD Pipelines and added releases
1030 -
1031 -= 2.2.5 =
1032 -* Bug fix 1: Critical error on metasync logs page
1033 -* Bug fix 2: Purchase process affected on Ecommerce Sites
1034 -
1035 -= 2.2.4 =
1036 -* Bug fix 1: AI page builder formatting
1037 -* Bug fix 2: Categories not syncing
1038 -
1039 -= 2.2.3 =
1040 -* Bug Fix 1: Compatibility Improvements
1041 -* Bug Fix 2: Hero Image not showing on some posts
1042 -* Bug Fix 3: Post title missing on some posts
1043 -
1044 -= 2.2.2 =
1045 -* Feature 1: Clear Otto Caches Button
1046 -* Feature 2: Option to disable Otto for logged in Users
1047 -* Bug fix 1: Hero Image not getting Updated
1048 -
1049 -= 2.2.1 =
1050 -* Bugfix 1: Fix login Loop Issue on Sites with OTTO SSR
1051 -* Bugfix 2: Fix Otto SSR Caching Problem on the Admin Side
1052 -* Bugfix 3: Fix H1 rendering on published Posts
1053 -
1054 -= 2.2.0 =
1055 -* Bugfix 1: Fix login Issues on Sites with OTTO SSR
1056 -* Bugfix 2: Accepting UUID to activate OTTO on Wordpress
1057 -* Feature 1: Alerting users to remove OTTO JS before activating OTTO SSR
1058 -* Feature 2: Instant deployment of changes made on OTTO dashboard
1059 -
1060 -= 2.1.1 =
1061 -* bugfix 1: Logging System - Fix Corrupted Zip Files
1062 -
1063 -= 2.1.0 =
1064 -* Feature : Server Side Rendering of the Otto Pixel
1065 -
1066 -= 2.0.0 =
1067 -* Feature 1: Metasync Specific Site Log Monitoring & Logging
1068 -* Bugfix 1: Failed Image Syncing
1069 -* Bugfix 2: Fix AI landing Page Visibility
1070 -* Bugfix 3: Headings Coming over with #000000
1071 -
1072 -= 1.9.3 =
1073 -* Fixed : Error Publishing Blog Article
1074 -
1075 -= 1.9.2 =
1076 -* Fix : Renamed DB Migration Class to Prevent Conflict
1077 -
1078 -= 1.9.1 =
1079 -* Feature 1: Stability Improvements
1080 -
1081 -= 1.9.0 =
1082 -* Bug fixes
1083 -* Fixed PHP 7.1.x compatibility issues
1084 -
1085 -= 1.8.9 =
1086 -* Enhanced security measures
1087 -
1088 -= 1.8.8 =
1089 -* Improved general page settings
1090 -
1091 -= 1.8.7 =
1092 -* Enhanced compatibility with WordPress Dashboard
1093 -
1094 -= 1.8.6 =
1095 -* Server-side improvements
1096 -
1097 -= 1.8.5 =
1098 -* Additional server optimizations
1099 -
1100 -= 1.8.4 =
1101 -* Resolved logic issues for white labels
1102 -
1103 -= 1.8.3 =
1104 -* Fixed isset issues for white labels and public view
1105 -
1106 -= 1.8.2 =
1107 -* Addressed isset issues for white labels and error logging
1108 -
1109 -= 1.8.1 =
1110 -* Fixed isset issues for white labels
1111 -
1112 -= 1.8.0 =
1113 -* Fixed "Sync now" plugin list addition
1114 -
1115 -= 1.7.9 =
1116 -* Fixed content removal in Debug Log
1117 -
1118 -= 1.7.8 =
1119 -* Fixed content removal in Debug Log
1120 -
1121 -= 1.7.7 =
1122 -* Improved Default Debug Log
1123 -
1124 -= 1.7.6 =
1125 -* Enhanced Default Debug Log
1126 -
1127 -= 1.7.5 =
1128 -* Improved Debug functionality
1129 -
1130 -= 1.7.4 =
1131 -* General code improvements
1132 -
1133 -= 1.7.3 =
1134 -* Continued code enhancements
1135 -
1136 -= 1.7.2 =
1137 -* Fixed various errors
1138 -
1139 -= 1.7.1 =
1140 -* Addressed metasync error logging
1141 -
1142 -= 1.7.0 =
1143 -* Enhanced code and integrated Otto
1144 -
1145 -= 1.6.9 =
1146 -* Improved compatibility with Divi Child theme
1147 -
1148 -= 1.6.8 =
1149 -* Fixed issues with figure tags
1150 -
1151 -= 1.6.7 =
1152 -* Enhanced support for Iframe tags
1153 -
1154 -= 1.6.6 =
1155 -* Redirects updated after White Label changes
1156 -
1157 -= 1.6.5 =
1158 -* Code and White Label improvements
1159 -
1160 -= 1.6.4 =
1161 -* General code improvements
1162 -
1163 -= 1.6.3 =
1164 -* Continued code enhancements
1165 -
1166 -= 1.6.2 =
1167 -* Code improvements and menu renaming
1168 -
1169 -= 1.6.1 =
1170 -* Code enhancements and White Label updates
1171 -
1172 -= 1.6.0 =
1173 -* Code improvements and added Sub Pages functionality
1174 -
1175 -= 1.5.9 =
1176 -* Code improvements and HTML format fixes
1177 -
1178 -= 1.5.8 =
1179 -* Code improvements and HTML format fixes
1180 -
1181 -= 1.5.7 =
1182 -* Code enhancements and bug fixes
1183 -
1184 -= 1.5.6 =
1185 -* Code improvements and bug fixes
1186 -
1187 -= 1.5.5 =
1188 -* General code improvements
1189 -
1190 -= 1.5.4 =
1191 -* Code enhancements
1192 -* Fixed List Item components
1193 -
1194 -= 1.5.3 =
1195 -* Code improvements
1196 -* Integrated Divi
1197 -
1198 -= 1.5.2 =
1199 -* Code enhancements
1200 -* Fixed Elementor activation bug
1201 -
1202 -= 1.5.1 =
1203 -* General code improvements
1204 -
1205 -= 1.5.0 =
1206 -* Continued code enhancements
1207 -
1208 -= 1.4.9 =
1209 -* General code improvements
1210 -
1211 -= 1.4.8 =
1212 -* Added CSS for Search Atlas
1213 -* Code enhancements
1214 -
1215 -= 1.4.7 =
1216 -* Added Permalink Structure Validator
1217 -* Enhanced Page Editor checks
1218 -* Option to choose Page Editor
1219 -* Code improvements and bug fixes
1220 -
1221 -= 1.4.6 =
1222 -* Code enhancements and bug fixes
1223 -
1224 -= 1.4.5 =
1225 -* Code improvements and bug fixes
1226 -* Removed deprecated features from codebase
1227 -
1228 -= 1.4.4 =
1229 -* Code enhancements and bug fixes
1230 -* Added option to enable/disable features menu in General settings
1231 -
1232 -= 1.4.3 =
1233 -* Changed post permalink approach to prevent conflicts
1234 -* Updated page template to default instead of blank
1235 -* Set page parent to main if page doesn't exist
1236 -* Fixed permalink function in getPagesList
1237 -* Resolved minor bugs and improved code
1238 -
1239 -= 1.4.2 =
1240 -* Added new API endpoint `getPostByURL` to find posts by URL
1241 -* Updated README content and "Tested up to" attribute to latest version
1242 -* Updated `getPagesList` API to display all pages in JSON response
1243 -* Fixed bug in retrieving `post_id` in API codes
1244 -* Improved Pages management API for sub pages
1245 -
1246 -= 1.4.1 =
1247 -* Added three new API endpoints for creating pages
1248 -* Renamed heartbeat endpoints and functions
1249 -* Updated heartbeat categories and user sync limits and responses
1250 -* Updated plugin name and description
1251 -* Added plugin banner for marketplace page
1252 -* Removed Sitemaps feature, functions, and routes
1253 -* Added option to enable/disable Schema on Posts and Pages
1254 -* Improved General Settings UI/UX
1255 -* Fixed bugs and enhanced code
1256 -
1257 -= 1.4.0 =
1258 -* Feature: Basic Markdown support `[markdown] MARKDOWN CONTENT [/markdown]`
1259 -* Feature: Set a new Landing Page via API
1260 -* API code improvements and bug fixes
1261 -
1262 -= 1.3.4 =
1263 -* Enhanced Error Logs viewer and messages
1264 -* Added new error logs API
1265 -* Fixed `createPost` API code bug
1266 -
1267 -= 1.3.3 =
1268 -* Performance enhancements and bug fixes
1269 -
1270 -= 1.3.2 =
1271 -* Fixed bugs related to post and page images
1272 -
1273 -= 1.3.1 =
1274 -* Updated UI for HTML Accordion components
1275 -
1276 -= 1.3.0 =
1277 -* Editor/APIs: Added HTML Accordion support via shortcode `[accordion]CONTENT[/accordion]`
1278 -* APIs: Enabled editing drafts or published posts and pages multiple times without duplication via permalink
1279 -* APIs: Allowed manual addition of schema/scripts/styles to posts and pages
1280 -* APIs: Improved `deleteItem` endpoint code to comply with REST standards
1281 -* APIs: Numerous bug fixes and code enhancements for better performance and stability
1282 -
1283 -= 1.2.8 =
1284 -* Added new business type "Tree Services" to Business SEO page
1285 -
1286 -= 1.2.7 =
1287 -* Added Error Logs GET API endpoint
1288 -* Enabled functionality to trigger on-demand payload requests
1289 -* Added heartbeat HTTP request error information to Error Logs
1290 -* Set a limit of one thousand records for categories and users
1291 -
1292 -= 1.2.6 =
1293 -* Fixed issue displaying all fields in Optimal Settings
1294 -
1295 -= 1.2.5 =
1296 -* Enabled selecting the author of a post/page randomly in Create/Update item APIs
1297 -* Added ALT text for hero images in Create/Update item API payloads
1298 -* Set specific post dates within the last two months in Create API
1299 -* Added validation for `post_date` in Create/Update item APIs
1300 -* Refactored Create/Update item API code
1301 -
1302 -= 1.2.4 =
1303 -* Added feature and menu to enable/disable Open Graph, Facebook, and Twitter meta tags for all posts and pages
1304 -* Updated plugin version and README file
1305 -
1306 -= 1.2.3 =
1307 -* Enabled returning revisions for posts or pages in the update endpoint
1308 -* Added or updated post tags in Create and Update endpoints
1309 -* Included tags list in heartbeat API payload
1310 -
1311 -= 1.2.2 =
1312 -* Optimized Create and Update endpoints for media uploads
1313 -* Added redirection functionality in Create and Update endpoints
1314 -* Enabled/disabling comments in Create and Update APIs
1315 -* Fixed category updates in heartbeat API
1316 -* Resolved issue uploading previously unuploaded images to media in Create API
1317 -
1318 -= 1.2.1 =
1319 -* Added hero image attribute `hero_image_url` in Create or Update post endpoint
1320 -* Refactored image upload code to use URLs in Create/Update endpoints
1321 -* Updated plugin README file
1322 -
1323 -= 1.2.0 =
1324 -* Added post author in Create post endpoint
1325 -* Included users in heartbeat API with `users` attribute
1326 -* Assigned authors to attachments when uploading images to the media library
1327 -* Rebuilt post content tags based on HTML rules
1328 -
1329 -= 1.1.9 =
1330 -* Enabled saving images from URLs to the WordPress media library
1331 -* Added functionality to save images from URLs in Create/Update endpoints
1332 -* Implemented checks for existing images from URLs in Update endpoint
1333 -
1334 -= 1.1.8 =
1335 -* Corrected home URL storage in the 404 Monitor database
1336 -* Identified correct page URLs in the 404 Monitor for redirection
1337 -* Utilized correct URLs from the 404 Monitor for Redirection
1338 -
1339 -= 1.1.7 =
1340 -* Sent post categories as a list to backend requests
1341 -* Enabled auto-generation of the plugin's authorization key
1342 -* Displayed a message when the Search Atlas API key is not saved
1343 -
1344 -= 1.1.6 =
1345 -* Updated the title of General Settings
1346 -* Updated plugin screenshots
1347 -
1348 -= 1.1.5 =
1349 -* Added/Replaced categories for posts with a key to append categories in update items
1350 -* Synchronized post categories in Create/Update item endpoints
1351 -* Refactored code to sync customer website configurations and post categories
1352 -
1353 -= 1.1.4 =
1354 -* Fixed issue sending categories as JSON in heartbeat payload
1355 -* Removed special characters from category JSON
1356 -* Fixed heartbeat request interval settings
1357 -
1358 -= 1.1.3 =
1359 -* Removed login fields for obtaining JWT token from General Settings
1360 -* Removed dashboard link from the plugin
1361 -* Set heartbeat frequency to every 5 minutes
1362 -* Configured heartbeat requests to trigger on saving General Settings
1363 -
1364 -= 1.1.2 =
1365 -* Removed double quotes and forward slashes from JSON-LD Schema
1366 -
1367 -= 1.1.1 =
1368 -* Fixed article name issue in JSON-LD Schema
1369 -* Added plugin icon to the plugin directory
1370 -* Added plugin screenshots to the plugin directory
1371 -* Included changelogs in the plugin's README file
1372 -
1373 -= 1.1.0 =
1374 -* Added a button to manually force heartbeat sending to the server
1375 -* Displayed the last sync timestamp to monitor heartbeat status
1376 -* Added input field to save the Search Atlas API key in General Settings
1377 -* Included Search Atlas API key in the header of Heartbeat API
1378 -* Removed JWT token and Customer ID from Heartbeat Request
1379 -
1380 -= 1.0.9 =
1381 -* Added `meta_description` and `meta_robots` to the payload
1382 -* Fixed issue updating categories consistently in the payload
1383 -* Fixed issue adding two different `meta_robots` values in the header
1384 -* Included blog categories in the Heartbeat payload
1385 -
1386 -= 1.0.8 =
1387 -* Updated post/page permalinks during post updates via API payload
1388 -* Updated post categories during post updates via API payload
1389 -
1390 -= 1.0.7 =
1391 -* Added categories during post creation
1392 -* Included Permalink URL during page creation
1393 -* Set default post type to Post and post status to Publish
1394 -
1395 -= 1.0.6 =
1396 -* Added new sanitization for JSON-LD to echo in the header
1397 -* Removed third-party URLs from post data in the plugin
1398 -
1399 -= 1.0.5 =
1400 -* Created new `deleteItem` API to delete posts
1401 -* Refactored JSON-LD schema code to include all posts and pages
1402 -* Added prepare method in WHERE clause fields of queries
1403 -
1404 -= 1.0.4 =
1405 -* Added new sanitization for all POST and GET variables
1406 -* Refactored all plugin code
1407 -
1408 -= 1.0.3 =
1409 -* Added sanitization for all missing POST/REQUEST variables
1410 -* Implemented escape methods for all internal print variables
1411 -* Refactored all select boxes to use select options
1412 -* Removed redundant code from the plugin
1413 -
1414 -= 1.0.2 =
1415 -* Fixed issue excluding post IDs from sitemaps via API or General Settings
1416 -* Fixed issue sanitizing null values in common settings
1417 -
1418 -= 1.0.1 =
1419 -* Fixed invalid token issue in Heartbeat API
1420 -* Fixed exception handling in LinkGraph login response
1421 -
1422 -= 1.0.0 =
1423 -Initial release.
183 +Older release notes are available in the CHANGELOG.md file included with the plugin.