Review status:
- Chrome: Published (Phased release at 5%)
- AMO: In review
- Opera: In review
- Edge: In review
The new version of AdGuard Browser Extension has undergone major changes that are not immediately noticeable. We’ve rewritten the whole filtering code in TypeScript and moved it into a new, separate library — this allows us to prepare the extension for a seamless transition to MV3.
A bit of background
Some time ago, we moved the extension's URL filtering engine into a separate library called tsurlfilter
. The main purpose of the library is to reuse the filtering logic in our products (browser extensions for Chrome and Firefox, rule converter for Safari, linter, etc).
The tsurlfilter
had two main parts:
- A filtering engine that matches URLs against the rules loaded into it
- A Chrome- and Firefox-specific programming interface responsible for applying the rules found
With MV3, we need to maintain filtering code not only for different browsers, but also for different manifest versions, as well as provide a seamless transition from MV2 to MV3 as browsers remove the old API. We're in no hurry to move to MV3 right away as its API is very limited.
Adding new logic to solve this problem in tsurlfilter
would have made the library too heavy, so we decided to design a new software platform that would hide the logic specific to different browsers and manifests behind a single and simple API. The new library was named tswebextension
.
The new tswebextension
library
With tswebextension
, it will be easier to maintain and update our products.
In the new version of the Browser Extension for Chrome and Firefox, we’ve completely redesigned the background service using tswebextension
— this will allow us to seamlessly move to MV3 in Chrome in future major releases.
In addition, we’ve updated the AdGuard API that also uses tswebextension
under the hood.
Changelog
Features
- Clicking any part of the item opens a dropdown list #2347
- Added new
$method
modifier to match requests by HTTP method - Reworked the rule prioritizing algorithm by adding more accurate calculation of weights for each rule type
- Content scripts are injected into open tabs when the extension starts
Fixes
- Scriptlets are not displayed in the request details bar of the Filtering log #2341
- Cosmetic rules are not applied on tabs deactivated by Chrome Memory Saver #2342
- Incorrect query parameters are inserted into the bug report #2352
- Custom filters aren’t updated #2356
- Filtering log does not display event types #2366
- The rule editor cannot be opened as a tab in the main browser window #2379
- Background tab is absent in the Filtering log #2381
- The pre-compiler hints and filter list sources for Edge and Opera are incorrect #2380
- Browsing Security cache is not cleared #2388
- Stealth Mode and Browsing Security are applied if AdGuard protection is disabled #2389
- Cosmetic rules are visible in the Filtering log, even though they were not applied #2387
- Fixed handling of document requests from external workers (e.g. Chrome’s omnibox)
- Fixed element collapser adding redundant styles to the element
Versions
- Scriplets updated to v1.9.62
tswebextension
updated to v0.3.6