Skip to content

Releases: WordPress/wp-admin-sidebar

v0.1.10: Customizer follow-ups

Choose a tag to compare

@chriskmnds chriskmnds released this 01 Jun 16:50
6564ebf

What's changed

  • Adds the auto-save customizer flow with Undo, Retry, Done, and Escape to close.
  • Lets Escape cancel an active pointer drag before leaving customize mode.
  • Adds returning drop target hints while reordering.
  • Keeps row move menus quiet until hover or focus while preserving keyboard access.
  • Stabilizes icon color and opacity across wp-admin color schemes and plugin icon types.

Notes for hosts

  • No WPCOM integration adapter changes are required for this release.
  • The release asset is the wp-admin-sidebar.zip package expected by the WPCOM vendoring script.

v0.1.9: release review follow-ups

Choose a tag to compare

@chriskmnds chriskmnds released this 22 May 11:49
2662cc8

Runtime review follow-ups for the wpcom vendoring release.

  • Removes stale customize-mode move-menu code from the portable plugin.
  • Improves admin color-scheme preview syncing by rechecking after both stylesheet load and delayed fallback timers.
  • Bumps the plugin header and runtime constant to 0.1.9.

Verified on the public plugin test suite and on a JN site before release.

v0.1.8: public parity polish bundle

Choose a tag to compare

@chriskmnds chriskmnds released this 22 May 11:08
4dcdf5e

What's in this release

This release bundles the verified public parity polish for the redesigned wp-admin sidebar before the next wpcom vendoring pass.

Changes

  • #64: default-expand My Plugins on first encounter.
  • #65: replace the customize-mode hamburger icon with a clearer pencil entry point and tooltip.
  • #66: keep groups expanded and locked while customize mode is active.
  • #70: close the More options menu when the user starts dragging a row.
  • #71: remove invalid group destinations from the per-item More options menu.
  • #72: adopt wp-admin's native admin color-scheme accent at runtime, including Profile-screen live preview.
  • #75: bump the plugin version to 0.1.8.

Install

Drop wp-admin-sidebar.zip into wp-admin's Plugins > Add New > Upload Plugin, or unpack it into wp-content/plugins/wp-admin-sidebar/.

Compat

No storage or API shape changes from v0.1.7.

v0.1.7 — emptied-group drop fix

Choose a tag to compare

@chriskmnds chriskmnds released this 12 May 09:37
ff0d429

What's in this release

Fix — drag-drop on a customize-mode group header now lands in that group's children-UL if the group is collapsed OR expanded-and-empty (previously only handled collapsed). Closes the "can't re-add items to an emptied group" bug: once the user has reassigned every item out of a group, the group's children-UL has zero content and the header is the only hit-target, but the prior code's branch fell through to continue when the group was expanded.

Surfaced while testing the Calypso-side mirror of this customizer; identical bug existed on both sides. Verified on the WPCOM sandbox via an in-tree-copy cherry-pick of the upstream fix.

Changes

  • #50 — Fix: allow drag-drop into an emptied group's expanded header

Install

Drop wp-admin-sidebar.zip into wp-admin's Plugins → Add New → Upload Plugin, or unpack into wp-content/plugins/wp-admin-sidebar/. No DB or activation-state changes from v0.1.6.

Compat

No breaking changes from v0.1.6.

v0.1.6 — Customize-mode hover-paint suppression bundle

Choose a tag to compare

@chriskmnds chriskmnds released this 08 May 13:18
a7d71c6

What's in this release

