Skip to content

Releases: WordPress/wp-admin-sidebar

v0.1.3 — customize-mode polish, drag-drop polish, flyout fix

07 May 16:52

Choose a tag to compare

v0.1.3 lands the first batch of post-Reddit-launch design follow-ups, plus a small bug fix surfaced while testing them.

What changed

Customize-mode polish

  • Plugin submenus collapse and stay closed during customize mode. When you click the Plugins customize icon, every plugin submenu in the sidebar collapses and hovering a row no longer opens its flyout — keeping the canvas calm while you reorder. On exit, your pre-customize hover state is restored. (#11)
  • Non-draggable rows are inert in customize mode. Reassignable items already had no link-follow on click (drag-drop intercepts) and a grab cursor — they read as edit-only. The rest of the sidebar (Dashboard, Posts, Pages, Users, etc.) now matches: no hover paint, no href follow. The .current (selected page) indicator stays visible so you still know where you are. Group headers stay interactive. (#24)

Drag-drop polish

  • Ghost preview matches the source row's dimensions. No more "lifted = grown" effect — the floating preview uses the exact width and height of the row you grabbed, so alignment with drop targets is direct.
  • Drop indicator spans the full sidebar width. The half-width line is gone; the indicator now stretches edge-to-edge, making the insertion point unambiguous.
  • Row hover paint is suppressed during a drag. While you're dragging a plugin item, sidebar rows the cursor passes over no longer light up with their hover/selected state — the drop indicator is the single visual signal of where the item will land.
  • All three changes ship as (#12).

Bug fix

  • Submenu flyouts no longer clipped inside the Plugins group. Hovering a plugin item with submenus inside the expanded Plugins group used to swallow the flyout because the group's children container clipped overflow. The flyouts now appear correctly. (#22)

Tests

All four PHP test suites pass: test-grep-no-wpcom-tokens.php, test-signals.php (13/13), test-normalizer.php (7/7), test-rest.php (25/25).

Requires

  • WordPress 6.5+
  • PHP 8.0+

License

GPL-2.0-or-later.

v0.1.2 — strip admin-bar toggle + restore install-is-the-opt-in default

06 May 15:59
7be0661

Choose a tag to compare

v0.1.2 carries two related changes that together restore the plugin's original design framing for plain-WP enablement.

What changed

  • Removed the admin-bar opt-in toggle. The "Try the new sidebar" / "Restore default sidebar" admin-bar node and its admin_init GET handler are gone from the bootstrap.
  • Restored "install is the opt-in" as the default. The wp_admin_sidebar_enabled filter now returns true for any logged-in user. Activating the plugin enables the redesign site-wide; deactivating reverts.

Together these eliminate a stranded "default-off-no-UI" state. Hosts that need finer control (per-blog, per-user, percentage rollout) override wp_admin_sidebar_enabled from a host adapter.

Why

  • A top-bar toggle entry was heavier than this feature warranted.
  • The toggle UI was leaking onto host environments where the gate is bound externally (e.g., a managed-WordPress host using its own per-blog feature flag), creating click-targets that did nothing visible.
  • The right opt-in surface is a design question we'd rather take deliberately than inherit. Tracked in #16Explore opt-in / opt-out mechanism for the redesigned sidebar.

What stays

  • The wp_admin_sidebar_enabled filter itself.
  • WP_ADMIN_SIDEBAR_FORCE_ENABLED / WP_ADMIN_SIDEBAR_FORCE_DISABLED constants (dev override + kill switch).
  • Data-preserving deactivation: saved layouts persist across deactivate / reactivate cycles.

Tests

All four PHP test suites pass: test-grep-no-wpcom-tokens.php, test-signals.php (13/13), test-normalizer.php (7/7), test-rest.php (25/25).

Requires

  • WordPress 6.5+
  • PHP 8.0+

License

GPL-2.0-or-later.

v0.1.1 — rebrand pass: WordPress/ canonical home, generic identifiers

05 May 11:35

Choose a tag to compare

Cosmetic release — runtime is unchanged from v0.1.0. This release rebrands the public-plugin identifiers to neutral, host-agnostic names so the source no longer surfaces unexplained wpcom-prefixed names. The runtime behaviour, public extension API, and data shapes are byte-identical to v0.1.0.

What changed

Identifiers (CSS, JS globals, DOM data attributes, PHP @package)

  • Body class wpcom-sidebar-activewp-admin-sidebar-active
  • CSS classes wpcom-sidebar-* / wpcom-admin-sidebar-*wp-admin-sidebar-*
  • JS global window.wpcomAdminSidebarDatawindow.wpAdminSidebarData
  • Script handles wpcom-admin-sidebar-*wp-admin-sidebar-*
  • DOM data attributes data-wpcom-{item-id,menu-slug}data-wp-admin-sidebar-{item-id,menu-slug}
  • DOM dataset.wpcomSidebarReadydataset.wpAdminSidebarReady
  • PHP @package WPCOM_Admin_SidebarWP_Admin_Sidebar

Kept (with explicit explanatory comments) — backward-compat / migration-cycle:

  • wpcom_admin_sidebar_layouts user-meta key (saved data carry-over from incubation as a WordPress.com mu-plugin; renaming would orphan saved layouts).
  • Legacy filter aliases wpcom_admin_sidebar_* continue to fire one cycle via apply_filters_deprecated and emit deprecation notices when callbacks attach. Drops in v0.2.x.
  • Legacy admin-ajax action wp_ajax_wpcom_admin_sidebar_layout_save continues to fire one cycle. Drops in v0.2.x.
  • Legacy function-name wrappers wpcom_admin_sidebar_default_registry() and wpcom_admin_sidebar_unknown_default() continue to work (with _deprecated_function notices). Drops in v0.2.x.

URL rebrand

  • Plugin URI: github.com/Automattic/wp-admin-sidebargithub.com/WordPress/wp-admin-sidebar (the staging repo at Automattic/wp-admin-sidebar was archived 2026-05-05; this is the canonical home).
  • README, CONTRIBUTING, SECURITY URL refs: same.
  • Dropped the wp-admin-sidebar.php "staging notice" docblock paragraph (no longer staging).

Test suite (PHP unit-style, no toolchain dependency)

  • All 4 suites pass clean: grep gate (no host-platform tokens leaked into /src/), REST validate-delta 25/25, signals 13/13, normalizer 7/7.

Try it

The Playground demo (boots WP with The Events Calendar + Contact Form 7 + Classic Editor + Query Monitor + this plugin pre-activated) runs from the Playground link — entirely in-browser, no install needed.

Requires

  • WordPress 6.5+
  • PHP 8.0+

License

GPL-2.0-or-later.

v0.1.0 — initial public scaffold

05 May 09:33

Choose a tag to compare

First tagged release of the WP Admin Sidebar plugin. Staging release — the repo will migrate to github.com/WordPress/wp-admin-sidebar (community-branded, matching WordPress/desktop-mode's pattern) once a WordPress-org Owner accepts the GitHub repo-transfer. v0.1.1 will follow with URL-reference updates after the migration; the runtime is unchanged.

What's in this release

  • Plugin bootstrap (wp-admin-sidebar.php) with mid-deploy file_exists guards, default WP_User_Meta_Storage binding, opt-in admin-bar toggle (mirrors WordPress/desktop-mode), data-preserving deactivation hook.
  • Portable /src/: classifier, normalizer, signals, data planner, REST + admin-ajax handler, registry, browse-rail JS+CSS, customizer JS+CSS. Plain ES modules, plain PHP, no build step, no React.
  • Filter API documented in docs/host-extension-api.md: canonical wp_admin_sidebar_* filters with one-cycle deprecation aliases for wpcom_admin_sidebar_* (drops in v0.2.x).
  • Test suite (PHP unit-style, no toolchain dependency): grep gate, REST validate-delta 25 cases, signals 13 cases, normalizer 7 cases — all passing.
  • WordPress Playground demo blueprint at .wordpress-org/blueprints/blueprint.json.

Status

Pre-1.0; the public extension API is not yet locked. Hosts adopting the plugin are encouraged to track patch releases until v1.0 ships the API stability promise.

Try it

The Playground demo (boots WP with WooCommerce + Yoast + Classic Editor + Query Monitor + this plugin pre-activated) runs from the Playground link — entirely in-browser, no install needed.

Requires

  • WordPress 6.5+
  • PHP 8.0+

License

GPL-2.0-or-later.