Releases: WordPress/wp-admin-sidebar
v0.1.3 — customize-mode polish, drag-drop polish, flyout fix
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
hreffollow. 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
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_initGET handler are gone from the bootstrap. - Restored "install is the opt-in" as the default. The
wp_admin_sidebar_enabledfilter now returnstruefor 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 #16 — Explore opt-in / opt-out mechanism for the redesigned sidebar.
What stays
- The
wp_admin_sidebar_enabledfilter itself. WP_ADMIN_SIDEBAR_FORCE_ENABLED/WP_ADMIN_SIDEBAR_FORCE_DISABLEDconstants (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
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-active→wp-admin-sidebar-active - CSS classes
wpcom-sidebar-*/wpcom-admin-sidebar-*→wp-admin-sidebar-* - JS global
window.wpcomAdminSidebarData→window.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.wpcomSidebarReady→dataset.wpAdminSidebarReady - PHP
@package WPCOM_Admin_Sidebar→WP_Admin_Sidebar
Kept (with explicit explanatory comments) — backward-compat / migration-cycle:
wpcom_admin_sidebar_layoutsuser-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 viaapply_filters_deprecatedand emit deprecation notices when callbacks attach. Drops in v0.2.x. - Legacy admin-ajax action
wp_ajax_wpcom_admin_sidebar_layout_savecontinues to fire one cycle. Drops in v0.2.x. - Legacy function-name wrappers
wpcom_admin_sidebar_default_registry()andwpcom_admin_sidebar_unknown_default()continue to work (with_deprecated_functionnotices). Drops in v0.2.x.
URL rebrand
- Plugin URI:
github.com/Automattic/wp-admin-sidebar→github.com/WordPress/wp-admin-sidebar(the staging repo atAutomattic/wp-admin-sidebarwas 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
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, defaultWP_User_Meta_Storagebinding, opt-in admin-bar toggle (mirrorsWordPress/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: canonicalwp_admin_sidebar_*filters with one-cycle deprecation aliases forwpcom_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.