Multi-Tenancy Changelog
Version 1.1.2-beta.1 - Released on 2026-05-13
- Beta: First beta of 1.1.2 — see entry below for the full change list.
Version 1.1.2 - Released on 2026-XX-XX
- Fix: Add missing add_remote_sites_menu method on Remote_SSO_Handler to resolve admin menu error
- Fix: Route separate_db site creation through the configured node provider so per-site databases are provisioned consistently (#19)
- Chore: Rebrand marketplace URLs from multisiteultimate.com to ultimatemultisite.com (Plugin URI, Author URI, package homepage, author email)
- Chore: Harden composer archive excludes so internal dev directories (.beads, .agents, AGENTS.md, etc.) are not shipped to customers
Version 1.1.1 - Released on 2026-05-06
- Fix: Resolved parse error caused by duplicate handle_sso_login function definition
- Fix: SSO token validation now accepts simpler tokens issued by the main site's login flow
- Fix: Updated deprecated wu_sso_verify action to the current sso_verify parameter
Version 1.1.0 - Released on 2026-04-29
- New: Network Registry compiler generates a flat PHP file for request-time domain resolution without DB queries
- New: Credential Store with sodium encryption for secure database credential storage (env/file/meta refs)
- New: Database Router for single-DB-per-request routing, delegates to existing db-config for host network
- New: db-config.php overlay installed to WP_CONTENT_DIR on activation (LudicrousDB integration)
- New: Local Provider for MySQL database and user provisioning with dedicated DDL user
- New: Tenant filesystem class for per-tenant uploads, cache, and plugin directory isolation
- New: Per-tenant Docket Cache isolation with renamed overlay directories
- New: Privileged sidecar daemon and client for cross-server provisioning
- New: Marketplace catalog with BerlinDB table, model, and entitlement-gated install/uninstall
- New: MySQL grants auditor and cross-network query guard for security hardening
- New: WP-CLI tenant exec wrapper for running commands in tenant context
- New: WP-CLI tenant command for provisioning management
- New: WP-CLI static-site commands for per-domain static site serving
- New: Addon sunrise.php for customer network domain override at earliest WordPress lifecycle
- New: Subdomain resolution within tenant networks (e.g. restaurant.tenant.host)
- New: Loco Translate isolation directory in tenant layout
- Fix: Credential Store writes directly to host DB via mysqli, bypassing update_site_option() cross-table routing
- Fix: Network Registry fetch_customer_networks() uses direct host DB connection, prevents registry corruption in tenant context
- Fix: host_domains() uses direct host DB connection and base_prefix instead of blog-specific table_prefix
- Fix: Sunrise global declarations so overrides survive WP Ultimo method scope inclusion
- Fix: Sunrise resolves HTTP_HOST against tenant DB wp_blogs for correct subsite routing
- Fix: Symlink handling in regenerate() preserves Trellis shared files
- Fix: FrankenPHP socket compatibility (localhost to 127.0.0.1 for TCP)
- Fix: WP_HOME/WP_SITEURL constant override for tenant networks
- Improved: Build pipeline using composer archive matching WooCommerce addon pattern
- Improved: Deploy workflow with automated GitHub Release and WooCommerce marketplace delivery
Version 1.0.0 - Released on 2026-04-28
- New: Network-level database routing — per-request DB isolation via db-config.php overlay
- New: Credential Store with sodium encryption (env/file/meta credential references)
- New: Network Registry compiler — fast flat-PHP file read by db-config.php overlay
- New: Privileged sidecar daemon with Unix socket client and provider
- New: Tenant filesystem support with Local_Provider integration and sunrise constant injection
- New: Marketplace catalog with BerlinDB table, model, and entitlement-gated install/uninstall
- New: WP tenant CLI command for provisioning and tenant management
- New: Dedicated MySQL user for DDL provisioning operations (separate from query user)
- New: WP-CLI tenant exec wrapper for running commands in a specific tenant context
- New: Static filesystem class for per-domain static site serving
- New: WP-CLI static-site commands
- New: Addon sunrise.php for customer network override on early WordPress boot
- New: Resolve subdomain subsites within tenant networks
- New: Per-tenant Docket Cache isolation with renamed overlay directories
- New: Loco Translate isolation via per-tenant loco/ directory in tenant layout
- New: 12 hosting provider integrations (cPanel, Cloudways, RunCloud, GridPane, ServerPilot, Closte, Hestia, Enhance, Rocket.net, WP Engine, WPMUDEV, Cloudflare)
- New: MySQL grants auditor and cross-network query guard for security hardening
- Fix: PHP 8.2+ typed properties for database table instances
- Fix: FrankenPHP socket compatibility and sunrise customer network override
- Fix: Database Router fallback to include_once in sunrise context
- Fix: BerlinDB tables auto-install on activation
- Fix: Credential store writes directly to host DB; registry always reads host blogs table
- Fix: host_domains() uses direct host DB connection and base_prefix (not blog-specific prefix)
- Fix: fetch_customer_networks uses direct host DB query (not BerlinDB ORM)
- Fix: Resolve symlinks in regenerate() to preserve Trellis shared files
- Fix: Override WP_HOME/WP_SITEURL constants correctly for tenant networks
- Fix: Add global declarations so sunrise overrides survive method scope
- Fix: Use explicit DB name for subsite blog lookups in sunrise
- Improved: Skip plugin autoloader when Bedrock root autoloader has already loaded dependencies