Skip to main content

PBJ Studio Sync Changelog (v3.0.0): Sync by Type, Full Copy, and a Guided Setup

PBJ Studio Sync is our deployment tool for WordPress Studio: a one-way push from a local Studio (SQLite) site to a live (MySQL) site, with backup-to-file on live and a backup importer on Studio. Content moves over the WordPress REST API as native WordPress objects, so the SQLite-to-MySQL differences are handled by WordPress itself. It’s also our most actively developed plugin — here are the release notes, with recent versions in full and earlier milestones summarized.

Version 3.4.0 — a hook for the moment a push lands

Released July 14, 2026.

  • New pbj_sync_after_commit hook on the receiving site: fires after a push has fully committed — files promoted, URLs swept, caches flushed — with the session id and the commit summary. It fires on the commit response itself, so other plugins can react instantly: PBJ SEO 3.4.0 uses it to purge the LiteSpeed edge cache automatically after every push, ending the stale-pages-after-a-sync problem.

Version 3.3.0 — relative URLs, the new default

Released July 13, 2026.

  • Pushed content now carries root-relative URLs (/page/, /wp-content/uploads/…) instead of absolute ones, so a Studio port change or a future domain move can never break links or images. Older pushers automatically keep the previous absolute behavior, and Setup → “URL handling” switches back if you prefer it.

Version 3.2.1

  • Fix: the navigation-block id remap now passes correctly slashed data to WordPress, preventing corrupted page-builder layouts (empty navigation blocks) after a push.

Version 3.2.0 — theme parity and block menus

  • Live’s active theme now switches to match Studio after a push, with an opt-in theme deletion sync that never touches the running theme or its parent.
  • Block-based navigation menus (wp_navigation) travel with Content, with their internal links remapped correctly on live.
  • Per-user “Push to live” button and a read-only Live users viewer.

Version 3.1.0 — plugin deletion sync

  • Opt-in plugin deletion sync: plugins you deleted on Studio can now be mirror-deleted on live during a Dashboard push — never the sync plugin itself, excluded plugins, or single-file drop-ins.

Version 3.0.0 — the guided release: Sync by Type and Full Copy

Studio Sync 3.0 is a ground-up rebuild of the admin as a guided, per-sync-type UI. Every page now walks you through what it does — nothing is left to guessing. The push engine itself is untouched: no push or receiver logic changed, every 2.x safety rail is intact, and 2.x ↔ 3.0 pushes remain compatible.

  • New “Sync by Type” tab — one sub-page per sync type: Content, Media, Menus, Theme, Plugins, Site Settings, Users, Deletions. Each page explains in plain English exactly what that type moves and how it behaves, holds only that type’s settings (savable on its own), and has a “Push [type] to live now” button that syncs just that one thing. Want to push only your menus? Now it’s one button.
  • New “Full Copy” tab — whole-site copies in one click, both directions. Copy Studio → Live pushes everything and prunes, making live an exact copy; Copy Live → Studio pulls a fresh live backup and imports it locally — no more generate-download-upload juggling. Both sit behind a typed confirmation phrase plus a final confirm, and every existing protection still applies (site URLs, operator login, application passwords, roles, and unmanaged plugins are never touched).
  • Dashboard “How Studio Sync works” stepper — three numbered steps (Connect → Choose → Push), each showing live status and linking to the tab where it happens.
  • Settings is now “Setup” — a numbered connection walkthrough (URL → user → Application Password → save → inline Test connection), then sync-behavior defaults, each section saving independently.
  • Compare & Sync gained a numbered how-to, and the Logs tab now explains where receiving-side errors live.

Licensing note: Studio Sync 3 is a new major version. Existing 2.x license keys keep working on 2.x forever — your installed plugin never breaks — and moving to 3.0 is a new purchase, same one-time price.

Version 2.11.0

  • Page hierarchy survives the push. Every page now travels with its parent’s slug, and the receiver resolves it to its own ID — children that arrive before their parent are fixed at commit. Previously child pages landed flat at top level on live.
  • Commit gets its own 150-second timeout. Large staged promotes (5,000+ theme files) exceeded the old 30s client timeout and reported “cURL error 28” for commits that actually completed on live.
  • New parents_fixed total and [post parent] error entries in the push summary.

Version 2.10.0

  • Added a License section in Settings (bundled client SDK; the key unlocks automatic updates through the WordPress admin). The plugin remains fully functional without a key.

Version 2.9.6

The push summary now reports postmeta-only edits separately — N/M posts (new/upd, K meta-only) — so you can confirm from the log that meta-only changes like SEO descriptions travelled. The syncing itself was already handled by the meta-dirty pass added in 2.9.2; this is a reporting improvement.

