Changelog
Release notes for SEO NEO. Latest: 1.1.9. Covers 1.0.0 through all 1.x point releases.
1.1.9 — October 2026
- Meta title + dynamic branding restored — a filled Meta Title (
seoneo_title) is your custom title segment; global Title format still appends{separator}{site_name}so you can override the SERP title without repeating the firm name on every page (#6). - No double site name — if Meta Title already ends with the configured separator + site name (a pasted full browser title), Title format is skipped.
- Per-template
title=lines — the expanded string is the full browser<title>; use{separator}{site_name}in the line when you want branding. Global Title format does not run again (#5). {separator}in per-template defaults — the configured title separator can be used insidetitle=lines.
Note: release 1.1.8 was withdrawn the same day; it treated filled Meta Title as a literal full <title> with no Title format. Use 1.1.9 or later.
1.1.7 — October 2026
- Canonical request context — fallback canonicals only include the current view’s pagination or URL segments for the page being viewed, not when resolving other pages (e.g. breadcrumb ancestors).
1.1.6 — September 2026
- Book JSON-LD for publisher sites — new Book templates setting and Book field mapping panel under Structured data (JSON-LD). Pages on listed templates emit a Schema.org
Booknode in the same@graph. Supports digital-only titles viabookFormat(EBookby default), optional ISBN, cover image, synopsis, page count, and publication date mapped from your ProcessWire fields. - ProcessWire 3.0.16+ compatibility — module config save hooks now target
Modules::saveConfiginstead of the deprecatedsaveModuleConfigDataalias. - Module config SERP preview — live Google-style preview on the SeoNeo module config screen; updates as you edit site name, separator, and title format.
1.1.5 — September 2026
- BreadcrumbList JSON-LD validation — each crumb now uses nested
item: { "@id", "name" }objects for stricter validator compatibility; canonical URLs throughout the trail.
1.1.4 — August 2026
- Auto-inject resilience — try-catch around the full render pipeline; failures log to
site/assets/logs/seoneo.txtwithout breaking the page. - Null-template safety and config hint when auto-inject is on but no templates include
seoneo_tab.
1.1.3 — June 2026
- Fix NEO badge on Wire tab: badge injection now targets the tab link anchor, re-runs after WireTabs initialises, and centres the NEO pill with flexbox
1.1.2 — June 2026
- Upgrade self-heal inserts missing SEO fields into fieldgroups that already have
seoneo_tab - Repairs
seoneo_tabwhen Presentation > Tab mode left child fields outside the Wire tab - Module config fixes: NEO badge checkbox and tab label sync on save
- Auto-complete also runs when
seoneo_tabis added via the template editor
1.1.1 — June 2026
- Tab label defaults to SEO with an optional NEO badge to distinguish from MarkupSEO during migration
- Configurable SEO tab label and Show NEO badge on tab in module config
- Wire tab link gets
data-seoneo-tab="1"for stable admin targeting
1.1.0 — June 2026
- Auto-complete SEO fieldset: adding
seoneo_tabto a template inserts missing SEO fields in canonical order on save
1.0.0 — June 2026
First stable public release of SEO NEO.
- Google SERP Preview field label and helper text updated
- Defensive self-heal on upgrade for
seoneo_previewinputfield wiring - CSS design tokens and admin theme accent inheritance for preview controls
1.0.0-beta.1 — May 2026
Initial public beta. Core output: title, meta description, canonical, Open Graph, Twitter cards, hreflang, robots directives, JSON-LD @graph (Beta), smart-map fallback chain, SERP preview with desktop/mobile toggle, flat and namespace template API, and hookable resolvers/renderers.
Future releases
Release notes for all 1.x point releases are also tracked on GitHub Releases.
See also
- Quickstart ⭐ — get up and running in five minutes.
- Why SEO NEO — what makes it different from MarkupSEO and Seo Maestro.
Last updated