Luxa SEO Changelog
= 1.4.2 =
- Added: real brand icons — replaced the generic
dashicons-searchadmin menu icon and the plain-text “L” topbar logo with the actual Luxa SEO logo artwork. - Changed: “Upgrade to Pro” links now point to https://luxapress.com/luxa-seo/pro/ (previously a
#pricing/#proanchor on the plugin’s WordPress.org-style page). Changelog/”What’s new” links now point to https://luxapress.com/docs/luxa-seo/changelog.
= 1.4.1 =
- Fix: fatal error on activation/load — “Cannot redeclare LuxaSeo\Core\Logger::clear()”.
includes/core/logger.phpaccidentally shipped in 1.3.0 with that method declared twice in the same file. Removed the duplicate.
= 1.4.0 =
- Added: Readability Analysis in the SEO Analyzer meta box — average sentence length, passive voice detection, transition word usage, paragraph length, and a Flesch Reading Ease score, alongside the existing SEO checks. English-language content only (same limitation as every mainstream SEO plugin’s readability checker — the underlying heuristics and formula are English-specific).
- Added: REST API exposure — a
lxseofield on every public, REST-visible post type, containing the fully-resolved title/description (same fallback logic as the traditional<head>output, not just the raw per-post override), canonical URL, robots directives, Open Graph fields, and focus keyword. For headless/JAMstack front-ends that consume WordPress as a content API. New module, active by default (toggle off under Settings → Modules if not needed); read-only. - Fix: every check label/value in the SEO Analyzer meta box was hardcoded in Vietnamese with no translation function — inconsistent with the rest of this plugin (English source strings, translatable via
__()). Also fixed a corrupted (missing diacritics) Vietnamese string in the search-results page title, unrelated to the above — replaced with its proper English source string instead of restoring the Vietnamese, for the same consistency reason.
= 1.3.0 =
- Added: SEO Data Importer (Luxa SEO → Import) — migrates per-post titles, meta descriptions, focus keyword, canonical URL, Open Graph fields, and noindex/nofollow flags from Yoast SEO or Rank Math into Luxa SEO. Safe to run more than once: by default, a post that already has a value set in Luxa SEO is left untouched. (All in One SEO is not supported yet — it stores data in its own database table rather than post meta.)
- Added: robots.txt custom rules editor (Settings → Robots) — appends your own rules to WordPress’s auto-generated robots.txt. Automatically shows a warning instead if your site has a physical robots.txt file on disk, since WordPress never runs for that request in that case (the setting would silently do nothing).
- Added: Settings → General tab — Export/Import all Luxa SEO settings as a JSON file (e.g. for cloning a setup from staging to production), and a Debug Log viewer.
- Added: 404 Log now suggests the closest-matching existing post/page for each 404’d URL (with a match-confidence percentage), turning “Create redirect” into a one-click action instead of manual guesswork.
- Fix: the 404 Log’s “Create redirect” link has pre-filled the Redirects page’s Source URL field since it was added, but the Redirects page never actually read that value — the link went nowhere useful. Now also pre-fills the Target URL when a good suggestion is found.
= 1.2.2 =
- Fix: removed a duplicate “boxed” style on the admin page content wrapper — it was nesting one white/bordered box inside another (the same background/border/padding as
.lxseo-paneland other content blocks), making every screen look cramped. Settings and Add-ons pages now sit directly on the page background (matching WordPress’s native Settings page look) instead of inside an extra unnecessary box; all other pages are unaffected since their content already has its own box.
= 1.2.1 =
- Added:
lxseo_dashboard_after_quicklinksaction hook on the Dashboard page — extension point for a companion Pro plugin to add extra panels (e.g. a “Plugin & Add-on Versions” overview) without editing this plugin’s files. No visible change on a Free-only site.
= 1.2.0 =
- Fix: Settings cross-tab data loss — saving Settings from any tab
other than Modules used to silently disable every module (checkboxes
from a tab that wasn’t rendered were indistinguishable from “user
unchecked everything”). Every tab now has its own hidden marker;
saving one tab no longer touches another tab’s data. - Fix:
sanitize_callbackis now idempotent if WordPress core invokes
it a second time within one save request (a known edge case ofadd_option()‘s fallback path) — previously the second call could
overwrite the first call’s real values back to the old settings. - Fix:
Plugin::add_service()could double-register()a service
added during thelxseo_services_registeredaction (double AJAX
handlers, double hooks) — fixed to match the corrected pattern from
the LuxaPress plugin boilerplate. - Changed: License activation moved OUT of this plugin into a separate
Luxa SEO Pro plugin, per updated LuxaPress architecture guidance
(“license belongs to Pro, never bundled into Free” — avoids a
WordPress.org compliance risk from making license-server API calls
inside the free listing). The Settings → License tab added in 1.1.0
is removed; every Pro-only limit in this plugin (redirects, image
sitemap, 404 log history, internal link suggestions, bulk tools,
Google Indexing API, advanced Schema, CPT archive templates) now
checks a proper Free↔Pro contract instead (see next item). No
free-tier behavior changes — these were all already Pro-gated before
1.1.0 shipped the (now-removed) in-plugin license UI. - Added:
includes/core/probridge.php—lxseo_is_pro()/lxseo_is_licensed(), afunction_exists()-based contract with an
optional Luxa SEO Pro companion plugin. Replaces the internalapply_filters( 'lxseo_is_pro_active', false )calls scattered
across 15 files with these two well-defined functions. - Renamed (internal only, no behavior change):
AdminShell→ the'skin'service (SkinInterface+DefaultSkin), matching the
LuxaPress plugin boilerplate’sShell→Skinrename (avoids the
word “shell” reading as a web-shell/backdoor to malware scanners).
Every admin template now opens/closes its layout viaPlugin::instance()->get_or_fail( 'skin' )instead of a staticAdminShell::open()/close()call. - Added:
Plugin::get_or_fail()andPlugin::reset_for_tests(). - Added:
lxseo_menu_title_suffixfilter on the top-level admin menu
label — extension point for a companion Pro plugin to add a “PRO”
badge without editing this plugin’s files. - Added: PHPUnit test suite (
tests/, Brain Monkey) and a GitHub
Actions CI workflow (PHPCS + PHPUnit on PHP 7.4/8.3) — dev tooling
only, excluded from the packaged plugin ZIP via.distignore, no
effect on the plugin at runtime.
= 1.1.0 =
- Fix: fatal error on first published post on a fresh install (Bing IndexNow auto key generation called a method that didn’t exist).
- Fix: breadcrumb shortcode now matches the documented
[lxseo_breadcrumb]name (old[seo_breadcrumb]still works). - New: Settings → License tab to activate a Luxa SEO Pro license key directly on this plugin (no separate plugin install required).
- New: free-tier cap on the image sitemap (500 images); Pro removes the cap.
- Hardening: Product/LocalBusiness/Custom JSON-LD schema and a few AJAX endpoints now double-check permissions/Pro status instead of relying on the UI alone.
= 1.0.0 =
- Initial release.
== Upgrade Notice ==
= 1.4.2 =
Cosmetic + link updates only (real logo icons, updated Pro/Changelog URLs). Safe to update anytime.
= 1.4.1 =
CRITICAL: fixes a fatal error (“Cannot redeclare Logger::clear()”) introduced in 1.3.0 that could take the site down. Update immediately if running 1.3.0 or 1.4.0.
= 1.4.0 =
Adds Readability Analysis and REST API exposure for headless sites. The new REST API module is active by default — toggle it off under Settings → Modules if you don’t need it. Safe to update anytime.
= 1.3.0 =
Adds a one-click SEO data importer from Yoast SEO/Rank Math, a robots.txt editor, Settings export/import, and smarter 404 redirect suggestions. Safe to update anytime — nothing changes automatically until you use the new tools.
= 1.2.2 =
Visual fix: removes a double-boxed layout that made admin pages look cramped. Safe to update anytime.
= 1.2.1 =
Adds a Dashboard extension point for the Pro plugin. No change on a Free-only site — safe to update anytime.
= 1.2.0 =
Fixes a Settings bug that could silently disable all modules when saving from certain tabs. Update recommended for all sites. License activation moved to the separate Luxa SEO Pro plugin — if you activated a license under Settings → License in 1.1.0, install Luxa SEO Pro and re-activate your key there after updating.
= 1.1.0 =
Fixes a fatal error that could occur when publishing the first post after installing. Update recommended for all sites.
= 1.0.0 =
Initial release.
Was this doc helpful?
Related Docs
Powered by LuxaDocs