Feature recap from v2.x
- NEW + OPTIMIZATION: Option "Cache JavaScript TTL (minutes)" is now working (default=15m) (large performance boost)
- NEW + OPTIMIZATION: Ajax Routes now use XF.config to allow caching the entire JavaScript (also supports full page caching for user's as well as guests)
- NEW + OPTIMIZATION: Option "Enable Mobile + Browser Detection Cache" (on by default)
- NEW + OPTIMIZATION: Dynamically remove detection methods from JavaScript detection scripts when disabled
- NEW: Punish AdBlock Extension Togglers - Replaces previous "Should a single AdBlock detection reset current non-detects back to zero?", now allows you to set the number of detections that should reset non-detections to zero (default=2)
- NEW: Automatically [Reset and Delete] Users with >= X Swaps (Monthly Cron)
- NEW: Logging options tab - logging options and actions for the user change log
- NEW: Added 1-hour cache to save expensive calculations on successive duplicate user-agent requests
- OPTIMIZATION: Number of random bait classes are now also randomized by amount
- OPTIMIZATION: Overhauled Ajax Routes to prevent tampering
- OPTIMIZATION: Properly restyle user alerts
- OPTIMIZATION: Avoid detection skips in tools like AdGuard that might ignore fully off-screen elements.
- OPTIMIZATION: Displays updated with more thoughtful instructions and descriptions
- OPTIMIZATION: Lightly revised AdBlock Tracker Log to be a touch less cluttered
- UPDATE: Crawler Detection updated from v1.3.4 to v1.3.5
- UPDATE: Minification updated from v1.3.73 to v1.3.75
- FIX: Added proper validation to ensure enough detection methods are selected on options save
- FIX: Bust JavaScript cache on options save so JavaScript reflects settings
- FIX: Disallow negative settings for "Flood check on clear status"
- FIX: Make number boxes properly stepped in increments of 5 or 15 where applicable
- FIX: Delete xf_wutime_adblock_tracker_javascript DB table (no longer in use)
- FIX: Error delete_entities case, removed the $tracker->save() call after $tracker->delete() (entity is already deleted and saving is not needed)
- FIX: Drop no longer used database table xf_wutime_adblock_tracker_javascript on upgrade()
- FIX: EasyList now contains full class selectors, we need to ignore them when collecting Bait (creates a bad element and breaks the javascript detection resulting in false clear!)
- FIX: UglifyJS() added to build.json to provide updated min.js on compile to replace EOL XenForo compiler
- OPTIMIZATION: AdBlock Tracker Log now remembers display settings and persists them between sessions
- ADD: AdBlock Tracker Log, add historical adblocking % vs recent last 100 page views %
- FIX: AdBlock Tracker Log "Results" dropdown works and is remembered
- FIX: AdBlock Tracker Log filtering tools would disappear if no results found
- FIX: ClearLogUsers() and ClearLog() from AdBlock Tracker Logs now a Job that properly runs a routine to delete all entities and restore user accounts (remove AdBlock group)
- FIX: Uninstall runs job to delete entities safely prior to dropping database tables
- INSTALL: Updates cache_js to 15 minutes on upgrade() for all customers
- INSTALL: Drops xf_wutime_adblock_tracker_javascript db table on upgrade() for all customers
- FIX: Swap multipilier can be set to 0 to disable, and allows steps of 0.25
- FIX: Daily device stats have been stored every day ever since you enabled device history, but were not displaying
- Daily device stats are now properly keyed and can be reviewed: admin.php?stats/
- OPTIMIZATION: AdBlock Tracker Log now remembers display settings and persists them between sessions
- ADD: AdBlock Tracker Log, add historical adblocking % vs recent last 100 page views %
- FIX: AdBlock Tracker Log "Results" dropdown works and is remembered
- FIX: AdBlock Tracker Log filtering tools would disappear if no results found
- FIX: ClearLogUsers() and ClearLog() from AdBlock Tracker Logs now a Job that properly runs a routine to delete all entities and restore user accounts (remove AdBlock group)
- FIX: Uninstall runs job to delete entities safely prior to dropping database tables
- FIX: Swap multiplier can be set to 0 to disable, and allows steps of 0.25
- FIX: Daily device stats have been properly saved every day ever since you enabled device history, but, due to an issue in the display keys, were not visible on the stats page admin.php?stats/
- Daily device stats are now properly keyed and can be viewed historically
- OPTIMIZATION: AdBlock Tracker Log now remembers display settings and persists them between sessions
- ADD: AdBlock Tracker Log => add historical adblocking %
- FIX: ClearLogUsers() and ClearLog() runs a Job that to delete all entities and restore user accounts (remove AdBlock group) (no orphaned users)
- FIX: AdBlock Tracker Log => "Results" dropdown works and is remembered
- FIX: AdBlock Tracker Log => filtering tools would disappear if no results found
- FIX: Uninstall runs job to delete entities safely prior to dropping database tables
![]()
- OPTIMIZATION: "Swaps" is now linear, enujerating each time the [AdBlock] usergroup is applied (1, 2, 3 etc)
- OPTIMIZATION: "Consecutive Detections Required to Assign Role" now ensures detections must be consecutive prior to applying AdBlock role
- OPTIMIZATION: Swap multiplier is now more intuitive
- FIX: Add data-cache="false" so the Admin overlay for stats is never stale
- FIX: Add punish_date so we can track "clear sequences" and allow for small numbers of accidental adblock's in between
- FIX: "Punish" renamed to "Reset Clear Sequence if X Detections Are Found Mid-Sequence"
- FIX: Upgrade will automatically set some defaults so they obey updated validators (please revisit your settings for "swap" and "maintenance")
- Hot Fix: Call the parent actionUpdate() first to let core handling proceed
- Remove redundant $this->assertPostOnly() from actionUpdate()
These has been thoroughly tested and running live for over a week without issue. It's RC1 but should be fine for all users. Please do report any issues found, if any.
New Features:
Optimizations:
- Cache JavaScript TTL (minutes) option is now functional (default: 15); provides a large performance boost
- Ajax routes now use XF.config for JavaScript caching; supports full-page cache for users and guests
- New option: Enable Mobile + Browser Detection Cache (enabled by default)
- Detection scripts now dynamically remove disabled methods from the JavaScript payload
- Replaces old "single detection resets non-detects" option with X detections reset non-detects (default: 2)
- Monthly cron to automatically [Reset and Delete] users with ≥ X usergroup swaps
- New "Logging options" tab to configure what is recorded in the user change log
- 1-hour cache added to reduce load from repeated user-agent requests
Fixes:
- Ajax routes overhauled to prevent tampering
- Number of bait classes now randomized
- Detection elements adjusted to avoid skipping from tools like AdGuard that ignore off-screen bait
- User alerts have been restyled for better clarity
- Displays revised with clearer instructions and descriptions
- AdBlock Tracker log layout simplified for better readability
Install/Upgrade Behavior
- Validation added to ensure at least one detection method is enabled when saving options
- JavaScript cache is busted on options save so settings apply immediately
- Negative values no longer allowed in Flood check on clear status
- Number boxes now use proper step values (e.g. 5 or 15)
- Obsolete table xf_wutime_adblock_tracker_javascript deleted
- Fixed bug where $tracker->save() was called after $tracker->delete()
- EasyList’s full class selectors now correctly ignored during bait generation to prevent false clears
- UglifyJS() added to build.json to properly generate min.js and replace outdated XF compiler
Composer Updates:
- cache_js TTL updated to 15 minutes on upgrade for all users
- Drops xf_wutime_adblock_tracker_javascript table during upgrade
- Crawler Detection updated from v1.3.4 to v1.3.5
- Minification tool updated from v1.3.73 to v1.3.75
- UPDATE: Crawler Detection updated from v1.3.4 to v1.3.5
- UPDATE: Minification updated from v1.3.73 to v1.3.75
- FIX: For the delete_entities case, removed the $tracker->save() call after $tracker->delete(), as the entity is already deleted and saving is not needed.
- UPDATE: useFriendlyUrls for Ajax requests if useFriendlyUrls is enabled
- UPDATE: Tracking detection code base upgraded v4.0 => v5.0
- FIX: Error loading default EasyList if server connection fails to download from host
- UPDATE: mobiledetect/mobiledetectlib 3.74.3
- FIX: Remove addon version custom option value on uninstall()
- UPDATE: Refactored primary detection method to remove attack vector
- UPDATE: Improved detection under Firefox with AdGuard, uBlock, AdBlock Plus
- UPDATE: Update detection to include newly added variables to obfuscation array
- UPDATE: Obfuscate reject and resolve promise methods
- UPDATE: Obfuscate XHR and script requests
- UPDATE: Precompile order of obfuscation array elements to be most performant prior to execution
- UPDATE: Tracking detection code base upgraded v3.0 => v4.0
We use essential cookies to make this site work, and optional cookies to enhance your experience.