Skip to content

v0.23.0 — wire custom_login + adminbar_logo (whitelabel complete)

Choose a tag to compare

@ultrapackadm ultrapackadm released this 19 May 21:38
· 29 commits to main since this release

What's new in v0.23.0 — Whitelabel feature complete

Final wave of whitelabel toggles. The two remaining reserved image-URL toggles ship working WP-side handlers, completing the 5-toggle agency rebrand surface DeckWP committed to at the v0.21.0 foundation.

custom_login

Three coordinated overrides on wp-login.php:

  1. Logo image — .login h1 a background-image replaced with custom_login_logo_url. 84×84 box, background-size: contain so non-square logos letterbox cleanly.
  2. Accent color — custom_login_color (validated as CSS hex) tints the primary button, focus rings on form inputs, and link hover states. Invalid hex strings are silently dropped at render time — the storage layer accepts any string; render-time validation prevents broken CSS.
  3. Logo URL + title — anchor retargeted via login_headerurl / login_headertext filters. Fallback chain for the URL: configured connector author_uri → home_url('/'); never https://wordpress.org/. Title text falls back: configured connector plugin name → site title; never "Powered by WordPress".

Toggle ON with both URL + color empty still applies the URL/text retargets — partial overrides are valid.

adminbar_logo

Removes the entire wp-logo adminbar node (including its About / Documentation / Support / Feedback sub-menu) so the customer's adminbar doesn't leak WP identity.

When adminbar_logo_url is set, drops in a replacement deckwp-whitelabel-logo node in the same top-secondary group, styled via CSS background-image at 20×20 (matches the wp-logo icon container so the adminbar height doesn't shift).

CSS is emitted across wp_before_admin_bar_render, admin_head, and wp_head because the adminbar renders in three contexts (wp-admin, front-end logged-in, customizer); each has different head-action timing. Idempotent via the unique style#deckwp-adminbar-logo id.

Internals

Three new private helpers:

  • sanitizeHexColor() — validates CSS hex (#RGB, #RGBA, #RRGGBB, #RRGGBBAA). Strict at render, lenient at storage.
  • resolveConnectorAuthorUri() — reads connector's per-plugin author_uri override for the login URL fallback chain.
  • resolveConnectorPluginName() — same, for login hover text + adminbar screen-reader label.

Wire contract

No change. WhitelabelRoute already accepted these keys in v0.21.0 — this release wires their WP-side behavior.

Whitelabel feature: complete

With v0.23.0 the whitelabel surface is feature-complete for v1. All five agency-level toggles (hide_updates, suppress_activate, help_links, custom_login, adminbar_logo) + the per-plugin hide flag are now backed by working WP-side handlers.

Future iterations land as enhancements (e.g. theme rebrand, per-plugin plugin_uri overrides), not as "toggle X is still pending".


Upgrading: drop in deckwp-connect.zip or self-update via the DeckWP dashboard. No DB migration. Existing whitelabel configs continue to work unchanged.