Version 2.9.4

  • New: mu-plugins sync stage. Must-use plugin files now push like theme/plugin files — staged during the run, promoted atomically at commit — behind a “Must-use plugin files” toggle (default on). Studio’s own runtime pieces (the SQLite integration and Studio loader) are always excluded on both sides: never pushed, never touched.
  • New: opt-in mu-plugins purge (mirror). When enabled, retiring an mu-plugin on Studio retires it on live on the next push. Off by default, because many hosts install their own mu-plugins into sites and a default-on purge would silently delete them. The exclude list can never be purged, and the manifest is rebuilt from disk so incremental runs can’t purge unchanged files.

Version 2.9.3

  • Fixed: featured images survive the sync. Featured images are stored as attachment IDs, which get reassigned on the receiving site — so a synced page’s featured image could point at the wrong (or no) attachment on live. The pusher now sends the thumbnail’s file path alongside each post and the receiver re-resolves it to its own attachment ID.
  • Per-environment plugin config excluded from options sync. Security and caching plugin settings (Really Simple Security, LiteSpeed) are inherently per-environment; they’re no longer pushed, pruned, or counted on Compare.

Version 2.9.2

  • Fixed: excluded plugins are now fully unmanaged. The activation-state mirror no longer deactivates a plugin that’s active only on live (like a host’s caching plugin) just because Studio doesn’t have it active.
  • Fixed: incremental pushes no longer skip posts whose only change was postmeta. Meta edits (SEO descriptions, featured images, builder data) don’t bump a post’s modified date, so those posts used to stay stale on live. Studio now tracks meta-dirty posts and pushes them in an extra pass.

Version 2.9.1

  • Fixed: brand-new plugins pushed in a run are now activated on live — previously a plugin whose files arrived in the same push could land on live deactivated, with no error reported.
  • Fixed: syncing the front-page setting no longer 404s the live homepage. Page IDs aren’t stable across sites, so the pusher now sends the page’s slug and the receiver resolves it to its own ID.
  • The post-push front-end check now also fails on error pages (HTTP 400+), not just leaked Studio URLs.

Version 2.9.0 — hardening release

A “no silent losses” release, plus readiness for Studio’s native PHP runtime:

  • A push with errors no longer advances the incremental watermark — failed content is retried on the next push instead of being silently skipped forever.
  • Live-side promote errors now surface in the Studio UI; chunked uploads are integrity-checked and retried; failed deletions are retried on the next push.
  • A crashed run auto-clears after 10 minutes instead of blocking forever, and “wipe first” imports validate the whole backup before touching anything.
  • Native PHP runtime support (Studio 1.12+): time limits and TLS verification handled properly, with a new “Verify TLS certificates” setting.
  • Better error messages (URL, HTTP code, and body snippet on non-JSON responses) and a far more robust browser progress flow with resume-or-cancel on failures.

Earlier milestones

  • 2.8.0 — Origin-URL rewriting on push: every outbound payload is rewritten from the Studio localhost URL to the live URL (including JSON-escaped builder data and PHP-serialized values), plus a live-side URL sweep at commit and a post-push front-end assertion so a URL leak can never masquerade as a clean push.
  • 2.7.0 — A failed commit no longer reports success; no-op push warnings; a new Export & Import tab (WXR export + full backup zip from Studio); and Auto Sync (merge newest) that merges Studio and live in both directions, newest wins, strictly additive.
  • 2.6.x — Navigation menus sync, with portable references that survive the ID reassignment between sites; menu items pointing at live-only pages are kept as custom links instead of dropped.
  • 2.5.x — A push can no longer disable its own REST authentication mid-run (critical fix); Compare & Sync counts became meaningful; the Compare page’s Plugins section deliberately bypasses the exclude list.
  • 2.3.0–2.4.0 — Critical safety guards so a sync can never delete role definitions or lock an administrator out of the live site, while still letting settings and theme-mods sync across differing table prefixes.
  • 2.2.0 — Prune (true mirror): optional, confirmed deletion of destination items that don’t exist on the source, with hard protections for the sync plugin, the logged-in admin, and brick-critical options.
  • 2.1.0 — Syncs all content post types (including private CPTs like forms), and mirrors plugin active/inactive status.
  • 2.0.0 — Full-site sync: options and users become opt-in sync sections, and the Compare & Sync tab arrives with per-section Upload/Download.
  • 1.5.x — Crash-safe theme/plugin file sync via atomic staging, media deletion sync, permalink repair, and correct upload-before-posts stage ordering.
