=== WP SEO Next ===
Contributors: wpseonext
Tags: seo, meta, schema, sitemap, open graph, redirects, internal linking, google search console, indexnow, ai
Requires at least: 6.4
Tested up to: 6.9
Requires PHP: 7.4
Stable tag: 0.75.31
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

A modular SEO suite for WordPress: meta tags, Schema.org, sitemaps, audits, bulk tools, internal linking, and optional integrations (GSC/OpenAI).

== Description ==

WP SEO Next is a modular SEO suite built around a single "source of truth" for SEO metadata. Use it as an all-in-one SEO manager or enable only the modules you need.

Features include:

* Meta tags: title, description, canonical, robots
* Social: Open Graph + Twitter Cards (with per-post and per-term overrides)
* Schema.org (JSON-LD graph) + validator with safe fixes
* XML sitemaps (general + news + video) and robots.txt helpers
* Redirects and 404 monitor
* SEO audits with history, async scans, CSV export
* Bulk tools for posts, terms and media (including media filename cleanup)
* Internal linking suggestions (editor UI + bulk apply) and orphan-page workouts
* Google Search Console hub (opportunities, alerts, content gap, query optimizer)
* Optional AI features (local + OpenAI) with budgets/credits, rate-limit backoff and per-user permissions
* Agency / multisite tools: profiles, config sync, white-label, rollout

All remote integrations are opt-in.

== External Services ==

This plugin can connect to third-party services. No data is sent unless you enable/configure the integration and trigger an action.

* OpenAI API (optional, AI content generation)
  - Sent: prompts built from page content/title/selected settings (depending on your configuration).
  - When: only when you click Generate / run AI bulk jobs.
  - Service privacy policy: https://openai.com/policies/privacy-policy

* Google Search Console API (optional, performance data)
  - Sent: OAuth authorization tokens; requests for Search Analytics / URL inspection.
  - When: only after you connect your Google account in settings and fetch data.
  - Google privacy policy: https://policies.google.com/privacy

* IndexNow / search engine ping (optional)
  - Sent: URLs you choose to submit/ping.
  - When: when you run IndexNow submit/ping actions (UI, cron, or WP-CLI).
  - IndexNow: https://www.indexnow.org/

* Webhooks (optional)
  - Sent: event payloads you configure (e.g., audit scan completed).
  - When: only if you configure a webhook URL and the event is triggered.
  - Your webhook endpoint must be owned/controlled by you.

== Installation ==

1. Upload the plugin folder to `/wp-content/plugins/` or install via the Plugins screen.
2. Activate the plugin.
3. Go to Settings → WP SEO Next to enable modules and configure templates.
4. Edit a post to set SEO meta in the sidebar.

== Frequently Asked Questions ==

= Does the plugin send data to external services? =

Only if you enable optional integrations (OpenAI, Google Search Console, webhooks, IndexNow) and trigger the related actions. A "Local-only mode" is available.

= Can I disable modules I don't need? =

Yes. Every feature is a module that can be toggled in settings.

== Screenshots ==

1. Gutenberg sidebar: SEO meta + analysis.
2. Bulk tools: drafts and apply-all with progress.
3. Search Console hub: opportunities + content gap.
4. Schema validator + safe fixes workflow.

== Changelog ==

= 0.72.8 =
* Queue: hardened DB claiming (atomic UPDATE...LIMIT 1) to avoid race conditions on busy sites.
* Queue: direct worker now uses a best-effort process lock to prevent concurrent workers causing 503 spikes.
* Queue: WP_Error results can request a retry (circuit-open + network-ish failures) instead of being marked failed.
* Queue: safety guard for infinite retry loops (max attempts).

= 0.72.7 =
* Stability: added hardened HTTP client wrapper (small retry + jitter + circuit breaker) to avoid repeated 503 loops and request storms.
* Refactor: migrated all external/loopback HTTP calls to the unified HTTP client (Search Console, AI, SERP, SaaS, licensing, webhooks, self-tests).

= 0.72.6 =
* Tests: added unit tests for canonical normalization + AJAX live mode gate + runtime settings overrides (local-only/safe mode/output off).
* Tools: added `tools/smoke-suite.php` (one-command runner for release check + security sweep).
* Docs: added `docs/canonical.md`.

= 0.72.0 =
* Admin lists: added SEO columns (SEO Title, Meta description, Robots, Focus keyword) for wp-admin post lists.
* Admin lists: added Quick Edit fields for the same SEO values (no need to open the post).
* Admin lists: added simple SEO filters (missing custom title/description/focus keyword + noindex override).
* Diagnostics: added Page Builder self-check + one-click repair (safe settings reset for Elementor/Divi/Beaver integrations).
* WP-CLI: added `wp wpsn smoke` command (runs Quality Gate checks).

