=== BSM Vanity URLs ===
Contributors: bsmstrategy
Tags: redirects, vanity urls, analytics, qr, link portal
Requires at least: 6.5
Requires PHP: 8.0
Stable tag: 0.3.6
License: Commercial

Smart redirects, trackable links, dynamic QR infrastructure, analytics, workspaces, custom domains, and an optional Pro self-service Link Portal for WordPress.

== Description ==
BSM Vanity URLs manages persistent vanity routes and dynamic QR codes with workspace-aware ownership, analytics, custom-domain branding, controlled lifecycle behavior, and recoverable emergency routing controls.

== Changelog ==
= 0.3.6 =
* Added BSM Vanity URL editor integration for WordPress Posts and Pages in Free.
* Added Pro support for administrator-selected public custom post types.
* Added durable WordPress object-to-Link associations and permalink destination synchronization.
* Added optional auto-create-on-publish, disabled by default.
* Added content lifecycle suspension/restoration without deleting link history or QR assets.
* Added explicit Create QR Code / Create Another QR actions; QR codes are never created automatically.
* Added editor Copy, Open, Share, status and hit-count controls.
* Preserved editor associations in BSM JSON export/import and rollback snapshots.



= 0.3.5 =
* Mobile-first Link Portal with responsive link cards and touch-friendly forms.
* Visible Portal link-creation validation and success feedback.
* Configurable workspace and per-link share messages with safe tokens.
* Native Share, Email, Text, Copy Link, QR preview and authorized QR downloads from the Portal.
* Mobile hardening for Groups, Campaigns, Invitations, Branding and Emergency Routing.

= 0.3.4 =
* Completed code, SQL, namespace, migration, integration, and settings-form hardening audit.
* Split Webhook and GA4 settings into independent save sections that preserve sibling settings.
* Split Portal, Search integration, and Link Behavior settings into independent save sections.
* Corrected JSON export to use the real routing_rules schema instead of obsolete rules/rule_conditions names.
* Added database write-error handling to JSON import and migration execution/rollback.
* Corrected Yoast SEO Premium inventory to use its documented redirect option keys, with plain redirects imported and regex records left unsupported for manual review.
* Added encrypted-at-rest integration secrets, masked admin fields, webhook timestamp signatures, and stricter GA4 payload validation.
* Corrected admin diagnostics copy and duplicate WP-CLI heading.

= 0.3.3 =
* Added migration inventory and dry-run planning for Redirection and Yoast SEO Premium.
* Added New/Duplicate/Conflict/Unsupported/Unsafe migration classification.
* Added reversible migration batches with rollback snapshots and preserved analytics history.
* Added webhook test delivery, GA4 validation test, and integration diagnostics.

= 0.3.1 =
* Added Pro A/B and weighted destination routing for exact Links.
* Added sticky visitor assignment with configurable duration.
* Added scheduled experiment windows and optional Campaign attribution.
* Added per-variant traffic analytics and emergency pause/resume controls.
* Added explicit opt-in health failover with cached destination health decisions.
* Added weighted-route output to Route Simulator.
* Preserved exact/conditional/regex precedence and existing query merge behavior.


= 0.3.0 =
* Advanced QR Design Studio with opt-in styling, lifecycle and physical-location metadata.
* Added scanability validation, Print Lock production snapshots, bulk PNG ZIP export and printable QR sheets.
* Added foreground/background colors and optional raster logo overlays while preserving existing QR identities and legacy output by default.
* Added stronger QR production workflow and domain/Print Lock visibility.


= 0.2.9 =
* Added optional Business Search Manager recommendation-provider integration for 404 Intelligence.
* Added admin-approved Search-powered redirect suggestions with provider confidence/evidence.
* Added graceful unsupported-provider diagnostics and kept integration disabled by default.
* Preserved API/hook separation with no Search Manager table coupling.