July 4, 2026
PBJ Studio Sync 3.0 — guided dashboard with Sync by Type and Full Copy

PBJ Studio Sync is our deployment tool for WordPress Studio: a one-way push from a local Studio (SQLite) site to a live (MySQL) site, with backup-to-file on live and a backup importer on Studio. Content moves over the WordPress REST API as native WordPress objects, so the SQLite-to-MySQL differences are handled by WordPress itself. It’s also our most actively developed plugin — here are the release notes, with recent versions in full and earlier milestones summarized.

Version 3.4.0 — a hook for the moment a push lands

Released July 14, 2026.

  • New pbj_sync_after_commit hook on the receiving site: fires after a push has fully committed — files promoted, URLs swept, caches flushed — with the session id and the commit summary. It fires on the commit response itself, so other plugins can react instantly: PBJ SEO 3.4.0 uses it to purge the LiteSpeed edge cache automatically after every push, ending the stale-pages-after-a-sync problem.

Version 3.3.0 — relative URLs, the new default

Released July 13, 2026.

  • Pushed content now carries root-relative URLs (/page/, /wp-content/uploads/…) instead of absolute ones, so a Studio port change or a future domain move can never break links or images. Older pushers automatically keep the previous absolute behavior, and Setup → “URL handling” switches back if you prefer it.

Version 3.2.1

  • Fix: the navigation-block id remap now passes correctly slashed data to WordPress, preventing corrupted page-builder layouts (empty navigation blocks) after a push.

Version 3.2.0 — theme parity and block menus

  • Live’s active theme now switches to match Studio after a push, with an opt-in theme deletion sync that never touches the running theme or its parent.
  • Block-based navigation menus (wp_navigation) travel with Content, with their internal links remapped correctly on live.
  • Per-user “Push to live” button and a read-only Live users viewer.

Version 3.1.0 — plugin deletion sync

  • Opt-in plugin deletion sync: plugins you deleted on Studio can now be mirror-deleted on live during a Dashboard push — never the sync plugin itself, excluded plugins, or single-file drop-ins.

Version 3.0.0 — the guided release: Sync by Type and Full Copy

Studio Sync 3.0 is a ground-up rebuild of the admin as a guided, per-sync-type UI. Every page now walks you through what it does — nothing is left to guessing. The push engine itself is untouched: no push or receiver logic changed, every 2.x safety rail is intact, and 2.x ↔ 3.0 pushes remain compatible.

  • New “Sync by Type” tab — one sub-page per sync type: Content, Media, Menus, Theme, Plugins, Site Settings, Users, Deletions. Each page explains in plain English exactly what that type moves and how it behaves, holds only that type’s settings (savable on its own), and has a “Push [type] to live now” button that syncs just that one thing. Want to push only your menus? Now it’s one button.
  • New “Full Copy” tab — whole-site copies in one click, both directions. Copy Studio → Live pushes everything and prunes, making live an exact copy; Copy Live → Studio pulls a fresh live backup and imports it locally — no more generate-download-upload juggling. Both sit behind a typed confirmation phrase plus a final confirm, and every existing protection still applies (site URLs, operator login, application passwords, roles, and unmanaged plugins are never touched).
  • Dashboard “How Studio Sync works” stepper — three numbered steps (Connect → Choose → Push), each showing live status and linking to the tab where it happens.
  • Settings is now “Setup” — a numbered connection walkthrough (URL → user → Application Password → save → inline Test connection), then sync-behavior defaults, each section saving independently.
  • Compare & Sync gained a numbered how-to, and the Logs tab now explains where receiving-side errors live.

Licensing note: Studio Sync 3 is a new major version. Existing 2.x license keys keep working on 2.x forever — your installed plugin never breaks — and moving to 3.0 is a new purchase, same one-time price.

Version 2.11.0

  • Page hierarchy survives the push. Every page now travels with its parent’s slug, and the receiver resolves it to its own ID — children that arrive before their parent are fixed at commit. Previously child pages landed flat at top level on live.
  • Commit gets its own 150-second timeout. Large staged promotes (5,000+ theme files) exceeded the old 30s client timeout and reported “cURL error 28” for commits that actually completed on live.
  • New parents_fixed total and [post parent] error entries in the push summary.

Version 2.10.0

  • Added a License section in Settings (bundled client SDK; the key unlocks automatic updates through the WordPress admin). The plugin remains fully functional without a key.

Version 2.9.6

The push summary now reports postmeta-only edits separately — N/M posts (new/upd, K meta-only) — so you can confirm from the log that meta-only changes like SEO descriptions travelled. The syncing itself was already handled by the meta-dirty pass added in 2.9.2; this is a reporting improvement.

