Housekeeping: removed the bundled languages directory and .pot file;
Readme: minor wording fixes in the 1.1.2 changelog entries for clarity and translation-friendliness.
1.1.3
Removed automatic deactivation when the full Publirank plugin is detected. The GEO Ready module has been removed from the full plugin, so both can coexist (and you can use this free plugin alongside or instead of the paid version).
1.1.2
Security/standards: removed set_time_limit() in bulk regen (no global PHP limit override).
Security/standards: settings POST array is now sanitized on input via map_deep( wp_unslash(), ‘sanitize_textarea_field’ ); each field is then re-validated downstream.
Security/standards: JSON-LD output is now emitted exclusively via wp_print_inline_script_tag() (no unescaped fallback output).
Security/standards: hard-coded “Access denied” string for blocked training bots is now wrapped in esc_html__() (escape + i18n).
Security/standards: Markdown, sitemap-llm.xml and llms.txt streams are now served via readfile() from the on-disk cache instead of printing variables directly (removes WordPress.Security.EscapeOutput.OutputNotEscaped suppressions for these endpoints).
Performance: sitemap-llm.xml and llms.txt now warm the on-disk cache on first live render, so subsequent requests are served directly from cache.
1.1.1
New setting: optional Article/BlogPosting JSON-LD in HTML (off by default to avoid duplicate schema with SEO plugins). JSON-LD in .md files is unchanged.
Security and coding standards: sanitization on settings registration and form input, safe JSON-LD output in HTML.
Internal prefix renamed from pgr to publgeo (options, database table, admin hooks) with automatic migration on upgrade. No change to public SEO URLs.
llms.txt: up to 100 most recent posts, grouped by category (## Category), plain-text excerpts without HTML entities or […].
Admin: live progress while .md cache regenerates in the background.