Skip to content

Releases: ghostery/adblocker

v1.3.0

07 Oct 15:21
36df3b2
Compare
Choose a tag to compare
  • make it easier to use HTML filtering outside of WebExtensionBlocker #368
    • export isHTMLFilteringSupported
    • export filterRequestHTML
    • add id attribute on Request (takes requestId value in WebExtension)
  • export FilterType from main bundle.

v1.2.0

01 Oct 13:21
62f03f7
Compare
Choose a tag to compare
  • fix: cosmetics injection in Electron #358
  • removeListener regardless of engine config #359
  • feat: support subset of HTML filtering rules (^script:has-text(...)) #339
  • feat: add support for 'all' option #338
  • feat: add support for 'redirect-rule' option #337
  • chore: update local assets + generate compression codebooks #335
  • chore: clean-ups and small optimizations #334
    • rename engine to blocker in example projects (consistent naming)
    • enable on-the-fly compression in example projects
    • remove unused compact set exports (keep internal only)
    • remove explicit resourcesUrl in fromLists(...) (we always use the one served from CDN)
    • use bare for loops in compact sets and optimization framework
  • simplify reverse index by removing ad-hoc tokens handling #333

v1.1.0

17 Sep 07:27
747b69b
Compare
Choose a tag to compare
  • feat: allow disabling adblocking in WebExtension context #328
  • feat: allow disabling adblocking in Puppeteer page #328
  • feat: allow disabling adblocking in Electron session #328
  • feat: support inline-script and inline-font options #327

v1.0.2

02 Sep 16:48
388c165
Compare
Choose a tag to compare
  • fix: do not block main document requests #312

v1.0.1

28 Aug 08:49
15a4c64
Compare
Choose a tag to compare
  • fix (electron): prevent preload script from overwriting existing ones #302

v1.0.0

27 Aug 16:13
ef273e4
Compare
Choose a tag to compare

This marks the first "stable release" of @cliqz/adblocker. The project has been stable for a long while and running in production for millions of users. It was about time to graduate it to v1! This does not mark the end of the development and innovation but more of a "checkbox ticked"; people looking at the project can now safely feel like they can use it in production and @cliqz/adblocker will not let them down! In the future, we will continue supporting bleeding edge features, new filters and keep the performance great.

Changelog since v0.14.0:

  • small improvements #300
    • minify script injection wrapper to save a few bytes
    • rename 'engine' into 'blocker' in examples for consistency
    • use up-to-date resources.txt from CDN
    • drop 'collapse' type (not supported upstream anymore)
    • expose some extra symbols: detectFilterType and Resources
  • chore: clean-ups #294
    • Remove use of eslint completely (all source code is TypeScript so tslint is enough)
    • Remove Dockerfile, run_tests.sh
    • Move bench to TypeScript
    • Remove un-used bench/dataset/ folder
    • Make sure that all sub-packages can be installed and built independently (fix missing deps)
  • enable @cliqz/metalint for repository linting #255

v0.14.0

20 Aug 16:06
44baeed
Compare
Choose a tag to compare
  • update compression codebooks #289
  • clean-up and update local assets + add fanboy-cookiemonster.txt #289
  • only register listeners when network/cosmetics filtering is enabled #288
  • Improve cosmetics selector tokenization by supporting new cases #287
    • correctly tokenize #selector:not(...) and .selector:not(...)
    • correctly tokenize .selector1.selector2

v0.13.2

18 Aug 10:58
Compare
Choose a tag to compare
  • fix certificate issue with Pete Lowe adserver

v0.13.1

18 Aug 10:57
Compare
Choose a tag to compare
  • set Request.tabId to webContentsId in Electron platform

v0.13.0

16 Aug 14:37
82396e5
Compare
Choose a tag to compare
  • allow correct size allocation for data views #257

    Implement a mechanism which allows to predict the number of
    bytes needed to serialize any of the data-structures used by the
    adblocker, ahead of time (before serialization). This allows to lift
    the limitation of size completely (beforehand, we had to allocate
    a safe amount of memory to be sure there would be enough space).
    As a benefit, only the required amount of memory is used during
    initialization and updates, and there is no longer an arbitrary and
    hard-coded upper limit.

  • create new @cliqz/adblocker-content package with common utils #264

    We currently rely on rollup to create a small bundle for content
    related code imported from @cliqz/adblocker. Multiple times in
    the past the bundler was not aggressive enough and code from
    background was pulled in content bundles. To make sure we do not
    have this issue again, all these content-scripts helpers are moved
    into their own package.

  • provide helpers to download and build engines from lists #280

    This change allows to start blocking ads with very little logic in
    Webextension, Electron and Puppeteer platforms! To achieve this,
    blockers abstraction now provide static methods to fetch pre-built
    engines from Cliqz's CDN or build them from scratch using lists of URLs
    to subscriptions. Here is how it looks like:

    Webextension:

    import { WebExtensionBlocker } from '@cliqz/adblocker-webextension';
    
    WebExtensionBlocker.fromPrebuiltAdsAndTracking(fetch).then((blocker) => {
      blocker.enableBlockingInBrowser();
    });

    Electron:

    import { session } from 'electron';
    import fetch from 'cross-fetch'; // or 'node-fetch'
    
    import { ElectronBlocker } from '@cliqz/adblocker-electron';
    
    ElectronBlocker.fromPrebuiltAdsAndTracking(fetch).then((blocker) => {
      blocker.enableBlockingInSession(session.defaultSession);
    });

    Puppeteer:

    import puppeteer from 'puppeteer';
    import fetch from 'cross-fetch'; // or 'node-fetch'
    
    import { PuppeteerBlocker } from '@cliqz/adblocker-puppeteer';
    
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    
    PuppeteerBlocker.fromPrebuiltAdsAndTracking(fetch).then((blocker) => {
      blocker.enableBlockingInPage(page);
    });