- JSONPath: Add ability to substitute a pattern within a string value
- Remove "CERT.PL's Warning List" from stock lists
- Fix incorrect CNAME-related test in advanced settings
- Remove "AdGuard Tracking Protection"from stock list
- Add filter list for experimental filters
- Improve
fingerprint2.jsshim - Make
google-imaa valid injectable scriptlet - Improve
abort-current-scriptscriptlet - Fix potential exception in procedural operator
:matches-attr - Improve reporting of
reasonoption in strict-blocked pages - Improve
prevent-innerHTMLscriptlet
- Reset
importantoption flag atheaderevaluation time - Fix broken reverse lookup of filter lists
- Add
[trusted-]edit-inbound-objectscriptlets - Improve
remove-cookiescriptlet - Add
json-edit-related scriptlets - Improve
trusted-set-cookiescriptlet - Force cache bypass reload when no-scripting switch is toggled
- Improve
jsonl[...]suite of scriptlets - Add support for network filter option
message - Make
header=syntax compatible with DNR rules - Counter CodeMirror's
pointer-events: noneon scrollbars - Fix element picker issue with explicit dark theme
- Use custom blank page for embedded iframe in dashboard
- Use
color-schememetatag, as suggested - Bring zapper look in line with uBO Lite's zapper
- Ignore
start_pagetransition for popup-blocking purpose - Exclude
chrome:as valid openers for popup candidates - Fetch diff patches from "reliable" servers only
- Add
trusted-create-htmlscriptlet - Mind potential race condition when dynamically registering scriptlets
- Fix undue unchecking of setting in "My filters"
- Add path support as target option in static extended filtering
- Add
trusted-prevent-fetchscriptlet - Code viewer shouldn't be maximizable
- Add
json-editsuite of scriptlets; extendreplace=option - Improve
trusted-prevent-dom-bypassscriptlet - Add
jsonl-prune-xhr-response/jsonl-prune-fetch-responsescriptlets - Improve
[json-prune|trusted-replace]-fetch-responsescriptlets
- Improve
prevent-set[Timeout|Interval]scriptlets - Add quit button to element zapper mode
- Improve
trusted-override-element-methodscriptlet - Disable obsolete cache-control workaround for Firefox
- Improve
overlay-busterscriptlet - Add ability to inject scriptlets according to origin of ancestor contexts
- Fix range parser in prevent-setTimeout scriptlet
- Add filter option synonyms for
strict1p/strict3p - Increase URL buffer size to 8192 (from 2048)
- Use onmessage/postMessage instead of BroadcastChannel in diff updater
- Improve
disable-newtab-linksscriptlet - Improve
prevent-addEventListenerscriptlet - Fix reverse lookup of
##^responseheader(...)filters - Improve
evaldata-prunescriptlet - Comply with Mozilla's "User Consent and Control"
- Improve
noeval-ifscriptlet - Add "closed","next", "mandatory", "agree/disagree" values to
set-cookiescriptlet (by @ryanbr) - Add
declinevalue toset-cookiescriptlet - Improve
abort-on-stack-tracescriptlet - Improve
href-sanitizerscriptlet
- Fix deserialization of ArrayBuffer shared by multiple TypedArrays
- Improve
trusted-suppress-native-methodscriptlet - Improve
urlskip=filter option - Improve
parse-properties-to-matchscriptlet helper - Improve
href-sanitizerscriptlet - Improve quote usage in filter options and scriptlets
- Improve
trusted-suppress-native-methodscriptlet - Improve
trusted-replace-argumentscriptlet - Block media elements unconditionally when max size is set to 0
- Regression from https://github.com/gorhill/uBlock/commit/73ce4e6bcf
- Visually separate scriptlet parameters in active line
- Mitigate potentially delayed execution of scriptlets in Firefox
- Improve
prevent-setTimeout/prevent-setIntervalscriptlets - Improve
trusted-replace-argumentscriptlet - Add
-safebase64directive tourlskip=option - Improve
urlskip=filter option - Improve
spoof-cssscriptlet - Improve
trusted-set-attrscriptlet - Add support for EasyList
{ remove: true }cosmetic filter syntax - Keep moving related scriptlets into separate files
- Improve
prevent-xhrscriptlet - Improve
trusted-suppress-native-methodscriptlet - Improve
set-cookiescriptlet
- Better handle unexpected conditions when deserializing
- Fix potential infinite async loop (issue found by @Rob--W)
- Improve
prevent-refreshscriptlet - Improve
googlesyndication_adsbygoogle.jsscriptlet - Offer ability to skip redirects in strict-blocked page
- Add
-blockeddirective tourlskip=option - Add
trusted-set-attrscriptlet - Remove
64:ff9b:as private network block - Ensure
urlskip=redirects only tohttps: - Add support to
urlskip=media resources - Add
-uricomponenttourlskip=option - Add
forbidden/foreveras safe cookie values (by @ryanbr) - Add regex extraction transformation step to
urlskip=option - Improve
prevent-window-openscriptlet - Add support to parse Adguard's
[$domain=/.../]regex-based modifier - Validate result type of XPath expressions
- Fix npm test suite
- Add ability to lookup parameter name in
urlskip= - Mind that BroadcastChannel contructor can throw in Firefox
- Add
trusted-override-element-methodscriptlet - Add
trusted-prevent-dom-bypassscriptlet - Improve
prevent-xhrscriptlet; addtrusted-prevent-xhrscriptlet - Skip dns resolution when requests are proxied through http
- Blocking large media elements also prevents autoplay, regardless of size
- Do not discard
!#elseblock for unknown preprocessor tokens - Add ability to decode base64 in
urlskip= - Fix images not properly downloading on click
- Add advanced setting
dnsResolveEnabled - Fix contextual menu quirks
- Fix exception thrown in
spoof-cssin Firefox - Throttle down repeated scriptlet logging information
- Improve scriptlet helper
proxy-apply - Add an entry in Report page for badware/phishing category
- New static network filter option
urlskip= - Rewrite cname uncloaking code to account for new
ipaddress=option - Avoid using dns.resolve() for proxied DNS resolution
- Add support for
lan/loopbackvalues toipaddress=option - New static network filter option
ipaddress= - Add ability to quote static network option values
- Improve
prevent-fetchscriptlet - Apply CSP/PP injections to
objectresources - Improve
xml-prunescriptlet - Add support for
application/dash+xmlinreplace=option - Add ability to directly evaluate static network filtering engine
- Fix
prevent-window-openfor when logger is open - Improve
prevent-window-openscriptlet - Improve
validate-constantscriptlet helper - Improve
trusted-replace-outbound-textscriptlet - Improve
prevent-xhrscriptlet - Add noop resources for redirect purpose
- Use helper function to lookup safe cookie values
- Add
checked/uncheckedtoset-cookie(by @ryanbr) - Add
allowed/deniedtoset-local-storage-item(by @ryanbr) - Fix plain exceptions not overriding block filters using
header=option - Improve various scriptlets
- Improve
href-sanitizerscriptlet - Improve
remove-attr.jsscriptlet - Improve
trusted-replace-node-textscriptlet
- Improve
href-sanitizerscriptlet - Improve
trusted-replace-node-textscriptlet - Improve
set-constantscriptlet - Improve
prevent-fetchscriptlet - Improve
href-sanitizerscriptlet - Fix CSP/PP header injection in non-document resources
- Add
trusted-suppress-native-methodscriptlet - Add support for
$currentISODate$intrusted-set-cookiescriptlet - Add
essentialandnonessentialto set-cookie (by @ryanbr) - Fix distance calculation in picker
- Fix bad serialization of Date objects
- Fix race condition when loading redirect/scriptlet resources
- Improve logging in
prevent-addEventListenerscriptlet - Add
:matches-prop()pseudo CSS operator - Improve
set-cookiescriptlet - Improve
trusted-replace-node-textscriptlet - Improve
trusted-replace-(fetch|xhr)-responsescriptlets - Improve
prevent-addEventListenerscriptlet - Add
isodateas available placeholder for auto-comment - Improve
trusted-replace-outbound-textscriptlet - Classify generic cosmetic filters with comma as highly generic
- Raise max buffer size for response body filtering
- Trim end of class tokens in generic cosmetic filtering's surveyor
- Improve
trusted-set-cookiescriptlet
- Fallback to
requestAnimationFramewhenrequestIdleCallbackis not available - Improve
trusted-click-elementscriptlet - Replace EasyDutch with AdGuard Dutch
- Add checksum validation when loading trie buffers in selfie
- Catch exceptions in API calls for the sake of old Chromium versions
- Add
accept/rejecttoset-local-storage-item(by @ryanbr) - Use raw string for regex patterns in python scripts
- Improve
noeval-ifscriptlet - Improve
trusted-set-local-storage-itemscriptlet - Fix potential corruption when reading serialized data
- Improve
remove-[attr|class]scriptlets - Improve dashboard layout at high zoom factor
- Add a console pane to the logger
- Improve
spoof-cssscriptlet - Fix bad date computation in auto-comment feature
- Fix regression breaking import of
file://lists - Add
trusted-replace-outbound-textscriptlet - Improve
[trusted-]set-cookiescriptlets
- Do not block large media resources when loaded as top-level document
- Properly manage cache storage regarding managed user filters
- Improve
[trusted-]set-cookiescriptlets - Fixed Belgian and Nepali flags for Windows Chromium users (by @DandelionSprout)
- Mind that
tabs.sendMessagecan throw - Improve
set-cookiescriptlet - Append wildcard character only when filter starts & ends with
/ - Fix failure to create popup logger window sometimes
- Improve json-prune-related scriptlets
- Support maximizing editor to viewport size
- Add advanced setting to force popup panel orientation
- Add checkboxes to "My filters" pane
- Assume UTF-8 when no encoding can be looked up
- Fix issue with "My filters" pane on mobile
- Support aborting "Pick" mode in element picker
- Remove sections with no lists in "Filter lists" pane
- Add "Social widgets", "Cookie notices" sections in "Filter lists" pane
- No longer disable generic cosmetic filters by default on mobile
- Improve
spoof-cssscriptlet - Make asset updater compatible with non-persistent background page
- Move dragbar to the top of element picker dialog
- Add advanced setting
requestStatsDisabled - First lookup matching stock lists when importing URLs
- Reset filter lists in worker when creating filters via "Block element"
- Remove trusted-source requirement when using
badfilter - Redesign cache storage
- Don't match network filter-derived regexes against non-network URIs
- Remove obsolete trusted directives
- Support logging details of calls to
json-prune-fetch-response - Escape special whitespace characters in attribute values
- Mind that multiple
uritransformmay apply to a single request - Fix incorrect built-in filtering expression in logger
- Fix improper invalidation of valid
uritransformexception filters - Improve
prevent-addEventListenerscriptlet - Fix Chartbeat flicker control
div's (by @ryanbr) - Fix potential exfiltration of browsing history by a rogue list author through
permissions= - Ignore event handler-related attributes in
set-attrscriptlet (suggested by @distinctmondaylilac) - Fix potential exfiltration of browsing history by a rogue list author through
csp=(reported by @distinctmondaylilac) - Output scriptlet logging information to the logger
- Fix decompiling of scriptlet parameters
- Add support for
extraMatchintrusted-click-elementscriptlet - Remove minimum height constraint from "My filters" pane
- Unregister all scriptlets when disabling uBO on a specific site
- Allow
uritransformto process the hash part of a URL - Remember presentation state of "My rules" pane
- Fix improperly assembled
!#includesublists - Mark procedural filters with pseudo-elements selector as invalid
- Prevent access to picker when "My filters" is not enabled
- Provide visual feedback when applying changes in "Filter lists" pane
- Empty query parameters must still use
= - Add support to toggle no-scripting switch with keyboard shortcut
- Do not exceed rate-limited calls to
handlerBehaviorChanged() - Shield some code paths against potentially tampered global properties (in scriptlets)
- Do not prevent applying changes when lists are updating
- Add
elementsvararg toprevent-addEventListenerscriptlet - Do not use tab character as field separator (in logger)
- Prevent
:others()from hidinghtmltag
- Discard repeating adjacent entries in the logger
- Mind drop events in filter expression field of logger
- Improve
xml-prunescriptlet - Fix message entries overflowing in logger
- Add support for
application/x-javascriptinreplace=option - Extend support for differential updates to imported lists
- Add detection of mismatched
!#if-!#endifin linter - Support links to update lists which are differential update-friendly
- Remove "Purge all caches" button from "Filter lists" pane
- Add support for
alllist token in updater-link feature - Fix logging of broad exception filter
#@#+js() - Improve
no-xhr-ifscriptlet - Ensure cache storage backend is selected before access
- Fix popup panel rendering when embedded in logger
- Add visual hint in support information re. differential update
- Remove obsolete web accessible resources
- Rename
urltransformtouritransform - Vertically expand/collapse in steps in dom inspector
- Reset the DOM inspector when URL in top context changes
- Support shadow-piercing combinator
>>>intrusted-click-element - Isolate DOM inspector layers from page context
- Refactoring: Replace DOM events with broadcast channels
- Support non-default sticky lists
- Add enableLazyLoad function (by @spazmodius )
- Change frequency of save-to-storage blocking stats
- Improve
prevent-fetchscriptlet - Catch cases of
! Expires:field with no value
Differential update of filter lists, as a result of discussions at AdguardTeam/FiltersCompiler#192. Resulting spec is here.
The goal is to NOT be ranked among the "most popular projects" by bandwidth usage (as per jsDelivr's public stats):
It is expected that differential updates will lower both requests and bandwidth usage.
To benefit the much shorter update period enabled by differential updates, you must let uBO auto-update the filter lists. Forcing a manual update will prevent differential updates until the next time a list auto-update.
- Enable path for native
has()selector in Firefox - Allow scriptlets to be injected in
about:blank - Fix faulty
asvararg inset-constantscriptlet - Add support to redirect to
noop.json - More improvements to the
google-imashim script (by @kzar) - All exceptions filters are exempt from requiring a trusted source
- Add
trusted-set-session-storage-itemscriptlet - Allow the use of quotes in
set-cookiescriptlet - Allow the use of quotes in
set-(local|session)-storage-item - Add ability to trigger cookie removal on specific events
- Ensure CSSTree does not hold a reference onto last parsed string
- Lower minimum Expires value to 4h
- Properly reset needle length in unserialized buffer
- Add additional flags to regional lists (by @DandelionSprout)
- Harden scriptlets which need to serialize function code into string
- Reset
gregexes before use inrmnt/rpntscriptlets - Apply response filtering according to mime type
- Add t/f to set-cookie (by @ryanbr)
- Have
urltransform=use the same syntax asreplace= - Implement network filter option
replace=(Firefox only because filterResponseData) - Prevent evaluating the SNFE until fully loaded
- Add support for differential update of filter lists

