Bug Fixes:
- Fixed consent toggle states not restored when reopening the consent dialog (e.g. "Select basic ads"
showing OFF even though it was saved as ON)
- Fixed public JavaScript file (js/addons/) not being updated during build - only the source copy
(src/addons/) was updated, causing the live server to serve the old version
Deleted cookie → Banner appears
Clicked "Customize" → Layer 2 opens
Enabled Purpose 2 "Select basic ads" → Toggle ON
Clicked "Save Selection" → Banner closes
Navigated to /consent/ → Clicked "Change Cookie Settings"
Dialog reopens → P1: ON, P2: ON, rest OFF
Note for Cloudflare users:
If you use Cloudflare, please purge your Cloudflare cache after installing this update
(Dashboard > Caching > Purge Everything). Clearing only the browser cache is not sufficient
as Cloudflare caches JavaScript files independently. Without purging, your visitors may
still receive the old JavaScript file.
Bug Fixes:
- Fixed Google Consent Mode script loading AFTER AdSense/gtag.js (moved to top of <head>)
- Fixed returning visitors seeing 'denied' consent until page fully loaded (cookie check now in <head>)
- Fixed Global Scope toggle breaking all banner JavaScript when disabled (XF renders false as empty string)
- Fixed missing XenForo cookie consent page phrases (third-party group and euconsent-v2 description)
New Features:
- Search/filter field in admin vendor list (filter by name, IAB ID, purposes, status)
- Search/filter field in admin consent logs (filter by user, IP, action, date)
Improvements:
- Google Consent Mode defaults + cookie check now injected at top of <head> before any Google script
- Changed German phrase "Cookie-Einstellungen ändern" to "Cookie-Einstellungen zurücksetzen"
- isServiceSpecific uses <xf:if> instead of JS negation (prevents broken JS when value is false)
Bug Fixes:
- Fixed "Function datetime is unknown" error on dashboard and logs (changed to date_time)
- Fixed banner not closing after Accept/Reject/Save when CMP JavaScript throws an error
Improvements:
- Banner buttons now hide wrapper before CMP call with try/catch error handling
- Banner always closes reliably regardless of JavaScript errors
Bug Fixes:
- Fixed ads not showing after consent was given (Google Consent Mode remained 'denied' on page load)
- Fixed Layer 2 Accept/Save/Reject buttons not working when reopened via "Change Cookie Settings"
- Fixed footer cookie settings link not clickable on mobile browsers (touch target too small)
- Fixed admin permission not auto-assigned to super admins on fresh install
- Fixed Layer 3 (Vendor Details) showing empty list
- Fixed Cookie Declaration link using button color instead of text color
- Fixed vendor privacy links using button color instead of text color
- Fixed duplicate font-size declaration in button CSS
- Fixed Dark Mode using wrong selectors
root/.xfDark instead of XF 2.3 data-color-scheme)
- Fixed banner description text using opacity hack instead of proper secondary color
- Fixed purpose names showing raw phrase keys (deb_consent_purpose_{$purposeId}_name) in banner Layer 2
- Fixed IP address not displayed in dashboard and consent logs (missing Entity getter)
- Fixed date without time in log entries (date() changed to datetime())
- Fixed purpose settings having no effect on banner, consent page or vendor list
New Features:
- Vendor list in Layer 3 with search field and pagination (50 per page)
- IP address column in dashboard recent logs and consent log page
- Full datetime (date + time) in all log views
- Purpose settings now fully functional: disabled purposes are hidden from banner, consent page and vendor list
- Vendor list filtered by enabled purposes (vendors with only disabled purposes are removed)
- Vendor purpose badges filtered to show only enabled purposes
Improvements:
- All links use text color with underline on hover only
- Footer link has 44px min-height on mobile for reliable touch targets
- Google Consent Mode signals restored to 'granted' on every page load when cookie exists
- Banner event listeners always attached regardless of consent state for re-consent flow
- Dynamic purpose rendering via xf:foreach instead of hardcoded HTML
- Purpose names and descriptions resolved via XF phrases for proper translations
- Improved mobile responsive: smaller title, reduced modal padding, vendors stack vertically
- Dark Mode uses correct XF 2.3 selector [data-color-scheme="dark"]
Bug Fixes
- Fixed purpose acceptance rates chart showing empty (per-purpose stats were not recorded during consent actions)
- Fixed "Change Cookie Settings" button on /consent page not opening purpose selection layer
- Fixed settings not persisting after save due to entity cache not being cleared
- Fixed leading comma in purpose badges on logs, dashboard, vendors and consent page (XF foreach $i is 1-based)
- Fixed purpose chart labels showing only numeric IDs instead of readable names
Improvements
- Cookie settings button now opens Layer 2 (purpose selection) instead of revoking consent
- Added retry logic for deferred CMP JavaScript loading on consent page
- Purpose chart shows labeled bars (e.g. "P1: Store/access info")
Bug Fixes:
- Fixed consent log pagination causing "page not found" error when switching pages
Bug Fixes:
- Fixed "unknown getter" errors on consent log page (tc_string, source)
- Fixed log retention setting not accepting values like 365 days (changed step from 30 to 1)
- Fixed "Global Scope (Cross-Site)" toggle not saving when disabled
- Fixed _data/templates.xml not syncing with _output templates
Improvements:
- Improved settings save reliability with better default handling for checkboxes
We use essential cookies to make this site work, and optional cookies to enhance your experience.