uBlock Origin Version History

57 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.14.10 1.8 MiB Works with Firefox for Android 52.0 - *, Firefox 52.0 and later

See release notes.

Code review-related fix: a test was introduced in #2950, which purpose was meant to punycode only if required for Firefox 52-56. Turns out the regex used in the test was flawed and this caused the punycoding code path to be always taken, meaning a pointless added overhead in network request handlers for when no punycoding is needed. Fixed with 04a41d8b.

Commit history between 1.14.8 and 1.14.10.

Version 1.14.8 1.8 MiB Works with Firefox for Android 52.0 - *, Firefox 52.0 and later

Version 1.14.4 1.8 MiB Works with Firefox for Android 54.0 - *, Firefox 52.0 and later

See release notes.

Closed as fixed:

  • Firefox 52.2.1: uBlock suddenly disabled due to incompatibility
    • As per popular demand, I set the minimum version to 52.0. However be warned that some features are not available, like the privacy settings for example.
    • uBO/webext should not be used on Firefox for Android 54 and less, because there is no way to access uBO's UI. This was fixed in Firefox for Android 55, so best is that you move to the latest stable version of Firefox for Android.
  • A custom filter not working on uBO v1.13.11rc0 / v1.14.0, but working on 1.13.8 (regression from b2e89c9e).
    • I tried to find out how many filters from default filter lists were affected but I could not find any one filter in default filter lists, or any of the large regional lists.

Commit history between 1.14.0 and 1.14.4.

Version 1.14.0 1.8 MiB Works with Firefox for Android 54.0 - *, Firefox 52.0 and later

See release notes.

Changes

Due to the many reported issues with the webext-hybrid version of uBO, I am pushing the pure webext version of uBO to AMO. If this causes all your custom settings to be lost, you can recover them by following the steps outlined in the release notes of 1.13.10.

As required by AMO review process, the Firefox webext[-hybrid] version of uBO will no longer fetch the latest version of assets/filters/resources.txt from the project's repository.

The Firefox webext[-hybrid] version of uBO now uses indexedDB to store its cacheable assets<sup>[1]</sup>. There are positive and negative consequences as a result. See issue #2925 for details.

<sub>[1] "Cacheable assets" refer to: filter lists downloaded from remote servers; compiled (pre-parsed) filter lists; "selfie" (kind of dated doc but "selfie" part is still relevant).</sub>

Closed as fixed:



Commit history between 1.13.10 and 1.14.0.

Version 1.13.8 1.6 MiB Works with Firefox for Android 27.0 - 56.*, Firefox 24.0 - 56.*, SeaMonkey 2.24 - *, Thunderbird 31.0 - 45.*

See release notes.

Notes

Stock filter lists

I added code to enable me to remove stock filter lists in a seamless way for users. There are a couple of stock filter lists I wish to remove (because no longer maintained), but I refrain from doing so because it would be rude to remove a stock filter list which might be enabled for some users out there. The added code will convert removed stock filter lists which are enabled into imported filter lists, so that no change occurs in the resulting filterset from a user’s point of view.

Firefox WebExtensions

I plan to push the webext-hybrid version of uBO into uBO’s dev channel on AMO as soon as 1.13.8 is published. I don’t think the webext-hybrid qualifies as a webext, but is a necessary step to migrate user data seamlessly.

For up to date detailed documentation about the WebExtension version of uBlock Origin, see Firefox WebExtensions.

Closed as fixed:


Commit history between 1.13.4 and 1.13.8.

Version 1.13.4 1.6 MiB Works with Firefox for Android 27.0 - 56.*, Firefox 24.0 - 56.*, SeaMonkey 2.24 - *, Thunderbird 31.0 - 45.*

See release notes.

Closed as fixed:

  • Logger color too bright for cosmetic hiding [color-blind mode]
  • Inconvenient default hotkey mapping activation
    • You will have to assign yourself whatever keyboard shortcut you want, there are no longer default shortcuts.
    • Open about:config and search for ublock0.shortcuts. No value means no shortcut.
    • See modifiers for valid modifiers.
    • Modifiers and key must be dash-separated (-), example: alt-shift-Z.
    • For reference, here are the shortcuts which were originally added (now removed):
      • extensions.ublock0.shortcuts.launch-element-zapper: alt-Z
      • extensions.ublock0.shortcuts.launch-element-picker: alt-X
      • extensions.ublock0.shortcuts.launch-logger: alt-L
  • Settings gear not displaying in 1.13

Commit history between 1.12.4 and 1.13.4.

Version 1.13.0 1.6 MiB Works with Firefox for Android 27.0 - 56.*, Firefox 24.0 - 56.*, SeaMonkey 2.24 - *, Thunderbird 31.0 - 45.*

See release notes.

New

New static network filter option: csp=

This new filter option allows to inject any Content Security Policy header in pages matching the filter. See #1930 for discussion about the rationale behind this new filter option.

Some existing filters may be converted internally to csp=-based filters by uBO. For example, a filter such as |blob:$script,[...] will be converted to *$csp=script-src 'self' * data: 'unsafe-inline' 'unsafe-eval',[...], in order to enforce the blocking of blob:-based URIs for scripts, something otherwise not possible through the chrome.webRequest API.

