The latest features, improvements, and fixes shipped to DirectoryCustomize. Newest first.
The button now uses the correct site-id URL pattern (was breaking on some installs), and the Open MySQL Manager link points to the right phpMyAdmin URL. No more "404 from the install modal" friction.
New button placed before the Developer Hub button in the install modal. Switches identities for you, removing a 4-step manual switch (logout · re-login · navigate · install).
Copy button moved above the SQL box (no more scrollbar overlap). The Developer Hub button label now clarifies that you should log in as the client first.
An animated install modal replaces the previous toast, showing live progress on every relay step. The installer widget writes its own plugin record on page load, and the relay accepts admin-initiated installs so you can run setup for any client without identity-switching.
Auto-refresh runs every 2 minutes. Ping times and widget counts are always current, removing the "is this stale?" friction on the admin dashboard.
The button becomes ghost-styled "Add" when the plugin is already installed (was showing solid pending-action style). Removes the false-pending visual that made admins re-install unnecessarily.
The Install column shows widget version health (current / outdated / no-ping). The Client column shows last admin page open with green/yellow/red recency coloring. Replaces the previous merged STATUS column that was hard to read at a glance.
The plugin pings on page load (not daily), so the old 24-hour threshold was creating false No-Ping warnings on inactive client sites. The 7-day threshold accurately reflects actual staleness and reduces dashboard noise.
Outdated state now requires both versions to be known and actually different. No-Ping state only shows when the plugin was previously pinging and went stale (a brand-new client isn't flagged as stale).
Lookup now searches the local registry (which has the API key) before falling back to a Simplero search — finds existing clients faster.
When a client isn't found in Simplero, the API key field now shows an amber highlight with a persistent hint, so it's obvious what's needed to continue.
The search box now explains: email searches Simplero directly, name searches only finds clients already registered with the relay.
The Systems tab now auto-seeds widget companion relationships on first load — gap detection works immediately without manual setup.
"Comp" renamed to "Count" — clearer at a glance what the column shows.
BD Site ID is now a required field on Add Client and generates a stable client identifier (e.g. matt-54406). Simplero ID is auto-captured from the lookup. The modal scrolls properly on small screens. Client detail rows now span the full table width.
Modal height capped at 90% of viewport with internal scroll — install widget lists no longer overflow off-screen.
No more manual page reload to see fresh data — pills update in place after every push.
The push button was nested inside an anchor tag, which sent BD's backend nav instead of running the inline relay push. Fixed.
The toggle was sending GET instead of POST — relay route wasn't matching. Now correctly routes admin-mode changes to the relay.
Error toasts show the actual relay error (not a generic "something went wrong") so problems are diagnosable at a glance.
Was rendering as a raw checkbox (CSS was missing). Now looks and acts like a proper switch.
The row click handler now ignores clicks on the toggle, so flipping the switch doesn't accidentally open the detail row.
One-click toggle on each client row to flip the site between admin and demo mode — no widget push required, takes effect immediately.
Sync was incorrectly using the installed version as the latest version, so every widget appeared current. Now preserves the global latest-version source of truth.
Sortable per-client push button — amber when widgets are outdated (with count), green check when current. Far more useful than a static install flag.
Same inline push pattern that widgets use — consistent across the dashboard.
Two-column list with sortable System / Companions headers. Defaults to highest companion count first.
One-click push for outdated plugins — same pattern as outdated widgets.
Every widget is in the matrix now, so the filter served no purpose — removed for a cleaner Library tab.
Containers carry real content, so they belong in version tracking — they're now visible in the Matrix grid alongside everything else.
The Matrix outdated count now only counts non-container widgets, so the badge reflects the user-visible widgets that need attention. Container updates are tracked separately in the dashboard.
A syntax error in the version-data file was causing the admin panel to hang at the loading screen. Sync now runs before preflight checks so any errors are caught and reported.
Was showing native browser title tooltips (white, mismatched). Now uses the dark popover used everywhere else in the panel.
Internal fix: relay version-update calls now hit the right endpoint, so version data stays in sync.
Amber styling appears when the installed version is behind the global latest. Tooltip shows the latest version. Version-sync wiring extended to all release scripts.
Stale ping (the plugin hasn't checked in) is no longer mislabeled as Outdated (the version is behind). Two different problems, two different badges.
Last-ping timestamp recorded on every heartbeat. Health dot turns yellow with a tooltip if no ping in 24 hours, so it's obvious when a client site has gone quiet.
Verified-badge widgets now register as companions with reverse-link tracking — they install together when Auto Member Verify is added.
The verified badge and verified-badge profile widgets are now in the Widget Library with version tracking and info cards.
Cleared 12 widgets that were incorrectly excluded from the Matrix count. Added an info tooltip on the In Matrix stat so it's clear what the number represents.
Three more widgets enter version tracking — full coverage across the library.
Columns now follow numerical widget order (#1, #2, #3...) instead of alphabetical label sort. Uninstalled widgets show a dash, so the Matrix is a complete picture across all clients, not just installed ones.
Settings panel now has fields for Verify plan IDs, Unverify plan IDs, and BD API key — configurable per client.
Two widgets had stale versions in the admin panel — corrected. The release process now auto-syncs Library version data on every build, so it can't drift again.
Both the installed-widgets badge list and the widget backups table now support live type-to-filter — find what you need fast.
When a client has 8 or more widgets installed, a filter dropdown appears in the detail row to narrow the list quickly.
Push History updates after each push (no refresh needed). Quick Push and Bulk Push silently refresh the dashboard's widget data. System gap cards flip from orange to green immediately after fixing them.
Every push now backs up the existing client code first, so you can restore a previous version with one click. The original (pre-customize) code is pinned permanently as a safety net. Restore also backs up the current code first, so you never lose work.
Spinner stops when complete. Clients with gaps appear in orange at the top, complete clients in green below. A client filter helps you jump to a specific site fast.
Internal: every release auto-injects the changelog entry, so the Updates tab never lags behind the deployed version.
Removed the redundant System tab (singular). Added a search filter above the list. Add Companion now uses a searchable combobox dropdown instead of a plain select.
New tab showing every widget with its companion dependencies. Add or remove companions per widget system. Sync check identifies clients missing companions and offers per-client push to fix them.
Widgets that require other widgets now auto-include their dependencies during install, wizard push, and quick push. The toast tells you which dependencies were auto-added so nothing happens without your awareness.
Simplero enrichment runs even when a client has no BD connection — site URL, name, tags, and Simplero ID get backfilled on sync. Browser updates immediately, no page refresh needed.
The Simplero ID row now shows "Not linked" instead of hiding when missing. Relay Key is shown in Client Info (masked) so you can confirm the key exists. Sync auto-enriches missing Simplero IDs via email lookup.
Was writing to the wrong field (the domain never changed). Now saves correctly. Auto-strips www prefix to prevent BD API redirects. Clears stale legacy URLs on save.
Cyan install button when the installer widget is live but the plugin isn't yet registered (SQL not yet run). Makes mid-install state visible at a glance.
No more hardcoded column lists. Matrix builds itself from the Widget Library on every render — adding a widget to the library means it appears in the Matrix automatically. Support tab article links wired to GitBook docs.
Pencil Update button when set, input field when empty — same UX as the API key field. Auto-prefixes https:// if you don't include it.
Core optional widgets show as checkboxes; additional widgets appear in a searchable scrollable list. Install activity log shows per-widget result and container injection status — full visibility into what happened.
The combo dropdown was floating off when the page scrolled. Now anchored to the input.
Orange for outdated (needs push), green for up to date, neutral for not installed. Pick at a glance.
Widget dropdown populates after a client is chosen, with widgets that need pushing at the top and current widgets at the bottom. The combo starts with "Select a client first" so the flow is obvious.
Step 1 is now picking the clients. Widget cards stay plain until clients are selected — green/orange status reflects only the selected clients, so the colors are accurate.
Same filter bar (All / Needs Push), same card layout, same color logic. Consistent UX across both flows.
Whole badge navigates to the BD widget editor — not just the icon. Push button still works independently.
Column stability fix — table layout locked, button group on one row even when detail rows open or close.
External-link icon on hover when site ID and widget ID are available — jump straight to editing.
Hides already-current widgets so the list focuses on what actually needs work.
Orange card + version arrow for outdated (pre-checked). Green card for current (disabled, excluded from push). At-a-glance picture of what will happen.
When no API key is set, the install button becomes a ghost "Add API Key" button. Click to expand the client row with the input focused, ready for the key.
Pre-selects all 30 container widgets (header + loop + footer for every post type) in Bulk Push for the selected client.
It runs on this site (not tracked in the relay), so it was previously invisible. Now always shown as the third plugin in client detail, with an accurate plugin count.
Client row now shows both counts (e.g. "43 managed · 2 plugins"). Expanded detail splits Installed Widgets from Plugins with distinct icons.
Trigger SQL was a leftover from the old delete-protection model. Widgets now inject directly into files, so the SQL is gone — fewer steps, less confusion.
Click the info pill next to any widget label to open a description with tagline and feature bullets. Version badge shows the latest known version.
Client rows now show domain alongside name. Sync checks the full widget library (not just core), so non-core widgets like homepage-search now register coverage.
Full coverage of homepage-search variants — every layout option is now visible and trackable.
Stats now display in a single row instead of a 2×2 grid. Added a search bar — filter by name or slug with live count.
No more manual save — same auto-detect pattern as BD Site ID. Field is display-only once detected.
Field is display-only — value populates automatically. Library coverage filter chips now correctly highlight when selected.
One "All" resets every filter row at once (was per-row, with conflicting active states). Clicking an active filter clears it (toggle behavior). "All" deselects when any filter is active and re-selects when all are cleared.
Edit domain and Site API Key directly in client detail (masked Update toggle when set, input when empty). Amber badge on the Domain column when either is missing — instant visual cue for clients that need configuration.
Login button per client links to the BD admin. BD Site ID is editable inline in the detail row with Save and Open. Filter chips across the Library now show FA icons.
Scan updates both installed and latest versions in the registry, so Outdated flags clear as soon as a push lands.
Adding a client with an email that's already in the registry now shows an "already added" warning instead of creating a second entry. The warning fires immediately on Look Up, so you don't waste time filling out the form.
New clients show an orange "Install Customize" button — one click pushes the Directory Customize plugin directly. Once installed, the button switches to blue "Install" (opens the wizard for additional widgets).
Dashboard auto-refreshes when the modal closes. Event Search Results is now opt-in (unchecked by default). "Skip for now" renamed to "Add Without Installing" — what it actually does.
Internal: jQuery's type: parameter now used everywhere (was inconsistently using method:) — resolves the 404 errors that were hitting Add Client and other relay calls. Library stat card now navigates to the Library tab on click.
Title + description on the left, action buttons on the right — same layout on Matrix, Library, Deploy, Updates, and Systems. Version badge in Updates tab now resolves correctly.
Internal: relay URL is now passed as a plain HTML attribute, eliminating a JSON parse failure that caused empty relay URL and 404s on Add Client.
Removed the max-width constraint — admin panel now fills the full container, matching the client plugin. When a client already exists in the registry, Add Client skips the dead-end error and opens the install step instead.
Stats on left, labeled filter rows on right in a background box — matches the rest of the admin. Filter chips show counts inline (e.g. "Container 30") with the standard active state.
Type, Files, Matrix, and Coverage filters. Filtered count shown when any filter is active (e.g. "3 of 35 items"). Filters persist across sort changes within a session.
After adding a client, choose which widgets to install immediately (DC Plugin and Event Search Results pre-checked). Existing registry clients show an "(in registry)" badge in search results and skip straight to Install.
Type a name to get a list of Simplero matches. "Lookup failed" no longer shows for valid not-found cases — clear "Not found" message instead.
Enter a client email and the modal auto-fills name, site URL, and BD API key from Simplero. The API key can be left blank for later (post-purchase survey collects it).
Click any item to jump to Bulk Push with that client and its 3 container widgets pre-selected. Sortable column headers across Matrix and Library now show a faint sort icon when inactive (standard UX).
Quick Push widget and client selects became integrated comboboxes — type to filter and select in one step. Library columns are now all sortable. Matrix has a sortable Installed column to rank top clients.
Colored dot per post type in client detail shows container install status (ready / partial / none) with hover tooltip listing missing pieces. Compact #N column headers in Matrix get the dark panel tooltip on hover.
Slug, label, type, files, matrix status, and coverage % across every client. Export CSV downloads the full registry. Matrix client name column is now sticky (stays visible while scrolling right). Compact / Full toggle in the filter bar.
Search boxes above widget and client dropdowns in Quick Push. Select All Containers checkbox in Bulk Push and Install Wizard. Widget and client grid items highlight blue when checked.
Dash for unscanned widgets (neutral, not flagged). Outdated count badge only counts genuine version mismatches. Outdated-only filter only shows clients with real mismatches. Scan no longer overwrites a known version with null.
Type to narrow the widget grid or the client list. Select All Clients only toggles visible (non-filtered) clients.
Live client name search. Click a widget column to focus the matrix on that widget. Outdated count badge totals every missing or outdated widget across all clients. Outdated-only toggle filters to clients with issues.
Stat cards filter the client table by Total / Up to Date / Outdated. Column sort on Client, Domain, Widgets, Status. Auto-scan on first load — version data is always current without a manual Scan All.
Resolved BD's backslash stripping that was breaking JS HTML generation. Added the Updates tab with version history and type pills.
Dashboard with expandable client rows and widget badges. Matrix tab with version grid across all clients and color-coded cells. Deploy tab with Quick Push, Bulk Push, and Install Wizard. System tab with relay config, widget library, and push history. Indigo primary color identity.
Clients, Push Center, Install Wizard, and System tabs. Relay integration for all client operations. Widget pushes routed through the relay (no direct BD API calls). Four-step Install Wizard with widget selector grid.