uBlock Origin Version History

42 versions

Be careful with old versions!

These versions are displayed for reference and testing purposes. You should always use the latest version of an add-on.

Version 1.10.4 1.5 MiB Works with Firefox for Android 24.0 - *, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

Version 1.10.2 1.5 MiB Works with Firefox for Android 24.0 - *, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

See release notes.

Changes

Implementation of cosmetic filter operator :matches-css has been revised according to the discussion at https://github.com/gorhill/uBlock/issues/1930#issuecomment-241997548 and request in https://github.com/uBlockOrigin/uAssets/issues/212:
  • :matches-css now accept no more than one single style property. If more than one style property must be matched on the same node, you will need to chain them (i.e. div##matches-css(...):matches-css(...) -- ability to chain is coming for next release). Since there is only one style property, do not use trailing ;.
  • :matches-css-before() and :matches-css-after() are now also available to specifically match style property for the pseudo elements :before and :after on a node.
  • Support the use of regexes for property matching: if the first and last character of the value to match is /, the value will be deemed to be a literal regular expression which must be matched.

The last dashboard's pane you visited will be automatically opened next time you open the dashboard (issue #2206).

Closed as fixed

Commit history between 1.10.0 and 1.10.2.

Version 1.10.0 1.5 MiB Works with Firefox for Android 24.0 - *, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

See release notes.

Changes

Dynamic filtering pane

The dynamic filtering pane in the popup panel is now available in read-only mode to users who did not enable "I am an advanced user" in Settings.

The rationale for this change is explained in issue 2010. It still is collapsed by default, but can be brought up by clicking the "requests blocked" or "domains connected" fields in the main area.

Template-based scriptlets

In order to promote the reuse of injectable scriplets across different sites, it is now possible for a scriptlet to accept arguments. The arguments are comma-separated and appear after the token (for example a real case).

In the example above, the scriplet abort-on-property-write.js contains a placeholder for one argument, which placeholder will be replaced with the argument _sp_. Placeholders for scriplets which accept arguments will always be for string values (reminder that injectable scriplets are part of the project, never from an external party).

Advanced settings

A new "Advanced settings" pane, available only to advanced users. It contains settings which are experimental, or which are of interest to advanced users who want more control over how uBO behaves internally. I do not want to bloat the Settings pane in the dashboard with settings which are of interest only to a minority of users or which are experimental: this is where the new "Advanced settings" pane is useful.

When you enabled "Advanced users" in the Settings pane, a cogs icon will appear next to that setting. Click this cogs icon to access those "hidden" advanced settings.

The UI of the advanced settings page is purposefully stern. Keep in mind that whatever settings you see in there may be experimental and could be removed at any time in the future.

Experimental advanced setting of interest: suspendTabsUntilReady (default to false), to prevent uBO from establishing any remote connection at launch before all filter lists/settings have been fully loaded (related issue #1327). How well it works will have to be evaluated by users.

WebExtensions

From now on, there will be a Firefox's WebExtension version of uBO (see uBlock0.webext.zip in Release notes, see "Temporary Installation in Firefox" on how to install on Firefox). Do not bother trying it out if you do not have Nightly 52.0a1 (2016-10-29) or later installed. Also, do not open issues for the WebExtension version of uBO -- it is still at an experimental stage and there are things which are known to be missing in the API for uBO to fully function: see bugzilla 13099260.

Closed as fixed:


Commit history between 1.9.16 and 1.10.0.

Version 1.9.16 1.4 MiB Works with Firefox for Android 24.0 - *, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

See release notes.

Changes

Some work has been done on the element picker:
  • can now handle procedural cosmetic filters (:has, matches-css, :xpath), and also the special operator :style -- matching elements of such filters will be highlighted like normal CSS selector-based filters.
  • an invalid filter in the input field will now trigger a visual cue: the background of the input field will be reddish.
  • the number of elements on the current page matching the filter in the input field is now displayed in the bottom right corner of the input field.
  • the preview mode is now sticky, i.e. you can modify the filter in the input field without being kicked out of preview mode. Convenient when creating :style-based cosmetic filters.

The Privacy setting "Disable hyperlink auditing/beacon" has been changed to "Disable hyperlink auditing", and network requests of type beacon are no longer blanket-blocked. The network requests of type beacon will now be filtered just like any other network requests, according to the current filters/rules.

Network requests of type csp_report will be blocked regardless of filters/rules when there is a probability they are fired as a result of uBO internally redirecting one or more network requests to neutered resources. In such case, uBO considers these csp_report network requests as "spurious" and blocks them. An example of such spurious CSP reports being fired as a result of uBO redirecting resources is https://medium.com/ (see dev console when loading a page from that site), where a CSP report is fired by the browser as a result of uBO redirecting Google Analytics script to uBO's neutered version.

Closed as fixed:


Commit history between 1.9.12 and 1.9.16.

Version 1.9.12 1.5 MiB Works with Firefox for Android 24.0 - *, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

See release notes.

Closed as fixed

Commit history between 1.9.10 and 1.9.12.

Version 1.9.10 1.5 MiB Works with Firefox for Android 24.0 - *, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

Version 1.9.8 1.5 MiB Works with Firefox for Android 24.0 - *, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

See release notes.

Changes

Core code related to static and cosmetic engines has been refactored to take advantage of ES6 Set/Map (related issue: #1070). Polyfilled versions of Set/Map are provided for compatibility with pre-ES6 browser versions. While at it, I also revisited some of the inner-most loops executed at load time to remove other observed overheads in profiling results.

Benchmarks shows that there are good gains to be had in performance and memory efficiency when using ES6 Set/Map. The performance gains are especially true when dealing with collections with a lot of misses, which is typical of the static and cosmetic filtering engines ni uBO.

Following the above refactoring, profiling Chromium/Firefox, I observed:
  • Non-selfie case: uBO will roughly load in about half the time, because:
    • Using ES6 `Set` and `Map` instead of `Object`
    • No longer using `String.split` to split lines into fields = less memory allocations = less work for garbage collector
  • Selfie-case: there is a marginal performance improvement at most in boot time -- make sense since a selfie is just a no-parsing-at-all load mechanism regardless of how the data is represented internally.

Closed as fixed

Commit history between 1.9.6 and 1.9.8.

Version 1.9.6 1.5 MiB Works with Firefox for Android 24.0 - *, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

See release notes.

Changes

When uBO encounters the filter option "other", it will internally add the filter option "websocket" to the filter. This is to keep compatibility with filter lists which are meant to be compatible with ABP, which categorizes websocket requests as "other". Reference: websocket blocked when easylist match.

Fixed


Commit history between 1.9.4 and 1.9.6.

Version 1.9.4 1.5 MiB Works with Firefox for Android 24.0 - *, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

Version 1.9.2 1.5 MiB Works with Firefox for Android 24.0 - *, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

See release notes.

Fixed:


Commit history between 1.9.0 and 1.9.2.

Version 1.8.4 1.5 MiB Works with Firefox for Android 24.0 - *, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

See release notes.

Fixed

- Unspecified element removed: regression introduced in 1.8.0 when cosmetic filtering was refactored. Some classes of exception cosmetic filters were disregarded.

Commit history between 1.8.2 and 1.8.4.

Version 1.8.2 1.5 MiB Works with Firefox for Android 24.0 - *, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

See release notes.

Fixed

A regression bug, which caused a non-catched exception to be thrown when creating a filter using the element picker. This bug was introduced in fix to issue 1786.

Commit history between 1.8.0 and 1.8.2.

Version 1.8.0 1.5 MiB Works with Firefox for Android 24.0 - *, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

New

New cosmetic filtering operators: ':has()', ':xpath()', ':style()'. See detailed documentation at "Static filter syntax".

These new operators are to be used only for cosmetic filtering cases which are hard to crack -- more and more of these are surfacing (for example DOM elements with random class or id values).

When it comes to cosmetic filtering, preferably, always favor a plain old CSS3-based cosmetic filter, since they can be used in a declarative way, inside a 'style' tag. But there are cases where no CSS3-based expression will work, and in such case consider these new ':has' and ':xpath' operators.

Note that unlike ':has', ':xpath' is not a valid CSS4 expression, so they will always be enforced in a non-declarative way (in other word, javascript is doing the filtering, through 'document.evaluate'.

These new cosmetic filtering operators can be "excepted" like any other standard CSS3-based cosmetic filter using the usual '#@#' prompt. Such exception cosmetic filters do not have to be specific however, i.e. you do not have to associate them to a specific hostname/entity.

Changes

The content script code responsible to implement cosmetic filtering has been re-factored:

  • To harden against sites which tries to work around uBO's cosmetic filtering.
  • To improve general performance and memory usage.
  • To support the new cosmetic filters.

Closed as fixed

Version 1.7.6 1.5 MiB Works with Firefox for Android 24.0 - *, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

Version 1.7.0 1.4 MiB Works with Firefox for Android 24.0 - *, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

Summary of changes:

Changes:

The element picker has been beefed-up:
  • It will now offer as filter choice background images, if any. (#1202)
  • When you click on an element on the page, it will report all elements found under the mouse. (Previously, the picker would report filters only for the element clicked and its ancestors.)
  • Filters for media elements will now be offered, if any. (#1545)
  • You can now preview the effect of the selected filter on the page. (#650)

Closed as fixed:


Commit history between 1.6.8 and 1.7.0

Version 1.6.8 1.4 MiB Works with Firefox for Android 24.0 - *, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

Summary of changes:

Changes:

From now on, uBlock Origin will pull assets (filter lists, scriptlets) from a project dedicated strictly for the purpose of maintaining those resources: uBlockOrigin/uAssets. Notice that this project is owned by uBlockOrigin, an organization I created to maintain all things related to uBlock Origin, uMatrix. For now uAssets is the first project to be held under that organization.

The goal of uBlockOrigin/uAssets is to receive all the reports for the need of new filters, or reports of web pages broken by existing filters, and will be open for people to contribute (i.e. given write permissions on the project). Ideally I wish there will be eventually a small army of volunteers dedicated to deal with filter issues.

Closed as fixed:


Commit history between 1.6.6 and 1.6.8

Version 1.6.4 1.4 MiB Works with Firefox for Android 24.0 - *, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

Summary of changes:

Changes:

Changes:

Popup filters can also be used to filter popunders. This was the case in the original implementation of popunder filtering, however this was removed eventually as this was causing too many false positives for popunders, causing legitimate tabs to be closed (issue 1010). The new solution is to still filter popunders according to existing popup filters, but to disregard popup filters which are too broad. Cases for which a popunder cannot be taken care by an existing popup filter, an explicit popunder filter should be used.

Closed as fixed:

Firefox 31 and less, Pale Moon:

Core:

Commit history between 1.6.2 and 1.6.4

Version 1.6.2 1.4 MiB Works with Firefox for Android 24.0 - 42.*, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

Version 1.6.1 1.4 MiB Works with Firefox for Android 24.0 - 42.*, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

Version 1.6.0 1.4 MiB Works with Firefox for Android 24.0 - 42.*, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

Summary of changes:

New:

Ability to set the default state of per-site switches (issue #1193)

It is now possible to set the default value of per-site switches from the Settings pane in the dashboard, under the Default behavior header. It was possible before to modify the default setting, but this had to be done by manually entering the proper rule in the My rules pane -- not very suitable to non-advanced users.

Block media elements by size (issue #1163)

There is a new per-site switch: Block media elements by size (image).

Primary purpose is to save bandwidth. See documentation for more information.

Note that this feature has been implemented with the utmost care to not add overhead to those not using it. The content scripts to handle interaction with blocked media elements are injected if and only if large media elements were actually blocked.

Closed as fixed:

Firefox:

Core:

Commit history between 1.5.5 and 1.6.0

Version 1.5.5 1.3 MiB Works with Firefox for Android 24.0 - 42.*, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

Version 1.5.4 1.3 MiB Works with Firefox for Android 24.0 - 42.*, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

Summary of changes:

Closed as fixed:

Firefox:

Commit history between 1.5.3 and 1.5.4

Version 1.5.3 1.3 MiB Works with Firefox for Android 24.0 - 42.*, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

Summary of changes:

Changes:

uBO will now automatically select the filter list which matches the current browser locale at first install time. This change does nothing if you have uBO already installed.

Closed as fixed:

Core:


Commit history between 1.5.1 and 1.5.3

Version 1.5.1 1.3 MiB Works with Firefox for Android 24.0 - 42.*, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

Summary of changes:

Closed as fixed:

Core:


Commit history between 1.5.0 and 1.5.1

Version 1.5.0 1.3 MiB Works with Firefox for Android 24.0 - 42.*, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

Summary of changes:

New:

Ability to inject script resource from the resource library directly into a page -- i.e. not through redirection. Can be used to defeat some otherwise hard to defeat ad injection mechanisms on some sites. More specifically, this allows to defeat AdDefend- or Yavli-based ads on many sites (as of writing), which so far were defeated only through inline script tag filtering -- so this means that now Chromium-based browsers can also bypass AdDefend/Yavli (for example, see #1100). Some documentation available here (will eventually create a dedicated page).

Enabling advanced user mode won't cause the tooltips to be disabled anymore. There is now a separate setting for tooltips in the Settings pane: "Disable tooltips". Tooltips are enabled by default.

Closed as fixed:

Core:


Commit history between 1.4.0 and 1.5.0

Version 1.4.0 1.3 MiB Works with Firefox for Android 24.0 - 41.*, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

Summary of changes:

New:

Ability to use Adguard filter lists

You can now directly use Adguard filter lists. Filters which use Adguard-specific filter syntax extension will simply be discarded by uBO.

Popunders

A new filter type is introduced: popunder. This gives uBlock Origin the ability to block popunders. Popunders are when a web page opens a new legitimate content in another tab or window, while at the same time loading nuisance content in the current tab. They are essentially the reverse of what is happening with nuisance popups, where the nuisance content is opened in a new tab or window.

Since the popunder option is specific to uBO, any instance of sites using popunders will have to be reported on the issue tracker so that filters can be crafted to address the issue for those sites.

Redirection infrastructure

Consider this still experimental. This adds the option to map blocked network requests to uBO-provided resources. Specifically, this solves issue raised in #949 and #1043 -- and more generally consider this yet another tool in uBO's arsenal to enforce users' choices.

The library of resources which are used for redirection is -- and will always be completely under control of uBO, this is not something under the control of any 3rd parties. This ensures only safe resources are used for redirection.

It could be said this feature is vaguely similar to NoScript's surrogates, except that in the case of uBO it's network redirection to plainly map one resource into another one, and it can be used for any kind of resource, not just scripts (anything which can be represented with a data: URI).

Only blocked network requests are candidates for redirection.

To create a redirection filter, just add the redirect=[...] filter option to it, like so:

||example.com/badimage.*$image,redirect=2x2-transparent.png

The [...] is a token identifying the resource to which to redirect: it must be a resource which appears in the redirection library.

For the redirect= filter option to be taken into account, some conditions must be met by the static filter, for efficiency purpose. The static filter ...

  • must be hostname-anchored, i.e. starts with ||.
  • must have one type specified -- negated types are not valid.
  • must have a redirect token which identifies an existing resource in the redirection library.

If at least one of the above conditions is not met, no redirection will take place, though the filter will still block matching network requests.


Issues closed as fixed:

Firefox


Pale Moon / SeaMonkey


Core


Commit history between 1.3.6 and 1.4.0

Version 1.3.6 1.4 MiB Works with Firefox for Android 24.0 - 41.*, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

Summary of changes:

Issue closed as fixed:


Commit history between 1.3.5 and 1.3.6

Version 1.3.5 1.4 MiB Works with Firefox for Android 24.0 - 41.*, Firefox 24.0 and later, SeaMonkey 2.21 and later, Thunderbird 31.0 and later

Summary of changes:

Issue closed as fixed:


Commit history between 1.3.4 and 1.3.5