Element zapper

Ability to zap DOM elements on the current page: the purpose is to quickly deal with the removal of nuisance elements on a page without having to create one or more filters: see documentation.

Support for keyboard shortcuts

Features which can be launched using a keyboard shortcut:

  • Enter element zapper mode: default to <kbd>Alt</kbd>-<kbd>Z</kbd>.
  • Enter element picker mode: default to <kbd>Alt</kbd>-<kbd>X</kbd>.
  • Open logger: default to <kbd>Alt</kbd>-<kbd>L</kbd>

You can re-configure the default shortcuts for the above commands by opening about:config and filtering with extensions.ublock0. The default shortcuts are built-in, if you want to re-defined or un-set them, you will have to create the entries:

  • extensions.ublock0.shortcuts.launch-element-zapper
  • extensions.ublock0.shortcuts.launch-element-picker
  • extensions.ublock0.shortcuts.launch-logger

To disable a built-in shortcut, set the value to -.

To reset to a default shortcut, reset the corresponding entry in about:config.

These about:config shortcut values are read only at launch time, so you will have to restart uBO for the changes to take effect.

Changes

Some refactoring work of static filtering engine

  • to be more modular and hence make it easier to extent filter syntax.
  • to lessen overhead overall.
  • to address #2598, #2630.
  • to extend filter syntax to support csp= filter option.

This is an important refactoring. At first my intention was to add support for csp= filter syntax, but this required some refactoring, and while at it I decided to address a lot of other details regarding static filtering engine which I meant to address since a while, hence the extent of the changes to the code.

As a result, I have observed that baseline memory footprint of uBO itself is 5-6 MB less with 1.13.0 compared to 1.12.4 on both Chromium and Firefox (Linux 64-bit, default uBO settings).

Improved compatibility with Adguard's filter lists

See #2624. I do plan to add Adguard's English filter lists to uBO's stock filter lists for the next stable release.

