v5.1.0 Latest
New
- Page Settings meta box: unified per-entry display controls (sub-header, sub-header title, sidebar, content width, site header, site footer, header style, side panel, color mode, site loader) for pages, posts, and any public CPT. Renders as a modern React panel in both block and classic editors; saves through the REST API.
- Header Style picker with 5 variants: Default, Solid (brand-color underline), Transparent (over hero), Minimal (compact bar), Glass (backdrop-blur). Per-entry override available in Page Settings.
- Site Blog panel split into Blog Archive and Single Post sections with modernized controls. New magazine layout, unified 1-4 columns control, card styles (plain / bordered / shadow / elevated), hover effects (lift / zoom / tint), excerpt length slider, and an author bio toggle on single posts.
- Blog Archive sidebar override that applies on the homepage when it acts as the blog feed and on category / tag / author / date archives. Inherits the global sidebar setting by default so existing sites render unchanged.
- Color presets: 12 Brndle enterprise palettes plus 2 legacy schemes; swatch grid picker with dynamic per-control defaults that track the active preset.
- Typography presets: 7 curated font pairs with size + weight + line-height per field. Two sliders drive a modular type scale across every heading + body field.
- Visitor color mode toggle (light / dark / auto) ported from buddyx free, with header, mobile menu, or floating placement.
- WP Login branding revamp: 4 layout presets (Minimal, Brand left, Brand right, Hero image). Replaces the previous 81-field configuration.
- 9 preset Google Fonts bundled and self-hosted; no Google CDN dependency at admin load when a preset is active.
- 1,358 Google Fonts library restored in the typography picker (free-parity); searchable, grouped, with Kirki-era custom selections preserved.
Improve
- Customizer architecture: dropped Kirki dependency in favor of an in-house Customizer_Framework with 20 control types and live preview parity.
- Single React UI bundle for the Page Settings panel mounts in both editor surfaces (no parallel PHP fallback to maintain).
- WPCS / PHPStan / output-escaping pass across theme core, BuddyPress, bbPress, BuddyBoss platform, LearnDash, WooCommerce, WC Vendors, Events Calendar, post-format templates, and menu-icons compat.
- Template parts no longer shadow WordPress loop globals; explicit operator precedence across template + helper conditions; class method visibility explicitly declared.
- Translation readiness: every theme string carries the buddyxpro text domain; empty translation calls removed.
- Confirm-modal toolkit replaces every native window.confirm() call across the admin.
Fix
- Color-mode toggle now appears reliably when enabled (truthy-normalization sweep finished).
- WP login upgraders with a saved background image land on the Hero preset instead of Minimal, so their branding stays visible.
- Header Style picker variants now apply cleanly via customizer transport=refresh; each variant has a unique visible signature on any page (not just hero / dark-bg pages).
- Site loader visual parity preserved on upgrade (5-dot animation with the saved background color).
- More menu dropdown now renders cleanly at tablet widths (768-1023 px). Parent items show a chevron; nested items open on hover.
- Minimal blog layout now hides the sidebar on the archive page as the design intends; no orphan widget area at the foot.
- Customizer Publish button appears on the first keystroke when typing values into number fields (sidebar widths, content padding, and other dimension controls).
- Site Loader now respects the Background colour (Dark Mode) setting; the loader matches dark mode pages.
- WP Login Brand Left and Brand Right presets render cleanly on the BuddyPress register page; no white-space rail on the side.
- WP Login Hero Image preset on the register page: form fields are clickable, section headings remain readable, and the page keeps its theme chrome.
- WP Login Hero Image preset on the login form: the language switcher is now clickable.
- Hero Image overlay no longer blocks clicks on form inputs or visitor controls.
- Members and Groups directory cards no longer output an empty cover image element when no cover photo is set.
- Dark-mode toggle no longer fires a failing background request for logged-out visitors; guest preference persists via browser storage as before.
Security
- Output escaping hardened in cart, single-product rating, post-format video/audio, Dokan store reviews, SureCart blocks, and entry-meta time strings.
- Updated build-time development dependencies to clear advisory alerts; no customer-facing impact.
- Prepared SQL via $wpdb->prepare() across LearnDash and helper queries.
- LearnDash auto-enroll display now checks manage_options instead of the administrator role name.
Dev
- In-house Customizer_Framework with 20 control types and Kirki-shape API (Panel::add / Section::add / Field::add). Active_callback supports 10 operators.
- 96-token design system (inc/Tokens/Component.php) emits :root + [data-bx-mode="dark"] from customizer mods + active style variation overlay.
- esbuild JSX pipeline with wp.element.createElement factory; @wordpress/* externals so no React shipped separately.
- Pre-commit hooks via simple-git-hooks + lint-staged (php -l, stylelint --fix, eslint --fix). GitHub Actions CI removed in favor of local-only checks.
Compat
- Verified on PHP 7.4 through 8.4. Legacy BP_buddyxPro_user_progress filter preserved via apply_filters_deprecated.
- Page Settings reads / writes the same legacy meta keys (_hide_show_side_panel, _buddyx_sub_header_visibility, _buddyx_sub_header_title_visibility) the pre-5.1.0 meta boxes used; existing customer data preserved without migration.
- LEGACY_ALIASES map covers every dropped color-preset slug (ocean-blue, forest-green, mocha-warm, cool, dark, editorial, etc.) so saved customizer values keep resolving after the slug rename.
- Blog Archive read-side shim translates legacy blog_grid_columns and post_per_row values to the new unified blog_columns control; blog_masonry_view to the new blog_masonry switch. Customers keep their saved layout + column choices with no DB rewrite. Legacy site_blog_section URL registered as a hidden stub for one release so pre-5.1.0 deep-links still resolve.