Fix bundle — host-CSS hover paint no longer leaks onto inert customize-mode rows. The v0.1.3 + v0.1.4 customize-mode rules covered :hover on the LI, but several paint paths weren't reached:

  • LI hover bg on hosts that paint at the LI level (notably WPCOM's wp-admin chrome — vanilla wp-admin paints at the <a> level, already covered)
  • .opensub > a.menu-top paint after core's hover-intent JS adds the class on a ~200ms delay
  • .wp-menu-image::before icon-color override that soft-greyed icons on hover (read DES-605 literally — no hover paint at all)
  • Reassignable rows showing the same blue bg + left-edge box-shadow stripe through the inner anchor
  • Right-edge ::after arrow on items with submenus (the "submenu opens here" affordance — irrelevant when flyouts are disabled)

Net effect: inert rows in customize mode stay visually inert across the full hover → hover-intent → opensub state machine, on every host.

Changes since v0.1.5

  • #48 — Customize-mode hover-paint suppression bundle (4 commits)

Compatibility

  • WordPress 6.5+
  • PHP 8.0+

Sources

  • Tag: v0.1.6 (commit a7d71c6)
  • Source archive: wp-admin-sidebar.zip attached

v0.1.5 — Targeted plugin-injected-separator hide (closes #25)

Choose a tag to compare

@chriskmnds chriskmnds released this 08 May 10:38
532ea14

What's in this release

Fix: Plugin-injected separators in the wp-admin sidebar are now hidden when the redesigned sidebar is active. Targeted CSS-only fix that hides wp-menu-separator elements injected by 3rd-party plugins (so the redesigned grouping doesn't show stray gaps).

Caveat per PR review: this is a class-ordering-dependent hide rule and may need revisiting if WordPress Core's class ordering changes. See PR #45 discussion for context.

Changes since v0.1.4

  • #45 — Fix #25: hide plugin-injected separators (targeted)

Compatibility

  • WordPress 6.5+
  • PHP 8.0+

Sources

  • Tag: v0.1.5 (commit 532ea14)
  • Source archive: wp-admin-sidebar.zip attached

v0.1.4 — Plugins group polish, label ellipsis, signal rendering, folded-state + sticky-menu fixes

Choose a tag to compare

@chriskmnds chriskmnds released this 08 May 05:26

v0.1.4 lands a batch of design follow-ups, mostly on the Plugins group and customize-mode interactions, plus a couple of cross-cutting bug fixes.

What changed

Plugins group → "My Plugins"

  • Renamed PluginsMy Plugins. Disambiguates from the core Plugins admin area, leaves room for the inline attention dot to sit next to the label (matching wp-admin's native Updates [1] pattern). (#31, #38)
  • New chevron-down icon rendered via CSS mask, sized to match the customize icon. Both icons hover-fade 0.7 → 1 with matching timing. (#31)
  • Chevron moved out of the toggle button (nested <button> is invalid HTML), placed as a header sibling. A JS click-delegate on the chevron calls toggle.click() so clicking it still toggles expand/collapse. (#31)
  • Header tightened: 34px height (matches wp-admin's top-level item baseline), box-sizing: border-box, padding 4px 4px 4px 8px (left-8 aligns label with menu-item icon column), 16px top spacing to separate from the row above, hover-bg removed. Toggle and label are flex-shrinkable with text-overflow: ellipsis for longer future labels. (#31)

Customize mode

  • Plugin labels stay on a single line in customize mode. .wp-menu-name got overflow: hidden, white-space: nowrap, text-overflow: ellipsis so long names like "LiteSpeed Cache" / "WooCommerce" no longer wrap and break drag-target predictability. (#34)
  • Customize button tooltipCustomize plugins shows on hover/focus-visible above-and-right of the button, 250ms show-delay, 100ms hide. CSS-only via data-tooltip + ::after with matching aria-label. (#20)
  • Collapse Menu stays visible (disabled) in customize mode instead of being removed, so the layout doesn't jump on enter/exit. Disabled state: opacity 0.4, cursor not-allowed, pointer-events: none, tabindex="-1", aria-disabled="true". Selector covers both <a> (legacy) and <button id="collapse-button"> (wp-admin 6.9+). (#18)

Visual fixes

  • Group-header hover no longer paints child icons blue. wp-admin's li.menu-top:hover .wp-menu-image::before cascade was bleeding through to all children of the group LI; now only the actually-hovered child picks up the hover blue. (#36)
  • Item-level signals render for count and badge triggers, not just numeric_badge. Children that fired attention via count (e.g. Payments, Yoast SEO with count-1) now show an inline badge matching native wp-admin's Updates [1] styling — circular for single digits, pill for multi-digit. Badge appended inside .wp-menu-name so it sits next to the label, not on a new line. (#40)

Folded sidebar

  • Folded state shows only the chevron for the My Plugins group, centred in the icon column, matching peer top-level items. Click-to-toggle still works. (#33)
  • Folded-state CSS gated to ≥783px so the ≤782px mobile drawer keeps the full group header alongside the rest of the sidebar items. (#42)

Bug fixes

  • No more empty band at the top of the sidebar after collapsing/expanding the My Plugins group on long admin pages. Toggle now dispatches a synthetic resize event so wp-admin's setMenuPosition reflows the sticky menu against the new height. (#44)

Tests

PHP test suites pass on trunk. JS/CSS changes are covered by manual verification (per-PR test plans).

Requires

  • WordPress 6.5+
  • PHP 8.0+

License

GPL-2.0-or-later.

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

Choose a tag to compare

@chriskmnds chriskmnds released this 07 May 16:52

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

Choose a tag to compare

@chriskmnds chriskmnds released this 06 May 15:59
7be0661

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

Choose a tag to compare

@chriskmnds chriskmnds released this 05 May 11:35

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.