The latest features, improvements, and fixes shipped to DirectoryCustomize. Newest first.
Sponsor Board has a new County Pages group: which plans appear on county pages, how many listings show, the words above them, the line for an empty county, up to two buttons, the invitation line, and the sidebar box heading, points, button and link. Nothing site-specific is built in any more; a button or link shows only once you fill it in.
Sponsor Board: a page that already exists on your site is recognized, so it no longer asks you to create it
Sponsor Board: the Pages tab no longer asks for a page price before a page can sell
Sponsor Board: prices now read level first. The level price is the starting price and each page adds its own amount on top
Sponsor Board: the Settings tab explains what the board is, how to put it on a page, and what each setting does
Fixed the map settings - which map, how tall, and map-only - saving nothing when changed from the panel.
A setting that is greyed out now says which setting turns it back on, instead of only saying it is unavailable.
A filter already set to one of those types now shows that type in the Input type box instead of reading as Checkboxes.
My Widgets: the status badge is now called Status Badge and has its own entry, so its settings are easier to find.
My Widgets: the status badge is now called Status Badge and has its own entry, so its settings are easier to find.
Search Order now sits under its own heading in My Widgets
Sponsor cards sit flush now, so a collapsed card is just its header rather than a bar floating in a white box.
Fixed: the county and category pickers on a new page could not be opened until you deleted the prompt text from the box.
Spots and price boxes now read Default (number), so a figure carried down from your levels is not mistaken for one you typed.
The page address box tells you when it no longer matches your listing selections, offers to put it back, and Create this page returns if you change it.
One setting now says your levels mirror your membership plans, instead of declaring it on every level.
Every setting in the plugin now has help text explaining what it does and where it appears, and six section headings that showed an internal name now read properly.
Fixed: the county and category pickers on a new page could not be opened until you deleted the prompt text from the box.
Spots and price boxes now read Default (number), so a figure carried down from your levels is not mistaken for one you typed.
The page address box now tells you when it no longer matches your listing selections, and offers to put it back.
Create this page now reappears if you change a page address, and makes the page at the address you typed.
One setting now says your levels mirror your membership plans, instead of declaring it on every level.
The levels total now reads correctly when your levels add up to exactly the page total.
The Title shown to searchers box no longer suggests that internal name; it says what leaving it blank will do, and offers to copy the name from the card header instead
The Settings dropdown that picks what the widget draws now says what each choice looks like on the page - a tall filter box, a short filter strip, or a row of one-click buttons with no Search button
Help bubbles are a comfortable reading width rather than a tall narrow column
Import and Reset carry a red icon so you can see at a glance which two actions overwrite your settings; the unexplained vertical line between them is gone
The Settings dropdown that used to say This copy shows now asks Where on the page is this one, and explains how it differs from the Sidebar and Top Bar lists on the Filters tab
Popular Searches cards now match filter cards: same spacing, and a collapsed one is just its header bar
Previews now load on every card, not just the ones open when the tab was first opened
Clicking anywhere on a card or group header folds it, not only the small arrow
A filter's up and down arrows dim when it is already first or last, matching groups
Tile shape now sits beside the Tiles option instead of further down the panel
A switched-off group shows a red header, matching how a switched-off filter looks
Every pop-up has a close X in the corner
A Popular Searches card previews its pills to the side, in the same Preview box the other cards use
A collapsed card is now just its header, with no empty space underneath
Help bubbles are wider and sit beside the setting they explain
Filters: the design options for each filter and each group are shown again.
Icons sit centered in their box
Choices you hide are shown in red, like anything else switched off
Category filters can now have a search box and a Show more cut-off
Pin, star, unpin and unstar buttons are now the same width so the columns line up
Popular Searches pills can have their own icon or image
A pinned choice can be starred without unpinning it first
Filters: the Up and Down arrows on a filter group now gray out at the top and bottom of the list, where they cannot do anything, the same as the placement cards.
Placement setup: the Levels bar now shows the total spots a page can hold across all your active levels, so you can see it against the site-wide total without adding it up.
Placement setup: levels and pages can be dragged into order with the grip on each card, the same as everywhere else in the panel. The arrows still move a card one place.
Placement setup: both Quick Setup ladders now say that they follow the order your levels are in, and to fix the order first if it is wrong.
Placement setup: the warning about a level name echoing a membership plan no longer fires on words every plan name shares, such as the word plan itself, and says it once per level instead of once for every plan.
Placement setup: a new Update sponsor prices tool sets the added price on every level from a starting amount and a step, the same way Update sponsor slots sets the spots. It shows you the whole ladder before it writes and leaves per-page prices alone.
Placement setup: the Levels tab now explains how the page total works against each level's spots, using your own numbers.
Placement setup: the site-wide placement total moved to the top of the Levels tab, and the spots box now says what leaving it blank does.
A level with no spot limit no longer forces you to set a page total. Unlimited means unlimited; the total is optional and caps all levels together when you want one.
Typing a group icon name no longer redraws the whole panel on every character
A group has a builder name and a searcher heading, like a filter does
Choices without an icon keep their labels lined up with the ones that have one
Pictures and emoji take their own size in pixels, on its own row beside the glyph size
The ink swatch moved next to the control that sets the icon, and the text box is hidden when a glyph is chosen
Option rows say whether an icon is an image, a glyph or an emoji, with a preview big enough to tell them apart
Option counts render smaller than the choice they sit beside
Sponsor placements: Add recommended pages reads your own members and offers the areas and categories that have people in them, with how many are on a paid plan, so you pick from real numbers instead of guessing. Ones you have already added show as done.
Sponsor placements: find a member by company or person name when recording a placement, instead of needing their member number.
Sponsor placements: the sponsor list opens on current placements, with an Ended chip showing how many are set aside, so an old placement no longer sits in the list looking live.
Sponsor placements: a page set to a category your site no longer has is now flagged on the card, because it covers no listings until you pick a new one.
Sponsor placements: the Covers filter now keeps a page visible under every area it covers, so a page set to a county and a category shows under both.
Sponsor placements: move a page or a level up and down to put the ones you sell most at the top.
Sponsor placements: the Pages and Levels tabs get the standard sticky toolbar, with Add on the left beside the list-wide controls.
Fixed the Settings tab sitting on Loading settings and never finishing. It now loads the first time you open it, with no need to click another tab and come back.
Sponsor: cards collapse, with expand all and collapse all
Sponsor: a level can be switched off without losing its setup
Sponsor: page price is now an explicit override behind Use standard pricing
Sponsor: Current Sponsors no longer fails to load on sites with many members
Sponsor: a placement is hidden while the member listing is hidden, unless the level is an advert
Sponsor: Current Sponsors no longer fails to load on sites with many members
Fixed: a design choice whose value is blank, such as Plain, showed as Saving () instead of naming the option.
Filter Engine: added help tooltips to the group controls - use the standard design, collapse settings, group icon, option order and the visitor search box.
Filter Engine: the section design settings now appear only for the style that uses them.
Placements: set how many days a lapsed placement is held for the member before anyone else can buy it
The input type picker now flags a control that does not suit the number of choices, without stopping you choosing it.
Multi-select filters can render as pill or tile rows.
The input type picker now flags a control that does not suit the number of choices, without stopping you choosing it.
Multi-select filters can render as pill or tile rows.
Badge icon controls line up better
Added a Clear icon button, and the picker now says it can be clicked to change
The icon choice and its color and animation now sit together instead of in separate sections
Reputation badges are a ladder: Reviewed, then Top Performer, then Highly Rated
New badge types: Top performer, Highly rated, and Reviewed
Fixed badges being shifted sideways in the preview instead of sitting where you set them
Fixed a help note that appeared outside the badge card
Fixed the Custom design switch breaking out of the badge card.
Changing a badge type now renames the badge to match, unless you have written your own text.
Pulsing dot and the two Show settings sit side by side instead of stacked.
Fixed the badge picker Cancel button rendering as oversized plain text, and the close X now has a hover state.
Badges are cards you can collapse, reorder and switch off, matching the rule and filter builders.
Add badge now opens a type picker, with Custom badge first, and each badge can change type later without losing its wording or colors.
Every design value can now be set per badge -- background, text, dot, shadow, corners, padding, text size, weight and font -- or left to follow the Design tab.
Badge background now has a color swatch and a Reset, so you no longer have to type a hex code to override it.
The general Badges explanation moved into a hover help icon in the toolbar, freeing the space it used above every badge.
Preset picker opens centered at its normal width.
Preset pickers open centered on screen instead of at the very top.
Date conditions are now rolling windows -- active in the last 24 hours instead of since midnight -- and the window is a setting on the badge.
Badge presets open in a picker instead of sitting open on the page.
Badge text, position, pulsing dot, where a badge shows, and the online window are now set on each badge; the Settings tab keeps only the site-wide options.
Fixed a control that could clear a badge conditions when changed.
Eight one-click badge presets to start from, including Active today, Top performer and Tagged members.
Limit how many badges stack in one spot, with the order of your list deciding which ones show.
Option to hide the theme built-in verified badge so your own replaces it.
Badges can be reordered, which sets which one sits nearest the photo edge when they share a position.
Each badge can show or hide its pulsing dot, or follow the Settings tab.
Badges sharing the same position stack instead of overlapping, with a spacing setting.
A widget updated on your site ahead of a general release now reads Ahead of Release, instead of showing a newer version beside an older latest.
Fixed a related gap: fields were only being excluded by NAME, never by type, so free text, HTML and button fields were being offered as filters.
Removed the extra bottom padding under every settings section.
Popular Searches sections are named the same way filter cards are -- the title shows in the header and you rename it from Label shown to searchers in the body. That name is also the heading shown above the pills on your site.
Each Popular Filters section now holds its OWN pills and its own name. Two sections used to share one list -- both showed the same count and editing one edited the other. The name is shown above the pills on your site as well, so it is the visitor-facing heading, not just a way to tell sections apart in here.
The remove button on a Popular Filters section now matches the one on a filter card.
Fixed: dragging or reordering the second Popular Filters section moved the first. A repeatable section is identified by its position in the list, not just its type.
When a move is refused, the message now names which layout it looked in and how many rows that layout holds -- the old wording could not tell you that the list on screen belonged to the other layout.
The three step headers are the same height, so they read as one sequence.
Both layouts are on screen at once, one card each. Every control now sits inside the layout it belongs to -- its own on/off switch and its own desktop and mobile checkboxes -- instead of one shared switch pushed to the far right. You can see at a glance that the Top Bar is empty and switched off. Clicking a card chooses which filter list you are editing below; clicking its switch or checkboxes does not.
Shortcut pills get their own design controls in the Design tab: font, text size, padding, corner rounding, shadow, spacing, and colors for background, text, border, icon and hover. Every one defaults to blank, so an unstyled pill inherits your site rather than arriving with our styling baked in.
The More options divider can now go at the very top. That was never a rule -- it was a storage limit, because the fold used to be recorded as the name of the filter above it and there is no filter above the first one.
Fixed: the Layout section rendered as a narrow strip beside an empty box. It now claims a full row of its own regardless of how the surrounding panel lays out its children.
The Any choice control is now called Placeholder and sits after the input type, since only inputs with a list of choices have one. Its help explains what it does: leave it on and a visitor who ignores the filter still sees everything; switch it off and a choice is required.
Filter option lists no longer come up empty. The scan collecting a field's possible values was not separated by content type, so one post type's values crowded out another's and a field with more than thirty values across the site was dropped entirely. Values are now collected per content type, and a field with too many to list says so instead of showing nothing.
Removed a stale registry entry for a mistyped widget slug that showed as an empty row in My Widgets.
Fixed: the Layout section rendered as a narrow strip outside its own box. Its on/off switch was missing the slider element the red and green toggle needs, so it fell out of the layout instead of sitting on the right.
Filters, the more-options fold and shortcut pills are now rows in one ordered list, so the fold sits where you drag it instead of being pinned to whichever filter is above it, and pills can be ordered with everything else. Adding a filter adds it to the position you are editing, not to both.
The help URL rules existed as two hand-maintained copies that could drift apart; there is now one implementation with two call sites.
Dragging the divider UP works. The drop edge was decided by a rule -- a divider drag always meant after the target card -- so dropping it on the card directly above meant where it already was, and it could be dragged down but never back up. The edge now comes from which half of the target card you drop on, which also fixes filter drags deciding their edge from array order rather than from the drop.
Expand all and Collapse all each gray out when pressing them would do nothing, matching the Visibility Engine rules list. Previously they only disabled when the list was empty, so Expand all sat available and inert whenever everything was already open.
Configuration tab: Copy build prompt writes a full brief -- the schema, the rules enforced on save, and the current document -- for handing to an LLM or BD Builder. Copy JSON still copies the raw document. Expand now opens to the full document height rather than a fixed fraction of the screen.
The configuration box drag-to-resize corner works. The shared rule for single-line inputs was reaching the textarea and pinning its height with !important; matching that !important fixed the height but broke resizing, because the browser writes an inline height without !important and lost to it. That rule is now scoped to input and select only.
Configuration tab: a Copy schema button for pasting the filter configuration into BD Builder during a build, and an Expand button for the document box. Expand is a button rather than the browser drag-grip, which depends on CSS that has twice been overridden underneath it.
Fixed a latent gap found by that consolidation: the allTabIds list omitted 'filters' entirely, so any widget whose schema did not name its tabs explicitly could never show the Filters tab even though the pane and the loader both existed.
New Configuration tab. The filter configuration document moves out of Settings into its own tab with room to read and edit it -- it is a generated document, not a setting, and it was sharing a stylesheet rule with single-line text inputs. Any schema field of type json routes there automatically.
A sub-tab whose registry row names a missing loader now says so in the console and prints a plain message in the pane, instead of showing a spinner that never resolves.
Help tooltips no longer flash in the wrong place. The bubble was made visible, then measured, then repositioned -- so it painted one frame over the controls beneath the icon before jumping to its final spot. It is now laid out invisibly, measured, positioned, and only then painted.
Popular Filters: the Edit button is gone. WIDGET SETTINGS now folds and unfolds as a whole section -- open, the pill rows are always editable in place instead of collapsing after every change; collapsed, it shows a one-line summary and its pills, and clicking a pill reopens it.
Popular Filters: a pill can now be built on a filter that has no ready-made option list (Featured, Membership Plan) -- previously the add refused outright, which made those look unavailable as pills.
Popular Filters: the remove button now sits against its own row rather than flung to the panel edge, so on a multi-pill list it is clear which row it deletes.
Show sort control now has a help hover explaining what it adds for visitors.
Layout returns, per content type, in the Filters tab beside the content type it applies to. The old global Layout setting in the widget settings form is removed -- the widget never read it.
Removed the separate Filter checkbox, which meant the same thing as the on switch
Visibility Rules: operator styling clarified — the active AND/OR toggle is bold while the add-condition buttons are muted, so it is clearer which operator governs a group.
Update All now separates widgets left unchanged for review from genuine failures
Members who log in from a visibility message are now returned to the page they were trying to view, instead of landing on their dashboard.
“Inject a block” is now a verdict of its own, so you can keep every card visible and drop a DirectoryAds slot or your own HTML in at the gate
The gate panel now sets only <strong>where the gate falls</strong> (which cards, how many stay free) — what happens is the group’s verdict. Existing gates are migrated automatically
Added the standard <strong>Restore defaults</strong> footer to the gate panel (resets the selector and gate position; your rule groups are left alone)
One gate per post type now covers <strong>both list and grid view</strong> — the separate grid option was removed because it targeted the wrong element
Fixed: post type names now read as plurals (“all the events?”), and result cards are described by their own post type instead of “listings”
Fixed: the “Post action buttons” setting no longer appears on search-result gates — those buttons only exist on post detail pages, so the control did nothing there
All of the gate settings (which cards, how many stay free, cut off vs inject a block, and the call-to-action) now sit in the rule card itself, next to the visibility conditions — no more editing them in a small popup
New gates start scoped to the chosen post type and gated for logged-out visitors; List view / Grid view buttons fill in the card selector for you
Visibility Engine — rule cards can now be reordered: drag the grip, or use the up / down arrows in the card header, to group rules that affect the same part of your site together. The order is saved
A rule with no visibility groups is no longer flagged as a problem — that is a valid “always applies” rule, and the note now says so
Export / Import now carries your visibility rules (previously only the simple settings came across)
Version sync: all plugin files (JS/PHP/CSS) aligned to the same version number
Support: removed messaging about support tiers that are not yet available; all customers see Standard support via the Help Center
My Account: replaced external service quick links with a Help Center link
Support: Coming Soon video tutorials are no longer clickable until the videos are ready
Removed the misleading starting price label on single-price catalog items
Polish: clearer connection status wording and standard Developer Hub links
Visibility Engine: auto-migrate renamed field option keys so existing rules keep matching, and flag saved values that are no longer in a field's current options
Emoji in CTA and rule text are now stored safely so they survive re-saves (previously emoji could turn into question marks after editing)
Visibility Rules: each rule card now has an Active on/off toggle to turn a whole rule off without deleting it; you can keep multiple rules per target and switch which one is active
Redirect-on-click verdict relabeled to make clear it covers embedded video and iframes
Fix field picker dropdown for single-value fields
Add save toast notification for VE rules
Redesign preset system with active-preset tracking
Field picker loads available fields and their options from the site automatically
Add configurable Help link text on CTA card (replaces hardcoded Log In)
Rename Login labels to Help labels throughout CTA settings
Add rules-override warning banner below Mode dropdown when Visibility Rules are active
Hide Header Buttons and Phone Display groups when Mode is Paywall (not visible behind blur)
Add negation support to show_when conditional fields
VE condition builder: dual dropdowns for between operator on ordinal keys (no more comma-separated guessing)
VE presets button moved per-card next to Add rule group for unambiguous targeting
Fixed 30+ stale WIDGET_SCHEMAS version fields, added check-version-drift.js pre-push gate
Plugin Settings tab now only houses plugin-level config (BD key, notifications); per-widget config lives in the widget Configure panel
PHP injects veConfig + vePlans into CONFIG for the JS panel
Phase 6 + ESR settings-out-of-code completion: storage:'widget_settings' flag added to all 30 schemas (29 post-type containers + events-card-style). Combined with the widget-side reader (already pushed), customer settings on these widgets now FLOW through widget_settings JSON for both READ and WRITE. Net result: Revert/Reinstall no longer wipes customer customizations on any of the 35+ migrated widgets. Phases 1-6 of migration complete.
VE widget now appears as a proper row in My Widgets with description pointing to Settings tab
Per-widget visibility rules in widget_settings.widgets[slug] (groups, conditions, AND/OR)
Admin: Visibility Rules JSON textarea for advanced rule authoring (visual builder TBD)
VE settings: teaser style dropdown (replace vs paywall), per-plan mode override
Member-profile widget v2.2.0 applies paywall styling when mode=paywall
VE settings: dropdown to override any teaser field per membership plan, empty fields inherit defaults
Member-profile widget: applies plan-specific overrides based on viewed member subscription_id
VE settings: enable/disable, CTA heading/text/button, login text/URL, about char limit
ve_config action handler for saving VE settings to widget_settings JSON
Color design presets now apply to VE CTA card too — added ssD* field mappings inside buildPalette so the same palette object drives both ESR card fields AND VE's sign-up button + card colors. Pick any preset on the VE Design tab and the button bg/text/heading/subtitle/link colors update from the same source. Auto-fallback to dark button text when primary color is too light for white text (AA contrast)
Visual_select saved-state pill — after clicking a preset card, an amber Saving (Xpx)... pill appears immediately and flips to green Saved (Xpx) once the autosave round-trip completes. Eliminates the did-my-click-commit ambiguity inherent to hidden-input designs
Cross-widget cache bust — added explicit console log per consumer + second bustSiteCache after consumer busts settle (closes the race where the first site-cache flush fires BEFORE the consumer re-render request lands, leaving page cache serving stale HTML)
VE blur picker — added a 4th option Hint (2px) for sites that want large headings legible but body text obscured
Design tab — visual_select fields (preset preview cards) now span the full grid row so the 3 cards render side-by-side instead of wrapping vertically into a 160px column
VE schema — Quote section booleans (Show / Italic) reordered to be adjacent so they land in the same grid row as a compact toggle pair
New visual_select field type — Snagit-style preset cards with live previews (blur/opacity/radius/shadow). VE paywall blur intensity now uses this instead of a text dropdown
Documented Proper Case naming rule for renderForm groupLabels — group display labels are always Proper Case, never abbreviated unless the abbreviation IS the product term (API, SEO). Comment block at the map's location.
Schema flag noCustomCode:true suppresses Custom Code Inject/Override tabs for config-only widgets (VE has no PHP body)
Removed storage:widget_settings flag from VE schema. apply_config branches and loadSettings branches for storage:widget_settings remain in place as scaffolding (no widget currently uses them — kept for any future widget that genuinely needs catastrophic-loss JSON storage like the 4 BD client keys)
Storage behavior documented internally — explains why two storage modes exist (BD-native), why full unification (option C) is rejected, decision rule for new widgets
Added localStorage-cache invalidation for storage:widget_settings widgets to prevent stale-default masking
VE schema bumped to v1.2.0; tabs now ['settings','design']; design fields use group:'colors' to auto-route to Design tab via standard renderer
Master enable toggle: added primary:true field property + .ss-dc-toggle-primary CSS (green-on, red-off). Standard for any widget master toggle going forward — set primary:true on the gating boolean field
Per-plan + rules JSON kept as small post-render extension below the standard form (TBD-standardize: build a keyed_overrides field type when a 2nd widget needs the same pattern)
Annotated standard UI element vocabulary at renderField(). Every other widget uses type:boolean which auto-renders as the toggle slider; VE was hand-rolling its own checkbox
Permanent guard: scripts/fix-mojibake.js --check wired into release.js preflight; blocks any future push containing the double-encoded byte signature
WIDGET_SCHEMAS visibility-engine version synced 1.0.0 → 1.1.0 so installed matches latest
Schedule a Call link disabled with Coming Soon label (premium tiers not yet available)
Support Center renamed to Help Center, points to directoryhelpdesk.com
Schema Markup link replaced with All Customize Guides index since no dedicated schema page exists yet
Video Tutorials column unchanged (still Coming Soon, linked to Simplero video tutorials placeholder page)
New preflight: scripts/check-widget-registration.js verifies all WIDGET_SCHEMAS entries are wired across required registries; release.js aborts if any miss
Preflight gate (release.js) catches this; bump-version.js + push-plugin.js path bypasses it (do not use)
Removed duplicate ssHlBadgeStyle field def — JS object-literal duplicate keys made the older standalone def silently win, breaking the row:'count-pill' adjacent layout for the surviving def
Discovered existing show_when property in DC renderer (line 4793 listener + line 8378 wrapper) — same pattern Member Email Reveal paid_plan_ids uses. Documented in Components Catalog.
Moved 'Pill style' adjacent to 'Extract (N) as a separate pill' so the relationship is visible in admin UI
Added an internal components catalog documenting reusable field types so future feature builds do not re-invent
Visibility plans: profile-owner-based gate (CSV subscription IDs)
Click-through access: 3-mode select (Anyone / Logged-in only / Specific plans)
Upgrade popup config: title, body, button label, button URL
Bonus fix: badge-style preview now honors the dropdown choice (was hardcoded inline-pill — that's why 'Count pill style' appeared to do nothing in preview)
Help text emoji examples use \u{XXXX} unicode escapes in source so plugin JS stays pure ASCII at storage time (avoids BD data_widgets 4-byte UTF-8 column corruption)
Matches existing DC FA-icon-with-color pattern from Verified Badge etc.
Eliminates the emoji-in-dropdown approach that caused storage corruption
Pick up changelog entries for member-profile-member-tabs-lazyload v0.1.5, v0.1.6, v0.1.7 (were in source but DC plugin not redeployed)
renderPreview() case added with inline-style preview of the spotlighted tab (mock 4-tab nav with animation + icon + count pill + colors driven by current cfg values)
updatePreview colorMap entries deferred to Stage 2 — preview uses inline styles, live updates require re-render not CSS-var binding (acceptable tradeoff for Stage 1)
Added tagline + features block describing the feature for the My Widgets info card
Added display-name map entry: 'member-profile-member-tabs-lazyload' → 'Highlighter'
Earlier session bypassed the documented checklist — feature now wired into all required registries so it appears as a grouped row in My Widgets panel
Animation library: pulse-glow, gentle-throb, shimmer-sweep, bounce-once, underline-fill, corner-ribbon
Tab radius is top-only (rounded top + flat bottom) preserving the tab-sits-flush metaphor
Override of Bootstrap Theme - Member Profile - Member Tabs lazyLoad widget — DC Highlighter runtime appended additively (BD logic preserved 100%)
fix @slug REQUIRED comment: spell out DirectoryCustomize plugin instead of DC abbreviation
push-widget-fix: add Step 0.5 relay schema sync (auto-adds missing PHP CONFIG vars to schema)
push-widget-fix: add Step 7c KV system check (auto-registers missing codeTargets siblings in relay KV)
push-widget-fix: add SYSTEM_GROUPS map for member-email-reveal system (4 widgets)
fix member-email-reveal-fields changelog key mismatch (was member-email-reveal-form-fields)
Syncs schema versions: OSB 1.4.8, dc-listings-header 1.3.10
Reinstall handler uses actual pushed version instead of stale fallback
Bump WIDGET_SCHEMAS: OSB 1.4.8, dc-listings-header 1.3.10
Override tab: replaces entire widget when any override field has content
Override active indicator and dependency warnings added
dc-listings-header bumped to v1.3.10 with override guard support
Add base64 encoding for custom CSS/JS injection (mixed-quote safe)
Fix duplicate view toggles in dc-listings-header schema bump to v1.3.8
Added $ssCustomCSS and $ssCustomJS config fields to 32 widgets (all dc-* containers + ESR + events-card-style)
Image Settings: toggle + URL field on same line
Settings groups now have data-group attribute for targeted CSS
Fix list preview: remove overflow hidden from body and card-content so tags always show regardless of card height
Fix update badge count uses WIDGET_SCHEMAS for accurate update detection
Add changelog entries for all three widgets
Fix: Outdated version badge is yellow (warning) not red (error)
Revert checks relay backups and restores previous version with confirmation
Status pill shows yellow "Update Available" when connected but behind on version
Self-update: Update button pushes latest plugin version and reloads page
Fix: My Widgets "Update Now" button now reloads page after successful update
New widget: Verified Badge (Profile Page) — customizable icon with hover popover for profile page verified badge
Remove tech jargon from info popup, help text, confirmation modals, and status messages
Fix: Bulk scan/correct clears sibling result text so old results dont linger
Fix: Widget update checks use relay-only authority (removes WIDGET_SCHEMAS desync)
Fix: push-widget now clears update_available flag in KV — stale badge gone after page reload
Fix: auto-member-verify header restructured to PHP standard — resolves No config display
Design: admin unlock — all presets unlocked for admin testing (CONFIG.isAdmin)
Design: client unlock tracking via ssUnlockedDesigns field (comma-separated IDs)
Design: backward compat aliases map all old color-name IDs to new names
Design: removed CSS probe that returned BS3 default #428BCA instead of site colors
Design: Bootstrap gets own blue gradient banner, Shoreline restored at position 4 with image
Design: preset order is now Bootstrap (free) / System / Custom / Shoreline / seeds
Design: System preset detects actual site colors via CSS probe + DB query fallback
Design: siteColors PHP reads from DB when wa global is empty
Design: Active Only chip to hide colors not used by current layout
Core: release.js now auto-injects changelog entries into PHP Updates tab
Core: release.js now bumps CSS version alongside PHP and JS
member-email-reveal: add Form/Profile Page preview toggle with edit form preview
member-email-reveal: add row_label field (controls profile row label in display widget)
Widgets table: ghost widgets show a linked pill opening parent settings instead of their own Configure button
Settings: renamed opt-in toggle to Let Members Show/Hide Their Email with clearer help text
Settings: field help text now renders from field.help property (was only field.description)
Restore Default: icon-type fields now visually update trigger button on restore
push-widget-fix: relay KV now syncs for any primary file type (JS/CSS/PHP)
member-email-reveal: update preview to BD phone button style with icon
Add BD-safety lint to push script and sync-from-grist — blocks pushes containing patterns BD will corrupt
Add Save button at top of Custom Code tab
Add unsaved changes warning when leaving Code tab with edits
Fix push script CONFIG preservation — auto-detect all CONFIG block variables
resolveWidgetName
fallback
—
widget-in-widget
arch
means
apply_config
targets
event-search-results
not
dc-events-loop
resolveWidgetName
fallback
—
widget-in-widget
arch
means
apply_config
targets
event-search-results
not
dc-events-loop
restore
as
hand-crafted
preset
with
own
image
(Bright.png),
exact
PHP
colors
including
peach
image
overlay
rgba(255,210,180,0.4)
restore
as
hand-crafted
preset
with
own
image
(Bright.png),
exact
PHP
colors
including
peach
image
overlay
rgba(255,210,180,0.4)
restore
as
hand-crafted
preset
with
own
image
(Bright.png),
exact
PHP
colors
including
peach
image
overlay
rgba(255,210,180,0.4)
Bright
as
own
design
seed
(rotation
0,
warm
orange
accent);
remove
from
DESIGN_ALIASES
Bright
as
own
design
seed
(rotation
0,
warm
orange
accent);
remove
from
DESIGN_ALIASES
Bright
as
own
design
seed
(rotation
0,
warm
orange
accent);
remove
from
DESIGN_ALIASES
dc-events-loop
SLUG_MAP
and
resolveWidgetName
fallback
so
events
Design
tab
targets
correct
widget;
fix
Bright=Caldera
alias
display
dc-events-loop
SLUG_MAP
and
resolveWidgetName
fallback
so
events
Design
tab
targets
correct
widget;
fix
Bright=Caldera
alias
display
dc-events-loop
SLUG_MAP
and
resolveWidgetName
fallback
so
events
Design
tab
targets
correct
widget;
fix
Bright=Caldera
alias
display
Fix: Update All changes applied to correct deployed file (directory-customize.js not src/); fix word-split changelog entries for v1.23.159-160
Fix push script: remove ssRelayUrl from per-client preservation whitelist — system constant not per-client
Updates tab filters: standardized to match My Widgets — single All chip, inline labels, click-to-deselect
My Widgets filters: click-to-deselect toggle on active chips, auto-restore All when nothing selected
My Widgets filters: added click-to-deselect — clicking an active chip toggles it off, falls back to All when nothing selected
Widget tab also updates badge count — badge shows even when navigating directly to My Widgets
Relay: added homepage-search-* prefix to override whitelist — first-push no longer blocked
Relay: fixed auto-member-verify BD name casing mismatch
Dashboard update count uses WIDGET_SCHEMAS version (same source as widget table) — eliminates count mismatch
Registry health check on dashboard load — warns when a site has no registry data
Revert button hidden when no valid backup exists — no more clicking to get an error
Updates tab: version count summary box (222 Versions with type breakdown)
hasConfigurableFields check filters out _info-only schemas and empty field arrays
Push script updates ALL client registries on every push — eliminates stale latest_version
Bulk Status Correction scan and fix based on plan rules
Container widget detection uses both raw and resolved slug patterns
SLUG_MAP covers all 30 DC container widgets
Offline mode banner with clear messaging on what still works
Design unlock is now global per client (reads from registry, not per-widget config)
Fix admin flag — clients default to non-admin, no longer inherit demo site admin mode
Fix: localStorage overrides relay config on load — most recent local save wins over stale relay data
Fix: pending saves flush on panel close — settings persist across reopen
Fix: config reads from local cache when relay backup is empty
Fix: apply_config runs directly without relay dependency
Fix: Configure pill hidden on container widgets without settings
Fix: Apply button throb animation visible (background instead of box-shadow)
Fix: dismissing revert modal resets link state
Fix: version sync — source and built schema versions now match
Category pill WCAG contrast fix — uses tint-shifted card bg for check
Gutted auto-member-verify page-load relay code (v2.0.0) — triggers + bulk scan handle verification now
Remove diagnostic debug output from scan results
Debug: enhanced scan diagnostic shows subscription_id distribution and total user count
Fix: help text cleaned up for verify/unverify plan pickers
Fix: help text updated — removed 'every page load' and 'leave empty' wording
Fix: ids field help text uses field-specific help instead of generic fallback
Fix: confirm dialog uses styled modal instead of native browser popup
Sync: 6 widget schema versions matched to PHP @versions with changelog backfill
New action button field type for settings panel PHP endpoints
push-widget: registry installed_version now updated after every push
Design: System preset detects actual site colors via CSS probe + DB query fallback
Design: siteColors PHP reads from DB when wa global is empty
Design: presets generated from 3 source colors via buildPalette() engine — replaces 50+ hardcoded values per preset
Design: tint slider (-30 to +30) adjusts lightness across any parametric preset in real time
Design: System preset derives colors from your site colors, Custom preset placeholder for fully custom palettes
Design: removed brand-name presets (Yelp, Airbnb, Groupon) — backward-compatible aliases resolve old IDs silently
Design: dark mode presets (Midnight, Obsidian) with inverted card backgrounds and light text
Settings: layout-aware color graying — color fields for disabled features show "Not used in {layout}" label
Settings: type-to-filter on color overrides — search by field name or color key to find specific colors quickly
Core: fixed version drift between PHP and JS files — all 3 version locations now synced
Core: plugin name skip is now case-insensitive — catches any BD naming variation of directory-customize prefix
My Widgets: added Widget and Customized filter chips to the first filter row — click Widget to show only non-container widgets, Customized to show only overridden widgets
Admin: fixed Sync button not clearing Outdated status — scan now correctly updates both installed and latest version in the registry
Layout tab: filter chip rows now show Shape and Fields group labels, matching the style of other filter areas
Layout tab: fixed filter area extending past the preview panel on narrower screens
Dashboard: stat cards now match height within each row — no more uneven card heights on smaller screens
Grist: backfilled change_type and area on all 91 older WidgetChangelog records; backlog entries now excluded from plugin sync
My Widgets: Filter chips that wrap to a second line now stay right of the label column — no more chips encroaching the left sidebar
Relay: blocks bogus registration attempts from known shared BD admin URLs
Relay: client records now store installer identity (email, name, timestamp) for admin dashboard visibility
Updated Member Profile description to reflect its role as the profile enhancement hub
Removed empty placeholder feature bullets
Added missing version history entries for all 9 header container widgets (v1.0.1)
Info pill now shows "info" text instead of small icon for better readability
Added missing Listings Header changelog entries (v1.0.2 through v1.0.5)
Feature data for 6 widgets: Event Search Results, Online Status Badge, Member Profile, Homepage Search, Display Recent Events, Listings Header
New info field type for read-only documentation panels with cross-widget linking
4 new post type filter tags: blog, videos, discussions, products
Container widgets now grouped in a collapsible accordion at the bottom of the widget list
New "Containers" filter chip for quick container widget visibility toggle
Fixed container widget display names showing as "Directorycustomize" instead of "DirectoryCustomize"
Container accordion now appears after customized widgets, before defaults (was at very bottom)
Active containers (with child widgets) listed first, placeholders separated by divider
Removed OSB injection from 9 non-listings header containers — only Listings Header keeps OSB
Member Profile widget registered — changelog, schema, tags, and info panel linking to Online Status Badge settings
Info panel click-through: opens linked widget settings directly from info notes
Settings layout improvement — toggles grouped together, dropdowns render three-wide in a row
Widget detection now works for all widget names — settings and version history appear correctly for standalone widgets like Online Status Badge
Settings save now finds the correct widget — fixed "Widget not found" error when saving settings for non-Bootstrap widgets
Smart tab display: each widget only shows the tabs it needs (e.g. Settings + Design) instead of all four tabs
Design presets now include colors for all installed widgets — when you pick a theme, every widget gets matching colors
Copyright and license headers added to all files
Previous keys: Settings now shows a list of your last 5 site API keys with the option to restore any of them with one click
Auto-recovery: if your current site key stops working, the system automatically tries your previous keys and restores the one that works
Settings tab: Connection panel shows live status and lets you update your key anytime
Header status pill and global notification bar show connection status on every tab
Heartbeat: checks connection every 90 seconds — automatically detects outages and reconnects without needing a page refresh
Fixed: toggles, theme apply, and update buttons now blocked with a clear warning when offline instead of failing silently
Fixed: widgets no longer disappear when connection drops mid-session
Fixed: Bright theme preview text was larger than other themes — normalized font sizes to match standard scale
Auto-Update All now cascades to individual widget toggles — all flip ON when master is ON, revert to saved settings when OFF
Turning off a single widget while Auto-Update All is on shows a confirmation and switches to individual settings
Fixed: turning Auto-Update All off now correctly restores each widget to the exact state it had before the master was turned on
Buttons that need a connection are now visually disabled when offline
Layout changes show honest status — applied to site vs synced to account
Settings saves blocked when offline instead of failing after 8-second wait
Version numbers now consistently show "v" prefix everywhere
Fixed "Display Recent Events" widget name to "Display - Recent Events"
Added cleanup commands to fully remove old widget data from the server
Hidden utility widget "Post Results - Sorting Options" from client widget list
Null-safe relay merge prevents phantom entries from deleted widgets
Dashboard stat labels switched to sentence case
Restored relay config loading for widgets with settings on the server
Fixed slug mismatches for Homepage Search widgets
Widget detection: code-signature based identification (year-independent)
Layout selector: active layout Preview button grayed out when already active
View toggle settings: show/hide grid, list, and map buttons individually
Tag scroll: delayed init passes for full page render
Square layout tags scroll horizontally instead of wrapping text inside pills
Simple layout now shows tags above title (matching live site order)
Social and Bold title text clamped to 2 lines (matching live behavior)
Bootstrap theme footer and author backgrounds now use the same blue tint
Preview card width now matches real site — all layouts use the same constrained width
Cinema preview grid text floats up from bottom — overflow visible on card body
Removed overflow:hidden from preview panel — fixes sticky header positioning
Disabled toggle track border removed — no more size mismatch with normal toggles
Subgroup child toggles blue when enabled — only gray when disabled by layout
Layout-disabled fields show "Default: Off" instead of "Default: On" — reflects the layout default, not the global default
Parent toggle (Show section / Show button) stays blue — only child sub-toggles are gray
Help text (Default / Restore Default) hidden in subgroup toggle grids for cleaner look
Added top margin above subgroup boxes (Author, Favorites, Buttons)
Layout search bar added below layout count stat
Image overlay tint color setting (slot 6) — Bright gets peach tint, others transparent
Disabled settings ADA contrast fix — replaced blanket opacity with explicit WCAG-passing colors
Author sub-toggles disabled when parent section is disabled by layout
Author sub-toggles display horizontally instead of stacked
Filter rows use AND logic across categories, with icons and counts on each chip
Cinema preview: fixed date badge still showing, improved gradient (light top to dark bottom), text anchored at bottom
Cinema layout redesign — cleaner overlay with title and date only, no footer or badges
Bright theme tag colors corrected to orange tones (was showing red)
Removed external brand references from layout descriptions and CSS comments
Meta row semantic classes (ew-date-row, ew-time-row, ew-location-row, ew-price-row) for layout-specific targeting
Inline time element in date row — shown in Square layout, hidden in all others
Disabled toggles no longer appear smaller — added visible border so track outline is clear at reduced opacity
Placement Slots on Custom Fields tab display in a single row
Placement Slots highlight the corresponding card area on hover and click (gold pulse, same as Design tab)
Favorites button moved to top of Buttons section (always on for every layout)
Layout filter chips now appear on initial load (profiles available before sub-tab renders)
Favorites colors: Not Favorited, Favorited, and Hover states with per-theme palette values
Card shadow hover color — separate control for normal and hover shadow
Disabled toggle visual fix — circle and track clearly distinct, forced to off position
Section headers and subgroup labels changed from all-caps to sentence case
Author sub-toggles grouped in bordered subgroup box (matching button subgroups)
Classic Card layout restores all toggles to ON when switching back from restricted layouts
Favorites icon label and help text updated (no longer references heart icon specifically)
Favorites button colors added to all design themes — background, text/border, and icon color
Favorites Button color group added to Design tab color overrides
Color section headers now bold with theme-tinted gradient background
Bright theme banner image updated
Favorites settings in Buttons group — toggle visibility and choose icon
Simple layout meta row, price, and hover states now use CSS variables (was hardcoded)
ADA-compliant disabled field states — meets WCAG 2.1 AA contrast requirements
Fixed theme colors not saving to live site when Settings tab not yet opened
Config preloads on widget open — layout and design show correct active state immediately
Fixed tag pill CSS targeting wrong class name in list view
Active layout card now shows Re-apply button
Added Show Image toggle to display settings
Location split into Venue and Address toggles
Button settings reordered: toggle + icon + text grouped per button
Shoreline and Bright themes unlocked for testing
All 4 corners rounded on Simple grid and list cards
Tags use theme colors with no border (filled pills instead of outlined)
Live widget tags reordered above title for Simple layout
Location shows venue name only (city/state hidden) with no icons
Simple list view redesigned — larger thumbnail, better spacing, bordered card style
Preview card border and hover effects match live front-end styling
New Simple layout — clean flat cards with no buttons or footer, just image, title, date, location, and price
Simple layout includes both grid and list view styles
Replaced Eventbrite theme with Bright (orange-only, no purple branding)
Replaced Minimal layout with Simple (Eventbrite-inspired flat design)
Preview button added to all themes — preview original colors without overwriting your edits
Opacity slider now preserves the original color when dragging through transparent and back
Shoreline theme is now a paid upgrade ($5)
Layout settings packages — each layout now controls which settings are on, off, or not available
Settings that do not apply to the current layout are grayed out with a message
Layout filter chips — filter the layout picker by what elements each layout includes
Color translation engine generates 50+ color values from your site colors using tones and shades
BD API key added to plugin config for cache-bust calls
Apply button shows toast confirming layout change is live
Old layouts removed: timeline, magazine, agenda, spotlight, map-first
Layout research based on Ticketmaster, Ents24, Facebook Events, DICE, Luma/Fever patterns
Fixed calendar icon defaulting to fa-external-link in preview
Added spacing between settings groups
Added preview note badges on hover-only, not-in-preview, and coming-soon color fields
Added top margin to settings groups for better spacing from section headers
Design cards now match layout pattern: full-width gray bottom row, not inline outlined buttons
Design Apply re-renders tab to update button states (spacer on active, Apply on others)
Unified card interaction pattern across Layout and Design tabs
Design preset cards: added green Active pill in top-right corner, pill moves on Apply
Layout cards: Apply + Preview buttons, Default chip, active badge
Preview card gets data-layout attribute on render
ssLayout field added to WIDGET_SCHEMAS
Fixed button text overflow in preview footer (View Event no longer clipped)
Apply preset confirmation warning when color edits exist
Highlight on preview: crosshair button pulses matching element gold
Font variables: 10 typography CSS variables with var() element rules
FONT_PROFILES object: tested font defaults per layout (grid, list, compact, magazine, minimal, bold)
Typography UI: new section in Design tab for font size and weight overrides
All 6 design presets updated with alt token + font values
updatePreview colorMap expanded with 16 new entries
Shoreline banner: real image replaces CSS gradient
Plugin CSS: preview preset + element rules use font var() references
Fixed sticky: Live Preview header scrolls away, only card sticks at top (both grid + list views)
Preview button now shows Remove when active so users know to click again to deactivate
Cards larger with image/body structure: banner (72px) + swatches + actions
Added Custom Design option at 0 with purple gradient banner
All locked presets now show price-specific purchase button
List view footer: added border-top divider + footer bg + radius matching real widget
Design preset cards redesigned: lighter locked swatches + Preview/Purchase buttons below name
All presets now previewable: locked themes show colors in preview card without saving
Auto-load active design palette on config open (no more clicking Shoreline to see colors)
Transparent color swatch: checkerboard pattern for transparent/rgba values instead of black
Alpha/opacity slider on all color pickers: range 0-100% outputs rgba() or transparent
Color overrides organized into 8 sections: Card Shell, Text, Tags, Date, Category, Author, Footer, Promo
Each card region has independent color controls for maximum theme flexibility
All 6 design presets updated with full region-based palettes (Shoreline filled, 5 locked)
Preview card CSS converted to use new region-based variable names
Dynamic view toggle: buttons generated from schema.views array per widget type
Generic ss-dc-split-top class for top-layout views (replaces hardcoded list-only)
Date toggle now hides date in ALL locations (overlay badge + meta row)
List view preview: 862px max-width, centered, cleaned up duplicate button CSS
Fix list view button sizing (match real widget container query rules)
Clean up duplicate button CSS rules in preview styles
Make preview view types configurable per widget schema (views array)
Dynamic view toggle buttons generated from schema instead of hardcoded PHP
Generic ss-dc-split-top CSS class for top-layout views (future-proof)
Fix date toggle to hide date in ALL locations (overlay badge + meta row)
Reorganize color overrides into grouped sections (Card, Text, Buttons)
Color section headers with uppercase labels and divider styling
Custom Fields icon picker now uses Settings-style layout (cfg-icon-trigger)
Field row icon picker sized to 26px in row context (matches other controls)
Inline button rows now 50-50 split (icon and text equal width)
Added calendar button text field (ssCalBtnLabel) for configurable label
Fixed list view preview clipped to ~30px (switched from transform:scale to zoom)
Color field help text now layout-agnostic (no badge/banner references)
List view: sticky preview stays visible while scrolling config
List view: CSS grid layout matches real widget (320px image, author left, buttons right)
List view: all 3 button types now same height and font size
Toggle grid: 3 columns instead of 2 for display toggles
Inline rows: button icon + text fields render side by side
Consecutive boolean grouping: mixed groups auto-grid their toggles
DOM reorder: list toggle physically moves preview above config (BS3 compatible)
Live preview: color changes update CSS variables on preview card in real time
Design presets: clicking a preset fills all 10 color pickers with palette values
Auto-save: native color picker triggers auto-save via change event
apply_config fix: reads data.fields_changed (was reading wrong path, always showed 0)
Removed Save and Apply button (auto-save makes it redundant)
Removed Save Design button (auto-save covers design changes)
List view: preview panel centered with 720px max-width
Widget PHP: added ssColor* CONFIG vars with inline style override for CSS variables
Save & Apply button still works as manual save (cancels pending auto-save)
Sidebar preview: removed scroll constraint — full card always visible
List view: preview floats full-width on top with horizontal card at 680px max
JS toggle switches layout mode: grid=sidebar, list=column
Grid/list toggle only changes card styling, not layout position
My Widgets topbar: auto-update toggle gets border box, search moved to bottom
Slug mapping system (BD widget names to product slugs)
Tab order: Layout > Custom Fields > Settings > Design
Shared toolbar with Save & Apply button (works across all tabs)
Schema fixes: removed ssShowFree, moved ssShowCalBtn to buttons, added ssShowBtn1 + ssCalBtnIcon
Icon picker styling for Settings tab (full-width, 34px height)
Preview: fixed avatar color (was light, now matches dark teal from real widget)
Preview: sticky positioning with BD navbar offset
Preview: list view proportions (160px image, 500px max card width)
Grid view preview stays in side column as before
Preview card constrained to realistic 3-wide grid width (~320px) instead of stretching full panel
Preview panel no longer scrolls — shows full card height naturally
Grid/List view toggle wired with labeled buttons
Live preview wired to all toggles — card updates instantly as you flip switches
Settings and preview panels widened to 50/50 split for better use of whitespace
Toggle grid layout — boolean settings display in a 2-column grid instead of stacked vertically
Overview sub-tab removed (redundant with always-visible sidebar preview)
Events Card Style schema registered with design, display, and button settings
Version detection improved — now reads vX.Y.Z patterns from widget code headers
Removed "Custom" tag — replaced with "Search Results" as a function tag
Filters panel moved below topbar as its own block for better readability
Uncustomized widgets without a catalog product show "No custom version available"
Installed widgets always sort to the top of the table
Fixed false positive: BD default widgets placed via shortcode no longer flagged as customized
Filter chips grouped by tier with visual dividers (Visibility | Function | Post Type)
Visibility data stored per-widget in detection to avoid repeated analysis
Multi-tier widget tagging based on BD widget taxonomy (Search, Stream, Sidebar, Hero, Layout, Custom + post type tags)
Filter chips auto-render based on which tags exist in your widget set
Dashboard widget count now matches the My Widgets tab
Custom widget overrides and post type loop code placements are auto-detected
Version numbers read from widget code headers
Icon picker panel wider to prevent horizontal scrolling
All field row elements locked to identical 26px height — icon trigger, inputs, selects, and buttons
All field row controls standardized — same height, same corners, action buttons are square
Field rows tighter and more compact throughout
Reduced padding in field rows for a more compact layout
Overview tab added — review all your settings before saving
Icon picker column moved to the front of each field row for easier scanning
Icon picker panel made shorter for quicker browsing
Color settings now display in a compact 3-column grid on desktop
Section titles changed from all caps to sentence case for easier reading
Design tab shows preset themes as visual cards with color swatches
Layout tab shows available card layouts with descriptions and status badges
Custom Fields tab with slot reference cards and editable field mapping rows
Four configuration tabs: Settings, Design, Layout, and Custom Fields
Settings modal replaced with an inline view — click Configure, adjust settings, click Back to return
Each tab loads its content only when you open it for faster performance
Check button shows whether a widget already has an override, with all widget IDs
Override copies the default code into a new widget row with a higher ID, so your custom version takes priority
All confirmations and warnings now match the StackSaaS popup standard
Only one preset popup at a time — clicking again replaces the current one instead of stacking
Save, Load, and Manage presets now open full centered popups instead of dropdowns
Reset moved to the toolbar so all actions are in one place
Restore Default on color fields now resets the color square when the default is blank
Restore Default on color fields now correctly resets the color square too
Shorthand hex codes like #fff now expand and sync properly
Export and Import — download your settings as a file or load settings from a file
Category dropdowns now use a searchable multi-select picker instead of a long checkbox list
Color picker fixed — click the color square next to any color field to open the picker
Empty category levels now show a helpful message instead of a blank area
Each setting now has a Restore Default link to reset just that one field
Color picker added — click the color swatch next to any color field
Default value hints shown under each setting so you can see the original value
Reset to Defaults now works correctly for widget settings
Category picker added for filter fields — pick from a checklist instead of typing ID numbers
Settings are grouped into sections with toggle switches, color pickers, and dropdowns
Save and Reset buttons let you apply or undo changes
Schema validation ensures settings always have valid values
Config seeds automatically when a widget is pushed to a site
Standardized search bars across all tabs
Widget count and auto-update toggle in the top bar of My Widgets
Verify Widgets results now include a push button for missing widgets
Re-push button on verified widgets lets you force-refresh the code on a site
Auto-Update All setting moved to the top of My Widgets for easier access
Shows verified, not found, or error for each widget so you can see mismatches instantly
Automatically discovers the correct widget ID on each site (IDs differ per site)
Disabled widgets show grayed out with a strikethrough so you can see at a glance what is active
Widget names now display their full proper names instead of shortened versions
Recent Activity now shows the newest events first
Tooltips are smart — they flip or shift when near the edge of the screen
Support page redesigned — contact options front and center, help resources in 3-column layout
Admin tab simplified — shows connection info, installed products, and quick support
Notifications now appear at center bottom so they never overlap with other tools
Connection status banner stays visible on the Dashboard after connecting
Green success and red error notifications now appear on every action so you always know what happened
Settings and design changes now save automatically
Connection status toast on page load
Improved connection reliability on first load
Connection status shows on the Dashboard so you always know your setup is working
Version number in this tab now always matches the header automatically
Full version history from v1.0.0 to now
Buttons now have rounded corners instead of pill shapes for a cleaner look
Added button style to design settings for easier customization
"Connected" banner shows in green
Product cards now show 4 across to match our store layout
Product count now updates when you filter by category
Settings tab simplified — just your preferences and plugin info
Dashboard no longer shows confusing technical messages when not connected
Connection messages are now friendly and explain what's happening
Each product card now shows an image, category, description, price, and links
Added Details and Video links on each card (grayed out if not available yet)
Category filter buttons for quick browsing
Products now load instantly from saved data instead of waiting for a connection
Notification checkboxes redesigned — no more ugly browser defaults
Connection section now shows your status clearly without technical details
Added support tier display based on your membership level
Added product catalog with 24 products across 5 categories
Dashboard with quick stats, activity feed, and connection status
My Widgets and My Themes tabs for managing your purchases
Browse Catalog to discover new products
My Account with project tracking and invoices
Settings for auto-update and notification preferences