= 0.2.8 =
* Added 404 Intelligence with normalized grouping, human/bot counts, referrers, Ignore/Reopen and Create Redirect workflows.
* Added persistent non-dismissible wp-admin redirect-conflict detection for Redirection and Yoast SEO Premium Redirect Manager.
* Added Redirect Environment diagnostics and conflict warnings in Route Health and Route Simulator.
* Added advanced routing activation safety checks for obvious self-loops and unrestricted regex catch-alls.


= 0.2.5 =
* Added first-class workspace Groups for permanent organization of Vanity Links and QR Codes.
* Added automatic migration of legacy link group_name values into Group records and assignments.
* Added workspace-safe bulk Group assignment and unassignment for Links and QR Codes.
* Added Group archive behavior that unassigns assets without deleting them.
* Added separate Campaign objects with status, start/end dates, descriptions, and UTM defaults.
* Added many-to-many Campaign assignment for Links and QR Codes.
* Added Group and Campaign traffic/event summaries.
* Added Groups and Campaigns administration screens and dashboard counts.
* Added shared BSMV_Assets service for workspace-safe asset organization and future asset services.
* Groups remain organizational; Campaigns remain operational/time-bound so the concepts can evolve independently.

= 0.2.4 =
* Initial public release.
* Vanity URL routing with 301, 302, 307, and 308 support, case-insensitive matching, trailing-slash normalization, and query-string forwarding.
* Dynamic QR assets with persistent route keys, editable destinations, Print Lock, PNG/JPG exports, and Pro SVG/EPS exports.
* Workspace-aware QR export cache with seven-day last-access retention and authorized downloads.
* Site and Portal workspace architecture, roles, invitations, plans, quotas, and optional self-service Link Portal.
* Verified custom domains with independent Brand Links and Brand QR policies.
* Branded QR risk acceptance and immutable encoded-host identity for existing QR codes.
* Custom-domain QR dependency and Print Lock counts on the Branding screen.
* Workspace Owner emergency suspension for existing branded Links and QR routes using a two-stage warning and typed confirmation.
* Stable site-domain routes remain available when branded routing is suspended.
* WordPress administrator recovery and optional administrative lock; Portal-workspace suspension initiation remains Owner-only.
* HTTP 410 controlled unavailable response and suspended-route analytics logging.
* Seven-day analytics dashboard with link requests, QR scans, suspended requests, daily/hourly activity, referrers, device class, and operating-system classification.
* Interstitial routing and staged Portal workspace expiration lifecycle.
* BSM Plugin Release Manager automatic-update integration and update diagnostics.
* Custom-host isolation and branded QR host/workspace validation.


= 0.2.7 =
* Added Pro Routing Rules management with ordered Conditional and Regex routes.
* Conditional rules attach to exact Links and support ALL/ANY evaluation across query parameters, login state, roles/capabilities, referrer, device class, cookies, hostname, HTTP headers, and IP/CIDR.
* Added workspace-level Regex fallback routing with capture-group destination substitution.
* Exact Link routing retains precedence over Regex fallback routes.
* Added priority ordering, pause/activate controls, audit events, and rule-match analytics events.
* Route Simulator now uses the live rule evaluator and exposes rule-by-rule evaluation traces.
* Added bounded regex validation and safe pattern evaluation before activation.
* Database schema updated to 0.2.7. Licensing contract remains v1.

= 0.2.6 =
* Added Route Health with persisted destination/domain checks and Needs Attention reporting.
* Added manual and scheduled health checks, HTTP status, latency, final destination, redirect-chain and loop detection.
* Added custom-domain HTTPS/reachability checks.
* Added Route Simulator using the live router's workspace, hostname, member namespace, QR-domain isolation, normalization, and query merge semantics without redirecting or recording analytics.
* Health-check traffic is excluded from visitor analytics.

= 0.3.2 =
* Added asynchronous signed outbound webhooks with delivery logging.
* Added optional server-side GA4 Measurement Protocol forwarding.
* Added WP-CLI status, health, and export commands.
* Added BSM-native JSON workspace export and guarded link import.
* JSON conflicts support Skip, Create Inactive, or explicit Replace with rollback snapshot.
* Added Apache and Nginx exact-route exports with application-level feature warnings.
* Added Integrations & Tools diagnostics and migration foundations.