Given that both Adguard and uBO support advanced filter syntax not supported by ABP (which advanced syntax benefit end users and make a filter list maintainer's life easier), and given that EasyList maintainers are limiting themselves to support no more than what ABP can support, enabling Adguard's filter lists as default list in their respective locale is something I am considering.

Closed as fixed:


Commit history between 1.12.4 and 1.13.0.

Version 1.12.4 1.6 MiB Works with Firefox for Android 27.0 - 56.*, Firefox 24.0 - 56.*, SeaMonkey 2.24 - *, Thunderbird 31.0 - 45.*

See release notes.

Closed as fixed:


Commit history between 1.12.1 and 1.12.4.

Version 1.12.1 1.6 MiB Works with Firefox for Android 27.0 - 56.*, Firefox 24.0 - 56.*, SeaMonkey 2.24 - *, Thunderbird 31.0 - 45.*

No code change, just a re-package with more recent filter lists to ensure uBlock Origin works out of the box with EasyPrivacy without breaking Facebook upload feature: a filter in EasyPrivacy was causing a false positive.

For existing installations, just force an update of EasyPrivacy.

I did not look into the details, but at first glance it seems the false positive appeared as a result of Facebook changing its code. It's unlikely sites such as Facebook (who would rather not encourage the use of blockers) would test their pages when using a blocker in order to ensure their site still works fine with a blocker.

Today I learned: a whole lot of users have no clue that most blockers work based on filter lists which can cause false positives. The Facebook issue would have happened with any blocker making use of EasyPrivacy.

False positives must be reported to filter list maintainers (not here), and often just forcing an update of filter lists may resolve an issue (because maybe somebody else reported the issue and it was fixed by maintainers).

Version 1.12.0 1.6 MiB Works with Firefox for Android 27.0 - 56.*, Firefox 24.0 - 56.*, SeaMonkey 2.24 - *, Thunderbird 31.0 - 45.*

See release notes.

Changes

New static network filter option: badfilter. Using this option will prevent another filter to be loaded in memory. See https://github.com/uBlockOrigin/uAssets/issues/192 for rationale for having such a filter option.

Firefox WebExtension

Ability to support more request types from webRequest API: csp-report, font, media, websocket, and actually whatever is part of webRequest.ResourceType. This means uBO will be able to natively filter websocket connection attempts starting with Chromium 58.

Firefox

The webext version for Firefox has been converted into a hybrid version, to allow seamless migration of uBO's settings/data from a legacy extension to webext extension. **Update:** due to auto-update snafu, the webext version of uBO has been given a different id than the official one, this will guarantee that auto-update won't cause issue (you will have to update manually if using the webext version).

Important: If you install the webext version of uBO (you need the most recent build of Nightly), this is what will happen:

When you launch uBO/webext for the first time, it will read all your settings/data from the old storage and migrate them to the new webext storage. This happens **only** if uBO/webext can find a file named ublock0.sqlite. This will happens only once, the first time you install uBO/webext. Depending of how much data there is to migrate, this may cause your browser to work hard during that first launch and delay readiness.

Once the data from the uBO/legacy has been migrated to uBO/webext, each version of uBO will only see its own data, meaning no change in settings in one version will be seen by the other version. If you remove uBO/webext, this also removes the storage associated to it, meaning re-installing uBO/webext following removal will cause the storage migration code to kick in again.

Closed as fixed:


Commit history between 1.11.4 and 1.12.0.

Version 1.11.4 1.5 MiB Works with Firefox for Android 24.0 - 56.*, Firefox 24.0 - 56.*, SeaMonkey 2.21 - *, Thunderbird 31.0 - 45.*

Version 1.11.2 1.5 MiB Works with Firefox for Android 24.0 - 56.*, Firefox 24.0 - 56.*, SeaMonkey 2.21 - *, Thunderbird 31.0 - 45.*

See release notes.

Changes

Better support for selecting broad cosmetic filters (Ctrl-click) in element picker (see 1c4347d6).

Closed as fixed


Commit history between 1.11.0 and 1.11.2.

Version 1.11.0 1.5 MiB Works with Firefox for Android 24.0 - 56.*, Firefox 24.0 - 56.*, SeaMonkey 2.21 - *, Thunderbird 31.0 - 45.*

See release notes.

Changes

Asset managements was refactored: details.

The user interface of the "3rd-party filters" has been revisited:
  • To render better in devices with smaller screen.
  • Clicking "Update now" is no longer a blocking operation.
  • The home icon is a link to the support site for a given filter list.
  • The clock icon replaces the "purge cache" label.
    • Click to mark a filter list as out-of-date.
  • The custom filter lists input field has been repurposed to import external filter lists, as opposed to declare external filter lists as was the case before.
    • An imported filter list will have an "X" icon aside its name, to be used to remove the custom filter list.
  • You can now hide unused filter lists by clicking the global filter count at the top.

Procedural cosmetic filters can now be chained and recursive (something which was planned) .

New procedural cosmetic filter operators:
  • :has-text(argument): to filter elements according to whether they have a specific text string found in them. Use /.../ to match a literal regular expression instead of plain text.
  • :if()/:if-not(argument): use to implement recursion, argument is itself a valid procedural cosmetic filter, but can also be a plain CSS selector.

The cost of parsing procedural cosmetic filters has been moved from content script-time to filter list compile-time, i.e. done only once when a filter list is updated.

Documentation about procedural cosmetic filters has been updated.

The element picker supports all procedural cosmetic filters, i.e. it will also provide visual feedback as you enter manually such filters in the input field. Invalid filters, procedural or not, will be labelled with a bright red "E".

Closed as fixed


Commit history between 1.10.6 and 1.11.0.

Version 1.10.6 1.5 MiB Works with Firefox for Android 24.0 - 56.*, Firefox 24.0 - 56.*, SeaMonkey 2.21 - *, Thunderbird 31.0 - 45.*

Version 1.10.4 1.5 MiB Works with Firefox for Android 24.0 - 56.*, Firefox 24.0 - 56.*, SeaMonkey 2.21 - 2.40.*, Thunderbird 31.0 - 45.*

Version 1.10.2 1.5 MiB Works with Firefox for Android 24.0 - 56.*, Firefox 24.0 - 56.*, SeaMonkey 2.21 - 2.40.*, Thunderbird 31.0 - 45.*

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 - 56.*, Firefox 24.0 - 56.*, SeaMonkey 2.21 - 2.40.*, Thunderbird 31.0 - 45.*

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 - 56.*, Firefox 24.0 - 56.*, SeaMonkey 2.21 - 2.40.*, Thunderbird 31.0 - 45.*

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 - 56.*, Firefox 24.0 - 56.*, SeaMonkey 2.21 - 2.40.*, Thunderbird 31.0 - 45.*

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 - 56.*, Firefox 24.0 - 56.*, SeaMonkey 2.21 - 2.40.*, Thunderbird 31.0 - 45.*

Version 1.9.8 1.5 MiB Works with Firefox for Android 24.0 - 56.*, Firefox 24.0 - 56.*, SeaMonkey 2.21 - 2.40.*, Thunderbird 31.0 - 45.*

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 - 56.*, Firefox 24.0 - 56.*, SeaMonkey 2.21 - 2.40.*, Thunderbird 31.0 - 45.*

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 - 56.*, Firefox 24.0 - 56.*, SeaMonkey 2.21 - 2.40.*, Thunderbird 31.0 - 45.*

Version 1.9.2 1.5 MiB Works with Firefox for Android 24.0 - 56.*, Firefox 24.0 - 56.*, SeaMonkey 2.21 - 2.40.*, Thunderbird 31.0 - 45.*

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 - 56.*, Firefox 24.0 - 56.*, SeaMonkey 2.21 - 2.40.*, Thunderbird 31.0 - 45.0

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 - 56.*, Firefox 24.0 - 56.*, SeaMonkey 2.21 - 2.40.*, Thunderbird 31.0 - 45.0

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 - 56.*, Firefox 24.0 - 56.*, SeaMonkey 2.21 - 2.40.*, Thunderbird 31.0 - 45.0

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 - 56.*, Firefox 24.0 - 56.*, SeaMonkey 2.21 - 2.40.*, Thunderbird 31.0 - 45.0