Version 2.9.4

  • New: mu-plugins sync stage. Must-use plugin files now push like theme/plugin files — staged during the run, promoted atomically at commit — behind a “Must-use plugin files” toggle (default on). Studio’s own runtime pieces (the SQLite integration and Studio loader) are always excluded on both sides: never pushed, never touched.
  • New: opt-in mu-plugins purge (mirror). When enabled, retiring an mu-plugin on Studio retires it on live on the next push. Off by default, because many hosts install their own mu-plugins into sites and a default-on purge would silently delete them. The exclude list can never be purged, and the manifest is rebuilt from disk so incremental runs can’t purge unchanged files.

Version 2.9.3

  • Fixed: featured images survive the sync. Featured images are stored as attachment IDs, which get reassigned on the receiving site — so a synced page’s featured image could point at the wrong (or no) attachment on live. The pusher now sends the thumbnail’s file path alongside each post and the receiver re-resolves it to its own attachment ID.
  • Per-environment plugin config excluded from options sync. Security and caching plugin settings (Really Simple Security, LiteSpeed) are inherently per-environment; they’re no longer pushed, pruned, or counted on Compare.

Version 2.9.2

  • Fixed: excluded plugins are now fully unmanaged. The activation-state mirror no longer deactivates a plugin that’s active only on live (like a host’s caching plugin) just because Studio doesn’t have it active.
  • Fixed: incremental pushes no longer skip posts whose only change was postmeta. Meta edits (SEO descriptions, featured images, builder data) don’t bump a post’s modified date, so those posts used to stay stale on live. Studio now tracks meta-dirty posts and pushes them in an extra pass.

Version 2.9.1

  • Fixed: brand-new plugins pushed in a run are now activated on live — previously a plugin whose files arrived in the same push could land on live deactivated, with no error reported.
  • Fixed: syncing the front-page setting no longer 404s the live homepage. Page IDs aren’t stable across sites, so the pusher now sends the page’s slug and the receiver resolves it to its own ID.
  • The post-push front-end check now also fails on error pages (HTTP 400+), not just leaked Studio URLs.

Version 2.9.0 — hardening release

A “no silent losses” release, plus readiness for Studio’s native PHP runtime:

  • A push with errors no longer advances the incremental watermark — failed content is retried on the next push instead of being silently skipped forever.
  • Live-side promote errors now surface in the Studio UI; chunked uploads are integrity-checked and retried; failed deletions are retried on the next push.
  • A crashed run auto-clears after 10 minutes instead of blocking forever, and “wipe first” imports validate the whole backup before touching anything.
  • Native PHP runtime support (Studio 1.12+): time limits and TLS verification handled properly, with a new “Verify TLS certificates” setting.
  • Better error messages (URL, HTTP code, and body snippet on non-JSON responses) and a far more robust browser progress flow with resume-or-cancel on failures.

Earlier milestones

  • 2.8.0 — Origin-URL rewriting on push: every outbound payload is rewritten from the Studio localhost URL to the live URL (including JSON-escaped builder data and PHP-serialized values), plus a live-side URL sweep at commit and a post-push front-end assertion so a URL leak can never masquerade as a clean push.
  • 2.7.0 — A failed commit no longer reports success; no-op push warnings; a new Export & Import tab (WXR export + full backup zip from Studio); and Auto Sync (merge newest) that merges Studio and live in both directions, newest wins, strictly additive.
  • 2.6.x — Navigation menus sync, with portable references that survive the ID reassignment between sites; menu items pointing at live-only pages are kept as custom links instead of dropped.
  • 2.5.x — A push can no longer disable its own REST authentication mid-run (critical fix); Compare & Sync counts became meaningful; the Compare page’s Plugins section deliberately bypasses the exclude list.
  • 2.3.0–2.4.0 — Critical safety guards so a sync can never delete role definitions or lock an administrator out of the live site, while still letting settings and theme-mods sync across differing table prefixes.
  • 2.2.0 — Prune (true mirror): optional, confirmed deletion of destination items that don’t exist on the source, with hard protections for the sync plugin, the logged-in admin, and brick-critical options.
  • 2.1.0 — Syncs all content post types (including private CPTs like forms), and mirrors plugin active/inactive status.
  • 2.0.0 — Full-site sync: options and users become opt-in sync sections, and the Compare & Sync tab arrives with per-section Upload/Download.
  • 1.5.x — Crash-safe theme/plugin file sync via atomic staging, media deletion sync, permalink repair, and correct upload-before-posts stage ordering.

Latest Articles