= 0.67.6 =
* UI: standardized remaining user-facing strings to English.

= 0.67.5 =
* Settings → AI: added “Quick connect” (Save key + Test OpenAI) without AJAX.
* Settings → AI: added one-click “cheap AI preset” (gpt-4o-mini + safe limits) with automatic config snapshot.

= 0.66.86 =
* Redirects → Migration: added one-click “Undo migration” button (safe mode + optional force), powered by Revisions.
* Fix: redirect migration page can now load completed runs from DB when transient expires.
* Activity Log: added entries for redirect migration start/finish/undo/cancel.

= 0.66.85 =
* Tools → Import/Export: added “Quick import from installed plugin (no file)” for Yoast / Rank Math / SEOPress / AIOSEO (best-effort) + auto snapshot.
* Redirects → Migration: added AIOSEO redirects source + each imported/updated redirect is logged into Revisions (source: redirects_migration) for rollback.

= 0.66.83 =
* Tools → Import/Export: added global settings importers for Rank Math (.json), SEOPress (.json) and AIOSEO (.json) (best-effort) + import reports.
* Safety: settings importers now create an automatic config snapshot before applying changes.

= 0.66.49 =
* Site Crawl → Patterns: added options (analysis limit, min-count filtering, recommend thresholds) + suggested scoped rules with estimated impact.
* Site Crawl → Patterns: detect query pagination (?page/?paged), facet prefixes (filter_/facet_), and sort/order params; improved robots.txt disallow patterns for param prefixes.
* Site Crawl: regression notifications now include sample affected URLs and link to the diff view.

= 0.66.31 =
* Variable providers: added Pods (%pods:...), WooCommerce product tokens (%woo:...), and ACF Options Page token (%acfopt:...%).
* JetEngine: improved meta resolution via JetEngine Listings Data get_meta($key, $object) (supports Custom Meta Storage).
* Tools → Tokens & Variables: updated provider cheat sheet.

= 0.66.30 =
* Variable Providers API: new wpsn/variables/resolve filter and unified resolver pipeline for dynamic tokens.

= 0.66.25 =
* 404 Monitor: on-demand redirect suggestions (AJAX) with confidence + one-click “Create 301”.
* Redirects: support pre-filling “To” via URL param (tools.php?page=wpsn-redirects&from=…&to=…).
* Fix: redirects/404 settings notices now display the correct success message.

= 0.66.24 =
* TemplateEngine v2: fallback operator (??) and transform pipeline (|lower|upper|strip|truncate|prefix|suffix).
* Tools → Tokens & Variables: cheat sheet + AJAX template tester with token breakdown.
* Added more built-in template variables (post_type, dates, author_*, term_*).

= 0.53.0 =
* Bulk Table: JSON export/import for SEO overrides (agency/staging workflows) with permalink/slug mapping.
* Import preview: add AJAX “apply with progress” (batch apply) to avoid timeouts on large imports.

= 0.52.0 =
* Bulk Table CSV import: add staging→production mapping by permalink/slug (posts) and taxonomy+slug (terms).
* CSV export: include post_slug column.
* Config Sync: link to Bulk Table for SEO data portability.

= 0.51.0 =
* Activity Log: date range filters + quick export last 7/30 days.
* Diagnostics: “Copy summary” button for support/agency reports.

== Upgrade Notice ==

= 0.66.85 =
No breaking changes. Adds quick settings import from installed SEO plugins (no file) and logs redirects migration changes into Revisions for rollback.

= 0.66.31 =
No breaking changes. Adds Pods/Woo/ACF Options variables and improves JetEngine custom meta storage resolution.

= 0.66.30 =
No breaking changes. Introduces Variable Providers API for dynamic tokens.

= 0.66.25 =
No breaking changes. Adds redirect suggestions from the 404 log (on-demand) and one-click redirect creation.

= 0.66.24 =
No breaking changes. Templates now support fallbacks (??) and transforms (|truncate|lower|strip). Adds a Tokens & Variables helper page.

= 0.53.0 =
No breaking changes. Adds JSON transfer + AJAX progress apply for import previews.

= 0.52.0 =
No breaking changes. Bulk CSV import now supports permalink/slug mapping for cross-environment workflows.

= 0.51.0 =
No breaking changes. New filters/buttons in Tools pages.
