Changelog
This page lists the changes to the redundancy checker, if said changes had an effect on the behaviour of the check
By ABPVN:
December 25, 2023
- Add support for Ublock Originspecific rule 3p,redirect-rule
December 21, 2023
- Add support for Ublock Origin +js and html, style rule
- Fix incorrect whitespace warning for $csp, AdGuard snippet, AdGuard html rule
November 02, 2022
- Add support for Adblock Plus rewrite option (||domain.com/something$rewrite=abp-resouce:[abp-resouce-name])
March 23, 2022
- Add support for Adblock Plus specific rule (domain.com#?# syntax)
September 10, 2018
- Allowprotocol webrtc websocket csp currently support by ABP
By Famlam:
May 23, 2015
- Fixwhitelist filters that start with a protocol no longer imply $document in the next version of ABP (example: @@|http://x.y/)
May 17, 2015
- Modifiedthe future options $generichide and $genericblock are still ignored, but no longer trigger error messages
- UIminor changes for mobile browsers
March 9, 2015
- Newdomain check tool: add option to export the current results, which can also be used to resume the check at a later moment
- Fixdomain check tool: spaces were removed from filters
March 8, 2015
- Newtool to detect dead, redirected or parked first party domains (requires Chrome)
- Fixsometimes multiple warnings were shown per rule, instead of only the most important warning ($domain=a.|b|a.)
- Modifiedtightened the triggering conditions for the warning about a blocking rule being a broken hiding exclusion rule
January 5, 2015
- Newwarning if the value of a blocking option contains a $ which should probably be a , ($domain=abc$image)
- Improvedwarning messages when invalid domain separators are found ($domain=a||b)
- Improvedwarning messages related to incorrectly used blocking options ($image=foo or $~domain=foo)
- Improvedwarning messages related to overruled blocking options ($image,~image,script)
- Fix$document rules did not take into account the trailing dot domain variant for blocking rules with $domain=... (@@||abc.def^$document and $domain=abc.def)
- Fixmultiple warnings with shared rules should only be filtered out if all rules are identical (@@||a^$elemhide should warn against both c,a##.adv and a,b##.ads at the same time)
- Fixwarnings for a mutually redundant, equal length rule were dependent on the position of the other rule in the filters (##.A.\30 .B and ##.A.B.\30 )
- Fix:not(...) selectors were not checked for conflicts when 'not' contained capital letters (##div:NOT(div))
- Fixwhitelisted rules containing the $collapse option did not make blocking rules without $collapse redundant
- Fix$match-case,~match-case was treated as $match-case
- Fixwhitelist rules that imply $document were made redundant by rules that do not imply $document if no options were present (@@|http:// was made redundant by @@http)
- Modifiedipv6 addresses are now also accepted after a ||, although I don't know how ABP parses them (||[1234:123:1:12::123]^)
- Modifiedknown options are now shown uniformly in warning messages (lowercased, without spaces and using underscores)
July 7, 2014:
- Newwarn about rules with contradicting :nth-* selectors as they cannot match anything (##:nth-child(3):nth-child(4))
- Newwarn about selectors with different values for attribute selectors with the operators ^= and |=, as they cannot match anything (##[attr^="cow"][attr|="dog"])
- Newwarn about rules containing :not(...) pseudo-classes that cannot coexist with other selector types in the same rule (##:not([class="ads"]).adv)
- Newdetect redundancies between rules containing :not(...) pseudo-classes and rules containing other selector types (##:not([class="ads"]) versus ##.adv)
- Newrules containing :nth-* pseudo-classes are compared numerically, instead of literally (##:nth-child(3) and ##:nth-child(2n+1))
- Newrules containing :not(...) pseudo-classes are no longer only literally compared against other :not(...) selectors (##:not([href*="a"]) and ##:not([href="ads"]))
- Improvedthe warning messages that tell you about conflicts within a rule are more specific (##[id="a"][id^="b"])
- Improvedthe warning messages that tell you about redundancies within a rule are more specific (###ads,div#ads)
- Fixattribute selectors with |= made attribute selectors with ^= redundant if the attribute values were identical (##a[abc^="abc"] and ##[abc|="abc"])
- Fixcombined hiding rules with internal redundancies could not be made redundant by non-combined rules (###ads,#ads and ###ads)
- Fix:not(*) shouldn't make rules with different namespaces redundant (##ns|*:not(*))
- Fix:nth-*(An+B) selectors with A or B very large numbers still suffered from rounding errors
- Fixinternally ignored :not(...) selectors acted as the universal selector * (##:not(:nth-child(9999999999999999)) made ##div redundant)
- Modifiedattribute selector combinations that can't coexist do not match other impossible combinations anymore (###a#b and ##[id="a"][id^="b"])
- Modifiedrewrite the way hiding rules are parsed
January 19, 2014:
- Newwarn about redundant excluded domains in case the least restrictive rule is site-specific (~site.com in site.com##x and ~site.com##x.y)
- Improvedup to 30% increase of speed
- Removedthe tab with ignored rules is removed as it was incomplete and didn't distinguish between fully and partially ignored rules
- Fix:nth-child(An+B)/:nth-last-child(An+B)/:nth-of-type(An+B)/:nth-last-of-type(An+B) selectors with A or B very large numbers suffered from rounding errors
- UIadd documentation about the limitations of the redundancy checker
- UIfix some typos
January 13, 2014:
- Newwarn if ,$ is used to separate rules (example: $script,$domain=com)
- Newdetect redundancies in hiding rules if a #@# rule excluded part of the rule (example: nl#@##ads and ###ads together with com##div#ads)
- Improvedall warnings for redundant domains now clearly state which domains can be removed
- Removedwarnings about domain redundancies with non-redundant subdomains (example: ~b.a in b.a,~c.b.a#@#ads and a,~b.a##ads)
- Fix/\|\|x/$document and similar regex rules with $document or $elemhide no longer make $domain=x or x##y redundant
- UIin case a rule could be made redundant by two rules, and those rules are no redundancies of each other, the shortest rule is now displayed
- UItell the user to first check for redundancies again before using the tools, if they modify the contents of the text box
- UIsome changes in the warning messages of simplified syntax hiding rules
November 16, 2013:
- Newwarning about $image,~image,popup, where $image,~image does nothing. ABP now drops unknown options, so those constructions are unneeded
- Newwarning about $~match-case, since it's the default to be case insensitive (/ads.$~match-case)
- Newwarn when pseudo-element selectors are present, since they cannot be used for hiding content (##::before)
- NewCSS selector identifiers containing escaped Unicode at the end of the identifier may have a trailing space (##\32 >x is equal to ##\32>x)
- Improvedwarning about redundant type options if the first type option is an excluded type ($~script,image,~image)
- Improvedspecify the location of an unnecessary universal CSS selector in warning messages (only the first * in ##*.class > *)
- Improvedmore (all?) redundant sequences of complex tree selectors can now be detected (##a > div div > x and ##a > div div div > x)
- Fixif A is made redundant by B and B is made redundant by a $document or $elemhide rule C, A must be redundant of C instead of B
- Fixmore warning messages in which the options were shown as lowercased and with all - replaced by _
- Fixincorrect warnings for $~elemhide and $~document (@@/ads.$~elemhide,document)
- Fixcrash of the redundancy checker if a hiding rule matched nothing and also contained an internal duplicate (##:not(*):not(*))
- Fixrules with duplicates of :not(...) selectors and another comma-separated selector, acted as if :not(...) was * (##:not(a):not(a ),x)
- FixCSS selectors with :lang(x-y) would skip the selector behind the :lang(...) selector (##:lang(en-gb)>ads)
- Modifiedrewrite the way the options of blocking rules are parsed
- Modifiedrewrite the way how rules containing tree selectors (' ', >, +, ~) are matched
- UIfix typo in warning message for :not(...) selectors that match every element (##:not(:nth-child(-4)))
September 20, 2013:
- Improved'same rule, different domains' tool is faster and finds more combinable rules
- Improvedbetter warning message for rules of the form @@domain##rule
- Improvedbetter error message for incorrectly excluded domains (abc$~domain=site.com)
- Fixin the error message unknown option 'X', any - in the option was replaced by _, and it was in lowercase (example: abc$First-Party)
July 18, 2013:
- Fix'same rule, different domains' tool suggested combining a##bar,baz and b##bar+baz
- Fixrare case where the Check for redundant rules button didn't get enabled
June 12, 2013:
- FixPunycode-converted domains are considered valid now (xn----etbbchqbn2afauadx.xn--p1ai##.ads)
May 31, 2013:
- Fixtool to find whitelists shouldn't report other whitelists that it matches (@@x/xml and @@/xml$image)
- Fixtool to convert hiding into blocking reports wrong results for \= in the attribute name (##[src\=='hello'])
- Fixtool to use a less strict matching method matched two characters that would both be matched by ^ (&adType= and ?adType=)
- Improvedcode improvements
May 20, 2013:
- Newtool to find hiding rules that could potentially become blocking rules
- Fixincorrect warning message for rules that start with *@@: they should keep their preceding wildcard
- Improvedmatching of the :lang(...) selector
May 6, 2013:
- Improvedmatching of first/last/nth/only-child and first/last/nth/only-of-type selectors
April 28, 2013:
- Fixincorrect warning message: selectors that do not match anything, actually match everything when in a :not() selector (example: ##:not(:nth-child(-4)))
- Fixpseudo-element CSS selectors are not allowed in :not() selectors in CSS3 (##:not(::before))
- Fixcombinations of CSS selectors are not allowed in :not() selectors in CSS3 (##:not(##div#ads))
- Fixnamespaces in CSS3 are only allowed in front of nodename selectors (##abc|#def)
- Fixin an internal rule redundancy, the most restrictive part is the active part (##[a^="b"][a^="bcd"] and ##[a^="bc"])
- Fixincorrect warning message for comma-separated hiding rules for which one part can't match anything (##div,:not(*))
- Fixdo not automatically assume case insensitivity for browser-specific pseudo selectors (##:moz-whatever(x) versus ##:moz-whatever(X))
- Modifiedrules that match nothing (example: $image,~image) won't be made redundant by every other rule anymore; a warning is sufficient
- Modifiedprefer the message that donottrack is deprecated over one that the rule doesn't match anything
- Modifiedrewrite the way hiding rules are parsed. This method should be more fail-proof.
- UIfix typo in warning message
April 14, 2013:
- Modifiedreworked the warnings 'management' system so that it always returns the most important warning instead of the last found warning per rule
- Improvedwarnings about redundancies within a rule (example: ##[a="bcd"][a^="bc"])
- Improvedup to 5% increase of speed
- Fixincorrect warnings about redundancies within a rule if namespaces in attribute selectors were present (##[ns1|abc="def"][ns2|abc="def"])
- Fixdisable warnings about selectors that cannot co-exist when a namespace selector is present (##a|#b[*|id^='b']), because I'm unsure about the validity of that warning
- Fixincorrect broken selector warning if a rule contains Unicode characters 00A0 to 0177
- UIfix bad rule highlighting when a filter with a warning contained ' and ' (example: ##*[ and $=" and "])
- UIwarn when a browser lacks some functionality
March 28, 2013:
- Improvedup to 20% increase of speed
March 26, 2013:
- Fixtreat every line containing *[adblock*]* as comment
- Fixhiding rules containing ##tag-or-class-or-id\::known-pseudoselector are valid CSS (example: ###mysite\::first-child)
- Fixduplicate warning if an excluded domain in a hiding rule was also an included domain in a hiding whitelist rule (example: a,b,~b.a##x and a#@#x)
- Fixhiding rules excluded by a #@# rule do not make other rules redundant anymore (###ads and foo.com#@##ads and foo.com###ads.banner)
- Fixrules with included domains, excluded subdomains and included sub-subdomains weren't shown as redundant for the last subdomain (a,~b.a,c.b.a##x versus c.b.a##x.y)
- Fixsimplified hiding rules suggest the #id and .class syntax, instead of [id="the_id"] and [class~="the_class"]
- Fixwarnings involving the same rule twice were removed (##[id="x"] and ##[id="x"])
- Newwarn if you have an rule with only excluded domains and a rule with partially redundant included domains (~b.a##x vs z,c.b.a##x)
- Newif a hiding rule matches a parent element of another hiding rule, the latter is redundant (###foo versus ###foo > #bar)
- Newhiding rules may skip a tree depth if their selector allows so (###foo > bar > baz versus ###foo baz)
- Newwarn if you have selectors that can't co-exist (###id1#id2, ##[a="b"][a="c"], ...)
- Newwarn if comma-separated hiding rules make each other redundant (###ads,.xyz#ads)
- Improvedwarn if you have multiple included domains and some of them match (example: foo,a.bar##a versus bar,baz##a)
- Improvedsupport for comma-separated hiding rules (domain.com###ads,#adv)
- UIfor errors reported (for broken rules, like ##rule]), an ! was shown in front of the message
- UIreplace contact link with information link
- UIdisable spellchecking of the filter list input area
January 31, 2013:
- Newadd several tools:
- A similar rules finder tool
- Tools to ignore domains and blocking options (replaces the checkbox)
- A tool to use a less strict matching algorithm
- A tool to find rules which have the same rule, but a different domain
- A tool to find the rules that make whitelisting rules necessary, which also displays if no rules could be found for a whitelisting rule
- New||x will now also be matched if both /x and .x are present
- Modifieddeprecate $donottrack, since it's removed from ABP too
- Fix// isn't a regex
- Fix' !x' (with a whitespace in front of it) is a comment, not a blocking rule
- Fix*!x and similar will no longer trigger unnecessary preceding wildcard found warnings, since it would become a comment without *
- Fix/\|\|x/ and similar regex rules no longer make ||x redundant
No changelog available before 2013.