1
1
mirror of https://github.com/gorhill/uBlock.git synced 2025-10-05 21:32:39 +02:00

Compare commits

...

2282 Commits

Author SHA1 Message Date
Raymond Hill
2a2e223fd9 Import translation work from https://crowdin.com/project/ublock 2025-10-05 10:41:10 -04:00
Raymond Hill
cdc5a4a0e7 [mv3] Use "split" mode for "incognito" manifest key
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/336
2025-10-05 10:29:58 -04:00
Raymond Hill
be14670b76 [mv3] Decrease granularity of hashes of generic cosmetic selectors
This reduces the size of content scripts with no downside.
2025-10-04 13:32:16 -04:00
Raymond Hill
4ee38a056e Remove stray character 2025-10-04 12:53:07 -04:00
Raymond Hill
0d4f55ff30 Update changelog 2025-10-04 10:27:24 -04:00
Raymond Hill
a43d1d8c42 Improve href-sanitizer scriptlet
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3650
2025-10-04 10:22:47 -04:00
Raymond Hill
41a65315f9 [mv3] Minor code change 2025-10-03 14:45:46 -04:00
Raymond Hill
5bcdf3731d New revision for dev build 2025-10-02 12:39:24 -04:00
Raymond Hill
cc30763c57 Update changelog 2025-10-02 12:38:35 -04:00
Raymond Hill
d376adaae8 Fix editInboundObjectFn utility scriptlet 2025-10-02 12:31:13 -04:00
Raymond Hill
d8ed2c2866 Update in-source code documentation 2025-10-02 12:30:06 -04:00
Raymond Hill
52bc354bce Improve trusted-replace-argument scriptlet 2025-10-02 12:27:45 -04:00
Raymond Hill
bf09ec0b99 Update submodules 2025-10-02 07:39:59 -04:00
Raymond Hill
a03de94729 import translation work from https://crowdin.com/project/ublock 2025-10-02 07:32:16 -04:00
Raymond Hill
f36d2b8496 Add ability to test against regex in JSONPath expressions
Related discussion:
https://github.com/uBlockOrigin/uAssets/issues/30157#issuecomment-3356048999
2025-10-01 11:35:15 -04:00
Raymond Hill
2b8ef3ee8e Revert "Make Firefox dev build auto-update"
This reverts commit 9f8d74b60f.
2025-10-01 11:23:47 -04:00
Raymond Hill
9f8d74b60f Make Firefox dev build auto-update 2025-10-01 11:22:48 -04:00
Raymond Hill
0ee49bcc29 Make Firefox dev build auto-update 2025-10-01 10:19:57 -04:00
Raymond Hill
8d721f6a68 Make Firefox dev build auto-update 2025-10-01 10:14:43 -04:00
Raymond Hill
bbd12ec2f3 New revision for dev build 2025-10-01 09:26:15 -04:00
Raymond Hill
54326a350b Update changelog 2025-10-01 09:25:43 -04:00
Raymond Hill
dd4f764920 Improve proxy-apply utility scriptlet 2025-10-01 09:21:43 -04:00
Raymond Hill
6623889920 [mv3] Improve details of troublshooting info
Also, avoid loading troubleshooting module in service worker as it's
of use only as a user interface component.
2025-09-29 13:07:59 -04:00
Raymond Hill
4b1f87710c [mv3] Minor CSS changes 2025-09-29 12:19:11 -04:00
Raymond Hill
e91c47846b [mv3] Fix issues with restore from file 2025-09-28 15:04:26 -04:00
Raymond Hill
bb8e3d4d47 Import translation work from https://crowdin.com/project/ublock 2025-09-28 14:35:14 -04:00
Raymond Hill
be1502feb3 [mv3] Avoid mouseenter/mouseleave on mobile devices
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/478
2025-09-28 11:24:23 -04:00
Raymond Hill
80cf4d9286 [mv3] Use manifest's path value to access static rulesets
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/503
2025-09-28 11:08:48 -04:00
Raymond Hill
f40dac91b9 Import translation work from https://crowdin.com/project/ublock 2025-09-28 09:28:14 -04:00
Raymond Hill
575f018c69 [mv3] Fine tuning details 2025-09-27 15:59:32 -04:00
Raymond Hill
6a9357e903 [mv3] Group toggle-based options all under same section 2025-09-27 13:57:00 -04:00
Raymond Hill
12418ae664 Import translation work from https://crowdin.com/project/ublock 2025-09-27 13:54:09 -04:00
Raymond Hill
2581004e8f [mv3] Add ability to backup/restore settings
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/482
2025-09-27 12:53:58 -04:00
Raymond Hill
f89de42364 Import translation work from https://crowdin.com/project/ublock 2025-09-27 12:34:44 -04:00
Raymond Hill
10e48d7ec5 Import translation work from https://crowdin.com/project/ublock 2025-09-27 12:31:08 -04:00
Raymond Hill
f441773f30 Update changelog 2025-09-26 11:57:51 -04:00
Raymond Hill
3e5ea3b03f Fix removeparam for multiple query parameters with same name
Related issue:
https://github.com/uBlockOrigin/uAssets/issues/30090
2025-09-26 11:55:38 -04:00
Raymond Hill
34d202f79d Import translation work from https://crowdin.com/project/ublock 2025-09-25 09:08:34 -04:00
Raymond Hill
93c5c077a0 [mv3] Minor CSS-related change 2025-09-25 08:57:55 -04:00
Raymond Hill
91d36749bb [mv3] Export using human-readable hostnames 2025-09-24 11:01:50 -04:00
Raymond Hill
4598ef3edc Import translation work from https://crowdin.com/project/ublock 2025-09-24 10:48:18 -04:00
Raymond Hill
8af80be5b2 [mv3] Add dashboard pane to manage custom filters
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/418
2025-09-24 10:42:18 -04:00
Raymond Hill
4fb4aa1b25 New revision for dev build 2025-09-22 19:10:56 -04:00
Raymond Hill
e2325f5e79 Update changelog 2025-09-22 19:10:34 -04:00
Raymond Hill
9aa91ba111 Improve trusted-click-element scriptlet
Related discussion/issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/2917
- https://github.com/uBlockOrigin/uAssets/discussions/30124

The "list of selectors" parameter is now a "list of steps". A step
can be:

- A selector, which tells the scriptlet to click a matching element. If
  no matching element is found, the scriptlet will wait for a matching
  element  to become available.
- An integer, which tells the scriptlet to wait n ms before processing
  the next step
- A directive, which is a string starting with `!` (not implemented yet)

If the last item in the list is an integer, this tells the scriplet to
override the built-in timeout value of 10s, such that the life time of
the scriptlet can now be extended beyond 10s.

Example:

  ..##+js(trusted-click-element, '1000, a, 500, b, c, 15000')

The scriptlet filter above will perform the following steps, in order:

- Prepare the scriptlet to timeout at 15s from now
- Wait 1000 ms
- Wait for element `a` to become available then click on it
- Wait 500 ms
- Wait for element `b` to become available then click on it
- Wait for element `c` to become available then click on it
- Abort if all the steps cannot be completed before 15s

The changes keep compatiblity with older syntax or with AdGuard
syntax.
2025-09-22 18:50:58 -04:00
Raymond Hill
705e6329eb Import translation work from https://crowdin.com/project/ublock 2025-09-22 12:46:13 -04:00
Raymond Hill
8de47f250d Improve google-ima shim
Related issue:
https://github.com/uBlockOrigin/uAssets/issues/30134
2025-09-22 10:41:36 -04:00
Raymond Hill
5127e17573 Update submodules 2025-09-21 09:53:25 -04:00
Raymond Hill
511a59584d [mv3][safari] Internally disable strict-blocking in Safari
Related discussion:
https://github.com/uBlockOrigin/uAssets/issues/30118#issuecomment-3315925462
2025-09-21 09:43:21 -04:00
Raymond Hill
1209119206 Unreference obsolete npm scripts
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3805
2025-09-20 09:21:14 -04:00
Raymond Hill
87dddb7d78 Add back a uBO-specific version of "CERT.PL's Warning List"
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/discussions/3793
2025-09-18 10:17:38 -04:00
Raymond Hill
836e04d110 [mv3][safari] Remove doc from removeParams rules
Related issues:
- https://github.com/uBlockOrigin/uBOL-home/issues/476
- https://github.com/uBlockOrigin/uBOL-home/issues/409
2025-09-17 13:34:28 -04:00
Raymond Hill
b3b2142fb6 [mv3][safari] Exclude "AdGuard URL Tracking Protection"
Related issues:
- https://github.com/uBlockOrigin/uBOL-home/issues/476
- https://github.com/uBlockOrigin/uBOL-home/issues/409
2025-09-16 09:15:12 -04:00
Raymond Hill
e9e1626f8e Update changelog 2025-09-15 09:34:21 -04:00
Raymond Hill
889c0eb208 Fix potential infinite loop when scanning for $ anchor
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3799

An infinite loop in the network filter parser was triggered when
the following conditions were fulfilled:

- There was a network option `$` anchor
- There were only whitespace character(s) preceding the anchor
- There was an invalid filter option following the anchor
2025-09-15 09:26:09 -04:00
Raymond Hill
cb767f4534 Remove obsolete files 2025-09-12 11:05:15 -04:00
Raymond Hill
edd26d27eb Remove obsolete files 2025-09-12 11:04:43 -04:00
Raymond Hill
9a5703fa0d Fix revision for next dev build 2025-09-12 10:52:56 -04:00
Raymond Hill
b7f4c1f5d7 Update submodules 2025-09-12 10:52:25 -04:00
Raymond Hill
3609ea66ed Make Firefox dev build auto-update 2025-09-12 09:24:50 -04:00
Raymond Hill
087bef3837 Update submodules 2025-09-11 09:52:57 -04:00
Raymond Hill
2943ef5112 [mv3] Don't use push() when large collections are possible
Otherwise this opens potential stack overflow issues.
2025-09-11 09:29:39 -04:00
Raymond Hill
e016a63f7b Lower maintenance burden: Drop assets that never result in feedback 2025-09-08 14:40:45 -04:00
Raymond Hill
126495d17a Update changelog 2025-09-08 14:20:21 -04:00
Raymond Hill
30e5e8c8ce Remove obsolete code 2025-09-08 14:09:55 -04:00
Raymond Hill
23056514cc New revision for dev build 2025-09-08 14:06:53 -04:00
Raymond Hill
e1028c299f Update changelog 2025-09-08 08:14:30 -04:00
Raymond Hill
8ce7a8d1e4 Update changelog 2025-09-08 08:13:35 -04:00
Raymond Hill
50cb780107 Fix version snafu
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3792
2025-09-08 08:11:20 -04:00
Raymond Hill
52dba4116e Allow generic exception for replace= option
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3791
2025-09-08 07:32:03 -04:00
Raymond Hill
5d88b72b47 Update README.md 2025-09-07 08:39:45 -04:00
Raymond Hill
f290d0a142 New revision for stable release 2025-09-06 12:26:03 -04:00
Raymond Hill
946a3d202c Update submodules 2025-09-06 10:23:09 -04:00
Raymond Hill
7eab358165 Fix makefile 2025-09-06 10:22:45 -04:00
Raymond Hill
0936b9b8b7 Import translation work from https://crowdin.com/project/ublock 2025-09-06 08:23:05 -04:00
Raymond Hill
abe144a79d Update submodules 2025-09-05 09:25:01 -04:00
Raymond Hill
80f7bd155a Make Firefox dev build auto-update 2025-09-05 09:17:31 -04:00
Raymond Hill
da9491c94e Update makefile 2025-09-04 09:51:02 -04:00
Raymond Hill
4fbcabbc66 [mv3] Move redirect/removeParams/modifyHeaders rules to static rulesets
Since permissions are now managed by the browsers, the browser will take
care whether to enforce those "usafe" rules according to the permissions
in effect on a given site.
2025-09-02 12:29:41 -04:00
Raymond Hill
8281eaba17 Update submodules 2025-09-02 10:19:49 -04:00
Raymond Hill
e86e1db87b New revision for release candidate 2025-09-02 10:03:51 -04:00
Raymond Hill
a0a996916f Update changelog 2025-09-02 10:03:28 -04:00
Raymond Hill
d2bce26e7d Improve prevent-fetch scriptlet
Add vararg `throttle, n` where `n` is the time to wait in ms before
returning a response from proxied `fetch()`.

As discussed with filter list maintainers.
2025-09-02 10:00:27 -04:00
Raymond Hill
8cdada4899 Update npm 2025-09-01 10:10:03 -04:00
Raymond Hill
7cdd78b595 Update submodules 2025-09-01 10:00:26 -04:00
Raymond Hill
07056c2de5 Update submodules 2025-08-31 11:09:15 -04:00
Raymond Hill
64858e9b9e Minor 2025-08-30 09:58:33 -04:00
Raymond Hill
17c6334cbd Import translation work from https://crowdin.com/project/ublock 2025-08-30 09:15:19 -04:00
Raymond Hill
d1a29d9899 [mv3] Ensure ui is visible even after failure 2025-08-29 11:19:24 -04:00
Raymond Hill
bc05f31cc2 [mv3] Merge AdGuard mobile filters with uBO's own mobile filters
Related discussion:
https://github.com/uBlockOrigin/uAssets/issues/20299#issuecomment-3228879091
2025-08-29 09:23:51 -04:00
Raymond Hill
57557ea116 New revision for release candidate 2025-08-28 11:19:33 -04:00
Raymond Hill
6f6724ce1a Update changelog 2025-08-28 11:17:51 -04:00
Raymond Hill
6327aae56c Add support to strict-block from ipaddress= option
As discussed with filter list maintainers.
2025-08-28 11:13:43 -04:00
Raymond Hill
31cd8b3983 Remove unused file 2025-08-25 17:01:20 -04:00
Raymond Hill
0d442f097f File moved to its own repo 2025-08-25 15:58:47 -04:00
Raymond Hill
353e1bacc1 Update submodules 2025-08-25 15:36:22 -04:00
Raymond Hill
aab425719c Move publish scripts in their own repo for easy reuse 2025-08-25 15:26:56 -04:00
Raymond Hill
30266e5107 Improve publish scripts 2025-08-25 15:10:36 -04:00
Raymond Hill
69fa0c2e09 [mv3] Fix regression in managing redirect rules
Regression cause by:
fad0af591f
2025-08-25 11:55:36 -04:00
Raymond Hill
f9ee5e2a64 Move to nodejs for publishing scripts 2025-08-24 17:26:04 -04:00
Raymond Hill
0e821284ab Update changelog 2025-08-23 13:05:43 -04:00
Raymond Hill
052c36aada [mv3] Fix placeholder references for regexSubstitution 2025-08-22 12:35:13 -04:00
Raymond Hill
cb62e38f50 [mv3] Improve built-in parser to convert filters to DNR rules
Ultimately and eventually, the built-in parser will be used to
convert filters to DNR rules at extension building time.
2025-08-22 08:14:52 -04:00
Raymond Hill
23d51b80df Make Firefox dev build auto-update 2025-08-21 11:08:23 -04:00
Raymond Hill
e8f6b7cd00 Update RELEASE.HEAD.md 2025-08-20 11:49:32 -04:00
Raymond Hill
c7e4ac48c3 New revision for dev build 2025-08-20 11:06:27 -04:00
Raymond Hill
9711039726 Update changelog 2025-08-20 11:06:04 -04:00
Raymond Hill
5d7e5ee3a0 Improve rendering with high-contrast theme
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3385
2025-08-20 11:02:35 -04:00
Raymond Hill
bc4e829427 [mv3] Support custom filters using CSS pseudo-elements
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/448
2025-08-20 10:26:45 -04:00
Raymond Hill
807d1b6cdb Fix checkbox visual when using high contrast
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3385
2025-08-19 11:50:58 -04:00
Raymond Hill
da025fef26 Update README.md 2025-08-18 09:40:32 -04:00
Raymond Hill
69b2fdf396 Reverting change of toolbar icon 2025-08-18 09:38:49 -04:00
Raymond Hill
060442c636 Revert "Add Safari toolbar icon"
This reverts commit 3f73887e47.
2025-08-18 09:36:33 -04:00
Raymond Hill
4b33b7bd7a Make Firefox dev build auto-update 2025-08-18 09:15:31 -04:00
Raymond Hill
f5d3d776d5 Make Firefox dev build auto-update 2025-08-18 09:15:17 -04:00
Raymond Hill
4814992c54 Import translation work from https://crowdin.com/project/ublock 2025-08-17 10:27:46 -04:00
Raymond Hill
895033de02 New revision for dev build 2025-08-17 08:24:01 -04:00
Raymond Hill
72e6c89b74 Update changelog 2025-08-17 08:06:06 -04:00
Raymond Hill
9327e19233 Fix undue fetch from remote server at first install
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3761

Regression from:
69fce3aa6e
2025-08-17 08:01:51 -04:00
Raymond Hill
fad0af591f [mv3] Add support for regexSubstitution from uritransform
Related commit:
aaf35d9d71
2025-08-16 15:36:52 -04:00
Raymond Hill
b7b5d926f0 Update changelog 2025-08-16 15:35:27 -04:00
Raymond Hill
4194fdec4b [mv3] Minor code review 2025-08-16 15:34:06 -04:00
Raymond Hill
5957656a5b [mv3][safari] Workaround for urlFilter with path part ending with ^
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/434
2025-08-16 14:59:22 -04:00
Raymond Hill
4d2cfd1487 [mv3][safari] Do not inject CSS in embedded contexts
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/446

Relateed WebKit issue:
https://bugs.webkit.org/show_bug.cgi?id=262491
2025-08-16 12:51:17 -04:00
Raymond Hill
a3e2cd4396 New revision for dev build 2025-08-16 09:08:00 -04:00
Raymond Hill
60ab2ad59c Fix regression in static filtering parser
Related commit:
aaf35d9d71
2025-08-16 09:06:25 -04:00
Raymond Hill
e9273470c5 New revision for dev build 2025-08-15 16:03:29 -04:00
Raymond Hill
0ce643bfc5 Update changelog 2025-08-15 16:03:06 -04:00
Raymond Hill
aaf35d9d71 Improve compatibility of uritransform= with DNR syntax
The `uritransform=` option will now be converted to a proper DNR
rule when the following condition are fulfilled:

- The value of the `uritransform` option matches `//[replacement]/`,
i.e. the pattern to match is empty, and only the replacement part is
provided.

- The filter pattern is a regex.

Is such case, the DNR rule will be a `redirect` making use of the
`regexSubstitution` property.

In case the above conditions are not fulfilled, the filter will
be discarded as incompatible with DNR syntax (as was the case
before).

This is potentially a breaking change, in cases where a filter
assumed that the part to match was the start of the path part of
a URL.

A reminder that `uritransform` is an option which requires a
trusted source, otherwise it is rejected.
2025-08-15 15:55:33 -04:00
Raymond Hill
25d9964b1e [mv3] Improve internal error reporting in troubleshooting info 2025-08-15 08:39:35 -04:00
Raymond Hill
d54c4a7052 [mv3] Fix unremovable custom filters created using older versions
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/435
2025-08-14 14:56:26 -04:00
Raymond Hill
718b3cdb97 [mv3] Fix custom filter list being unscrollable
Related discussion:
https://github.com/uBlockOrigin/uBOL-home/discussions/436
2025-08-14 08:58:57 -04:00
Raymond Hill
f3651bd866 Make Firefox dev build auto-update 2025-08-14 07:52:37 -04:00
Raymond Hill
07a1a51256 Make Firefox dev build auto-update 2025-08-14 07:52:23 -04:00
Raymond Hill
7d4e016297 [mv3] Use Safari-specific toolbar icon only for safari platform 2025-08-13 12:55:46 -04:00
Raymond Hill
5beca43c69 Merge branch 'uncw' 2025-08-13 12:46:50 -04:00
Raymond Hill
a6c9a9e9a4 GitHub Actions-related changes 2025-08-13 12:42:29 -04:00
Raymond Hill
9be4661294 New revision for dev build 2025-08-13 12:42:29 -04:00
Raymond Hill
17a363c2ff GitHub Actions-related changes 2025-08-13 12:42:29 -04:00
Raymond Hill
972ed1e520 Update changelog 2025-08-13 12:42:28 -04:00
Raymond Hill
22c07bd68b GitHub Actions-related changes 2025-08-13 10:57:32 -04:00
Raymond Hill
264acd5b10 New revision for dev build 2025-08-13 10:54:20 -04:00
Raymond Hill
5f14c816d0 GitHub Actions-related changes 2025-08-13 10:53:12 -04:00
Raymond Hill
e5fdfbb9f7 Update changelog 2025-08-13 10:48:17 -04:00
uncw
e6a8c87e0e Change Safari toolbar icon to an outlined version 2025-08-13 20:59:15 +08:00
uncw
3f73887e47 Add Safari toolbar icon 2025-08-12 23:46:22 +08:00
Raymond Hill
704f2dd734 [mv3] Code review implementation of custom "console"
Related commit:
28ea00fd11
2025-08-12 08:29:22 -04:00
Raymond Hill
18f9acd844 [mv3] Fix target URL when reporting from a strict-blocked page
Related feedback:
https://github.com/uBlockOrigin/uAssets/issues/29594#issuecomment-3176159770
2025-08-11 18:17:26 -04:00
Raymond Hill
28ea00fd11 [mv3] Share console error in troubleshooting information
This shoould help investigating issues, especially with mobile
devices, where the browser dev tools console is not available.
2025-08-11 17:53:59 -04:00
Raymond Hill
a1a5f3690f [mv3] Fix potentially unremovable custom filters
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/426
2025-08-10 12:44:42 -04:00
Raymond Hill
19a3de901c [mv3] Disable "strict blocking" by default in Safari
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/428#issuecomment-3172663563
2025-08-10 11:40:08 -04:00
Raymond Hill
07e9f805bb Allow usage of csp=/permissions= with resource type object
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3746
2025-08-10 09:22:17 -04:00
Raymond Hill
4d4826a029 Update README.md 2025-08-10 08:28:09 -04:00
Imre Eilertsen
b0ce6b6ac7 Attempted to add a GitHub Releases row to the "Install from" table (#3943)
* Attempted to add a GitHub Releases row to the "Install from" table

* Attempted to reflect the info.
2025-08-09 16:26:01 -04:00
Raymond Hill
faff035203 JSONPath: Add ability to select root node for appending/modifying
As discussed with filter list maintainers.

Examples of usage:

  $ => result is `null`
  $+={"modifyOrCreate": "..."}

These expressions were not working with previous version.
2025-08-09 13:56:02 -04:00
Raymond Hill
5629bf8a23 New revision for dev build 2025-08-09 11:14:36 -04:00
Raymond Hill
3ecad9a8c5 Update changelog 2025-08-09 11:13:51 -04:00
Raymond Hill
38ca6d41ff JSONPath: Add ability to substitute a pattern within a string value
As discussed with filter list maintainers.

Examples of JSON path expression to replace a pattern within a string
value:

  ..book.*.author=repl({"pattern": "Melville", "replacement": "Toto"})
  ..book.*.author=repl({"regex": "e", "replacement": "o"})
  ..book.*.author=repl({"regex": "e", "flags": "g", "replacement": "o"})

If the target value is not a string, no modification will occur.
2025-08-09 11:05:27 -04:00
Raymond Hill
cf70f2abbc [mv3] Add "EasyList -- Notifications"
Related feedback:
https://old.reddit.com/r/uBlockOrigin/comments/1mlj09l/
2025-08-09 08:59:28 -04:00
Raymond Hill
b9956a8d18 [mv3] Normalize request method names to lowercase in converter
Related issue:
https://github.com/uBlockOrigin/uBOL-home/discussions/153
2025-08-09 08:34:30 -04:00
Raymond Hill
c8da231453 [mv3] Make new spinner in "Filter lists" pane more noticeable 2025-08-08 12:30:09 -04:00
Raymond Hill
dfa47baddf [mv3] Remove spurious console message in content script
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/422
2025-08-08 11:50:35 -04:00
Raymond Hill
af6c247c0d [mv3] Import translation work from https://crowdin.com/project/ublock 2025-08-08 10:42:45 -04:00
Raymond Hill
93206e3241 [mv3] Propagate DNR API errors to "Filter lists" pane
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/317
2025-08-08 10:30:32 -04:00
Raymond Hill
5d0283d2ee Reduce/update npm dependencies 2025-08-08 09:03:52 -04:00
Raymond Hill
5dd0165359 [mv3] Fix link to privacy policy 2025-08-07 22:33:45 -04:00
Raymond Hill
e645fe7468 [mv3] Fix browser permissions scanning at launch
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/410
2025-08-07 12:44:27 -04:00
Raymond Hill
b6829698cc [mv3] Add spinner as visual feedback rulesets are being registered
Additionally, fixed a race condition where changes to rulesets would
not be ultimately registered when the changes were made during an
ongoing registration operation. This race condition would be
especially likely to occur on platforms where rulesets registration
take long.
2025-08-07 08:56:17 -04:00
Raymond Hill
31795fb6e6 [mv3] Remove obsolete code paths in picker tool 2025-08-06 13:28:30 -04:00
Raymond Hill
2d2de3a53b [mv3] Prevent scrolling taking over moving dialog in picker 2025-08-06 13:20:18 -04:00
Raymond Hill
1e0c64076f [mv3] Fix regression with highly generic cosmetic filters CSS files
Regression from:
56ba93700c

Related feedback:
https://old.reddit.com/r/uBlockOrigin/comments/1mi8fd6/ublock_origin_lite_for_ios/n725s6l/
2025-08-05 13:25:14 -04:00
Raymond Hill
e390822930 Revert "Remove file moved to uBOL-home repo"
This reverts commit 028893fe86.
2025-08-04 15:20:47 -04:00
Raymond Hill
472e8b53cd [mv3] Set minimum browser version for Safari 2025-08-04 15:15:42 -04:00
Raymond Hill
028893fe86 Remove file moved to uBOL-home repo 2025-08-04 13:25:41 -04:00
Raymond Hill
bbfe7400ac [mv3] Support important option for removeparam option
Related discussion:
https://github.com/uBlockOrigin/uAssets/issues/29451#issuecomment-3150181993

When transposing a `removeparam` dilter to a DNR rule, the semantic of
the `important` option changes to "overrides ` allow` rules".
2025-08-04 10:09:39 -04:00
Raymond Hill
bb1d085c8c Import translation work from https://crowdin.com/project/ublock 2025-08-03 16:04:17 -04:00
Raymond Hill
32bf5ebde3 [mv3] Add support for procedural cosmetic filters
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/325
2025-08-03 15:50:22 -04:00
Raymond Hill
e713e133eb Remove "CERT.PL's Warning List" from stock lists
Far too large to be used as a default or stock list.
2025-08-03 08:06:44 -04:00
Raymond Hill
171ddd3e06 Fix incorrect test
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3736
2025-08-01 10:38:40 -04:00
Raymond Hill
14a9572c86 Remove "AdGuard Tracking Protection"from stock list
It's not needed and too likely to interfere negatively with uBO's
default lists. It was added a long, long time ago when EasyPrivacy
wasn't making use of uBO's own advanced syntax, which is no longer
an issue.
2025-07-31 16:37:10 -04:00
Raymond Hill
5911a8ea7a [mv3] Remove Safari-specific warning 2025-07-31 16:29:19 -04:00
Raymond Hill
02f90d58f4 [mv3] Use default file permissions on created temp file
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/397
2025-07-30 08:45:16 -04:00
Raymond Hill
4f273c4284 [mv3] Temporarily comment out empty list as error 2025-07-28 10:00:25 -04:00
Raymond Hill
581144eeb8 Import translation work from https://crowdin.com/project/ublock 2025-07-28 09:28:47 -04:00
Raymond Hill
a986b45433 [mv3] Fix gutter click on last line 2025-07-28 09:18:15 -04:00
Raymond Hill
7d9317bb17 Improve fingerprint2.js shim 2025-07-28 09:14:32 -04:00
Raymond Hill
abeb5d1567 Make Firefox dev build auto-update 2025-07-26 09:28:06 -04:00
Raymond Hill
beab99b54a Import translation work from https://crowdin.com/project/ublock 2025-07-25 10:44:17 -04:00
Raymond Hill
626b9c7f2d [mv3] Don't disable lists according to DNR rule count
Some lists may be composed of only static extended filters.
2025-07-23 14:04:58 -04:00
Raymond Hill
1476ae4262 Import translation work from https://crowdin.com/project/ublock 2025-07-23 11:37:18 -04:00
Raymond Hill
d88814bc12 Add filter list for experimental filters 2025-07-23 10:34:19 -04:00
Raymond Hill
348f151e36 Also report char segment size 2025-07-22 11:19:16 -04:00
Raymond Hill
a94b4e12a9 Update changelog 2025-07-20 10:58:02 -04:00
Raymond Hill
47cbb43a0e Make google-ima a valid injectable scriptlet
Related feedback:
https://www.reddit.com/r/uBlockOrigin/comments/1m4dbk1/ublock_being_detected_on_south_park_studios/
2025-07-20 10:53:56 -04:00
Raymond Hill
23155d81cd New revision for dev build 2025-07-20 10:30:43 -04:00
Raymond Hill
4baf61371c Update changelog 2025-07-20 10:30:24 -04:00
Raymond Hill
fef50e59f2 Improve abort-current-script scriptlet
Prevent webpages from tampering with `textContent`.

Borrow solution from:
c2d7378e4d/src/scriptlets/abort-current-inline-script.js (L98-L99)
2025-07-20 10:26:31 -04:00
Raymond Hill
fed7f4a0b8 [mv3] Merge all :style() filters with procedural filters 2025-07-19 13:15:43 -04:00
Raymond Hill
8ae7c1501b Import translation work from https://crowdin.com/project/ublock 2025-07-18 15:18:56 -04:00
Raymond Hill
d7686a815e [mv3] Remove hostname normalization regarding filtering mode
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/388#issuecomment-3075440422
2025-07-18 13:53:01 -04:00
Raymond Hill
e07e7bbd09 Fix potential exception in procedural operator :matches-attr
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3720
2025-07-18 10:23:11 -04:00
Raymond Hill
bb9e2c0fc7 Import translation work from https://crowdin.com/project/ublock 2025-07-17 10:30:22 -04:00
Raymond Hill
9f5893cd88 Make Firefox dev build auto-update 2025-07-17 08:07:44 -04:00
Raymond Hill
3e0462e619 New revision for dev build 2025-07-16 09:24:40 -04:00
Raymond Hill
3d155889e9 Update changelog 2025-07-16 09:24:17 -04:00
Raymond Hill
b7510eee61 Improve reporting of reason option in strict-blocked pages
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/1195#issuecomment-3072981070
2025-07-15 12:10:10 -04:00
Raymond Hill
1e955bebbe Make Firefox dev build auto-update 2025-07-15 11:28:42 -04:00
Raymond Hill
eb28988054 [mv3] Minor code review 2025-07-14 12:33:51 -04:00
Raymond Hill
2c91bfc872 [mv3] Make the slider continuous rather than granular 2025-07-14 12:12:36 -04:00
Raymond Hill
cc7e7894c7 [mv3] Fix compatibility layer code 2025-07-14 11:28:02 -04:00
Raymond Hill
e75e128a34 [mv3] Load procedural CSS code on demand 2025-07-13 17:16:04 -04:00
Raymond Hill
6bfa7245f3 [mv3] Normalize rulesets read from package
This ensures rulesets are properly rendered in DNR ruleset viewer
in Safari.
2025-07-12 11:16:29 -04:00
Raymond Hill
1a8238e03e [mv3] Adjust CSS for small display 2025-07-12 11:13:10 -04:00
Raymond Hill
255b143c80 Import translation work from https://crowdin.com/project/ublock 2025-07-11 08:49:58 -04:00
Raymond Hill
9a20412a4a Update changelog 2025-07-11 08:39:05 -04:00
Raymond Hill
5c57415d7a [mv3] Minor CSS change 2025-07-11 08:36:21 -04:00
Raymond Hill
d94107284b New revision for dev build 2025-07-11 08:35:53 -04:00
Raymond Hill
b0396029bd Improve prevent-innerHTML scriptlet
Related issue:
https://github.com/uBlockOrigin/uAssets/issues/29148
2025-07-11 08:35:10 -04:00
Raymond Hill
2809b6cd18 Update changelog 2025-07-10 12:54:15 -04:00
Raymond Hill
689182f30b New version for stable release 2025-07-10 10:50:56 -04:00
Raymond Hill
f88ffcea04 [mv3] Slightly rework popup panel layout 2025-07-10 09:30:55 -04:00
Raymond Hill
887ae607dd [mv3] Fix usage of getMatchedRules() 2025-07-09 17:20:21 -04:00
Raymond Hill
d17afabffb Import translation work from https://crowdin.com/project/ublock 2025-07-09 11:17:18 -04:00
Raymond Hill
1bcb7520dd [mv3] Minor changes 2025-07-09 11:14:51 -04:00
Raymond Hill
6b7f929ec5 [mv3] Fix spurious filter conversion when pasting in editor 2025-07-08 09:47:37 -04:00
Raymond Hill
891b750de2 [mv3] Fine tune font size 2025-07-08 09:22:14 -04:00
Raymond Hill
d0e87d3521 [mv3] Mind long sentences in popup panel 2025-07-08 08:40:15 -04:00
Raymond Hill
28bc5905a8 Import translation work from https://crowdin.com/project/ublock 2025-07-08 07:55:56 -04:00
Raymond Hill
4dee9cd79c [mv3] Minor CSS change 2025-07-08 07:47:48 -04:00
Raymond Hill
1eec92419e [mv3] Mind admin-forbidden features in popup panel 2025-07-07 11:03:23 -04:00
Raymond Hill
a2d8429738 [mv3] Remove unused CSS declarations 2025-07-07 09:48:58 -04:00
Raymond Hill
a38aa48368 Import translation work from https://crowdin.com/project/ublock 2025-07-07 09:12:52 -04:00
Raymond Hill
f1551c56ea [mv3] Add ability to assign a shortcut to "Create a custom filter" 2025-07-06 19:06:19 -04:00
Raymond Hill
7dd6688ed3 [mv3] Minor CSS change 2025-07-06 18:47:38 -04:00
Raymond Hill
a393322f82 [mv3] Minor CSS change 2025-07-06 18:34:41 -04:00
Raymond Hill
ca222fa40e [mv3] Minor CSS change 2025-07-06 18:33:35 -04:00
Raymond Hill
624ad67da8 [mv3] Minor CSS change 2025-07-06 17:51:54 -04:00
Raymond Hill
3a4897db93 Import translation work from https://crowdin.com/project/ublock 2025-07-06 17:12:47 -04:00
Raymond Hill
ac159c5f08 Fix typo 2025-07-06 17:10:57 -04:00
Raymond Hill
45ab7feca6 Import translation work from https://crowdin.com/project/ublock 2025-07-06 17:04:28 -04:00
Raymond Hill
78305e11c9 Import translation work from https://crowdin.com/project/ublock 2025-07-06 16:59:43 -04:00
Raymond Hill
0b0294af4f [mv3] Add support for custom CSS-based cosmetic filters
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/325

This is a first version, with support only for custom filters which are
plain CSS selectors. Future versions will extend support to style-based
and procedural cosmetic filters.

Manually text-editing existing custom filters is currently not supported,
this will be added in a future version in the Develop pane. To remove
existing custom filters, the "Remove a custom filter" tool can be used.
2025-07-06 16:43:22 -04:00
Raymond Hill
cf13c4b4dc Make Firefox dev build auto-update 2025-07-05 11:06:00 -04:00
Raymond Hill
7c237e8217 New revision for dev build 2025-07-05 11:01:25 -04:00
Raymond Hill
b398bd8487 [regression] Normalize header names to lowercase
Related commit:
https://github.com/gorhill/uBlock/commit/408b538e75
2025-07-05 10:59:22 -04:00
Raymond Hill
76b72c9e65 Import translation work from https://crowdin.com/project/ublock 2025-07-03 09:46:52 -04:00
Raymond Hill
eec2045645 [mv3] Fix calculation of priority value when converting redirect filters 2025-07-03 09:22:09 -04:00
Raymond Hill
b5fae23329 Make Firefox dev build auto-update 2025-06-28 06:41:18 -04:00
Raymond Hill
f23518173e New revision for dev build 2025-06-28 06:21:31 -04:00
Raymond Hill
a25564559c Update changelog 2025-06-28 06:21:11 -04:00
Raymond Hill
e27bb85222 Import translation work from https://crowdin.com/project/ublock 2025-06-28 06:20:23 -04:00
Raymond Hill
66b68b4442 Reset important option flag at header evaluation time 2025-06-28 06:07:09 -04:00
Raymond Hill
9c08e902bd [mv3] Fix regression in syntax highlighting of dark theme 2025-06-24 20:44:14 -04:00
Raymond Hill
9bcfc8ff1c [mv3] Add access to troubleshooting info in About pane 2025-06-24 17:19:49 -04:00
Raymond Hill
27936f476e [mv3] Fix newline assistant in mode editor 2025-06-24 11:45:44 -04:00
Raymond Hill
3a473f8c48 Import translation work from https://crowdin.com/project/ublock 2025-06-24 10:56:43 -04:00
Raymond Hill
d9aba4acca [mv3] Use custom tokens for YAML document boundaries 2025-06-24 10:41:39 -04:00
Raymond Hill
8bcf533fc0 [mv3] Code review of uBO filter converter
Related commit:
e8fb0e1cc9
2025-06-22 17:06:35 -04:00
Raymond Hill
56ecd04816 Make Firefox dev build auto-update 2025-06-22 13:56:16 -04:00
Raymond Hill
e33bfc1f01 [mv3] Add support to exclude lists from specific platforms
Related discussion:
https://github.com/uBlockOrigin/uBOL-home/issues/358#issuecomment-2993687480
2025-06-22 12:07:06 -04:00
Raymond Hill
219c07609f New revision for dev build 2025-06-22 11:39:06 -04:00
Raymond Hill
0b6eea542f Update chengelog 2025-06-22 11:38:47 -04:00
Raymond Hill
253ef7ade3 Complete support for reporing strict-block messages
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/1195
2025-06-22 11:28:54 -04:00
Raymond Hill
1b00490a4d Import translation work from https://crowdin.com/project/ublock 2025-06-22 11:28:39 -04:00
Raymond Hill
001bd5841f Import translation work from https://crowdin.com/project/ublock 2025-06-22 11:27:19 -04:00
Raymond Hill
e8fb0e1cc9 [mv3] Add ability to convert pasted filters to DNR rules
WHen a uBO static network filter is pasted into the "Custom DNR
rules" editor, it will be converted into a DNR rule whenever
possible. At the moment, no feedback is provided when the conversion
fails -- this will be improved in the future.
2025-06-22 09:44:32 -04:00
Raymond Hill
527b4a201f Fix broken reverse lookup of filter lists
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/3684

Regression from:
8b696a691a
2025-06-22 08:05:34 -04:00
Raymond Hill
8d24b7130c Make Firefox dev build auto-update 2025-06-21 07:16:16 -04:00
Raymond Hill
69a2959028 New revision for dev build 2025-06-21 06:50:50 -04:00
Raymond Hill
d66d592ebb Update changelog 2025-06-21 06:50:30 -04:00
Raymond Hill
6e466cf945 Add [trusted-]edit-inbound-object scriptlets
As discussed with filter list maintainers.

@scriptlet edit-inbound-object.js
  @description
  Prune properties from an object passed as argument to a specific method.
  Properties can only be removed.
  @param propChain
  Property chain of the method to trap.
  @param argPos
  0-based position of the argument. Use negative integer for position relative
  to the end.
  @param jsonq
  A uBO-flavored JSONPath query.

@scriptlet trusted-edit-inbound-object.js
  @description
  Edit properties of an object passed as argument to a specific method.
  Properties can be assigned new values.
  @param propChain
  Property chain of the method to trap.
  @param argPos
  0-based position of the argument. Use negative integer for position relative
  to the end.
  @param jsonq
  A uBO-flavored JSONPath query.
2025-06-21 06:47:03 -04:00
Raymond Hill
754f61717a Import translation work from https://crowdin.com/project/ublock 2025-06-19 17:41:40 -04:00
Raymond Hill
d853f036c7 Import translation work from https://crowdin.com/project/ublock 2025-06-19 17:35:58 -04:00
Raymond Hill
1f5b4ccc53 Import translation work from https://crowdin.com/project/ublock 2025-06-18 12:40:48 -04:00
Raymond Hill
b73034523f Import translation work from https://crowdin.com/project/ublock 2025-06-17 12:12:14 -04:00
Raymond Hill
c1bd62ae24 [mv3] Start to implement better DNR rule assistant 2025-06-17 12:09:33 -04:00
Raymond Hill
5327502a32 [mv3] Fix content update in wrong editor mode 2025-06-16 18:17:50 -04:00
Raymond Hill
2f6fe675da Make Firefox dev build auto-update 2025-06-16 15:36:39 -04:00
Raymond Hill
7b3589b0d3 New revision for dev build 2025-06-16 15:23:34 -04:00
Raymond Hill
35750688bc Update changelog 2025-06-16 15:23:12 -04:00
Raymond Hill
0a8ea58bb7 Improve remove-cookie scriptlet
Related discussion:
afc6ff52ff (commitcomment-160172503)
2025-06-16 15:19:01 -04:00
Raymond Hill
33b92f91cb Import translation work from https://crowdin.com/project/ublock 2025-06-15 19:07:07 -04:00
Raymond Hill
f106a81052 Make Firefox dev build auto-update 2025-06-15 14:11:44 -04:00
Raymond Hill
f87d2955d5 New revision for dev build 2025-06-15 13:59:19 -04:00
Raymond Hill
59680e61f4 Update changelog 2025-06-15 13:58:48 -04:00
Raymond Hill
87e0434c90 Add json-edit-related scriptlets
edit-outbound-object-.js
 @description
 Prune properties from an object returned by a specific method.
 Properties can only be removed.
 @param jsonq
 A uBO-flavored JSONPath query.

trusted-edit-outbound-object.js
 @description
 Edit properties from an object returned by a specific method.
 Properties can be assigned new values.
 @param jsonq
 A uBO-flavored JSONPath query.

json-edit-xhr-request.js
 @description
 Edit the object sent as the body in a XHR instance.
 Properties can only be removed.
 @param jsonq
 A uBO-flavored JSONPath query.
 @param [propsToMatch, value]
 An optional vararg detailing the arguments to match when xhr.open() is
 called.

trusted-json-edit-xhr-request.js
 @description
 Edit the object sent as the body in a XHR instance.
 Properties can be assigned new values.
 @param jsonq
 A uBO-flavored JSONPath query.
 @param [propsToMatch, value]
 An optional vararg detailing the arguments to match when xhr.open() is
 called.

json-edit-fetch-request.js
 @description
 Edit the request body sent through the fetch API.
 Properties can only be removed.
 @param jsonq
 A uBO-flavored JSONPath query.
 @param [propsToMatch, value]
 An optional vararg detailing the arguments to match when fetch() is
 called.

trusted-json-edit-fetch-request.js
 @description
 Edit the request body sent through the fetch API.
 Properties can be assigned new values.
 @param jsonq
 A uBO-flavored JSONPath query.
 @param [propsToMatch, value]
 An optional vararg detailing the arguments to match when fetch() is
 called.
2025-06-15 13:55:09 -04:00
Raymond Hill
3a2bb62519 Improve trusted-set-cookie scriptlet
Ability to use regex value for `, domain, value` vararg.

Related discussion:
afc6ff52ff (commitcomment-160035082)
2025-06-14 09:26:27 -04:00
Raymond Hill
28d2326808 [mv3] Better support for toggling line comments 2025-06-13 19:08:11 -04:00
Raymond Hill
786cf0c802 License stuff 2025-06-13 18:22:26 -04:00
Raymond Hill
9ee42b26c1 [mv3] Support toggling line comment using official CodeMirror command 2025-06-13 17:54:20 -04:00
Raymond Hill
88d090b20a Import translation work from https://crowdin.com/project/ublock 2025-06-13 12:53:44 -04:00
Raymond Hill
b50341089d [mv3] Expand "Develop" pane
Move "No filtering" section in "Settings" to "Develop" pane. It is
now possible to view/edit the list of hostnames for any of the
filtering mode. This takes care of these issues:
- https://github.com/uBlockOrigin/uBOL-home/issues/270
- https://github.com/uBlockOrigin/uBOL-home/issues/297

Add ability to see all rulesets (read-only), to assist in investigating
filtering issues.
2025-06-13 12:46:05 -04:00
Raymond Hill
a12ed895dd Import translation work from https://crowdin.com/project/ublock 2025-06-13 12:37:25 -04:00
Raymond Hill
43a883396d [mv3] Fix regression in handling important option
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/368
2025-06-13 11:11:27 -04:00
Raymond Hill
ff8c527b99 [mv3] Revert trying to transpose requestDomains
This breaks uBOL -- unclear error message but disabling rulesets
eventually unbreak the extension, thus possibly a case of going
over the rule limit as a result of transposition.

The `requestDomains` issue will have to wait for the official
Safari fix.
2025-06-12 09:32:59 -04:00
Raymond Hill
7060be775c Import translation work from https://crowdin.com/project/ublock 2025-06-11 15:23:14 -04:00
Raymond Hill
e43de8c185 [mv3] Firefox doesn't yet support condition.responseHeaders 2025-06-11 09:40:52 -04:00
Raymond Hill
950f7920b3 [mv3] Update build script 2025-06-10 15:24:53 -04:00
Raymond Hill
9f3282d74f [mv3] Safari: expand rsach requestDomains entries into own rule
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/358
2025-06-10 15:18:47 -04:00
Raymond Hill
76d8b97869 [mv3] Collect/apply highly generic cosmetic exceptions across lists
Related issues:
- https://github.com/uBlockOrigin/uBOL-home/issues/365
- https://github.com/uBlockOrigin/uAssets/issues/28770
- https://github.com/uBlockOrigin/uAssets/issues/28129
2025-06-10 15:03:14 -04:00
Raymond Hill
deb3247ea2 Update README.md 2025-06-10 09:37:01 -04:00
u-RraaLL
4803e6f69b Edge status update (#3940) 2025-06-07 06:39:46 -04:00
Raymond Hill
508138764d [mv3] Properly refresh "Developer mode" checkbox on changes 2025-06-06 08:45:19 -04:00
Raymond Hill
a960140c30 Import translation work from https://crowdin.com/project/ublock 2025-06-03 16:56:10 -04:00
Raymond Hill
b81076224c Minor 2025-06-03 16:45:16 -04:00
Imre Eilertsen
fd049c9e1f Added 4 language codes for Firefox. (#3939)
* Added 4 language codes for Firefox.

* Added 4 language codes for Firefox.

* Added Kabyle to Liste AR as well.

As opposed to just AdGuard Français.

* Added Kabyle to Liste AR as well.
2025-06-03 15:40:06 -04:00
Raymond Hill
26381a557a Minor 2025-06-03 15:38:53 -04:00
Raymond Hill
e96e380ad1 Use CodeMirror's MergeView to highlight differences between before/after
To make it easier to analyze the effect of a jsonpath.
2025-06-03 10:21:53 -04:00
Raymond Hill
b2c4242138 [mv3] Fix error reporting in registerInjectables() 2025-06-03 07:39:38 -04:00
Raymond Hill
1a9c63254c [mv3] Report custom DNR rule count in troubleshooting information
As discussed internally.

The custom DNR rule count will be reported only when it's not zero,
and the count is only for effective DNR rules, i.e. it will not be
reported if "Developer mode" is not enabled.
2025-06-03 06:05:56 -04:00
Raymond Hill
eb46f42419 Make Firefox dev build auto-update 2025-06-01 14:46:02 -04:00
Raymond Hill
0983e62437 [mv3] Fine tuning editor code 2025-06-01 14:34:57 -04:00
Raymond Hill
0dac2206c3 Import translation work from https://crowdin.com/project/ublock 2025-06-01 13:52:48 -04:00
Raymond Hill
5de5d8c4a7 New revision for dev build 2025-06-01 13:50:35 -04:00
Raymond Hill
30a271a7ff Update changelog 2025-06-01 13:50:00 -04:00
Raymond Hill
4affe343dd Force cache bypass reload when no-scripting switch is toggled
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3652
2025-06-01 13:48:23 -04:00
Raymond Hill
fad39c6ce5 [mv3] Add support for code-folding and use custom stream parser 2025-06-01 13:29:46 -04:00
Raymond Hill
837451c17a Import translation work from https://crowdin.com/project/ublock 2025-05-31 11:32:54 -04:00
Raymond Hill
670e8dc367 [mv3] Add smart spacebar/return auto completion 2025-05-31 09:42:53 -04:00
Raymond Hill
e1f2c6f88d [mv3] Code review 2025-05-30 18:15:25 -04:00
Raymond Hill
ffb3fef073 [mv3] Add smart backspace in DNR rules editor 2025-05-30 11:23:45 -04:00
Raymond Hill
aa1c813763 Update changelog 2025-05-30 11:20:08 -04:00
Raymond Hill
55d45a6fb1 Code review: safer to split on official line separator
Will still join lines using the detected line separator.
2025-05-30 11:19:12 -04:00
Raymond Hill
008fc488c1 Make Firefox dev build auto-update 2025-05-30 11:16:22 -04:00
Raymond Hill
bc32794a47 New revision for dev build 2025-05-30 11:10:39 -04:00
Raymond Hill
44f04e3d3b Update changelog 2025-05-30 11:10:19 -04:00
Raymond Hill
ed9999efd6 Improve jsonl[...] suite of scriptlets
Reuse original line separator when reassembling JSONL lines.
2025-05-30 11:06:33 -04:00
Raymond Hill
fbb96c7234 Import translation work from https://crowdin.com/project/ublock 2025-05-30 08:06:25 -04:00
Raymond Hill
3d5d8e8220 Remove obsolete "shortcut" token from link rel="icon"
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3634
2025-05-30 06:56:10 -04:00
Raymond Hill
16a42566ff Update jsonpath tool to show transformation 2025-05-29 18:09:19 -04:00
Raymond Hill
b69f809d91 Need this to distinguish FilterMessage instances 2025-05-29 15:19:03 -04:00
Raymond Hill
c142d9af67 [mv3] Fix dnr-parser for Safari compatibility 2025-05-29 14:33:30 -04:00
Raymond Hill
6221cecf57 [mv3] Fix Safari's compatiblity layer 2025-05-29 14:18:46 -04:00
Raymond Hill
03f06ab6a9 Make Firefox dev build auto-update 2025-05-29 13:31:30 -04:00
Raymond Hill
1824a2bccf New revision for dev build 2025-05-29 13:26:57 -04:00
Raymond Hill
90547cdbf3 Update changelog 2025-05-29 13:26:13 -04:00
Raymond Hill
d8298bb067 Add support for network filter option message
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/1195
2025-05-29 13:23:56 -04:00
Raymond Hill
eb3f5a44a9 Import translation work from https://crowdin.com/project/ublock 2025-05-29 10:13:32 -04:00
Raymond Hill
6647ae55a9 Import translation work from https://crowdin.com/project/ublock 2025-05-29 10:10:27 -04:00
Raymond Hill
f2c0633216 [mv3] Add missing translatable string 2025-05-29 10:09:02 -04:00
Raymond Hill
cac62c6dc0 Import translation work from https://crowdin.com/project/ublock 2025-05-29 10:05:13 -04:00
Raymond Hill
9339a75952 [mv3] Add support for custom DNR rules
This feature is hidden behind the "Developer mode" setting in
the dashboard. When "Developer mode" is enabled, a tab named
"Develop" will become available in the dashboard. This tab is
meant to contain tools for technical users.

At the moment, the "Develop" pane allows to create custom DNR
rules through a (CodeMirror-based) editor.

For the sake of convenience, the DNR rule must be entered in
YAML-like format. The format is not really full compliant YAML,
just YAML-like, and very strict in order to ensure the parser
stays simple enough.

Lines starting with `#` are comments and will be ignored by the
parser.

Any line which do not match the parser's expectation will be
marked as invalid, and the whole DNR rule containing such invalid
lines will be discarded.

There must not be empty lines inside a rule definition.

Each DNR rule must be separated with a `---` line, which is
known as a YAML document separator.

String values must not be quoted, otherwise the quotes will be
considered part of the value. There is one exception: `''` will
be parsed as "an empty string".

The editor will attempt to auto-complete known DNR keywords. That
feature will improve over time.

Though the parser will identify some errors, not all invalid DNR
rules are currently identified by the parser, and these will be
reported when the rules are registered through the DNR API. Better
identifying invalid DNR rules at edit time will improve over time.

The editor will report `regexFilter` values which are not
supported by the DNR engine on the current platform.

The editor reacts to instances of `regexFilter: ...` to report
whether a regex value is supported. This means you can test for
a regex value by using `# regexFilter: ...` so that you do not
have to create an actual DNR rules just for the sake of testing.

Custom DNR rules can be exported into a JSON file (a format
known by the DNR API as a "static ruleset").

JSON-based ruleset can be imported, the content will be converted
to YAML-like syntax.

The editor will attempt to convert to YAML pasted content which
can be JSON-parsed. It's possible to paste partially or wholly
JSON-based rulesets.

When disabling "Developer mode", all custom DNR rules will be
unregistered from the DNR API. The DNR rules content will be left
intact in such case. Existing DNR rules will be registered into
the DNR API when re-enabling "Developer mode".

Administrators can prevent "Developer mode" from being enabled
by adding `develop` token to `disabledFeatures` setting.

Related discussion:
https://github.com/uBlockOrigin/uBOL-home/discussions/323

The main motivation is to give list maintainers a tool to assist
with resolving filter issues. Custom DNR rules can assist in
crafting and validating filters meant to work with uBOL.

A secondary motivation is to provide technical users the ability
to further customize their content blocker.

More conveniences will be added over time, this is a first version.
2025-05-29 09:06:02 -04:00
Raymond Hill
4e2585545b [mv3] This is not needed for uBOL 2025-05-25 19:10:18 -04:00
Raymond Hill
686eefd6b0 [mv3] Remove CERT.PL's Warning List 2025-05-25 18:55:39 -04:00
Raymond Hill
e077d36c6e Import translation work from https://crowdin.com/project/ublock 2025-05-25 18:17:20 -04:00
Raymond Hill
93d8e639ce [mv3] Code review last commit
Related commit:
2076d42239
2025-05-23 09:49:07 -04:00
Raymond Hill
2076d42239 [mv3] Add to troubleshooting info whether webext API calls failed
Related discussion:
https://github.com/uBlockOrigin/uBOL-home/issues/327#issuecomment-2904240310
2025-05-23 09:36:21 -04:00
Raymond Hill
13886f728d [mv3] Fix tag 2025-05-23 08:28:04 -04:00
Raymond Hill
ecc64ae125 [mv3] Give admins ability to prevent usage of zapper
Related issue:
https://github.com/uBlockOrigin/uBOL-home/pull/341
2025-05-22 16:53:11 -04:00
Raymond Hill
69d584a283 Make Firefox dev build auto-update 2025-05-22 15:06:34 -04:00
Raymond Hill
ca4430c0ba New revision for dev build 2025-05-22 14:52:59 -04:00
Raymond Hill
c5d1eb109e Update changelog 2025-05-22 14:51:19 -04:00
Raymond Hill
4eae23065e [mv3] Allow body element to vertically scroll
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/352
2025-05-22 13:19:02 -04:00
Raymond Hill
408b538e75 [mv3] Add support to convert header= option to DNR rules
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/157

The `header=` option will be converted into DNR's `responseHeaders`
condition.

There will be an attempt to convert regex-based values into DNR-
compatible syntax. Not all regex-based patterns can be converted to
use DNR's patterns with `*` and `?` special characters.

The implementation of `header=` option in uBO has been revisited to
improve compatibility with DNR syntax to minimize burden for list
maintainers when creating `header=` filters compatible with both
uBO and uBOL.

The changes:
- Header names are now case-insensitive by default
- Occurrences of `*` in non-regex-based header values now mean
  "matches any number of characters"
- Occurrences of `?` in non-regex-based header values now mean
  "matches zero or one character"

At time of commit, and as per MDN, only Chromium-based browsers
currently support filtering on repsonse headers:
https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/declarativeNetRequest/HeaderInfo

Also as per MDN, Chromium 121-127 silently ignore the `responseHeaders`
condition, potentially causing undue blocking of network requests.
Currently uBOL support Chromium 122 and later, meaning we need to mind
potential false positives in Chromium 122-127 for filters using
`header=` option.
2025-05-22 11:46:08 -04:00
Raymond Hill
c44f043ed3 Counter CodeMirror's pointer-events: none on scrollbars
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3645
2025-05-22 08:39:29 -04:00
Raymond Hill
eee279be01 [mv3] Add codemirror-ubol as submodule 2025-05-21 08:01:21 -04:00
Raymond Hill
ee7af6f005 Make Firefox dev build auto-update 2025-05-20 12:26:37 -04:00
Raymond Hill
943a63d1e6 Update changelog 2025-05-20 12:17:08 -04:00
Raymond Hill
1b0f2ac14c New revision for dev build 2025-05-20 12:15:48 -04:00
Raymond Hill
0130fdf4a1 Fix element picker issue with explicit dark theme
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3624
2025-05-20 12:14:33 -04:00
Raymond Hill
cdd46c5c7b Minor change 2025-05-20 11:59:32 -04:00
Raymond Hill
4888ec6d35 Add tool to evaluate uBO-flavored JSONpath expressions
Requires a local server in root of repo:
python3 -m http.server

Then load the following URL in the browser:
http://localhost:8000/tools/jsonpath-tool.html
2025-05-20 10:14:35 -04:00
Raymond Hill
7ee99e6875 [mv3] Add fallback fetch in case main one fails 2025-05-20 07:34:05 -04:00
Raymond Hill
a59daf5978 [mv3] Forgot to commit new CSS file 2025-05-19 19:02:41 -04:00
Raymond Hill
13b7f381b2 [mv3] Safari: warn to not open filter issues for stable Safari
Related issue:
https://github.com/uBlockOrigin/uAssets/issues/28408

Stable Safari is known to not block certain network requests due to
the current state of the DNR engine in Safari. The warning is to
ensure volunteers are not burdened by issues originating from the
browser.

Eventually Safari's DNR implementation will catch up with the
specification, at which time the warning will be removed.
2025-05-19 16:55:27 -04:00
Raymond Hill
05f7a7b8c3 [mv3] Minor code review 2025-05-19 10:41:15 -04:00
Raymond Hill
be8b6238d3 [mv3] Add browser info in troubleshooting data 2025-05-19 10:39:31 -04:00
Raymond Hill
ed10973717 [mv3] Add "AdGuard -- Mobile Ads"
Maybe related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/351

The list is enabled by default on mobile devices.
2025-05-18 09:55:20 -04:00
Raymond Hill
4c6f8222af Import translation work from https://crowdin.com/project/ublock 2025-05-18 09:00:28 -04:00
Raymond Hill
4aa16e9409 [mv3] Add missing image 2025-05-18 08:57:48 -04:00
Raymond Hill
ce4a4fcd75 [mv3] Minor CSS change 2025-05-18 08:50:54 -04:00
Raymond Hill
6d2123b196 Update README.md 2025-05-17 08:10:49 -04:00
Raymond Hill
b2c9be14cf [mv3] Code review: matches is never empty 2025-05-16 10:30:20 -04:00
Raymond Hill
aa696d0669 Ignore lib directory when linting 2025-05-16 08:52:36 -04:00
Raymond Hill
4c99471a25 [mv3] Avoid passing empty arrays to scripting.registerContentScripts
Maybe related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/344
2025-05-15 11:20:52 -04:00
Raymond Hill
a551d1cc01 [mv3] Editor font size 2025-05-15 07:26:40 -04:00
Raymond Hill
907e33ef59 Update README.md 2025-05-14 17:33:10 -04:00
Raymond Hill
2322038e8f Update README.md 2025-05-14 17:32:20 -04:00
Raymond Hill
ae461f47d3 Update README.md 2025-05-14 17:31:49 -04:00
Raymond Hill
9491fcdb2e Update README.md 2025-05-14 17:31:26 -04:00
Raymond Hill
fd5da3fcd2 [mv3] Use CodeMirror editor for list of no-filtering websites
This is a first step to integrate CodeMirror6 into the project.

As a side effect, this should take care of:
https://github.com/uBlockOrigin/uBOL-home/issues/297

Though most likely the list of no-filtering websites will probably
move to its own pane as in uBO in some future.
2025-05-14 17:20:55 -04:00
Raymond Hill
d12e7817d2 [mv3] Add ability to reset zapper selection on mobile devices 2025-05-14 10:02:37 -04:00
Imre Eilertsen
7e239db9a8 Added AdGuard's 2 newest !#if tokens. (#3938) 2025-05-13 12:38:33 -04:00
Raymond Hill
ed3a0b8ab9 [mv3] Remove hard-coded line height 2025-05-13 10:52:42 -04:00
Raymond Hill
71244bc37b New revision for stable release 2025-05-13 09:18:38 -04:00
Raymond Hill
3e39e5beab [mv3] CSS fine tuning 2025-05-13 08:00:39 -04:00
Raymond Hill
84db4585f5 [mv3] Fix popup width for Firefox 2025-05-12 19:31:40 -04:00
Raymond Hill
9763a79c01 [mv3] Minor CSS adjustments 2025-05-12 18:00:14 -04:00
Raymond Hill
569dfea3cb [mv3] Have the slider button size dictates all other dimensions 2025-05-12 16:55:23 -04:00
Raymond Hill
82c6d5e8ff Make Firefox dev build auto-update 2025-05-12 08:40:38 -04:00
Raymond Hill
7c5c9beda6 Update changelog 2025-05-12 07:51:41 -04:00
Raymond Hill
c02c571b3e New revision for release candidate 2025-05-12 07:50:22 -04:00
Raymond Hill
8cd6212867 Use custom blank page for embedded iframe in dashboard
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3631#issuecomment-2870424577
2025-05-12 07:48:42 -04:00
Raymond Hill
e3a3026cac Use custom blank page for embedded iframe in dashboard
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3631#issuecomment-2870424577
2025-05-12 07:46:33 -04:00
Raymond Hill
a075442e1c Import translation work from https://crowdin.com/project/ublock 2025-05-11 10:37:24 -04:00
Raymond Hill
2e7d0a07e7 [mv3] Add TODO comment 2025-05-11 10:36:21 -04:00
Raymond Hill
3ff54b7f2a [mv3] Just force a reload when URL doesn't change
Most of the time the URL doesn't change and just forcing a reload
of the page is sufficient. When a document is strict-blocked, the
URL must be updated however.
2025-05-11 10:34:49 -04:00
Raymond Hill
63eeaae5e9 Make Firefox dev build auto-update 2025-05-11 10:31:14 -04:00
Raymond Hill
3508176fcc New revision for release candidate 2025-05-11 10:23:31 -04:00
Raymond Hill
60735f88f9 New revision for release candidate 2025-05-11 10:22:56 -04:00
Raymond Hill
5c029b3532 Use color-scheme meta tag as suggested
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3631
2025-05-11 10:17:17 -04:00
Raymond Hill
3650117b4f Fix background color of navigation bar
Related commit:
b604524c2f
2025-05-11 09:41:34 -04:00
Raymond Hill
b604524c2f Explicitly set background color according to state of prefers-color-scheme
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3631
2025-05-11 09:30:34 -04:00
Raymond Hill
3292f128d2 [mv3] Mind discarded regex- or path-based entries when determining genericity
Related issue:
https://github.com/uBlockOrigin/uAssets/issues/28260
2025-05-11 07:32:32 -04:00
Raymond Hill
a83be19987 [mv3] Remove equivalence between chromium and safari 2025-05-10 12:32:09 -04:00
Raymond Hill
8a7f1589ec [mv3] Expose setExtensionActionOptions in Safari compatibility layer
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/327#issuecomment-2864897864
2025-05-10 12:21:51 -04:00
Raymond Hill
1c98faf46c [mv3] Safari works; use 3-component version for uBOL
uBOL doesn't pass validation when using 4-component versioning,
so falling back to 3-component versioning for all platforms to
avoid special case.
2025-05-08 16:53:07 -04:00
Raymond Hill
df9cd6c9a2 Import translation work from https://crowdin.com/project/ublock 2025-05-08 10:09:03 -04:00
Raymond Hill
cc2760f4d6 [mv3] New approach to toggle toolbar icon not requiring extra permissions
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/198#issuecomment-2855135571

As a result, the permissions `tabs` and `webNavigation` have been removed.
2025-05-07 08:53:59 -04:00
Raymond Hill
0ee6e3044d [mv3] No need to retry sending messages with top-level listener 2025-05-07 07:47:28 -04:00
Raymond Hill
f40b989dc8 Fix makefile 2025-05-05 08:37:26 -04:00
Raymond Hill
58f5c53fbb [mv3] Fix strict-block exceptions caused duplicate rule ids
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/304
2025-05-05 08:04:21 -04:00
Raymond Hill
3cd04c3806 Fix list name; also change for uBOL 2025-05-04 06:42:42 -04:00
Raymond Hill
47f1a19e9e Change stock UKR list to AdGuard-maintained list 2025-05-04 06:37:31 -04:00
Raymond Hill
e384f2b612 [mv3] Build script changes 2025-05-02 14:45:06 -04:00
Raymond Hill
48146f8351 [mv3] Address various issues for Safari build 2025-05-02 14:33:33 -04:00
Raymond Hill
6a088a7477 Make Firefox dev build auto-update 2025-05-02 09:22:57 -04:00
Raymond Hill
a4ba51a790 Import translation work from https://crowdin.com/project/ublock 2025-05-02 09:05:53 -04:00
Raymond Hill
e94ba8afad Update changelog 2025-05-02 09:04:30 -04:00
Raymond Hill
03bea3aafc New revision for release candidate 2025-05-02 09:02:55 -04:00
Raymond Hill
3f59f94b60 Bring zapper look in line with uBO Lite's zapper 2025-05-02 08:56:30 -04:00
Raymond Hill
ea0c400c51 Revert "Allow user to change CodeMirror input style in "My filters""
This reverts commit cf7777e9fd.
2025-05-02 08:43:47 -04:00
Raymond Hill
457dd7acdb [mv3] Remove "OpenPhish Domain Blocklist" as per "Terms of Use"
Excerpt from <https://openphish.com/terms.html>:

> Except as expressly permitted by OpenPhish in writing, you agree not
> to license, sell, rent, lease, transfer, assign, distribute, display,
> disclose, create derivative works or otherwise make all or any portion
> of the information obtained through the Services available to any
> third party.
2025-04-30 10:00:35 -04:00
Raymond Hill
1d1490523d [mv3] Fix incorrect DNR priority for redirect/important filters 2025-04-30 08:50:45 -04:00
Raymond Hill
9ac12647d1 Make Firefox dev build auto-update 2025-04-28 17:57:06 -04:00
Raymond Hill
2c4819ac74 New revision for dev build 2025-04-28 17:46:11 -04:00
Raymond Hill
8df96e4718 Fix regression in parsing of AG's [domain=...] syntax
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3235#issuecomment-2836674712

Related commit:
8b696a691a (diff-848f3a5c8459fe07d1c65764e30b7c9471be77f9e9574674442319b831138024)
2025-04-28 17:43:44 -04:00
Raymond Hill
526af62864 [mv3] Fix overzealous strict-blocking in Safari 2025-04-28 10:56:43 -04:00
Raymond Hill
e048790036 Make Firefox dev build auto-update 2025-04-27 11:06:27 -04:00
Raymond Hill
c2eee87029 Import translation work from https://crowdin.com/project/ublock 2025-04-27 10:55:12 -04:00
Raymond Hill
daa0025157 New revision for dev build 2025-04-27 10:52:18 -04:00
Raymond Hill
cf7777e9fd Allow user to change CodeMirror input style in "My filters"
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3613
2025-04-27 10:50:21 -04:00
Raymond Hill
b4aea4ab27 [mv3] Avoid pointless messaging when no changes at beforeunload 2025-04-27 09:02:29 -04:00
Raymond Hill
6c84ae7aba [mv3] Support disabling all lists
Related discussion:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/943
2025-04-27 08:22:04 -04:00
Raymond Hill
5e64ace64d [mv3] Code review of safari-specific code 2025-04-26 10:11:33 -04:00
Raymond Hill
ef9709fb07 [mv3] Safari does not support resource type object
Need to filter out DNR rules with `object`, otherwise this causes
a failure when adding the rules dynamically.
2025-04-25 19:26:16 -04:00
Raymond Hill
a56e13156f [mv3] Add more managed policies
"showBlockedCount": Boolean, to enable/disable the badge count on the
toolbar icon.

"strictBlockMode": Boolean. to enable/disable strict-blocking.

Related issues/discussion:
- https://github.com/uBlockOrigin/uBOL-home/discussions/35#discussioncomment-12567804
- https://github.com/uBlockOrigin/uBOL-home/issues/334
2025-04-25 11:25:50 -04:00
Raymond Hill
e5efe64d20 [mv3] Code review 2025-04-25 08:06:19 -04:00
Raymond Hill
e029060889 [mv3] Use safer env variable names
Related feedback:
https://github.com/uBlockOrigin/uBOL-home/issues/327#issuecomment-2823012715
2025-04-25 07:47:40 -04:00
anewuser
84ad64daea Update README.md (#3937) 2025-04-25 07:30:17 -04:00
Raymond Hill
ed66a8d157 [mv3] Code review 2025-04-24 19:47:29 -04:00
Raymond Hill
203b2235aa [mv3] Reflect no-filtering mode on the toolbar icon
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/198
2025-04-24 19:42:59 -04:00
Raymond Hill
83d62b9aca Make Firefox dev build auto-update 2025-04-24 13:44:06 -04:00
Raymond Hill
0e5dec7fbb [mv3] Separate EasyList, EasyPrivacy, PGL lists from uBlock filters
Additionally, remember `badfilter` filters across conversion of
filter lists to DNR rulesets.
2025-04-24 09:58:31 -04:00
Raymond Hill
bd6263078f New revision for dev build 2025-04-23 09:40:26 -04:00
Raymond Hill
79a77f915a Update changelog 2025-04-23 09:40:00 -04:00
Raymond Hill
0243a141a7 Ignore start_page transition for popup-blocking purpose
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2227
2025-04-23 09:34:00 -04:00
Raymond Hill
b4eae1ef0b Make Firefox dev build auto-update 2025-04-22 09:56:04 -04:00
Raymond Hill
c86beb3a37 Update changelog 2025-04-22 09:40:21 -04:00
Raymond Hill
89ba371fbe New revision for dev build 2025-04-22 09:38:52 -04:00
Raymond Hill
59f4aca010 Exclude chrome: as valid openers for popup candidates
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2227
2025-04-22 09:34:26 -04:00
Raymond Hill
9c523f0325 Make Firefox dev build auto-update 2025-04-21 15:51:02 -04:00
Raymond Hill
6cc63d825e New revision for dev build 2025-04-21 15:46:06 -04:00
Raymond Hill
2ee90bf22f Update changelog 2025-04-21 15:45:55 -04:00
Raymond Hill
8b964a8c54 Fetch diff patches from "reliable" servers only
Some CDN servers take too long to mirror updated resources,
potentially preventing diff-updating to work reliably as
intended.
2025-04-21 15:42:04 -04:00
Raymond Hill
b5642ba602 [mv3] Minor 2025-04-21 13:21:08 -04:00
Raymond Hill
d3f39c97d1 [mv3-safari] Fix broken zapper due to latest changes
Related commit:
22e848c9c2
2025-04-21 12:58:44 -04:00
Raymond Hill
d17da2b081 Import translation work from https://crowdin.com/project/ublock 2025-04-21 09:42:58 -04:00
Raymond Hill
1d53441456 [mv3] Simplify sendMessage
onMessage() is now a listener installed synchrnously when uBOL
executes, so no longer need to deal with failure to send messages.

Related commit:
ab458b492a
2025-04-21 08:13:16 -04:00
Raymond Hill
22e848c9c2 [mv3] Fix zapper
Regression from:
b5651417aa
2025-04-21 08:11:22 -04:00
Raymond Hill
34d6abca6d Revert "[mv3] Programmatically inject content scripts on version change"
This reverts commit d0e32a5f47.
2025-04-20 16:58:16 -04:00
Raymond Hill
d0e32a5f47 [mv3] Programmatically inject content scripts on version change
Related issue:
https://github.com/w3c/webextensions/issues/617
2025-04-20 16:44:08 -04:00
Raymond Hill
782fff35ea [mv3] Split code path for wakeup versus launch status
Additionally, leave more regex rooms for non-strictblock rules.
2025-04-20 12:17:57 -04:00
Raymond Hill
2bd09e6f84 [mv3] Code review of conversion to DNR ruleset
- Ensure no duplicates in domain collection fields
- Sort rules according to the number of entries in their
  domain collections
2025-04-20 12:14:29 -04:00
Raymond Hill
de7a406920 [mv3] Minor code review 2025-04-19 17:52:28 -04:00
Raymond Hill
39b505a52e [mv3] Fix safari build script 2025-04-19 14:39:00 -04:00
Raymond Hill
39913a8212 Fix Edge build script 2025-04-19 14:17:46 -04:00
Raymond Hill
8a14a8dc6b Import translation work from https://crowdin.com/project/ublock 2025-04-19 14:02:32 -04:00
Raymond Hill
fbe1ba018e [mv3] Remove unused file 2025-04-19 13:34:34 -04:00
Raymond Hill
b5651417aa [mv3] Merge Safari branch
Safari version of uBO Lite can now be built from master branch.

Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/327
2025-04-19 13:08:59 -04:00
Raymond Hill
8016e7733a [mv3] Move ruleset details into external config file 2025-04-19 08:37:29 -04:00
Raymond Hill
63ea23f334 [mv3] Minor change to build script 2025-04-18 07:57:21 -04:00
Raymond Hill
fd3a8720e9 Minor test to avoid code path 2025-04-16 16:14:58 -04:00
Raymond Hill
c299d39117 Import translation work from https://crowdin.com/project/ublock 2025-04-16 15:21:14 -04:00
Raymond Hill
a1689fb9d0 [mv3] Fix JSON, add description 2025-04-16 15:13:52 -04:00
Raymond Hill
b8adf5b027 [mv3] Add admin setting defaultFiltering
Setting name: "defaultFiltering"
Type: string
Valid values: "none", "basic", "optimal", "complete"

Additionally, fix default "basic" mode toggling back to "optimal"
upon extension restart when uBOL has broad host permissions. The
default mode will toggle automatically only when there is a change
in broad host permissions status.
2025-04-16 15:04:47 -04:00
Raymond Hill
3b34f9439a Import translation work from https://crowdin.com/project/ublock 2025-04-16 08:39:43 -04:00
Raymond Hill
ec19e352b1 [mv3] Mitigate issues when hitting regex-based rules limit
When there are too many regex-based rules, uBOL will start to drop
some strict-block rules to comply with the framework limit regarding
the maximum number of regex-based rules.

Related issues:
- https://github.com/uBlockOrigin/uBOL-home/issues/317
- https://github.com/w3c/webextensions/issues/744
2025-04-16 08:19:52 -04:00
Raymond Hill
e20e6addf0 [mv3] Mind excluded to= hostnames in strict-block rules 2025-04-16 08:18:26 -04:00
Raymond Hill
eaedaf5b10 Fix regexes with potential catastrophic backtracking
The quoted email below was sent to ubo-security at raymondhill dot net:

=====
Dear Raymond,

I am writing to report a potential Regular Expression Denial of Service (ReDoS)
vulnerability in the 1p-filters.js script of uBlock Origin. The vulnerability
occurs due to the use of the regular expression /\s+$/, which is used to remove
trailing whitespace. This issue can lead to a denial of service when processing
strings with a large number of trailing spaces, potentially causing a browser to
freeze.

Affected file(s)

    js/1p-filters.js

Vulnerable pattern(s)

    Lines 131 and 167: /\s+$/

Description of the issue

The regular expression /\s+$/ is applied to remove trailing whitespace in user‑
provided content. However, when the content has a large number of spaces
(e.g., ~100,000), this pattern causes excessive backtracking in the regular
expression engine, resulting in performance degradation and UI freezing. This is
a classic ReDoS attack vector.

Steps to reproduce

1. Open the uBlock Origin dashboard and navigate to the My filters tab.
2. Run the following code in the browser's DevTools Console or as a bookmarklet.
3. Observe the UI freezing for several seconds or even longer, depending on the
   number of spaces used.

PoC (Proof of Concept)

/**
 * poc.js — triggers ReDoS in 1p-filters.js
 * Expected: <1 ms; Actual: several seconds – UI freeze
 */
(() => {
  const payload = " ".repeat(100000) + "!";  // 100,000 spaces + sentinel
  const run = () => {
    if (!window.cmEditor) {
      console.error("cmEditor not ready");
      return;
    }
    // Inject payload into the editor
    cmEditor.setValue(payload);

    console.time("ReDoS");
    // Call the vulnerable function (mirroring getEditorText)
    cmEditor.getValue().replace(/\s+$/, '');
    // Alternatively, simulate a realistic user flow:
    // document.querySelector('#userFiltersApply').click();
    console.timeEnd("ReDoS");
  };

  if (document.readyState === "complete") {
    run();
  } else {
    window.addEventListener("load", run, { once: true });
  }
})();

Impact

This issue can significantly degrade the user experience, causing the page to
become unresponsive. If an attacker can inject this malicious string into the
page (for example, through XSS or other attacks), it could lead to a denial of
service (DoS). This vulnerability can be triggered repeatedly, causing the
browser to hang indefinitely.

Suggested fix

The issue can be mitigated by replacing /\s+$/ with a more efficient solution,
such as a look‑behind assertion /(?<=\S)\s+$/ (available in modern browsers)
which ensures no backtracking occurs, or using trimEnd() for legacy support:

// Example of using look-behind:
cmEditor.setValue(text.replace(/(?<=\S)\s+$/, '') + '\n\n');

// Alternatively, using trimEnd():
cmEditor.setValue(text.trimEnd() + '\n\n');

Additional information

If required, I am happy to assist in testing or provide more information.
Please feel free to contact me for further clarification.

Best regards,
[redacted]
=====
2025-04-15 12:47:02 -04:00
Raymond Hill
87007e62c0 [mv3] Ensure POL-3 list is separate from POL-0 list in uBOL 2025-04-14 09:07:46 -04:00
Raymond Hill
b5eea3ce3a [mv3] Fix Github Actions 2025-04-13 15:45:39 -04:00
Raymond Hill
e11335f5ad [mv3] Fix Github Actions 2025-04-13 15:37:07 -04:00
Raymond Hill
20f52daf9b Import translation work from https://crowdin.com/project/ublock 2025-04-13 15:23:08 -04:00
Raymond Hill
f15adcf2d5 [mv3] Ensure strict-blocking is enabled when gaining broad permissions 2025-04-13 10:24:23 -04:00
Raymond Hill
51db128dc2 [mv3] "Enable strict blocking" setting depends on broad host permissions 2025-04-13 10:13:18 -04:00
Raymond Hill
7c5c93f073 Import translation work from https://crowdin.com/project/ublock 2025-04-13 09:34:22 -04:00
Raymond Hill
dc3602985f [mv3] Update summary description 2025-04-13 09:19:25 -04:00
Raymond Hill
9bf05023c1 Import translation work from https://crowdin.com/project/ublock 2025-04-13 09:16:54 -04:00
Raymond Hill
50f87c21ea [mv3] Provide console feedback that work is ongoing when building 2025-04-13 09:04:13 -04:00
Raymond Hill
f51a4c79db [mv3] Determine "genericity" on a per-cosmetic filter basis
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/328
2025-04-13 09:02:12 -04:00
Raymond Hill
12c8bc6c5b Make Firefox dev build auto-update 2025-04-13 07:45:55 -04:00
Raymond Hill
a33e2e4115 New revision for dev build 2025-04-13 07:39:03 -04:00
Raymond Hill
5ed1b07034 Update changelog 2025-04-13 07:38:19 -04:00
Raymond Hill
cac420a22d Rename trusted-create-element to trusted-create-html
To avoid confusion with AG's own `trusted-create-element`, which has
a different syntax and a different purpose.
2025-04-13 07:34:36 -04:00
Raymond Hill
c15dc9d8ff Fix scrollbars not following dark theme
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3604
2025-04-12 15:51:36 -04:00
Raymond Hill
dfd42ebf5f Improve noscript spoofing
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2642
2025-04-12 15:20:18 -04:00
Raymond Hill
d1fc38c473 Make Firefox dev build auto-update 2025-04-12 11:01:06 -04:00
Raymond Hill
cc987cb072 Update changelog 2025-04-12 10:55:14 -04:00
Raymond Hill
b4a8dd0754 New revision for dev build 2025-04-12 10:54:00 -04:00
Raymond Hill
20dd606504 Add trusted-create-element scriptlet
As discussed with filter list maintainers.

* @scriptlet trusted-create-element
*
* @description
* Element(s) from a parsed HTML string are added as child element(s) to a
* specific parent element in the DOM.
*
* @param parent
* A CSS selector identifying the element to which created element(s) will be
* added.
*
* @param html
* An HTML string to be parsed using DOMParser, and which resulting elements
* are to be added as child element(s).
*
* @param duration
* Optional. If specified, the time in ms after which the added elements will
* be removed. No removal will occur if not specified.
2025-04-12 10:51:50 -04:00
Raymond Hill
a06f09acda Group POL lists together 2025-04-12 09:40:46 -04:00
Raymond Hill
ad2add4676 Code review 2025-04-12 08:08:12 -04:00
Raymond Hill
af054f7980 Make Firefox dev build auto-update 2025-04-11 18:51:21 -04:00
Raymond Hill
1e783d62e0 New revision for dev build 2025-04-11 18:44:55 -04:00
Raymond Hill
f25a437fd1 Code review re. scriptlets lookup
Possibly fixes a race condition at browser launch causing empty
scriptlets to be injected (and cached).
2025-04-11 18:20:51 -04:00
Raymond Hill
90e3c352ec Make Firefox dev build auto-update 2025-04-11 10:11:13 -04:00
Raymond Hill
ad68834479 Update changelog 2025-04-11 10:01:31 -04:00
Raymond Hill
809d4f93c4 New revision for dev build 2025-04-11 09:58:51 -04:00
Raymond Hill
11e159fd31 [mv3] Discard regex- or path-based targets in static extended filters
There is no support yet for such filters in uBO Lite.
2025-04-11 09:49:03 -04:00
Raymond Hill
15e832da8a Mind potential race condition when dynamically registering scriptlets
In Firefox, scriptlets are dynamically registered as content scripts
to ensure they execute in a timely manner.

The race condition could lead to scriptlet injection failing at
browser launch time in Firefox when the setting "Suspend network
activity until all filter lists are loaded" had been disabled[1],
even after forcing a page reload. Causing the filter lists to
reload would make the issue go away.

[1] Default is enabled in Firefox and it is strongly advised to NOT
    change this.
2025-04-11 09:35:38 -04:00
Raymond Hill
3d2f70ac56 Add POL list for regional malware
Related discussion:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/890#discussioncomment-9632360
2025-04-11 09:06:28 -04:00
Raymond Hill
d1c57d3fa6 Remove stale extraneous POL-2 list
Related issue:
https://github.com/uBlockOrigin/uAssets/issues/27935
2025-04-10 09:35:19 -04:00
Raymond Hill
70bdcfbae6 Make Firefox dev build auto-update
Mistakenly ran the update script from the safari-ubol branch.
2025-04-10 09:11:56 -04:00
Raymond Hill
ae336c3688 New revision for dev build 2025-04-10 07:37:01 -04:00
Raymond Hill
d0e303ca19 Fix regression in response header filtering
Related commit:
8b696a691a
2025-04-10 07:32:09 -04:00
Raymond Hill
981be2d5b2 Make Firefox dev build auto-update 2025-04-09 18:31:38 -04:00
Raymond Hill
2679aafc17 New revision for dev build 2025-04-09 18:25:20 -04:00
Raymond Hill
9029d1d715 Fix regression in categorizing highly generic filters at load time
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3235#issuecomment-2790807915

Regression from:
8b696a691a
2025-04-09 18:23:01 -04:00
Raymond Hill
0fdcd44794 Import translation work from https://crowdin.com/project/ublock 2025-04-09 15:29:26 -04:00
Raymond Hill
01e36db23a Remove "permission-less" status at install time
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/326

uBOL now asks broad host permissions by default. Users can still
choose narrow host permissions by using their browser's controls
for this.

For instance in Chromium, those host permissions controls are found
in the "Site access" section in the detailed view of an extension.

One can set "Site access" to "On click" to revoke broad host
permissions, and grant host permissions to only specific site.

In such mode, uBOL will still block through the DNR API, but no
cosmetic or scriptlet filtering will occurs, as these requires
permission to "read and change data" on websites for which higher
filtering mode is desired.

Some browsers do not automatically grant broad host permissions
even when an extension asks for broad permissions at install time,
and going forward all browsers will likely adopt this approach, and
thus it no longer made sense for uBOL to default to no broad hosts
permissions at install time, especially given this leads to issues
with no solution -- issues solved with the new approach (e.g. like
the ability to deploy uBOL in Optimal mode by default).
2025-04-09 15:11:17 -04:00
Raymond Hill
f6f7333b5d Code review for recent commit re path support in target
Related commit:
8b696a691a

1) There will always be a `/` at that point in the code path
2) The hostname will already be a match in that code path
2025-04-08 19:01:43 -04:00
Raymond Hill
c38101cd34 Make Firefox dev build auto-update 2025-04-08 15:51:30 -04:00
Raymond Hill
cdc63d03cf New revision for dev build 2025-04-08 15:43:13 -04:00
Raymond Hill
eb7f23b173 Fix silly test
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/1755#discussioncomment-12769044

Related commit:
8b696a691a
2025-04-08 15:42:00 -04:00
Raymond Hill
2bb6999e3f Fix undue unchecking of setting in "My filters"
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/2895#discussioncomment-12749154
2025-04-08 13:49:41 -04:00
Raymond Hill
d8b29cf1a3 Make Firefox dev build auto-update 2025-04-08 12:31:03 -04:00
Raymond Hill
699bf42fdb Import trabslation work from https://crowdin.com/project/ublock 2025-04-08 11:59:36 -04:00
Raymond Hill
ee53980b68 New revision for dev build 2025-04-08 11:57:49 -04:00
Raymond Hill
b55247bbcb Update changelog 2025-04-08 11:57:20 -04:00
Raymond Hill
8b696a691a Add path support as target option in static extended filtering
Support for paths allows to narrow down specific static extended
filters to specific webpages on a given site.

Examples of usage:

example.com/toto##h1
/example\.com\/toto\d+/#@#h1
2025-04-08 11:20:27 -04:00
Raymond Hill
370107b9a6 Import translation work from https://crowdin.com/project/ublock 2025-04-06 16:33:00 -04:00
Raymond Hill
6b9968d804 Add logging information re. fetched assets 2025-04-03 12:11:57 -04:00
Raymond Hill
595f9fd469 [mv3] Loosen requirements to qualify for strict-blocking 2025-04-03 12:09:20 -04:00
Raymond Hill
ac28ab58c8 Make Firefox dev build auto-update 2025-04-03 12:06:36 -04:00
Raymond Hill
09ce8f05e2 Update changelog 2025-04-03 12:02:43 -04:00
Raymond Hill
5574404358 New revision for dev build 2025-04-03 12:01:02 -04:00
Raymond Hill
4ce26b63ff Add trusted-prevent-fetch scriptlet
Related feedback:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/915#discussioncomment-12077068
2025-04-03 11:59:00 -04:00
Raymond Hill
2501eae25f [mv3] Fine tune zapper's quit button
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3587
2025-03-31 17:43:51 -04:00
Raymond Hill
6ffffb7b2b [mv3] Force real origin in postMessage so that use_dynamic_url can be used
Call to postMessage was failing in the zapper when using `use_dynamic_url` in
manifest. Manually overwriting the per-session dynamic hostname with the real
extension id fixes this.
2025-03-31 16:30:17 -04:00
Raymond Hill
0c6cbb7fcb Merge in long overdue change re. UKR list in assets.json
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/issues/2692
2025-03-31 11:26:41 -04:00
Raymond Hill
58a92b91c1 Import translation work from https://crowdin.com/project/ublock 2025-03-30 17:21:18 -04:00
Raymond Hill
9351497f16 Make Firefox dev build auto-update 2025-03-30 17:06:18 -04:00
Raymond Hill
c15278522e New revision for dev build 2025-03-30 16:57:38 -04:00
Raymond Hill
8632cd6072 Fix typo causing regression in uritransform=
Related feedback:
https://github.com/uBlockOrigin/uAssets/discussions/27802
2025-03-30 16:56:04 -04:00
Raymond Hill
9adedbc30e Remove the need for parethesis for JSONPath filter selectors
As per official proposed standard:
https://www.rfc-editor.org/rfc/rfc9535.html#name-filter-selector
2025-03-30 13:57:04 -04:00
Raymond Hill
cdb1afc3b2 Make Firefox dev build auto-update 2025-03-30 12:46:26 -04:00
Raymond Hill
f4b2d48873 Update changelog 2025-03-30 12:39:34 -04:00
Raymond Hill
86210368f5 New revision for dev build 2025-03-30 12:37:56 -04:00
Raymond Hill
5587111d21 Add support for union syntax in JSONPath
This immediately useful to list maintainers.

Related commits:
- https://github.com/gorhill/uBlock/commit/d5fd1de150
- https://github.com/gorhill/uBlock/commit/b18daa53aa
- https://github.com/gorhill/uBlock/commit/caa25cdaf3
2025-03-30 12:36:37 -04:00
Raymond Hill
97e740bd2c Code viewer shouldn't be maximizable
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3161#issuecomment-2764549781
2025-03-30 09:34:22 -04:00
Raymond Hill
935ce74d3a Make Firefox dev build auto-update 2025-03-29 10:05:48 -04:00
Raymond Hill
fbdc09a7aa New revision for dev build 2025-03-29 09:57:06 -04:00
Raymond Hill
b381ceda72 Mind other old constructs for scriptlets
Related feedback:
https://old.reddit.com/r/uBlockOrigin/comments/1jmcqhn/

Related commit:
https://github.com/gorhill/uBlock/commit/44c038b9a1
2025-03-29 09:54:41 -04:00
Raymond Hill
44c038b9a1 Fix for old scriptlet syntax
Related feedback:
https://old.reddit.com/r/uBlockOrigin/comments/1jmcqhn/
2025-03-29 09:06:07 -04:00
Raymond Hill
862557fd63 Update changelog 2025-03-29 09:05:26 -04:00
Raymond Hill
5f9f7d050d Make Firefox dev build auto-update 2025-03-28 16:21:20 -04:00
Raymond Hill
564f3f3442 English 2025-03-28 10:24:21 -04:00
Raymond Hill
caa25cdaf3 Add minimal in-code documentation for JSONPath 2025-03-28 10:20:21 -04:00
Raymond Hill
b18daa53aa Add json-edit suite of scriptlets; extend replace= option
Scriptlets added:
- json-edit
- trusted-json-edit
- json-edit-xhr-response
- trusted-json-edit-xhr-response
- json-edit-fetch-response
- trusted-json-edit-fetch-response
- jsonl-edit-xhr-response
- trusted-jsonl-edit-xhr-response
- jsonl-edit-fetch-response
- trusted-jsonl-edit-fetch-response

These scriptlets are functionally similar to their `json-prune` counterpart,
except that they all use the new uBO-flavored JSONPath syntax, and the
`trusted-` versions allow to modify values instead of just removing them.

The `replace=` filter option has been extended to support applying
uBO-flavored JSONPath syntax to the response body. If the `replace=`
value starts with `json:` or `jsonl:`, the remaining of the value will
be interpreted as a JSONPath directive, which can be used to either
remove or modify property in a JSON document.
2025-03-28 09:51:38 -04:00
Raymond Hill
1ce00e4fda Import translation work from https://crowdin.com/project/ublock 2025-03-27 22:51:48 -04:00
Raymond Hill
d7f01065a5 New revision for dev build 2025-03-27 22:47:58 -04:00
Raymond Hill
0a13683167 [mv3] Remove pointless promise 2025-03-27 22:47:25 -04:00
Raymond Hill
0e303060dd [mv3] Fix CSS for dark theme
Related feedback:
https://github.com/uBlockOrigin/uBOL-home/discussions/291#discussioncomment-12403559
2025-03-27 09:11:47 -04:00
Raymond Hill
d5fd1de150 Use JSONPath-like syntax for new jsonl- scriptlets 2025-03-26 11:47:56 -04:00
Raymond Hill
5936451082 [mv3] Fix toggling of "no filtering" as default mode
A bad test prevented the "no filtering" by default mode to not take
effect immediately when activated while no site had yet been set to
"no filtering". It would however take effect as soon as a specific
site would be excluded from "no filtering".
2025-03-26 07:28:00 -04:00
Raymond Hill
d7ae3a185e [mv3] Test filters are trusted 2025-03-25 12:58:26 -04:00
Raymond Hill
760bd23c5e Minor 2025-03-25 12:29:46 -04:00
Raymond Hill
69ff3ca6fb Make Firefox dev build auto-update 2025-03-25 12:21:04 -04:00
Raymond Hill
231269808d New revision for dev build 2025-03-25 12:14:27 -04:00
Raymond Hill
419786feb7 Update changelog 2025-03-25 12:14:08 -04:00
Raymond Hill
68a256bdde Improve trusted-prevent-dom-bypass scriptlet 2025-03-25 12:12:00 -04:00
Raymond Hill
5e9737d38e [mv3] Allow copy/paste troubleshooting info 2025-03-25 08:32:42 -04:00
Raymond Hill
d0c028386a Import translation work from https://crowdin.com/project/ublock 2025-03-25 08:23:27 -04:00
Raymond Hill
e100f9e85c Import translation work from https://crowdin.com/project/ublock 2025-03-25 08:20:43 -04:00
Raymond Hill
620678fc17 Make Firefox dev build auto-update 2025-03-24 12:32:08 -04:00
Raymond Hill
3520c2fd9e New revision for dev build 2025-03-24 12:23:59 -04:00
Raymond Hill
d18311213d Improve jsonl-prune-... scriptlets 2025-03-24 12:16:10 -04:00
Raymond Hill
484ae68528 Import translation work from https://crowdin.com/project/ublock 2025-03-24 08:17:38 -04:00
Raymond Hill
0fce659bb0 Use Object.hasOwn instead of Object.prototype.hasOwnProperty
Reference:
https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwn
2025-03-24 08:15:09 -04:00
Raymond Hill
0c8de6b550 Fix prevent-innerHTML scriptlet 2025-03-24 07:33:21 -04:00
Raymond Hill
07a4a6a35d Import translation work from https://crowdin.com/project/ublock 2025-03-23 16:37:57 -04:00
Raymond Hill
fbabd4eaac Make Firefox dev build auto-update 2025-03-22 16:15:48 -04:00
Raymond Hill
f09aeef6d9 Update changelog 2025-03-22 16:13:52 -04:00
Raymond Hill
8f78faf980 Import translation work from https://crowdin.com/project/ublock 2025-03-22 16:11:10 -04:00
Raymond Hill
7bded976a8 New revision for dev build 2025-03-22 16:06:50 -04:00
Raymond Hill
a07d01285c Update changelog 2025-03-22 16:06:37 -04:00
Raymond Hill
95a3be9d56 Add jsonl-prune-xhr-response/jsonl-prune-fetch-response scriptlets
As discussed internally with filter list volunteers.
2025-03-22 16:01:43 -04:00
Raymond Hill
27e2d6a513 Import translation work from https://crowdin.com/project/ublock 2025-03-21 13:31:40 -04:00
Raymond Hill
7a2f4960d0 Import translation work from https://crowdin.com/project/ublock 2025-03-21 13:29:30 -04:00
Raymond Hill
ab458b492a [mv3] Bring back element zapper 2025-03-21 13:23:54 -04:00
Raymond Hill
0f2a374585 Make Firefox dev build auto-update 2025-03-20 12:20:46 -04:00
Raymond Hill
a88594599f Update changelog 2025-03-20 12:13:58 -04:00
Raymond Hill
2774dfe38f Update changelog 2025-03-20 12:11:05 -04:00
Raymond Hill
88fa550a96 Improve [json-prune|trusted-replace]-fetch-response scriptlets
Output more information to the logger in verbose mode.
2025-03-20 12:06:58 -04:00
Raymond Hill
451e1c24a4 New revision for dev build 2025-03-20 12:05:37 -04:00
Raymond Hill
5b81369fc2 bidiTrie is hardcoded
Thus no need to threat it as if it was a changing parameter.
2025-03-20 12:03:17 -04:00
Raymond Hill
7dba69dc48 New revision for statble release 2025-03-20 07:37:44 -04:00
Raymond Hill
e7651f73f4 Make Firefox dev build auto-update 2025-03-20 07:36:34 -04:00
Raymond Hill
d8cda00cd3 Update changelog 2025-03-20 07:23:48 -04:00
Raymond Hill
b93871117c New revision for dev build 2025-03-20 07:22:50 -04:00
Raymond Hill
76b80baaea Fix TypedArray overflow
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3582
2025-03-20 07:14:38 -04:00
Raymond Hill
94f73015ed Make Firefox dev build auto-update 2025-03-19 12:51:26 -04:00
Raymond Hill
18349292a6 Improve logging ability in new prevent-innerHTML scriptlet 2025-03-19 12:43:36 -04:00
Raymond Hill
eda245a1a6 Update changelog 2025-03-19 12:37:52 -04:00
Raymond Hill
ebec5a1865 New revision for dev build 2025-03-19 12:36:21 -04:00
Raymond Hill
fe744816f1 Add prevent-innerHTML scriptlet
@description
Conditionally prevent assignment to `innerHTML` property.

@param [selector]
Optional. The element must matches `selector` for the prevention to take
place.

@param [pattern]
Optional. A pattern to match against the assigned value. The pattern can be
a plain string, or a regex. Prepend with `!` to reverse the match condition.

As discussed with filter list volunteers.
2025-03-19 12:34:03 -04:00
Raymond Hill
98b011f64c [mv3] Add support for explicit generichide filter option
`generichide` option is implicitly enforced on all sites unless an
exception overrides `generichide`. Though rare, sometimes a
`generichide` exception needs to be overridden so that generic
cosmetic filtering is made possible on a specific site.

This commit is to add support for restoring generic cosmetic
filtering on sites which were excluded through a `generichide`
exception.

Concretely, this is needed to ensure the test suite can properly
verify that generic cosmetic filtering is working when the
filtering mode is set to "complete":

||ublockorigin.github.io^$generichide,important
2025-03-18 17:15:35 -04:00
Raymond Hill
839e240ec1 New stable release version 2025-03-17 16:22:53 -04:00
Raymond Hill
dfe3d48fa3 Update changelog 2025-03-17 08:06:03 -04:00
Raymond Hill
d36ea89a02 Improve prevent-set[Timeout|Interval] scriptlets 2025-03-17 08:02:30 -04:00
Raymond Hill
0e8de98411 Make Firefox dev build auto-update 2025-03-16 06:01:17 -04:00
Raymond Hill
99cb84fab6 New revision for release candidate 2025-03-16 05:56:45 -04:00
Raymond Hill
2d559c43db Update changelog 2025-03-16 05:56:17 -04:00
Raymond Hill
4aebdbb0a9 Add quit button to element zapper mode
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/1968

Given the availability of this new quit button, the element zapper
will now default to stick around after zapping an element.
2025-03-16 05:50:53 -04:00
Raymond Hill
fba662421d [mv3] Make it easier to add filters for testing purpose 2025-03-15 15:06:51 -04:00
Raymond Hill
c3187d85e8 [mv3] Avoid re-entrance when registering content scripts 2025-03-15 13:29:26 -04:00
Raymond Hill
4d12ac788c Make Firefox dev build auto-update 2025-03-15 08:06:22 -04:00
Raymond Hill
19cc3b127a New revision for release candidate 2025-03-15 07:53:37 -04:00
Raymond Hill
1e2a7072d8 Update changelog 2025-03-15 07:53:02 -04:00
Raymond Hill
9e946ce0c3 Improve trusted-override-element-method scriptlet
As discussed with filter list maintainers:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/933
2025-03-15 07:50:28 -04:00
Raymond Hill
b98a8d5c02 [mv3] Remove stray test filters 2025-03-14 12:29:01 -04:00
Raymond Hill
e84d3cd7a3 Make Firefox dev build auto-update 2025-03-14 11:06:11 -04:00
Raymond Hill
db7210a24a Import translation work from https://crowdin.com/project/ublock 2025-03-14 10:59:26 -04:00
Raymond Hill
69601b5c95 Update changelog 2025-03-14 10:52:27 -04:00
Raymond Hill
592a79341d New revision for release candidate 2025-03-14 10:51:23 -04:00
Raymond Hill
34cea70924 Disable obsolete cache-control workaround for Firefox
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3576

This is the first step, a trivial code change which disable the
injection of `Cache-Control` header in Firefox.

In the next dev cycle, the second step will be to remove all
the code related to `Cache-Control` injection.
2025-03-14 10:47:14 -04:00
Raymond Hill
68962453ff [mv3] Eliminate false positives in new generic cosmetic exception code
Related commit:
a009623d97
2025-03-13 19:02:20 -04:00
Raymond Hill
4032ba01bf [mv3] Separate name from version in report
To make it easier to spot reports from forks of uBOL.
2025-03-13 13:27:21 -04:00
Raymond Hill
a009623d97 [mv3] Improve generic cosmetic filtering
Specifically, properly exclude generic cosmetic filters according to
specific cosmetic exceptions.

Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/181
2025-03-13 13:15:27 -04:00
Raymond Hill
22fdf8fc1d Make Firefox dev build auto-update 2025-03-11 09:51:19 -04:00
Raymond Hill
7db84ef13d Do not blindly force https in urlskip
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/issues/3206#issuecomment-2708584507
2025-03-11 09:15:40 -04:00
Raymond Hill
9f55694c8a New revision for release candidate 2025-03-11 09:13:58 -04:00
Raymond Hill
1ea56a04cd [mv3] Explicit filtering modes in troubleshooting data 2025-03-10 11:44:15 -04:00
Raymond Hill
b9a5726672 Rebuild MV3 extension if mv3-data content changes 2025-03-10 09:24:26 -04:00
Raymond Hill
3f850db1a8 Fix makefile 2025-03-09 08:41:28 -04:00
Raymond Hill
bf9549115c Import translation work from https://crowdin.com/project/ublock 2025-03-08 17:22:46 -05:00
Raymond Hill
26d1283583 Fix mv3 build commands 2025-03-08 13:39:53 -05:00
Raymond Hill
94db43c4ad [mv3] Minor changes to account for Edge build 2025-03-08 11:31:31 -05:00
Raymond Hill
e102a5ee06 Use "make mv3-edge" to build Edge package 2025-03-08 10:43:59 -05:00
Raymond Hill
c569f663ee Add scripts to build for MV3 Edge 2025-03-08 10:07:33 -05:00
Raymond Hill
2b93a9128e Update changelog 2025-03-07 17:06:21 -05:00
Raymond Hill
d006fd06e7 [mv3] Add support for ancestor context syntax in scriptlets
Related commit:
a483f7955f
2025-03-07 17:04:02 -05:00
Raymond Hill
536f0fba25 [mv3] Add test suite list to available rulesets
Microsoft Edge for Android requires a "link to the core function
test cases for your Edge Android extension" to verify that the
extension function properly.
2025-03-06 17:39:15 -05:00
Raymond Hill
31d82c494b Fix typo in variable name 2025-03-06 14:15:02 -05:00
Raymond Hill
83df04a53d Make Firefox dev build auto-update 2025-03-06 10:31:21 -05:00
Raymond Hill
03fb6ee059 Import translation work from https://crowdin.com/project/ublock 2025-03-06 09:59:35 -05:00
Raymond Hill
90a99073a6 Update changelog 2025-03-06 09:54:38 -05:00
Raymond Hill
fc231998b9 Improve overlay-buster scriptlet
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/discussions/3470
2025-03-06 09:50:37 -05:00
Raymond Hill
4a5c2723ff New revision for dev build 2025-03-06 09:44:50 -05:00
Raymond Hill
202165867a Update changelog 2025-03-06 09:44:32 -05:00
Raymond Hill
a483f7955f Add ability to inject scriptlets according to origin of ancestor contexts
New syntax for scriptlet-based filtering: it is now possible to
inject a scriptlet in a context according to whether an ancestor
origin matches a specific hostname. Example:

  example.com>>##+js(set, iAmEmbeddedInExampleDotCom, true)

The new `>>` specifier means that the scriptlet will not be injected
in `example.com`, but will be injected in all direct and indirect
embedded contexts in pages loaded from `example.com`

The new ancestor domain specifier also works for entity directives:

  example.*##+js(set, iAmEmbeddedInExampleDotEffectiveTLD, true)

This is an experimental feature, to be further evaluated and
discussed by filter list maintainers. This is not a complete
implementation, by choice. Do not open issues regarding this
new syntax, the current shortcomings are known.

The new syntax is being discussed internally at:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/244
2025-03-06 08:57:27 -05:00
Raymond Hill
e636c32f2a Fix range parser in prevent-setTimeout scriptlet
Related feedback:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/925#discussioncomment-11940830
2025-03-04 07:12:56 -05:00
Raymond Hill
987ddad1fd [mv3] Adjust as per feedback
Related discussion:
https://github.com/uBlockOrigin/uBOL-home/issues/156#issuecomment-2696060398
2025-03-04 07:02:41 -05:00
Raymond Hill
1dbd280ba3 [mv3] Convert domain= to to= for csp=/permissions= options
Related discussion:
https://github.com/uBlockOrigin/uBOL-home/issues/156#issuecomment-2694741399
2025-03-03 11:45:54 -05:00
Raymond Hill
b29ac98094 [mv3] Inject surveyor in frames
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/290
2025-03-03 08:27:37 -05:00
Raymond Hill
8467e1b018 Re-wording 2025-03-02 12:27:45 -05:00
Raymond Hill
34df044808 Add filter option synonyms for strict1p/strict3p
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3554
2025-03-01 16:26:46 -05:00
Raymond Hill
d7a103aa1c Make Firefox dev build auto-update 2025-03-01 15:00:44 -05:00
Raymond Hill
2505b9f760 Update changelog 2025-03-01 14:53:48 -05:00
Raymond Hill
0913d5d1b4 New revision for dev build 2025-03-01 14:51:48 -05:00
Raymond Hill
36404543e4 Increase URL buffer size to 8192 (from 2048)
Related:
https://github.com/easylist/easylist/commit/777d7ba9
2025-03-01 14:48:51 -05:00
Raymond Hill
cff88d547f Import translation work from https://crowdin.com/project/ublock 2025-03-01 09:26:44 -05:00
Raymond Hill
ea8853cda3 Use onmessage/postMessage instead of BroadcastChannel in diff updater 2025-02-28 17:18:48 -05:00
Raymond Hill
95b99ef4ac New revision for dev build 2025-02-25 13:05:21 -05:00
Raymond Hill
d41989e62a Improve disable-newtab-links scriptlet
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/discussions/3551
2025-02-25 13:02:44 -05:00
Raymond Hill
7fb656b653 Make Firefox dev build auto-update 2025-02-24 13:05:32 -05:00
Raymond Hill
18a502c4e3 New revision for dev build 2025-02-24 12:50:56 -05:00
Raymond Hill
8237dfc4f7 Update changelog 2025-02-24 12:50:33 -05:00
Raymond Hill
9c26a07b53 Improve prevent-addEventListener scriptlet
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3360
2025-02-24 12:47:54 -05:00
Raymond Hill
8a6b12a319 [mv3] Inject scriptlets in their intended target world 2025-02-24 10:11:13 -05:00
Raymond Hill
e56ca0f612 Import translation from https://crowdin.com/project/ublock 2025-02-23 12:20:17 -05:00
Raymond Hill
02b78fb717 [mv3] Remove obsolete Firefox workaround code
Related commit:
2e745f9bfb
2025-02-22 11:07:58 -05:00
Raymond Hill
0013e04fd3 Import translation work from https://crowdin.com/project/ublock 2025-02-22 07:47:33 -05:00
Raymond Hill
6ca28a5b3f [mv3] Improve output og log.txt 2025-02-22 07:38:12 -05:00
Raymond Hill
1d2378e74e [mv3] Workaround for permissions dialog preventing proper mode change
This is a Chromium-specific issue.

Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/280
2025-02-21 08:23:27 -05:00
Raymond Hill
128083c203 Make Firefox dev build auto-update 2025-02-20 15:31:23 -05:00
Raymond Hill
ce724d5c47 Import translation work from https://crowdin.com/project/ublock 2025-02-20 15:19:57 -05:00
Raymond Hill
80a04efefe New revision for dev build 2025-02-20 15:16:11 -05:00
Raymond Hill
839d1c31b3 Update changelog 2025-02-20 15:15:51 -05:00
Raymond Hill
5921e50e03 Fix reverse lookup of ##^responseheader(...) filters
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3544
2025-02-20 15:11:36 -05:00
Raymond Hill
9bb1a2baaf Improve evaldata-prune scriptlet 2025-02-20 09:47:36 -05:00
Raymond Hill
c778f339cd Update changelog 2025-02-20 09:02:25 -05:00
Raymond Hill
9f27b9fedd Import translation work from https://crowdin.com/project/ublock 2025-02-20 09:02:06 -05:00
Raymond Hill
4d0ecbae3d Import translation work from https://crowdin.com/project/ublock 2025-02-20 08:44:31 -05:00
Raymond Hill
344539d793 Comply with Mozilla's "User Consent and Control"
Make clear that the hostname of the page with issue is being sent
to GitHub's server when searching existing reports or creating a
new report.
2025-02-20 08:06:50 -05:00
Raymond Hill
516ff356e6 Make Firefox dev build auto-update 2025-02-19 14:31:28 -05:00
Raymond Hill
d2dbb098a2 Update changelog 2025-02-19 14:26:37 -05:00
Raymond Hill
807ed382e2 New revision for dev build 2025-02-19 14:03:03 -05:00
Raymond Hill
0df7faffac Improve noeval-if scriptlet
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/2907#issuecomment-2660051167
2025-02-19 14:01:27 -05:00
Raymond Hill
17c66030fe [mv3] Fix incorrect hostname matching in urlskip-related code
Related feedback:
https://github.com/uBlockOrigin/uBOL-home/issues/278#issuecomment-2664971115
2025-02-19 08:41:22 -05:00
Raymond Hill
f12351688a Import translation work from https://crowdin.com/project/ublock 2025-02-19 07:51:43 -05:00
Fanboynz
35a47d674b Add "closed","next", "mandatory", "agree/disagree" values to cookies.js (#3934)
* Add closed and next values to cookies.js

* Add mandatory to cookie value

* Add disagree/aggree
2025-02-19 07:36:02 -05:00
Raymond Hill
8629f07138 Fix "make lint" command; fix more lint errors 2025-01-19 09:35:51 -05:00
Raymond Hill
60ed584fc1 Import translation work from https://crowdin.com/project/ublock 2025-01-15 10:06:48 -05:00
Raymond Hill
2843aa1c90 [mv3] Inject highly generic cosmetic filters in all frames
Related issue:
https://github.com/uBlockOrigin/uAssets/issues/26839
2025-01-15 09:13:18 -05:00
Raymond Hill
efd1d7d171 Fix makefile 2025-01-11 10:53:36 -05:00
Raymond Hill
7cdf56f69a Make Firefox dev build auto-update 2025-01-10 11:16:10 -05:00
Raymond Hill
3685a18fe9 Fix workflow and makefile 2025-01-10 11:08:54 -05:00
Raymond Hill
149228c388 Fix workflow 2025-01-10 10:52:36 -05:00
Raymond Hill
b2c568b3d6 Fix workflow 2025-01-10 10:46:32 -05:00
Raymond Hill
2c64da4d03 New revision for dev build 2025-01-10 10:29:03 -05:00
Raymond Hill
d2ff26a49d Update changelog 2025-01-10 10:28:41 -05:00
Raymond Hill
ab0f4ba0d4 [mv3] Fix conversion of filters with important option
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/266
2025-01-10 10:25:15 -05:00
Raymond Hill
f8975e3a6a Better integrate latest eslint version 2025-01-10 10:25:15 -05:00
Fanboynz
4b12247da1 Add decline value to cookie.js (#3933) 2025-01-10 09:21:19 -05:00
Raymond Hill
e0c4bce931 Fix changelog 2025-01-07 13:58:10 -05:00
Raymond Hill
2266473336 Fix regression in trusted-replace-argument scritplet
Related feedback:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/859#discussioncomment-11751928

Regression from:
adced29b5b
2025-01-06 20:04:22 -05:00
Raymond Hill
987f41c85d Make Firefox dev build auto-update 2025-01-04 21:05:46 -05:00
Raymond Hill
25030e6cb9 Update .gitignore 2025-01-04 20:41:28 -05:00
Raymond Hill
af8f11eb14 New revision for dev build 2025-01-04 20:39:38 -05:00
Raymond Hill
e192e40a81 Update CHANGELOG 2025-01-04 20:39:06 -05:00
Raymond Hill
b617926c1c Improve abort-on-stack-trace scriptlet
Related feedback:
https://github.com/uBlockOrigin/uAssets/issues/26704#issuecomment-2569381462
2025-01-04 20:29:19 -05:00
Raymond Hill
551c6bc6eb Improve href-sanitizer scriptlet
Related issue:
https://github.com/uBlockOrigin/uAssets/issues/26709#issuecomment-2569993803
2025-01-04 20:23:53 -05:00
Raymond Hill
7f78d19597 New stable release version 2025-01-01 08:22:32 -05:00
Raymond Hill
7c530198c8 Import translation work from https://crowdin.com/project/ublock 2025-01-01 08:20:45 -05:00
Raymond Hill
217d001d71 [mv3] Minor changes 2024-12-30 13:40:18 -05:00
Fanboynz
62178de756 Add granted and done cookie values (#3932) 2024-12-30 08:27:50 -05:00
Raymond Hill
c04d4f4187 [mv3] Fix build script 2024-12-29 17:06:26 -05:00
Raymond Hill
61922da24b [mv3] Extend strict-blocking coverage; improve URL-skip behavior
This extends coverage of strict-blocking to pattern-based filters
with `doc` filter option.

When proceeding with a URL-skip URL present, no temporary bypass
will be created when the "Don't warn me again about this site" is
left unchecked. The idea is to avoid the intermediate redirects
if we navigate again on the same strict-blocked site, while a
temporary bypass would prevent this.

uBO's "Badware risks" list has been spinned off as its own list.
The idea is that should a site be strict-blocked from that list,
we would want to know the strict-block is due to the
"Badware risks" list.
2024-12-29 16:38:56 -05:00
Raymond Hill
b8678d22ea Remove pointless instructionURL from AdGuard's lists
There is no special extra steps to be taken when enabling an
AdGuard lists, there is no point to have `instructionURL` for
these.

Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3502
2024-12-27 08:34:41 -05:00
Raymond Hill
b856a2767d Make Firefox dev build auto-update 2024-12-26 19:26:19 -05:00
Raymond Hill
e3757e32a5 New revision for release candidate 2024-12-26 19:19:06 -05:00
Raymond Hill
05c5f36921 Update changelog 2024-12-26 19:18:44 -05:00
Raymond Hill
c92a518218 Fix deserialization of ArrayBuffer shared by multiple TypedArrays
Deserialization failed to restore proper ArrayBuffer when used by
multiple TypedArrays.

This didn't affect uBO since this specific code path was never
taken.
2024-12-26 19:14:20 -05:00
Raymond Hill
4015e7f772 Make Firefox dev build auto-update 2024-12-26 18:50:45 -05:00
Raymond Hill
9032afef10 New revision for dev build 2024-12-26 18:46:24 -05:00
Raymond Hill
dd40dbdd96 Update changelog 2024-12-26 18:46:00 -05:00
Raymond Hill
19f22c438e Remove pointless instructionURL from AdGuard's lists
There is no special extra steps to be taken when enabling an
AdGuard lists, there is no point to have `instructionURL` for
these.

Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3502
2024-12-26 11:58:34 -05:00
Raymond Hill
cb6c11ab6f Improve trusted-suppress-native-method scriptlet
As per AdGuard's documentation `/.../` is a valid matcher, to
match a string argument against a regex pattern.
2024-12-26 08:10:13 -05:00
Raymond Hill
3ae28423b9 Remove pointless instructionURL from AdGuard's lists
There is no special extra steps to be taken when enabling an
AdGuard lists, there is no point to have `instructionURL` for
these.

Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3502
2024-12-26 08:05:10 -05:00
Raymond Hill
dd5a79e6eb Make Firefox dev build auto-update 2024-12-25 14:30:48 -05:00
Raymond Hill
a4677f160f New revision for release candidate 2024-12-25 14:28:24 -05:00
Raymond Hill
42638f0e44 Fix regression in href-sanitizer scriptlet
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/2531#issuecomment-2561968581

Regression from:
https://github.com/gorhill/uBlock/commit/9bf8d53ebe
2024-12-25 14:26:00 -05:00
Raymond Hill
f7fa3139af Need to name as per validator 2024-12-24 12:43:53 -05:00
Raymond Hill
3df22b1791 [mv3] Change extension id 2024-12-24 11:30:13 -05:00
Raymond Hill
14bed5679a Make Firefox dev build auto-update 2024-12-24 09:16:16 -05:00
Raymond Hill
d4194353f8 New revision for release candidate 2024-12-24 09:10:31 -05:00
Raymond Hill
23134c2e45 Update changelog 2024-12-24 09:10:04 -05:00
Raymond Hill
a7aa755f18 Improve urlskip= filter option
New step: `#`, to extract the hash part of a URL.

Example, URL:
https://example.com/#aHR0cHM6Ly9naXRodWIuY29tL3VCbG9ja09yaWdpbi8=

Filter:
||example.com^$urlskip=# -base64

As a result, navigate to https://github.com/uBlockOrigin/
2024-12-24 08:59:28 -05:00
Raymond Hill
27a72b8eef [mv3] Hopefully this fixes Edge submission issue
Submission to Edge Addons store fails with:

----
The following checks failed:
Package acceptance validation error:
Manifest file reference 'urlhaus.full' does not exist in the zip archive.
(Note: File locations are case-sensitive)
Package acceptance validation error:
Manifest file reference 'openphish.domains' does not exist in the zip archive.
(Note: File locations are case-sensitive)
----

Guessing the use of period in ruleset file path is causing the
issue.
2024-12-23 09:57:57 -05:00
Raymond Hill
fd481a37bf Import translation work from https://crowdin.com/project/ublock 2024-12-22 10:36:47 -05:00
Raymond Hill
6c228a8bfd Make Firefox dev build auto-update 2024-12-21 11:46:44 -05:00
Raymond Hill
dd281d9fc5 New revision for dev build 2024-12-21 11:32:03 -05:00
Raymond Hill
43d157112d Update changelog 2024-12-21 11:31:33 -05:00
Raymond Hill
7494eaf621 Improve parse-properties-to-match scriptlet helper
Related issue:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/831#discussioncomment-11637436

If the property name contains unexpected characters, assume that
the `:` is not a separator.
2024-12-21 11:27:03 -05:00
Raymond Hill
89e44131a0 [mv3] Enable OpenPhish ruleset by default
As discussed with filter list maintainers.
2024-12-21 08:57:12 -05:00
Raymond Hill
a17a8ac04b Import translation work from https://crowdin.com/project/ublock 2024-12-20 14:28:23 -05:00
Raymond Hill
c311315daa [mv3] Fix undue blocking of network requests for unfiltered sites
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/247

Use session rules with `TAB_ID_NONE` to properly exclude network
requests from service workers potentially used by trusted websites.
2024-12-20 13:55:48 -05:00
Raymond Hill
143cc0280a Make Firefox dev build auto-update 2024-12-20 10:26:16 -05:00
Raymond Hill
743a907692 New revision for dev build 2024-12-20 10:14:31 -05:00
Raymond Hill
5ddde5a36a Update changelog 2024-12-20 10:14:11 -05:00
Raymond Hill
9bf8d53ebe Improve href-sanitizer scriptlet
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/discussions/3487

Add support for `urlskip=` syntax by internally reusing `urlskip=`
code.
2024-12-20 10:12:33 -05:00
Fanboynz
791a2b08e1 Add all/none in set-local/cookie (#3928)
* Add all/none in set-local/cookie

* Add functional cookie value
2024-12-16 08:26:36 -05:00
Raymond Hill
9fbc23abfc Import translation work from https://crowdin.com/project/ublock 2024-12-15 15:38:40 -05:00
Raymond Hill
d47876c547 Use combined list for UKR
As per feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/2692#issuecomment-2543153158
2024-12-14 11:00:21 -05:00
Raymond Hill
9c75814525 Use code quotes for filters in logger export feature 2024-12-14 09:03:32 -05:00
Raymond Hill
c279cded17 [mv3] Minor code review 2024-12-14 09:01:23 -05:00
Raymond Hill
c2a4b72fee Import translation work from https://crowdin.com/project/ublock 2024-12-14 08:57:22 -05:00
Raymond Hill
5e0802fd67 Import translation work from https://crowdin.com/project/ublock 2024-12-14 08:53:15 -05:00
Raymond Hill
ac9e12e17c [mv3] Add "Malware protection, security" section in "Filter lists" pane
Additionally, add "Openphish Domain Blocklist" as stock list.
2024-12-14 08:45:17 -05:00
Raymond Hill
fbe203c101 Make Firefox dev build auto-update 2024-12-13 11:36:20 -05:00
Raymond Hill
73b85efae2 New revision for dev build 2024-12-13 11:31:31 -05:00
Raymond Hill
65f64a5809 Update changelog 2024-12-13 11:29:59 -05:00
Raymond Hill
0f373b7639 Use HOSTS version of "Malicious URL Blocklist"
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/256
2024-12-13 11:18:18 -05:00
Raymond Hill
439d608d03 Revert "Use HOSTS version of "Malicious URL Blocklist""
This reverts commit 54ebea31f7.
2024-12-13 11:15:36 -05:00
Raymond Hill
8ba71f09d7 Improve quote usage in filter options and scriptlets
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/760#issuecomment-2540436382

Using quotes in filter option values is meant to remove ambiguity
when the value contains special characters. This was not working when
the value started with `$`. For example, fixes usage of quotes in:

  $removeparam='$deep_link'

Also, fixed logger output for scriptlets using empty parameters
in quotes.
2024-12-13 10:54:01 -05:00
Raymond Hill
2b6d67b29a Import translation work from https://crowdin.com/project/ublock 2024-12-13 08:30:27 -05:00
Raymond Hill
b1936524f7 Import translation work from https://crowdin.com/project/ublock 2024-12-12 20:06:15 -05:00
Raymond Hill
54ebea31f7 Use HOSTS version of "Malicious URL Blocklist"
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/256
2024-12-12 20:00:08 -05:00
Raymond Hill
b7bacc0fc1 Fix bad filter in urlhaus
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/256
2024-12-12 19:47:48 -05:00
Raymond Hill
bdc67b1e7f Make Firefox dev build auto-update 2024-12-12 12:40:33 -05:00
Raymond Hill
d51a01f0f8 Add regional list for UKR
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/issues/2692
2024-12-12 12:34:04 -05:00
Raymond Hill
25a4433e2a New revision for dev build 2024-12-12 10:50:32 -05:00
Raymond Hill
9b2cf0169a Improve trusted-suppress-native-method scriptlet
Add ability to log stack trace when verbose mode is enabled.
2024-12-12 10:18:42 -05:00
Raymond Hill
42c23f10d4 Make Firefox dev build auto-update 2024-12-11 09:05:37 -05:00
Raymond Hill
d193ae7d2f New revision for dev build 2024-12-11 08:50:30 -05:00
Raymond Hill
2d400b5661 Update changelog 2024-12-11 08:49:44 -05:00
Raymond Hill
7ed3470844 Improve trusted-suppress-native-method scriptlet
Add support for the `stack` parameter.
2024-12-11 08:47:10 -05:00
Raymond Hill
f14257d813 [mv3] Minor visual fix in dashboard's Welcome section 2024-12-10 10:22:38 -05:00
Raymond Hill
0e1800e68d [mv3] Fix using Optimal as default mode when hosts permission allows it
Related issue:
https://github.com/uBlockOrigin/uBOL-home/discussions/161
2024-12-10 10:16:35 -05:00
Raymond Hill
738f93da28 Import translation work from https://crowdin.com/project/ublock 2024-12-09 10:52:07 -05:00
Raymond Hill
09554384ef [mv3] Replace "30-day Phishing Domain List" with "Malicious URL Blocklist"
As per team feedback.
2024-12-09 10:48:24 -05:00
Raymond Hill
20a570ebe8 [mv3] Make strict-blocking checkbox dependent on filtering mode
Related feedback:
https://github.com/uBlockOrigin/uBOL-home/issues/214#issuecomment-2528072997
2024-12-09 09:42:46 -05:00
Raymond Hill
51ef43c0de Make Firefox dev build auto-update 2024-12-09 08:38:29 -05:00
Raymond Hill
2ccb01973e Fix regression in set-constant scriptlet
Regression from 3417fe3d5d
2024-12-09 08:22:21 -05:00
Raymond Hill
7daa45e49f Revert "Fix regression in set-constantscriptlet"
This reverts commit b7441bb9c0.
2024-12-09 08:19:43 -05:00
Raymond Hill
fa87e6d830 New revision for dev build 2024-12-09 08:08:43 -05:00
Raymond Hill
b7441bb9c0 Fix regression in set-constantscriptlet
Regression from https://github.com/gorhill/uBlock/commit/3417fe3d5d
2024-12-09 08:05:47 -05:00
Raymond Hill
6c6ac6c7a7 Import translation work from https://crowdin.com/project/ublock 2024-12-08 16:58:23 -05:00
Raymond Hill
56ba93700c [mv3] Ensure no generic cosmetic filters end up in specific realm
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/254

Cosmetic filters with only negated hostnames would end up being
classified as specific, while in reality the filter is generic, with
specific exceptions.

This commit fixes the improper classification. Enforcing specific
exception filters in the generic realm is still an issue to
address.
2024-12-08 08:37:29 -05:00
Raymond Hill
ec5a1b3ab6 Import translation work from https://crowdin.com/project/ublock 2024-12-06 17:21:30 -05:00
Raymond Hill
424fc81628 [mv3] Minor code review 2024-12-06 12:13:18 -05:00
Raymond Hill
4e7bdff8ed Make Firefox dev build auto-update 2024-12-06 12:11:15 -05:00
Raymond Hill
4ed97bb513 Update JSDoc documenation 2024-12-06 12:04:21 -05:00
Raymond Hill
0701422dcf New revision for dev build 2024-12-06 11:56:56 -05:00
Raymond Hill
0d0754a57b Update changelog 2024-12-06 11:56:33 -05:00
Raymond Hill
3417fe3d5d Improve trusted-replace-argument scriptlet
As discussed with filter list maintainers.
2024-12-06 11:53:42 -05:00
Raymond Hill
36db7f8327 Block media elements unconditionally when max size is set to 0
Related feedback:
https://old.reddit.com/r/uBlockOrigin/comments/1h7x9nj/
2024-12-06 10:15:42 -05:00
Raymond Hill
b3a51d0018 Import translation work from https://crowdin.com/project/ublock 2024-12-05 13:09:07 -05:00
Raymond Hill
38390bab9c [mv3] Add urlskip support for strict-blocked page + extra info
Add information about which ruleset caused a page to be strict-
blocked.

Whenever possible, add ability to URL-skip an incoming redirect
in a strict-blocked page.

Add new default list: "30-day Phishing Domain List"
2024-12-05 12:56:25 -05:00
Raymond Hill
fb82db34f7 Make Firefox dev build auto-update 2024-12-05 09:20:54 -05:00
Raymond Hill
fd2ddd3c01 Import translation work from https://crowdin.com/project/ublock 2024-12-05 09:12:28 -05:00
Raymond Hill
07484ceed1 Import translation work from https://crowdin.com/project/ublock 2024-12-05 09:10:46 -05:00
Raymond Hill
37f7181a52 New revision for dev build 2024-12-05 09:08:26 -05:00
Raymond Hill
a86e802afc Add advanced setting noScriptingCSP
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/issues/2642#issuecomment-2520096503

Specify which CSP directive to inject when no-scripting switch is
toggled on. If this hidden setting is changed, uBO will not try
to spoof `noscript` elements.

For internal use at the moment, not to be documented.
2024-12-05 09:04:31 -05:00
Raymond Hill
f80143a8ee Make Firefox dev build auto-update 2024-12-04 19:50:40 -05:00
Raymond Hill
5eb44d01e5 Update changelog 2024-12-04 19:45:06 -05:00
Raymond Hill
1a0331b7c2 New revision for dev build 2024-12-04 19:44:23 -05:00
Raymond Hill
ea1b1abaee Import translation work from https://crowdin.com/project/ublock 2024-12-04 19:43:40 -05:00
Raymond Hill
48fed03128 Add "RU AdList: Counters" to stable release of uBO
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/229#issuecomment-2408527226
2024-12-04 16:55:18 -05:00
Raymond Hill
076e9fa73e Visually separate scriptlet parameters in active line
This makes it easier to see how parameters are parsed internally,
in order to make it easier to distinguish commas as separator and
literal commas meant to be part of a parameter.

Related discussion:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/865#discussioncomment-11461980
2024-12-04 10:48:55 -05:00
Raymond Hill
784888471a Import translation work from https://crowdin.com/project/ublock 2024-12-03 16:53:50 -05:00
Raymond Hill
aa05cb32c6 [mv3] Implement strict blocking
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/214

This implements basic functionality for strict blocking, i.e. the
ability to block navigation to undesirable websites. This is a
first implementation, which converts only filters that are plain
hostnames.

Unlike with uBO, it is not possible to know from which ruleset a
blocking rule originates. Nonetheless, users will have to make a
choice as to whether navigation should proceed or not.

A setting has been added to the dashboard to wholly enable/disable
strict blocking. It is enabled by default.

Potential future improvements, pending investigation on feasability
in an MV3 framework:
- Extend coverage to explicit `document` filters
- Leverage and use `urlskip=` filters in the blocking page in order
  to proceed while bypassing unwanted redirects.
2024-12-03 16:41:34 -05:00
Raymond Hill
d7df6cda4a Import translation work from https://crowdin.com/project/ublock 2024-12-01 19:46:29 -05:00
Raymond Hill
556bea809e Make Firefox dev build auto-update 2024-11-29 11:01:23 -05:00
Raymond Hill
47bdec422a New revision for dev build 2024-11-29 10:55:07 -05:00
Raymond Hill
580f2dee06 Update changelog 2024-11-29 10:54:43 -05:00
Raymond Hill
b1a00145bd Mitigate potentially delayed execution of scriptlets in Firefox
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3452

Use blob-based injection only when direct injection fails because
of a page's CSP. This is a mitigation until a better approach is
devised.

Such future better approach to investigate:

- Use `MAIN` world injection supported by contentScript.register()
  since Firefox 128
- Investigate registering script to inject ahead of time thru
  some heuristic
2024-11-29 10:13:39 -05:00
Raymond Hill
d6867699c9 Make Firefox dev build auto-update 2024-11-28 12:01:12 -05:00
Raymond Hill
f04645ab9f New revision for dev build 2024-11-28 11:51:27 -05:00
Raymond Hill
58a5a23763 Update changelog 2024-11-28 11:51:05 -05:00
Raymond Hill
3b7fa79a68 Improve prevent-setTimeout/prevent-setInterval scriptlet
Add support for range for the `delay` paramater:

---

@param [delay]
A value to match against the delay. Can be a single value for exact match,
or a range:
- `min-max`: matches if delay >= min and delay <= max
- `min-`: matches if delay >= min
- `-max`: matches if delay <= max
No delay means to match any delay value.
Prepend with `!` to reverse the match condition.

---

As discussed with filter list maintainers.
2024-11-28 11:47:28 -05:00
Raymond Hill
703fdf673c [mv3] Fix mv3 build script 2024-11-27 17:55:18 -05:00
Raymond Hill
4d525f1a55 Move assets/resources into src/js/ 2024-11-27 16:47:11 -05:00
Raymond Hill
adced29b5b Improve trusted-replace-argument scriptlet
As discussed with filter list maintainers, added ability to
partially replace an argument using the `repl:` prefix. Updated
documentation:

---

@scriptlet trusted-replace-argument.js

@description
Replace an argument passed to a method. Requires a trusted source.

@param propChain
The property chain to the function which argument must be replaced when
called.

@param argposRaw
The zero-based position of the argument in the argument list. Use a negative
number for a position relative to the last argument.

@param argraw
The replacement value, validated using the same heuristic as with the
`set-constant.js` scriptlet.
If the replacement value matches `json:...`, the value will be the
json-parsed string after `json:`.
If the replacement value matches `repl:/.../.../`, the target argument will
be replaced according the regex-replacement directive following `repl:`

@param [, condition, pattern]
Optional. The replacement will occur only when pattern matches the target
argument.

---

Aditionally, more scriptlets moved into their own files.
2024-11-27 15:53:50 -05:00
Raymond Hill
e43cb6771a [mv3] Open options page in tab in Firefox 2024-11-25 12:31:50 -05:00
Raymond Hill
50ddedb992 Import translation work from https://crowdin.com/project/ublock 2024-11-24 10:24:08 -05:00
Raymond Hill
346b5ded7c [mv3] Add ability for admins to disable features
New managed setting:

"disabledFeatures": {
  "title": "User interface features to disable",
  "description": "A list of tokens, each of which correspond to a user interface feature to disable.",
  "type": "array",
  "items": { "type": "string" }
}

Supported tokens:
- `dashboard`: Prevent access to all dashboard settings
- `filteringMode`: Prevent changes to the default filtering mode,
  or the current filtering mode of any site

Related feedback:
https://github.com/uBlockOrigin/uBOL-home/discussions/35#discussioncomment-11326086
2024-11-23 13:17:13 -05:00
Raymond Hill
4979aa51f5 [mv3] Do not collect matched rules by default when side-loaded
Collecting matched rules when the extension is side-loaded is now
opt-in, by enabling "Developer mode" in the dashboard.

The reason is to allow the extension to behave same as the official
released version when side-loaded.

Specifically, as side-loaded extension, uBOL's service worker would
wake up due to matched-rule listener even though it would not wake
up the worker with same configuration in stable release.
2024-11-21 12:54:28 -05:00
Raymond Hill
b2d7bb72c7 [mv3] Write log.txt file to extension folder 2024-11-20 12:55:13 -05:00
Raymond Hill
6355a17187 [mv3] Fix flaw breaking scriptlets injection in optimal/basic mode
Not all matching scriptlets were injected on a given site in Optimal
or Complete mode when default mode was set to Basic or less.

A high profile manifestation of this bug was that Youtube ads were
not being blocked when using Optimal on Youtube while default mode
was Basic.
2024-11-20 09:04:52 -05:00
Raymond Hill
8ae33afb76 Make Firefox dev build auto-update 2024-11-20 08:15:59 -05:00
Raymond Hill
4a8efe1ed8 Replace all instances, not just the first one 2024-11-20 08:07:52 -05:00
Raymond Hill
11bbee93fe Ne wrevision for dev build 2024-11-20 08:01:50 -05:00
Raymond Hill
fbbd5765c8 Update changelog 2024-11-20 08:01:27 -05:00
Raymond Hill
bcc058eba7 Add -safebase64 directive in urlskip=
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3206#issuecomment-2487392846
2024-11-20 07:53:52 -05:00
Raymond Hill
3aac2a7c97 Import translation work from https://crowdin.com/project/ublock 2024-11-19 13:44:25 -05:00
Raymond Hill
f3486275e9 [mv3] Fix force-reloading repeatedly when erroring at load time
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/234
2024-11-19 13:16:56 -05:00
Raymond Hill
2f2f383c1b Make Firefox dev build auto-update 2024-11-18 14:25:44 -05:00
Raymond Hill
9fb90ad14c New revision for dev build 2024-11-18 14:22:27 -05:00
Raymond Hill
dfc3c252d2 Update changelog 2024-11-18 14:22:02 -05:00
Raymond Hill
77ed83ff2f Improve urlskip= filter option
Automatically upgrade `http:` to `https:` in the resulting URL.

Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3206#issuecomment-2480930555
2024-11-18 14:19:21 -05:00
Raymond Hill
114acacd2e [mv3] Batch changes thru dashboard UI to reduce worker's workload 2024-11-18 14:08:30 -05:00
Raymond Hill
f9ce06977d [mv3] Fix removeparam potentially causing invalid DNR rules 2024-11-18 14:05:19 -05:00
Raymond Hill
17e0a35650 Import translation work from https://crowdin.com/project/ublock 2024-11-18 10:25:46 -05:00
Raymond Hill
c95b08d760 Import translation work from https://crowdin.com/project/ublock 2024-11-18 10:24:08 -05:00
Raymond Hill
d7c6b41992 [mv3] Code review re. re-worked dashboard
Related commit:
ae4754415c

Fine-tuned visuals; fixed sublist quirks related to admin-selected
lists.
2024-11-18 10:16:01 -05:00
Raymond Hill
ae4754415c [mv3] Re-work dashboard: move list of rulesets in its own pane
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/229

Add "Filter lists" pane in dashboard

The DNR API now supports enabling 50 static rulesets put of a
maximum of 100 (instead of 10 out of 50 originally). Thus given
the potentially growing number of static rulesets, the available
stock rulesets has been moved to its own pane, with the following
improvements:
- Support sublists
- Support search

Aditionally, "RU AdList: Counter" has been added as a stock
ruleset.

Other changes:
- Do not re-evaluate regexes which failed validation
- Better reduce `removeparam` rules
2024-11-17 17:27:27 -05:00
Raymond Hill
b4a5b411b5 Add "RU AdList: Counters" to stock list
Shouldn't be enabled by default, to conform it's working as
intended.

Related discussion:
https://github.com/uBlockOrigin/uBOL-home/discussions/37#discussioncomment-9629942
2024-11-16 12:01:30 -05:00
Raymond Hill
51edb13a06 Minor code review 2024-11-16 09:54:19 -05:00
Raymond Hill
442331136c Make Firefox dev build auto-update 2024-11-16 09:50:51 -05:00
Raymond Hill
f8bd9a1007 New revision for dev build 2024-11-16 09:31:29 -05:00
Raymond Hill
edf4f52fe5 Update changelog 2024-11-16 09:31:02 -05:00
Raymond Hill
5f5e3d730f Improve spoof-css scriptlet
Added special properties to spoof output of getBoundingClientRect().
2024-11-16 09:26:09 -05:00
Raymond Hill
c8174d6032 Improve trusted-set-attr scriptlet
Related feedback:
11ca4a3923 (commitcomment-149148167)
2024-11-16 08:10:25 -05:00
Raymond Hill
947602d4fe [mv3] Slightly mitigate DNR flaw re. removeparam filters
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/140

This will allow more specific `removeparam` filters to override
generic ones. This doesn't fix the related issue but should help
more specific `removeparam` filters to be applied.

Related webextensions issue:
https://github.com/w3c/webextensions/issues/468
2024-11-15 10:01:29 -05:00
Raymond Hill
7fcd2a51be Make Firefox dev build auto-update 2024-11-14 10:51:21 -05:00
Raymond Hill
2e66d7bd55 Import translation work from https://crowdin.com/project/ublock 2024-11-14 10:40:55 -05:00
Raymond Hill
3066386d0e New revision for dev build 2024-11-14 10:35:21 -05:00
Raymond Hill
b709a56ce6 Update changelog 2024-11-14 10:35:01 -05:00
Raymond Hill
4c299bfca9 Better handle unexpected conditions when deserializing
For example, when deserialzing from corrupted storage.
2024-11-14 10:32:15 -05:00
Raymond Hill
ff5fc61753 Add support for EasyList { remove: true } cosmetic filter syntax
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3451
2024-11-14 10:24:50 -05:00
Raymond Hill
2e745f9bfb [mv3] Remove obsolete Firefox-only workaround in scriptlet template
Related bugzilla issue:
https://bugzilla.mozilla.org/show_bug.cgi?id=1736575

The issue was fixed months ago.

The removed code block is causing uBOL to be flagged as "including
remotely hosted code".

To be clear, the removed obsolete code block was not related to
executing remote code. The referenced code was in the file itself,
not remote, and this was a workaround for when Firefox was not
supporting injecting script in the `MAIN` world.

The issue was fixed months ago in Firefox, so there is no point for
the workaround.
2024-11-13 09:10:51 -05:00
Raymond Hill
d325dcd192 Make Firefox dev build auto-update 2024-11-11 15:45:32 -05:00
Raymond Hill
7ccb4c6314 New revision for dev build 2024-11-11 15:21:41 -05:00
Raymond Hill
52d21b8df9 Update changelog 2024-11-11 15:21:16 -05:00
Raymond Hill
335d947c10 Fix potential infinite async loop
Related issue:
https://bugzilla.mozilla.org/show_bug.cgi?id=1929326

As identified by @Rob--W:
https://bugzilla.mozilla.org/show_bug.cgi?id=1929326#c9

Truncated or otherwise corrupted asset content in extension storage
could lead to infinite async loop causing high CPU usage in uBO and
its workers.

Likely related to the issue of the asset content returned as
`undefined`:
652f178787/src/js/cachestorage.js (L98)
2024-11-11 15:17:19 -05:00
Raymond Hill
15dae359f7 [mv3] Add support to add/remove rulesets through policies
Related discussion:
https://github.com/uBlockOrigin/uBOL-home/discussions/35#discussioncomment-11157444

New policy setting: `rulesets`
Type: array
Type of array items: string

Each item in the list is a list id (as seen in `rulesets/ruleset-details.json`),
prefixed with either `+` to enable the ruleset, or `-` to disable the ruleset.

Users will not be able to enable or disable rulesets present in the `rulesets`
policy. Disabled rulesets will not appear in the dashboard.

Use `-*` to remove all non-default rulesets, except for those added
using `+[ruleset_id]`.

Additionally, some work has been done to properly handle policy changes in
a non-blocking and deferred manner, as I observed that it often takes long
for calls to `storage.manage.get` to resolve. This potentailly takes care
of the following issue:
https://github.com/uBlockOrigin/uBOL-home/issues/174
2024-11-11 13:20:54 -05:00
Raymond Hill
74921a0f27 Make Firefox dev build auto-update 2024-11-08 12:26:24 -05:00
Raymond Hill
74d8be96d2 Fix more workflow warnings; fix steps order 2024-11-08 12:17:27 -05:00
Raymond Hill
689ffbe7d3 Address workflow warnings 2024-11-08 12:07:30 -05:00
Raymond Hill
dc81a39a99 New revision for dev build 2024-11-08 11:26:13 -05:00
Raymond Hill
93e2d7f143 Update changelog 2024-11-08 11:25:56 -05:00
Raymond Hill
e5a088738d Keep moving related scriptlets into separate files 2024-11-08 11:22:31 -05:00
Raymond Hill
ce4908b341 Improve prevent-xhr scriptlet 2024-11-08 08:48:07 -05:00
Raymond Hill
41616df866 Improve trusted-suppress-native-method scriptlet
Add `debug` as disposition option: if the `how` parameter is `debug`,
the scriptlet will trigger a `debugger` statement and the target
method won't be suppressed. Useful to find out how the method is
being called by page code. To be used for investigation purpose only.
2024-11-08 08:32:19 -05:00
Raymond Hill
fd60f54a5f Make Firefox dev build auto-update 2024-11-07 12:15:43 -05:00
Raymond Hill
34eed9abef Update changelog 2024-11-07 12:09:41 -05:00
Raymond Hill
e854c4752b New revision for dev build 2024-11-07 11:59:57 -05:00
Sander Lepik
f90ccb7c62 Move Estonian list away from .php extension (#3926) 2024-11-07 10:27:26 -05:00
Raymond Hill
e613282698 Improve set-cookie scriptlet
Allow negative integer as valid value.

Related issue:
https://github.com/gorhill/uBlock/pull/3927

Additionally, move cookie-related scriptlets/helpers into its own
source code file.
2024-11-07 10:23:34 -05:00
Raymond Hill
652f178787 New revision for stable release 2024-11-05 09:27:11 -05:00
Raymond Hill
e164250fea Comment 2024-11-05 09:26:23 -05:00
Raymond Hill
54ed02e302 Import translation work from https://crowdin.com/project/ublock 2024-11-05 09:25:01 -05:00
Raymond Hill
12817eee57 Squashed commit of the following:
commit a4d319437a
Author: daylight <starcrush@monemail.com>
Date:   Fri Nov 1 21:01:06 2024 +0300

    Delete .gitmodules

commit 57b7d98148
Author: daylight <starcrush@monemail.com>
Date:   Fri Nov 1 17:47:50 2024 +0300

    Delete dist/mv3/log.txt

commit c936a72bb3
Author: daylight <starcrush@monemail.com>
Date:   Fri Nov 1 17:47:16 2024 +0300

    Update dist/README.md

commit b5aaec47b3
Author: daylight <starcrush@monemail.com>
Date:   Fri Nov 1 17:46:53 2024 +0300

    Update release head

commit be2da15508
Author: daylight <starcrush@monemail.com>
Date:   Fri Nov 1 17:46:37 2024 +0300

    Update links in readme

commit 3019dfc37a
Author: daylight <starcrush@monemail.com>
Date:   Fri Nov 1 17:46:16 2024 +0300

    Update contributing guide

commit 3b9333dbd8
Author: daylight <starcrush@monemail.com>
Date:   Fri Nov 1 17:45:53 2024 +0300

    Update CI

commit 2831a0d0fd
Author: daylight <starcrush@monemail.com>
Date:   Fri Nov 1 17:45:31 2024 +0300

    Update config
Revert "Update CI"

This reverts commit 3b9333dbd8.
2024-11-04 10:12:25 -05:00
daylight
a4d319437a Delete .gitmodules 2024-11-01 16:33:23 -04:00
daylight
57b7d98148 Delete dist/mv3/log.txt 2024-11-01 16:33:23 -04:00
daylight
c936a72bb3 Update dist/README.md 2024-11-01 16:33:23 -04:00
daylight
b5aaec47b3 Update release head 2024-11-01 16:33:23 -04:00
daylight
be2da15508 Update links in readme 2024-11-01 16:33:23 -04:00
daylight
3019dfc37a Update contributing guide 2024-11-01 16:33:22 -04:00
daylight
3b9333dbd8 Update CI 2024-11-01 16:33:22 -04:00
daylight
2831a0d0fd Update config 2024-11-01 16:33:22 -04:00
Raymond Hill
121ac712f7 Make Firefox dev build auto-update 2024-11-01 11:41:35 -04:00
Raymond Hill
67310b0fb6 New revision for stable release candidate 2024-11-01 11:36:43 -04:00
Raymond Hill
331a82775f Update changelog 2024-11-01 11:36:08 -04:00
Raymond Hill
8884f259c1 Improve prevent-refresh scriptlet
Related discussion:
https://github.com/uBlockOrigin/uAssets/issues/25859#issuecomment-2449623891
2024-11-01 11:33:34 -04:00
Raymond Hill
eab0fd4e57 Make Firefox dev build auto-update 2024-10-31 12:11:01 -04:00
Raymond Hill
d401527e83 Import translation work from https://crowdin.com/project/ublock 2024-10-31 11:28:06 -04:00
Raymond Hill
d70c602575 New revision for stable release candidate 2024-10-31 11:25:18 -04:00
Raymond Hill
34771d02d1 Fine tune visuals in document-blocked page
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3206#issuecomment-2449415643
2024-10-31 11:18:42 -04:00
Raymond Hill
fd3624f541 Make Firefox dev build auto-update 2024-10-30 19:16:41 -04:00
Raymond Hill
eb37cd870d New revision for stable release candidate 2024-10-30 19:07:24 -04:00
Raymond Hill
a5d7e68ebe Update changelog 2024-10-30 19:06:57 -04:00
Raymond Hill
f645e8f0d2 Improve googlesyndication_adsbygoogle.js scriptlet
Related discussion:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/321#discussioncomment-11000356
2024-10-30 09:12:58 -04:00
Raymond Hill
a793d693b5 Make Firefox dev build auto-update 2024-10-28 14:26:05 -04:00
Raymond Hill
1264284a3c New revision for stable release candidate 2024-10-28 14:17:07 -04:00
Raymond Hill
c07db7553d Fix urlskip= with -blocked directive for blocked requests
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3206#issuecomment-2441470631
2024-10-28 14:13:50 -04:00
Raymond Hill
ac4506091e Import translation work from https://crowdin.com/project/ublock 2024-10-28 12:04:34 -04:00
Raymond Hill
672f2f3769 Make Firefox dev build auto-update 2024-10-27 15:06:13 -04:00
Raymond Hill
0face5e362 New revision for stable release candidate 2024-10-27 14:54:03 -04:00
Raymond Hill
c90eab5e10 Update changelog 2024-10-27 14:53:33 -04:00
Raymond Hill
60a1dea0f6 Import translation work from https://crowdin.com/project/ublock 2024-10-27 14:49:14 -04:00
Raymond Hill
9b3e94b23f Import translation work from https://crowdin.com/project/ 2024-10-27 14:46:25 -04:00
Raymond Hill
20b54185fa Offer ability to skip redirects in strict-blocked page
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/issues/3206#issuecomment-2439639215

If a strict-blocked page matches a `urlskip=` filter, the page
will show the user the destination URL as a result of applying the
`urlskip` filter should they choose to proceed with the
navigation.
2024-10-27 14:24:08 -04:00
Raymond Hill
6aa9391c8d Make Firefox dev build auto-update 2024-10-26 14:31:33 -04:00
Raymond Hill
87716cf781 New revision for stable release candidate 2024-10-26 14:04:55 -04:00
Raymond Hill
4cb92102c7 Update changelog 2024-10-26 14:03:58 -04:00
Raymond Hill
d04dc4c767 Add -blocked directive to urlskip= option
Potentially breaking change:

`urlskip=` option will no longer apply by default to blocked network
requests, only network requests which are not blocked can be skipped
through a `urlskip=` filter.

The new `urlskip=` directive `-blocked` can be used to explicitly
allow a `urlskip=` filter to also apply to blocked network requests.

Example: given the filter `||example.com^`, the filter:

  ||example.com/path/to/tracker$urlskip=?url

Will not prevent strict-blocking when navigating to:

  https://example.com/path/to/tracker?url=https://example.org/

However, the filter:

  ||example.com/path/to/tracker$urlskip=-blocked ?url

Will cause the strict-blocking to be ignored and allow navigation
to proceed to the URL extracted as a result of applying the `urlskip=`
filter:

  https://example.org/

Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/issues/3206#issuecomment-2439627386
2024-10-26 12:56:52 -04:00
Raymond Hill
50785ea38b Make Firefox dev build auto-update 2024-10-25 19:31:28 -04:00
Raymond Hill
d49062db08 New revision for dev build 2024-10-25 19:25:57 -04:00
Raymond Hill
033314ed34 Update changelog 2024-10-25 19:25:44 -04:00
Raymond Hill
11ca4a3923 Add trusted-set-attr scriptlet
@trustedScriptlet trusted-set-attr

@description
Sets the specified attribute on the specified elements. This scriptlet runs
once when the page loads then afterward on DOM mutations.

Reference: https://github.com/AdguardTeam/Scriptlets/blob/master/wiki/about-trusted-scriptlets.md#-%EF%B8%8F-trusted-set-attr

@param selector
A CSS selector for the elements to target.

@param attr
The name of the attribute to modify.

@param value
The new value of the attribute. Since the scriptlet requires a trusted
source, the value can be anything.

=====

Additionally, start to move scriptlets into their own source files
for easier maintenance and code review.
2024-10-25 19:12:08 -04:00
Raymond Hill
0851015d7d Make Firefox dev build auto-update 2024-10-22 20:11:11 -04:00
Raymond Hill
c9ebe07d39 New revision for dev build 2024-10-22 19:57:45 -04:00
Raymond Hill
76041bdc64 Update changelog 2024-10-22 19:57:11 -04:00
Raymond Hill
2621c908c3 Remove 64:ff9b: as private network block
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3426
2024-10-22 19:49:29 -04:00
Nadav Mermer
2782b16ecf Allow rulesets enabled in manifest.json to stay enabled when finding language defaults 2024-10-20 18:10:23 +03:00
Raymond Hill
b3408a46d1 Fix spurious error message re. bootstrap() not being present
Need `?.` before parenthesis for optional chaining to apply on
method call.

Related commit:
https://github.com/gorhill/uBlock/commit/5133991f7e
2024-10-19 12:09:48 -04:00
Raymond Hill
d4f15ca635 [mv3] Fix regression in extended filtering with some lists
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/236

Regression from:
https://github.com/gorhill/uBlock/commit/58bfe4c846

Cosmetic- and scriptlet injection-based filters broke with filter
lists using AdGuard's `[$domain=/.../]` syntax.

Potentially affected filter lists:
- AdGuard Chinese
- AdGuard Turkish
2024-10-19 10:41:58 -04:00
Raymond Hill
12435d96cc Make Firefox dev build auto-update 2024-10-17 13:05:37 -04:00
Raymond Hill
d5e662a50f New revision for dev build 2024-10-17 12:45:04 -04:00
Raymond Hill
0425bdfd35 Import translation work from https://crowdin.com/project/ublock 2024-10-17 12:44:02 -04:00
Raymond Hill
27f3612fdf [mv3] Set Optimal as default if extension broad permission at install time
This is to prepare uBOL to be ready to set Optimal mode as default
if ever Chromium-based browsers support a way to pre-grant broad host
permissions in a policy.

Related issue:
https://github.com/uBlockOrigin/uBOL-home/discussions/232
https://github.com/uBlockOrigin/uBOL-home/discussions/135
2024-10-17 12:37:21 -04:00
Raymond Hill
89c353640e [mv3] Add EST-0 list 2024-10-17 12:27:49 -04:00
Raymond Hill
4291c874d9 Fix regression in prevent-xhr scriptlet
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3418
2024-10-17 12:11:50 -04:00
Raymond Hill
98db549bb7 Make Firefox dev build auto-update 2024-10-16 08:56:20 -04:00
Raymond Hill
e6b7f06ab4 New revision for dev build 2024-10-16 08:29:52 -04:00
Raymond Hill
e9c0ad59dd Update changelog 2024-10-16 08:29:25 -04:00
Raymond Hill
32f27c5131 Ensure urlskip= redirects only to https: 2024-10-16 08:25:56 -04:00
Raymond Hill
94ca27acd1 Make Firefox dev build auto-update 2024-10-12 09:25:59 -04:00
Raymond Hill
6df1ea8cd6 New revision for dev build 2024-10-12 08:56:20 -04:00
Raymond Hill
3e7a79ebef Update changelog 2024-10-12 08:55:54 -04:00
Raymond Hill
ce9fc5dc14 Add support to urlskip= media resources
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3206#issuecomment-2406777654
2024-10-12 08:52:05 -04:00
Raymond Hill
2c60bb3b07 [mv3] Issue labels cannot be set client-side 2024-10-11 16:41:13 -04:00
Raymond Hill
44bcb5fd99 Make Firefox dev build auto-update 2024-10-11 09:15:40 -04:00
Raymond Hill
f5a7053acb New revision for dev build 2024-10-11 09:07:12 -04:00
Raymond Hill
d0ae3c3e77 Update changelog 2024-10-11 09:06:49 -04:00
Raymond Hill
b8959dcca9 Comment 2024-10-11 09:04:23 -04:00
Raymond Hill
caba9cdefa Use uBO's default listset 2024-10-11 09:03:30 -04:00
Raymond Hill
01eebffc1f Add -uricomponent to urlskip= option
To unescape URI-encoded characters.

Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/issues/3206#issuecomment-2406479971
2024-10-11 08:56:50 -04:00
Fanboynz
4d982d9972 Add forbidden/forever values (#3925) 2024-10-11 08:26:37 -04:00
Raymond Hill
e5d16a1883 Typo 2024-10-10 11:35:58 -04:00
Raymond Hill
3cee922e68 Make Firefox dev build auto-update 2024-10-10 11:35:40 -04:00
Raymond Hill
9e3c978d55 Minor edit to comment 2024-10-10 11:31:57 -04:00
Raymond Hill
2e1dac5950 New revision for dev build 2024-10-10 11:22:44 -04:00
Raymond Hill
0c462e3ca1 Update changelog 2024-10-10 11:22:23 -04:00
Raymond Hill
c86ed5287b Add regex extraction transformation step to urlskip= option
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3206#issuecomment-2403795984

The first capture group of the regex will be used as the result of the
transformation. Example:

||podtrac.com/pts/redirect.mp3/$urlskip=/podtrac\.com\/pts\/redirect\.mp3\/(.*?\.mp3\b)/ +https

If the regex is invalid, or if it fails to extract a first capture
group, no redirection will occur.
2024-10-10 11:11:07 -04:00
Raymond Hill
913f20f0a8 Make Firefox dev build auto-update 2024-10-08 19:56:23 -04:00
Raymond Hill
a72def1cbf New revision for dev build 2024-10-08 19:50:34 -04:00
Raymond Hill
987e198016 Update changelog 2024-10-08 19:50:14 -04:00
Raymond Hill
85877b12ed Improve prevent-window-open scriptlet
Support triggering a `debugger` statement when `window.open()` is
called.

Related feedback:
https://github.com/uBlockOrigin/uAssets/issues/25510#issuecomment-2400067735
2024-10-08 19:47:35 -04:00
Raymond Hill
58bfe4c846 Add support to parse Adguard's [$domain=/.../] regex-based modifier
The modifier will be converted to one that is compatible with uBO, i.e.:

    [$domain=/^trgoals\d+\.xyz$/]##+js(set-constant, isShow, true)

Will parsed as equivalent of:

    /^trgoals\d+\.xyz$/##+js(set-constant, isShow, true)

Related issue:
https://github.com/AdguardTeam/FiltersCompiler/issues/204

Reference:
https://adguard.com/kb/general/ad-filtering/create-own-filters/#non-basic-domain-modifier
2024-10-08 19:19:08 -04:00
Raymond Hill
ec3852b745 Re-word: it's timing per request, not per call to SNFE.match()
A single request can require multiple calls to the static network
filtering engine (SNFE). The reported timing is the result of
going through *all* the required calls to SNFE. In effect, a
single call to SNFE.match() is a fraction of the reported timing.
2024-10-07 15:06:12 -04:00
Raymond Hill
a80c749096 Make Firefox dev build auto-update 2024-10-07 12:05:41 -04:00
Raymond Hill
f825a65f8e New revision for dev build 2024-10-07 12:00:21 -04:00
Raymond Hill
4aae1bdf47 Minor code review 2024-10-07 11:56:22 -04:00
Raymond Hill
daa62c3081 Update README for npm package 2024-10-07 08:56:34 -04:00
Raymond Hill
9a286495a5 New npm version 2024-10-07 08:49:09 -04:00
Raymond Hill
34508a1c2d Add demo.js to npm build
To help people to get quickly started with using the package.
2024-10-07 08:47:45 -04:00
Raymond Hill
26c0aa357e New npm version 2024-10-07 07:38:41 -04:00
Raymond Hill
013e6db6ef Fix typo 2024-10-06 17:05:44 -04:00
Raymond Hill
acf7f39a60 New revision for npm package 2024-10-06 17:04:08 -04:00
Raymond Hill
86aeae75df Further fix npm documentation, minor code review 2024-10-06 17:03:18 -04:00
Raymond Hill
9233e6b7c6 Fix npm documentation
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3402
2024-10-06 16:29:42 -04:00
Raymond Hill
ccbf957f55 Make Firefox dev build auto-update 2024-10-06 15:06:21 -04:00
Raymond Hill
1f32bbc322 New revision for dev build 2024-10-06 14:57:07 -04:00
Raymond Hill
cc60dfa4c5 Update changelog 2024-10-06 14:56:47 -04:00
Raymond Hill
c746633693 Validate result type of XPath expressions
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3403

To ensure XPath expressions not meant to return a nodeset are
discarded at compile time.
2024-10-06 14:27:55 -04:00
Raymond Hill
447476ab9b New npm package version 2024-10-06 14:27:46 -04:00
Raymond Hill
a12bf9405e Make Firefox dev build auto-update 2024-10-06 12:40:51 -04:00
Raymond Hill
e0eb59c5d4 New revision for dev build 2024-10-06 12:34:58 -04:00
Raymond Hill
5700424716 Update changelog 2024-10-06 12:34:26 -04:00
Raymond Hill
818cb2d801 Fix npm test suite
Related commits:
- https://github.com/gorhill/uBlock/commit/02cba63331
- https://github.com/gorhill/uBlock/commit/41693407b2
2024-10-06 11:15:08 -04:00
Raymond Hill
160d7f3c33 Improve trusted-override-element-method scriptlet
Support `debug` as valid `disposition` value: to trigger a `debugger`
statement, but only if uBO's logger is opened.

Related feedback:
https://github.com/uBlockOrigin/uAssets/issues/25510#issuecomment-2395446342
2024-10-06 11:07:42 -04:00
Raymond Hill
1f45902a61 Make Firefox dev build auto-update 2024-10-05 16:21:29 -04:00
Raymond Hill
4775c9cb45 New revision for dev build 2024-10-05 16:10:03 -04:00
Raymond Hill
4c1b1d4cdb Update changelog 2024-10-05 16:09:41 -04:00
Raymond Hill
64b2086ba4 Add ability to lookup parameter name in urlskip=
Relate case:
https://github.com/uBlockOrigin/uBlock-issues/issues/3206#issuecomment-2395121619

Newly supported step: `&i`, meant to lookup a parameter's name at
position `i` (1-based). The parameter name will be used as the
URL (whereas `?` is meant to lookup a parameter's value).
2024-10-05 14:59:43 -04:00
Raymond Hill
02cba63331 Partially revert 4169340 2024-10-05 14:51:38 -04:00
Raymond Hill
5f2ee6caf8 Make Firefox dev build auto-update 2024-10-05 14:00:44 -04:00
Raymond Hill
73404e5988 New revision for dev build 2024-10-05 13:30:49 -04:00
Raymond Hill
5145747ac7 Update chengelog 2024-10-05 13:30:18 -04:00
Raymond Hill
6d2b3375f8 Mind that BroadcastChannel contructor can throw in Firefox
BroadcastChannel constructor throws in Firefox when Enhanced
Tracking Protection is set to "strict".

This behavior could cause scriptlet injection to wholly break
when uBO's logger was opened, as BroadcastChannel() is used
by scriptlets to report information to the logger.

This commit ensures that exceptions from BroadcastChannel
constructor are properly handled.

The scriptlets will fall back to report at the console should
they be unable to report to the logger through BroadcastChannel.
2024-10-05 12:42:30 -04:00
Raymond Hill
41693407b2 Fix npm test suite
Ensure serialization returns copy of data rather than live
references to data. This allows to immediately deserialize() the
result of serialize().

Also, adjust code to modified behavior of filterQuery().
2024-10-05 11:32:59 -04:00
Raymond Hill
3b53d8e5b7 Update changelog 2024-10-05 08:43:14 -04:00
Raymond Hill
95b0ce5e3a Add trusted-override-element-method scriptlet
@description
Override the behavior of a method on matching elements.

@param methodPath
The method which calls must be intercepted.

@param [selector]
A CSS selector which the target element must match. If not specified,
the override will occur for all elements.

@param [disposition]
How the override should be handled. If not specified, the overridden call
will be equivalent to an empty function. If set to `throw`, an exception
will be thrown. Any other value will be validated and returned as a
supported safe constant.

@example
..##+js(trusted-override-element-method, HTMLAnchorElement.prototype.click, a[target="_blank"][style])
2024-10-05 08:35:43 -04:00
Raymond Hill
a0a33eb9b9 Code review for new trusted-prevent-dom-bypass scriptlet
Related commit:
https://github.com/gorhill/uBlock/commit/1abc864742
2024-10-05 07:41:44 -04:00
Raymond Hill
05ba71aef0 Make Firefox dev build auto-update 2024-10-04 13:30:54 -04:00
Raymond Hill
d24ffe6bb8 Import translation work from https://crowdin.com/project/ublock 2024-10-04 12:30:37 -04:00
Raymond Hill
fccda96bd7 New revision for dev build 2024-10-04 12:28:25 -04:00
Raymond Hill
5e2f94bebc New revision for dev build 2024-10-04 12:27:57 -04:00
Raymond Hill
1abc864742 Add trusted-prevent-dom-bypass scriptlet
@description
Prevent the bypassing of uBO scriptlets through anonymous embedded context.

To ensure that a target method in the embedded context is using the
corresponding parent context's method (which is assumed to be
properly patched), or to replace the embedded context with that of the
parent context.

Root issue:
https://issues.chromium.org/issues/40202434

@param methodPath
The method which calls must be intercepted. The arguments
of the intercepted calls are assumed to be HTMLElement, anything else will
be ignored.

@param selector (optional)
A plain CSS selector which will be used in a `document.querySelector()`
call, to validate that the returned element must be processed by the
scriptlet. If no selector is provided, all elements will be processed.

@param targetMethod (optional)
The method in the embedded context which should be delegated to the
parent context. If no method is specified, the embedded context becomes
the parent one, i.e. all  properties of the embedded context will be that
of the parent context.
2024-10-04 12:24:35 -04:00
Raymond Hill
5133991f7e Fix spurious error in content script
No guarantee vAPI.bootstrap will still be present when callback
executes.
2024-10-04 08:57:10 -04:00
Ilya (Marshal)
9f4123a4e2 Fix AdGuard Knowledge Base URLs 2024-10-04 11:27:24 +02:00
Raymond Hill
8196b99e9d Make Firefox dev build auto-update 2024-10-03 13:51:14 -04:00
Raymond Hill
89a1fd5b0e New revision for dev build 2024-10-03 13:42:24 -04:00
Raymond Hill
f3bc426a57 Update changelog 2024-10-03 13:42:03 -04:00
Raymond Hill
fe49ced2ac Imrpove prevent-xhr scriptlet; add trusted-prevent-xhr scriptlet
Add support for synchronous `send()` calls.

`trusted-prevent-xhr` is essentially the same as `prevent-xhr` except
that if the `directive` argument is not a known token, it will be
used as is as the response text of the xhr request, whereas `prevent-xhr`
returns an empty string when the directive is unknown.
2024-10-03 13:31:52 -04:00
Raymond Hill
bcb31db176 Update changelog 2024-10-02 15:11:26 -04:00
Raymond Hill
b25d2153af Make Firefox dev build auto-update 2024-10-02 15:05:42 -04:00
Raymond Hill
ce8cc4793c Update changelog 2024-10-02 14:58:39 -04:00
Raymond Hill
99593f82f4 New revision for dev build 2024-10-02 14:58:31 -04:00
Raymond Hill
4305bfbdb1 Skip dns resolution when requests are proxied through http
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/discussions/3396

Reference:
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/proxy/ProxyInfo#type_2
2024-10-02 14:51:26 -04:00
Raymond Hill
73ce4e6bcf Blocking large media elements also prevents autoplay, regardless of size
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3394

When the "No large media elements" per-site switch is toggled on,
it will also act to prevent autoplay of video/audio media, regardless
of their size. This also works for xhr-based media streaming.

If blocking by size is not desirable while blocking autoplay is
desired, one can toggle on "No large media elements" switch while
setting "Block media elements larger than ..." to a very high value.
2024-10-02 13:39:36 -04:00
Raymond Hill
0b02c7ccb6 Import translation work from https://crowdin.com/project/ublock 2024-10-01 12:27:56 -04:00
Raymond Hill
6cac645830 Do not discard !#else block for unknown preprocessor tokens
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3393
2024-09-30 10:16:48 -04:00
Raymond Hill
3d6984aeaf Import translation work from https://crowdin.com/project/ublock 2024-09-29 17:06:51 -04:00
Raymond Hill
63cf3dc959 Make Firefox dev build auto-update 2024-09-29 12:50:55 -04:00
Raymond Hill
c6baa2fb51 Import translation work from https://crowdin.com/project/ublock 2024-09-29 11:15:04 -04:00
Raymond Hill
7a9481b5a5 New revision for dev build 2024-09-29 10:57:12 -04:00
Raymond Hill
a2f81f19ff Update changelog 2024-09-29 10:56:54 -04:00
Raymond Hill
e81e70937f Add ability to decode base64 in urlskip=
Related case:
https://github.com/uBlockOrigin/uAssets/issues/25467

New step: `-base64`
Purpose: to decode base64-encoded output of previous step
2024-09-29 10:51:56 -04:00
Raymond Hill
7f117e8d21 Import translation work from https://crowdin.com/project/ublock 2024-09-28 14:14:26 -04:00
Raymond Hill
99191d1363 Import translation work from https://crowdin.com/project/ublock 2024-09-28 14:12:13 -04:00
Raymond Hill
560def639f [mv3] Add a _chat_ icon in popup panel to report filter issues
Just the same as with uBO, but for uBOL.
2024-09-28 14:08:42 -04:00
Raymond Hill
dcb86e3667 Update README.md 2024-09-27 11:04:42 -04:00
Raymond Hill
5425ac2375 Make Firefox dev build auto-update 2024-09-26 13:40:44 -04:00
Raymond Hill
7b585a733a New revision for dev build 2024-09-26 13:32:50 -04:00
Raymond Hill
82ab15f856 Update changelog 2024-09-26 13:32:24 -04:00
Raymond Hill
aec0bd39e3 Fix images not properly downloading on click
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/1670#issuecomment-2372048056

The issue affected images supporting `srcset` attribute without
the presence of `src` attribute. This commit takes add fallback
onto `srcset` attribute when the `src` attribute is not present.
2024-09-26 13:27:06 -04:00
Raymond Hill
03df1a40d8 New version for stable release 2024-09-26 10:13:24 -04:00
Raymond Hill
ff57f01026 Code review of fix re "internal error"
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/199
2024-09-22 12:14:52 -04:00
Raymond Hill
687475ebf2 Make Firefox dev build auto-update 2024-09-22 12:01:33 -04:00
Raymond Hill
854c1ee4cc New revision for release candidate 2024-09-22 11:53:54 -04:00
Raymond Hill
4c5a9353b0 Import translation work from https://crowdin.com/project/ublock 2024-09-22 11:50:20 -04:00
Raymond Hill
bd6d9c3296 Fix benchmark quirk related to new ipaddress option 2024-09-22 11:16:57 -04:00
Raymond Hill
e7c783cefa Code review for new DNS cache code
Prevent discarding DNS cache entries looked up during a passive
read. Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/3376#discussioncomment-10711948

Add advanced setting `dnsCacheTTL` to control the TLL (in
seconds) of DNS cache entries. Default to 600 (10 minutes).
2024-09-22 10:02:45 -04:00
Raymond Hill
1c97ca10fc Minor code review
Use class fields to declare/initialize instance and static
properties.
2024-09-21 12:41:57 -04:00
Raymond Hill
f84b3e4ce9 Revert "Minor code review"
This reverts commit 76e035989f.
2024-09-20 17:52:31 -04:00
Raymond Hill
76e035989f Minor code review 2024-09-20 11:40:03 -04:00
Raymond Hill
37da838255 Make Firefox dev build auto-update 2024-09-20 09:26:10 -04:00
Raymond Hill
63f0a2b912 New revision for release candidate 2024-09-20 09:17:10 -04:00
Raymond Hill
055973cc3f Import translation work from https://crowdin.com/project/ublock 2024-09-20 09:16:32 -04:00
Raymond Hill
59487b189c Add +https directive to urlskip= option
When present, the `+https` directive will force the protocol of the
resulting URL to be `https:`.

Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3206#issuecomment-2363392357
2024-09-20 08:15:31 -04:00
Raymond Hill
4f181b0bc5 Support matching against list of IP addresses
Related commit:
6acf97bf51
2024-09-20 07:20:55 -04:00
Raymond Hill
55ab6d6875 Make Firefox dev build auto-update 2024-09-19 09:06:24 -04:00
Raymond Hill
1139085ca5 Update changelog 2024-09-19 08:56:36 -04:00
Raymond Hill
760b2ffce6 Add advanced setting dnsResolveEnabled
Default to `true`.

Set to `false` to wholly disable calls to `dns.resolve()` (Firefox-
only). Disabling calls to `dns.resolve()` will prevent cname-uncloaking
and will limit ability to enforce `ipaddress` filter option.
2024-09-19 08:43:54 -04:00
Raymond Hill
b01a418073 Add filtering output expressionsreplace/urlskip to logger
Additioanlly, removed `uritransform` as it is currently barely used,
if at all.
2024-09-19 08:08:49 -04:00
Raymond Hill
4ccc0d0fda Minimize memory allocation in scriptlet helper proxy-apply-fn
Probably beneficial in cases of proxied method called in a tight
loop.

Additionally, added `throwFunc` as valid constant in script helper
`validate-constant.fn`. Does what the name implies.
2024-09-19 07:49:54 -04:00
Raymond Hill
e98fdeb0a5 Mind urlskip= in built-in benchmark 2024-09-18 12:24:04 -04:00
Raymond Hill
7843a21428 Make Firefox dev build auto-update 2024-09-18 11:56:22 -04:00
Raymond Hill
60039ab133 New revision for release candidate 2024-09-18 11:37:06 -04:00
Raymond Hill
b06c5337ec Update changelog 2024-09-18 11:36:39 -04:00
Raymond Hill
0a6dc47a72 Fix contextual menu quirks
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3382
2024-09-18 11:33:31 -04:00
Raymond Hill
b3ffba7238 Fine tune indent rules 2024-09-18 11:32:16 -04:00
Raymond Hill
11c3a16036 Fix exception thrown in spoof-css in Firefox
Related feedback:
https://github.com/uBlockOrigin/uAssets/issues/25358#issuecomment-2358278979
2024-09-18 10:34:18 -04:00
Raymond Hill
62d74d4f1d Add trailing wildcard syntax to ipaddress= option
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3381
2024-09-18 09:56:46 -04:00
Raymond Hill
f0f859c685 Make Firefox dev build auto-update 2024-09-17 18:16:11 -04:00
Raymond Hill
4094f43daf New revision for release candidate 2024-09-17 18:10:32 -04:00
Raymond Hill
fe3846b72f Oops meant to be 5s, not 300s... 2024-09-17 18:10:09 -04:00
Raymond Hill
11f43d4a3d Make Firefox dev build auto-update 2024-09-17 18:00:42 -04:00
Raymond Hill
3238fe48db Import translation work from https://crowdin.com/project/ublock 2024-09-17 17:48:45 -04:00
Raymond Hill
2375ca3ca0 Update changelog 2024-09-17 17:36:12 -04:00
Raymond Hill
00d4262c0d New revision for release candidate 2024-09-17 17:35:22 -04:00
Raymond Hill
e8f6f3ddff Throttle down repeated scriptlet logging information
Related feedback
https://github.com/uBlockOrigin/uBlock-issues/issues/3378#issuecomment-2356422784
2024-09-17 17:33:06 -04:00
Raymond Hill
acffae6a21 Make Firefox dev build auto-update 2024-09-17 10:36:08 -04:00
Raymond Hill
58c13bacb7 new revision for release candidate 2024-09-17 10:28:54 -04:00
Raymond Hill
6a042f152b Ignore browser-provided 0.0.0.0 ip address when DNS is proxied
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3379
2024-09-17 10:26:40 -04:00
Raymond Hill
d238baa374 Make Firefox dev build auto-update 2024-09-17 09:35:36 -04:00
Raymond Hill
7fb626850e New revision for release candidate 2024-09-17 09:28:31 -04:00
Raymond Hill
9155a89c08 Update changelog 2024-09-17 09:28:02 -04:00
Raymond Hill
547fae4842 Improve scriptlet helper proxy-apply
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3378
2024-09-17 09:09:19 -04:00
Raymond Hill
ef1e134460 Import translation work from https://crowdin.com/project/ublock 2024-09-15 13:27:32 -04:00
Raymond Hill
b62aabda85 Import translation work from https://crowdin.com/project/ublock 2024-09-15 13:25:58 -04:00
Raymond Hill
e18a3707c7 Add an entry in _Report_ page for badware/phishing category
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3151

Entry:
"Add an entry in the reporting tool for badware issues"
2024-09-15 13:20:47 -04:00
Raymond Hill
a9d8e96675 Update changelog 2024-09-15 10:38:52 -04:00
Raymond Hill
5fda425059 Make Firefox dev build auto-update 2024-09-15 09:51:42 -04:00
Raymond Hill
096b4d9e81 New revision for dev build 2024-09-15 09:46:06 -04:00
Raymond Hill
b79fe942e1 Update changelog 2024-09-15 09:45:33 -04:00
Raymond Hill
266ec4894b New static network filter option urlskip=
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3206

The main purpose is to bypass URLs designed to track whether a user
visited a specific URL, typically used in click-tracking links.

The `urlskip=` option ...

- ... is valid only when used in a trusted filter list
- ... is enforced only on top documents
- ... is enforced on both blocked and non-blocked documents
- ... is a modifier, i.e. it cannot be used along with other
      modifier options in a single filter

The syntax is `urlskip=[steps]`, where steps is a space-separated
list of extraction directives detailing what action to perform on
the current URL.

The only supported directive in this first commit is `?name`,
which purpose is to extract the value of a named URL parameter
and use the result as the new URL. Example:

  ||example.com/path/to/tracker$urlskip=?url

The above filter will cause navigation to

  https://example.com/path/to/tracker?url=https://example.org/

to automatically bypass navigation to `example.com` and navigate
directly to

  https://example.org/

It is possible to recursively extract URL parameters by using
more than one directive, example:

  ||example.com/path/to/tracker$urlskip=?url ?to

More extraction capabilities may be added in the future.
2024-09-15 09:17:19 -04:00
Raymond Hill
4b285c0593 Dynamically load DNR conversion module on-demand
DNR conversion module is a dev tool, no point loading it by
default. This was done this way because in a distant past uBO
had to be compatible with browsers not supporting dynamically
loaded modules.

Currently all supported browser versions support dynamically
loaded modules.
2024-09-14 12:13:47 -04:00
Raymond Hill
c265e849e0 Fetch and cache cname of collated hostnames in page store
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/3376
2024-09-14 11:50:10 -04:00
Raymond Hill
f936dfa648 Fix potential failure to unregister scriptlet
In Firefox-specific contentScripts API used to register
scriptlets. This could potentially occurs when there are
registrations pending during a reload of filter lists.
2024-09-14 09:32:37 -04:00
Raymond Hill
41d49921c8 Minor code review 2024-09-14 09:20:54 -04:00
Raymond Hill
f9ab4b7504 Make Firefox dev build auto-update 2024-09-14 00:15:41 -04:00
Raymond Hill
42700a6f76 New revision for dev build 2024-09-14 00:12:00 -04:00
Raymond Hill
5e6f78a902 Fix regression re. mp4 filter option
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3375
2024-09-14 00:10:34 -04:00
Raymond Hill
93042eced4 Use dummy dns API when it's not present 2024-09-13 11:20:37 -04:00
Raymond Hill
d1db02b04c Make Firefox dev build auto-update 2024-09-13 10:11:27 -04:00
Raymond Hill
63e5611877 New revision for dev build 2024-09-13 10:04:13 -04:00
Raymond Hill
73ee3ffe92 Code review of DNS-related code
Related commit:
6acf97bf51
2024-09-13 10:00:41 -04:00
Raymond Hill
8fadfb2c5e Import translation work from https://crowdin.com/project/ublock 2024-09-12 15:40:24 -04:00
Raymond Hill
671b0c540c Make Firefox dev build auto-update 2024-09-12 12:06:26 -04:00
Raymond Hill
9b967eccc8 New revision for dev build 2024-09-12 11:42:03 -04:00
Raymond Hill
71f07b18ae Update changelog 2024-09-12 11:41:26 -04:00
Raymond Hill
6acf97bf51 Rewrite cname uncloaking code to account for new ipaddress= option
This commit makes the DNS resolution code better suited for both
filtering on cname and ip address. The change allows early availability
of ip address so that `ipaddress=` option can be matched at
onBeforeRequest time.

As a result, it is now possible to block root document using
`ipaddress=` option -- so long as an ip address can be extracted
before first onBeforeRequest() call.

Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2792

Caveat
------

the ip address used is the first one among the list of ip
addresses returned by dns.resolve() method. There is no way for uBO
to know which exact ip address will be used by the browser when
sending the request, so this is at most a best guess. The exact IP
address used by the browser is available at onHeadersReceived time,
and uBO will also filter according to this value, but by then the
network request has already been sent to the remote server.

Possibly a future improvement would make available the whole list
of ip addresses to the filtering engine, but even then it's impossible
to know with certainty which ip address will ultimately be used by the
browser -- it is entirely possible that the ip address used by the
browser might not be in the list received through dns.resolve().
2024-09-12 11:19:57 -04:00
Raymond Hill
44b6519db1 Make Firefox dev build auto-update 2024-09-11 10:41:19 -04:00
Raymond Hill
0e2f04eb2b New revision for dev build 2024-09-11 10:21:50 -04:00
Raymond Hill
099b9852cd Code review for ipaddress= filter option
If an IP address can be extracted from the hostname portion of
a URL, the IP address matching will be performed at onBeforeRequest()
time.

Regardless, IP address matching will subsequently always be performed
at onHeadersReceived() time as the request details at that point
contain a reliable IP address value on supported platforms (Firefox-
only as of now).

The `cap_ipaddress` now evaluates to `true` in Chromium-based
browsers. Even though these browsers are unable to provide reliable
IP address value at onHeadersReceived() time, they can still
perform IP address matching for IP address extracted from hostname
portion of a URL.
2024-09-11 09:56:44 -04:00
Raymond Hill
c19497db33 Update changelog 2024-09-10 15:13:28 -04:00
Raymond Hill
d5f14ffa32 Avoid using dns.resolve() for proxied DNS resolution
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/1743
2024-09-10 14:58:40 -04:00
Raymond Hill
09ccfc8cfb Make Firefox dev build auto-update 2024-09-10 12:11:03 -04:00
Raymond Hill
0ae02788b2 New revision for dev build 2024-09-10 11:56:13 -04:00
Raymond Hill
185580d23f Update changelog 2024-09-10 11:55:53 -04:00
Raymond Hill
401d2e8ea9 [mv3] Mind unsupported header=/ipaddress options in DNR API
Properly report unsupported `header=` and `ipaddress=` option in
log file.

`header=` support may become possible soon with Chromium 128
introducing blocking according to response headers content.
2024-09-10 11:50:09 -04:00
Raymond Hill
030d7334e4 Add support for lan/loopback values to ipaddress= option
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/1070
2024-09-10 11:11:11 -04:00
Raymond Hill
839857dd4b Make Firefox dev build auto-update 2024-09-09 11:15:41 -04:00
Raymond Hill
faf1b15f8d New revision for dev build 2024-09-09 10:55:57 -04:00
Raymond Hill
52dee35325 Properly reflect whether ipaddress= is supported 2024-09-09 10:54:47 -04:00
Raymond Hill
41c96690a5 Make Firefox dev build auto-update 2024-09-09 10:06:34 -04:00
Raymond Hill
7732df1dbd New revision for dev build 2024-09-09 09:51:45 -04:00
Raymond Hill
2cb2ee8446 Update changelog 2024-09-09 09:51:24 -04:00
Raymond Hill
c6dedd253f New static network filter option ipaddress=
The purpose is to block according to the ip address of a network
request. In the current implementation, the filter option can only
be enforced at onHeadersReceived time.

The new filter option cannot be enforced in Chromium-based browsers
since the ip address of network requests is available only at
onResponseStarted time, which is not blocking.

The value assigned to `ipaddress` can either be a plain string which
must match exactly a given ip address, or a regex which will be
matched against the ip address.

The `ipaddress` option can only be enforced when the extension
framework does provide a valid ip address in a onHeadersReceived
listener. For instance, cached resources do not have a valid ip
address and thus can't be a match to `ipaddress` option.

Example:

  *$script,ipaddress=93.184.215.14
2024-09-09 09:35:23 -04:00
Raymond Hill
20115697e5 Add ability to quote static network option values
For the sake of convenience for filter list maintainers, this commit
add ability to quote static network option values, so as to avoid the
need to escape commas when parser ambiguity arises.

The quotes can be `"`, `'`, or backticks.

Example, the following filter requires escaping commas:

  example.com$xhr,replace=/"loremIpsum.*?([A-Z]"\}|"\}{2\,4})\}\]\,//,1p

Can be now rewritten with no need to escape when using quotes:

  example.com$xhr,replace='/"loremIpsum.*?([A-Z]"\}|"\}{2,4})\}\],//',1p
2024-09-08 10:01:13 -04:00
Raymond Hill
1b464f75cc Fix spurious browser error at the console 2024-09-07 16:47:43 -04:00
Raymond Hill
bec5d53ce0 [mv3] Attempt at mitigation for when "internal error" occurs
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/199
2024-09-06 09:31:17 -04:00
Raymond Hill
08e5bffc76 Make Firefox dev build auto-update 2024-09-05 15:01:24 -04:00
Raymond Hill
8981d3e7fe New revision for dev build 2024-09-05 14:52:19 -04:00
Raymond Hill
901b4ad061 Import changes from https://github.com/gorhill/uBlock/pull/3924 2024-09-05 14:51:47 -04:00
Imre Eilertsen
8631b955bf Maintenance for the Serbo-Croatian Filters section (#3924)
* Maintenance for the Serbo-Croatian Filters section

* Implemented the request to move to contentURLs

I sure I hope I understood the request correctly, or things would get slightly awkward for me.
2024-09-05 14:49:32 -04:00
Raymond Hill
60a009c530 Further improve prevent-fetch scriptlet 2024-09-05 11:17:36 -04:00
Raymond Hill
1dc09b6217 Make Firefox dev build auto-update 2024-09-04 11:56:02 -04:00
Raymond Hill
ae9acbf521 New revision for dev build 2024-09-04 11:37:35 -04:00
Raymond Hill
f4a75ccd80 Update changelog 2024-09-04 11:37:14 -04:00
Raymond Hill
e8202af11d Improve prevent-fetch scriptlet
- Add support for negated matches
- Log caller's arguments when verbose logging is enabled
2024-09-04 11:32:26 -04:00
Raymond Hill
89f02098fd Apply CSP/PP injections to object resources
Related feedback:
https://old.reddit.com/r/uBlockOrigin/comments/1f84tc5/
2024-09-04 11:28:45 -04:00
Raymond Hill
22fb9c4d63 Make Firefox dev build auto-update 2024-09-03 12:01:04 -04:00
Raymond Hill
08ed4b4ed8 New revision for dev build 2024-09-03 11:19:13 -04:00
Raymond Hill
6e426aeac3 Update changelog 2024-09-03 11:18:52 -04:00
Raymond Hill
c8307f58a3 Improve xml-prune scriptlet
Related feedback:
https://github.com/uBlockOrigin/uAssets/issues/25164#issuecomment-2326358453
2024-09-03 11:15:16 -04:00
Raymond Hill
91125d29cf Add support for application/dash+xml in replace= option
Related feedback:
https://github.com/uBlockOrigin/uAssets/issues/25164#issuecomment-2326358453
2024-09-03 10:14:15 -04:00
Raymond Hill
856dc419b5 Make Firefox dev build auto-update 2024-09-02 19:55:53 -04:00
Raymond Hill
4310732b98 New revision for dev build 2024-09-02 19:49:49 -04:00
Raymond Hill
969d3cb40b Update changelog 2024-09-02 19:49:31 -04:00
Raymond Hill
b7ed3b45ed Add ability to directly evaluate static network filtering engine
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3362

There used to be a way to test URL against the network filtering engine,
but this was removed in a distant past during refactoring.

The ability has been brought back through uBO's own developer tools,
accessible through the _More_ button in the _Support_ pane in the
dashboard.

To query the static network filtering engine, enter the following
in the text editor:

snfe?url-to-test [type] [url-of-context]

`snfe?` is a prompt indicating the intent to query the static network
filtering engine.

At a minimum there must be a URL to test.

Optionally the type of the resource to match, default to `xhr` if
none specified. Also optionally, the context from within which the
request is made. Example:

Enter:
snfe?https://www.google-analytics.com/analytics.js

Result:
url: https://www.google-analytics.com/analytics.js
blocked: ||google-analytics.com^

Enter:
snfe?https://www.google-analytics.com/analytics.js script

Result:
url: https://www.google-analytics.com/analytics.js
type: script
blocked: ||google-analytics.com^
modified: ||google-analytics.com/analytics.js$script,redirect-rule=google-analytics_analytics.js:5

Enter:
snfe?https://example.com/

Result:
url: https://example.com/
not blocked

Enter:
snfe?https://example.com/ ping

Result:
url: https://example.com/
type: ping
blocked: *$ping,3p
2024-09-02 19:32:56 -04:00
Raymond Hill
eef99e9db6 Make Firefox dev build auto-update 2024-08-31 13:11:29 -04:00
Raymond Hill
73e0cc7163 New revision for dev build 2024-08-31 12:48:12 -04:00
Raymond Hill
17183f7de5 Update changelog 2024-08-31 12:47:38 -04:00
Raymond Hill
f552f655cb Fix prevent-window-open for when logger is open
Related discussion:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/906
2024-08-31 12:36:20 -04:00
Raymond Hill
66cf6f0a14 Make Firefox dev build auto-update 2024-08-30 10:56:51 -04:00
Raymond Hill
11e0f08c9a New revision for dev build 2024-08-30 10:28:59 -04:00
Raymond Hill
63166ca882 Update changelog 2024-08-30 10:28:23 -04:00
Raymond Hill
7f11d6216e Improve prevent-window-open scriptlet
As discussed with filter list maintainers.
2024-08-30 10:25:39 -04:00
Raymond Hill
ae5dc6299e Improve validate-constant scriptlet helper
Add support for `json:`-prefixed values.
2024-08-29 13:47:48 -04:00
Raymond Hill
b1f28b4ce0 Make Firefox dev build auto-update 2024-08-27 13:01:04 -04:00
Raymond Hill
d24bf002e2 New revision for dev build 2024-08-27 12:54:35 -04:00
Raymond Hill
1e14a2176b Update changelog 2024-08-27 12:54:19 -04:00
Raymond Hill
0dcb985601 Improve trusted-replace-outbound-text scriptlet
When the replacement starts with `json:`, it will be first
decoded using JSON.parse(). Example:

example.com##+js(trusted-replace-outbound-text, somefn, json:"ok")

The doublequotes are required since this is what JSON.parse()
expects as a valid JSON string.
2024-08-27 12:49:35 -04:00
Raymond Hill
f5f042a6f0 Make Firefox dev build auto-update 2024-08-26 14:50:41 -04:00
Raymond Hill
f306479f5a New revision for dev build 2024-08-26 14:30:45 -04:00
Raymond Hill
bada70af83 Update changelog 2024-08-26 14:30:27 -04:00
Raymond Hill
3a249f395c Improve prevent-xhr scriptlet
As per filter list maintainers feedback.
2024-08-26 14:28:53 -04:00
Raymond Hill
26b2ab8bb5 Make Firefox dev build auto-update 2024-08-24 12:36:21 -04:00
Raymond Hill
6991d9fdd7 New revision for dev build 2024-08-24 12:14:27 -04:00
Raymond Hill
794e6ca0b5 Update changelog 2024-08-24 12:14:07 -04:00
Raymond Hill
59a9a43a83 Add noop resources for redirect purpose
Related discussion:
https://github.com/uBlockOrigin/uAssets/issues/25014#issuecomment-2307982886
2024-08-24 12:11:35 -04:00
Raymond Hill
0a048eb64e Address eslint warnings 2024-08-22 12:36:31 -04:00
Raymond Hill
3360d3e3e1 [mv3] Remove unused file 2024-08-21 11:52:39 -04:00
Raymond Hill
09fef54959 [mv3] Ensure redirect has priority overblock
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/187#issuecomment-2301450418
2024-08-21 10:56:18 -04:00
Raymond Hill
520f81fcca [mv3] Fix injection of scriptlets into embedded contexts 2024-08-20 08:18:03 -04:00
Raymond Hill
24756e8340 Update changelog 2024-08-19 17:56:54 -04:00
Raymond Hill
378be82dec Make Firefox dev build auto-update 2024-08-19 15:15:45 -04:00
Raymond Hill
40c3d4bcca New revision for dev build 2024-08-19 15:01:37 -04:00
Raymond Hill
5f14716954 Update changelog 2024-08-19 15:01:18 -04:00
Raymond Hill
79e10323ad Use helper function to lookup safe cookie values
This helper function is now used by `set-cookie` and
`set-local-storage-item` scriptlets, so changes in the
helper function will benefit both scriptlets.
2024-08-19 14:56:15 -04:00
Fanboynz
3e2171f550 Add checked/unchecked to set-cookie (#3923) 2024-08-19 14:40:33 -04:00
Raymond Hill
34047daa06 Import translation work from https://crowdin.com/project/ublock 2024-08-19 12:02:00 -04:00
Fanboynz
41c2258f91 Add allowed/denied to set-local-storage (#3922) 2024-08-18 09:14:44 -04:00
Raymond Hill
5287f6e029 Code review of scriptlet helper 2024-08-18 09:12:54 -04:00
Raymond Hill
2c60b331e3 Make Firefox dev build auto-update 2024-08-17 12:50:45 -04:00
Raymond Hill
a6cc75109d New revision for dev build 2024-08-17 12:32:51 -04:00
Raymond Hill
cb452bc21c Update changelog 2024-08-17 12:32:31 -04:00
Raymond Hill
6891037758 [mv3] Fix exception filters not overriding redirect filters
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/185
2024-08-17 11:00:42 -04:00
Raymond Hill
e73eb23c90 [mv3] Don't filter out tabless requests in "logger" 2024-08-17 10:42:17 -04:00
Raymond Hill
1cb660b94e Fix plain exceptions not overriding block filters using header= option
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3347
2024-08-17 10:11:18 -04:00
Raymond Hill
8de454ccca Make Firefox dev build auto-update 2024-08-16 12:11:18 -04:00
Raymond Hill
4520a8e611 New revision for dev build 2024-08-16 11:56:20 -04:00
Raymond Hill
cf5e781c91 Update changelog 2024-08-16 11:55:53 -04:00
Raymond Hill
56dfdd2568 Improve various scriptlets
Specifically, improve proxying of native methods.
2024-08-16 11:49:16 -04:00
Raymond Hill
9ced01ebf7 Add publish script for stable version on Chromium 2024-08-12 14:24:10 -04:00
Raymond Hill
415f9b8743 Make Firefox dev build auto-update 2024-08-12 14:20:54 -04:00
Raymond Hill
0ec2c1f54c New revision for dev build 2024-08-12 14:12:55 -04:00
Raymond Hill
f919218e27 Update changelog 2024-08-12 14:11:49 -04:00
Raymond Hill
db3dc69bcc Improve href-sanitizer sciptlet
Tolerate unexpected spaces in extracted URL parameters.

Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3297#issuecomment-2283806183
2024-08-12 13:45:46 -04:00
Raymond Hill
1822d1503f Import translation work from https://crowdin.com/project/ublock 2024-08-12 10:54:11 -04:00
Raymond Hill
665648ba97 [mv3] Re-word some text for accuracy 2024-08-07 10:03:03 -04:00
Raymond Hill
f0dd466f99 Make Firefox dev build auto-update 2024-08-06 16:55:50 -04:00
Raymond Hill
fa285f0e97 New revision for dev build 2024-08-06 16:50:33 -04:00
Raymond Hill
4697f18d0e Update changelog 2024-08-06 16:50:07 -04:00
Raymond Hill
277977aa8a [mv3] Remove useless arguments 2024-08-06 15:00:59 -04:00
Raymond Hill
ae6b53479d [mv3] Minor change to debug output 2024-08-06 14:55:30 -04:00
Raymond Hill
fb037e97d0 [mv3] Improve remove-attr.js scriptlet
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/166
2024-08-06 14:47:03 -04:00
Raymond Hill
417dab538c [mv3] Fix generating allowAllRequests rule when default mode is no-filtering 2024-08-04 11:59:16 -04:00
Raymond Hill
3668445679 Use random trusted-types policy name
Related commit:
4f0d1301ab
2024-08-04 00:15:40 -04:00
Raymond Hill
fea92ac110 Make Firefox dev build auto-update 2024-08-03 20:21:23 -04:00
Raymond Hill
a577d5ff50 New revision for dev build 2024-08-03 20:12:19 -04:00
Raymond Hill
de0a35e7cc Update changelog 2024-08-03 20:11:51 -04:00
Raymond Hill
4f0d1301ab Improve trusted-replace-node-text scriptlet
Related discussion:
https://github.com/brave/adblock-resources/pull/194
2024-08-03 20:09:21 -04:00
Raymond Hill
d42329a3a3 Rephrase more accurately
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/160
2024-08-03 12:03:56 -04:00
Raymond Hill
23a113715d Update README.md 2024-08-02 11:20:34 -04:00
Raymond Hill
2d41dc89e5 Update README.md 2024-08-02 11:12:39 -04:00
Raymond Hill
cc50accd4c Update README.md 2024-08-02 10:58:03 -04:00
Raymond Hill
9562b19a93 Fall back to "Basic" when removing all-urls from "No filtering"
Related discussion:
https://github.com/uBlockOrigin/uBOL-home/issues/156#issuecomment-2254576670
2024-08-01 11:24:42 -04:00
Raymond Hill
0cc8b7864f Ignore transient py stuff 2024-08-01 10:37:22 -04:00
Raymond Hill
a0de43aba9 Import translation work from https://crowdin.com/project/ublock 2024-07-29 16:05:15 -04:00
Raymond Hill
30e0d01656 New revision for stable release 2024-07-29 15:50:38 -04:00
Raymond Hill
c7b54af0a2 [mv3] Add minimal ability to diagnose ruleset issue
A new icon has been added to the popup panel, to open a popup
window with a terse list of DNR events for the current tab, in
reverse chronological order (most recent DNR event appears at
the top).

The new ability is available only when the extension is sideloaded,
as per `declarativeNetRequestFeedback` documentation. Ref:
https://developer.chrome.com/docs/extensions/reference/api/declarativeNetRequest#event-onRuleMatchedDebug

Purposefully minimal, so as to have something rather than nothing
when having to diagnose filtering issue with the DNR API. Example:
https://github.com/uBlockOrigin/uBOL-home/issues/156

The content of the popup window does not dynamically update, force
a refresh (F5) to get the most recent DNR events. This might be
improved in the future.

The DNR event buffer is not persisted, so the buffer is empty when
service worker is restarted. This might be improved in the future
by using session storage API.

There is no output filtering ability in this first draft. This
might be improved in the future.

DNR rules are reported. The filter from which a DNR rule
originates is not reported. Given that the rulesets are optimized
after conversion from original filter lists to reduce the DNR rule
count, this is unlikely to ever be possible.
2024-07-29 14:54:46 -04:00
Raymond Hill
ec633887dd Improve abort-on-stack-trace scriptlet
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3314
2024-07-28 10:44:17 -04:00
Fanboynz
76246f2c59 Add dismissed to set-cookie (#3921) 2024-07-27 08:26:59 -04:00
Raymond Hill
2dd591c1d7 Update README.md 2024-07-24 12:43:57 -04:00
Raymond Hill
2a675785bc Update README.md 2024-07-24 12:43:00 -04:00
Raymond Hill
ac34aa975b Make Firefox dev build auto-update 2024-07-23 09:40:31 -04:00
Raymond Hill
b7676e8f9f New revision for release candidate 2024-07-23 09:23:31 -04:00
Raymond Hill
45a1d61c87 Update changelog 2024-07-23 09:23:14 -04:00
Raymond Hill
84be9cde6d Improve href-sanitizer scriptlet
Support ability to recursively unwrap destination URL. Example:

    ...##+js(href-sanitizer, a.clickTracker, ?r?u)

Related discussion:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/775#discussioncomment-10120835
2024-07-23 09:21:17 -04:00
Raymond Hill
a54e3c5e39 Make Firefox dev build auto-update 2024-07-22 10:41:52 -04:00
Raymond Hill
5526b035bd New revision for release candidate 2024-07-22 10:32:45 -04:00
Raymond Hill
bf75dc2f90 Code review of trusted-replace-node-text scriptlet 2024-07-22 09:51:40 -04:00
Raymond Hill
ec568b614d Make Firefox dev build auto-update 2024-07-21 08:45:51 -04:00
Raymond Hill
fa2a0a9549 New revision for release candidate 2024-07-21 08:36:10 -04:00
Raymond Hill
14d90418b8 Fix regression in trusted-replace-node-text scriptlet
Related commit:
8afd9e233d
2024-07-21 08:34:18 -04:00
Raymond Hill
f1c45a2800 Make Firefox dev build auto-update 2024-07-20 09:50:55 -04:00
Raymond Hill
c36f7822ef New revision for release candidate 2024-07-20 09:44:22 -04:00
Raymond Hill
62f87b0ea8 Rename parameters as per earlier commit
Related commit:
8afd9e233d
2024-07-20 09:43:08 -04:00
Raymond Hill
db33eb9f41 Make Firefox dev build auto-update 2024-07-20 09:06:03 -04:00
Raymond Hill
86d751b2ec New revision for release candidate 2024-07-20 08:59:16 -04:00
Raymond Hill
b871b00337 Update changelog 2024-07-20 08:58:56 -04:00
Raymond Hill
8afd9e233d Improve trusted-replace-node-text scriptlet
Related discussion:
https://github.com/uBlockOrigin/uAssets/discussions/23769#discussioncomment-10102276
2024-07-20 08:57:11 -04:00
Fanboynz
f2c4328a2e Switch to updated Icelandic ABP List (#3920) 2024-07-19 08:01:38 -04:00
Raymond Hill
152983f031 Make Firefox dev build auto-update 2024-07-18 09:19:15 -04:00
Raymond Hill
59d9bbf0b2 New revision for release candidate 2024-07-17 11:06:48 -04:00
Raymond Hill
b9ab889be5 Update changelog 2024-07-17 11:06:31 -04:00
Raymond Hill
77feb25c4d Improve set-constant scriptlet
Related feedback:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/881#discussioncomment-10072370
2024-07-17 09:36:55 -04:00
Raymond Hill
fd054176a8 Make Firefox dev build auto-update 2024-07-15 16:05:30 -04:00
Raymond Hill
68e81f640c New revision for release candidate 2024-07-14 17:44:52 -04:00
Raymond Hill
9ce3056361 Improve prevent-fetch scriptlet
Add `statusText` as overridable property in response instance.

Supported values are: `""`, `"Not Found"`. `statusText` defaults
to `"OK"` when not overridden.
2024-07-14 12:15:53 -04:00
Raymond Hill
324102cb65 Make Firefox dev build auto-update 2024-07-13 11:16:01 -04:00
Raymond Hill
302ddad720 New revision for release candidate 2024-07-13 11:10:16 -04:00
Raymond Hill
b9717555c3 Update changelog 2024-07-13 11:09:53 -04:00
Raymond Hill
e785b99338 Improve prevent-fetch scriptlet
Related discussion:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/848#discussioncomment-10027757

Added support for AdGuard's `responseType` parameter. Extended the
meaning of that 3rd parameter to also be a JSON string with
properties to set on the returned response instance. Currently
supported properties:

- `ok`, supported values: `false`, `true`
- `type, supported values: `"basic"`, `"cors"`, `"opaque"`

Reference:
https://github.com/AdguardTeam/Scriptlets/blob/master/wiki/about-scriptlets.md#-%EF%B8%8F-prevent-fetch
2024-07-13 11:02:54 -04:00
Raymond Hill
a54d416143 Make Firefox dev build auto-update 2024-07-11 11:55:39 -04:00
Raymond Hill
23b0e08715 New revision for release candidate 2024-07-11 11:04:34 -04:00
Raymond Hill
7fbf792ba0 Update changelog 2024-07-11 11:04:07 -04:00
Raymond Hill
66e3a1ad47 Improve href-sanitizer scriptlet
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3297

Mind that the sanitized URL can have Unicode characters beyond
ASCII.
2024-07-10 12:43:36 -04:00
Raymond Hill
569c8cbe04 Make Firefox dev build auto-update 2024-07-10 11:50:30 -04:00
Raymond Hill
dea9e77e27 New revision for release candidate 2024-07-10 11:46:00 -04:00
Raymond Hill
60a7812d7e Update changelog 2024-07-10 11:45:25 -04:00
Raymond Hill
c90f4933df Fix CSP/PP header injection in non-document resources
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/229#issuecomment-2220354261
https://old.reddit.com/r/uBlockOrigin/comments/1dz6du7/

Regression from:
https://github.com/gorhill/uBlock/commit/7c3e060c01
2024-07-10 11:41:55 -04:00
Raymond Hill
9c1252ef9c Make Firefox dev build auto-update 2024-07-10 10:35:31 -04:00
Raymond Hill
282f4f5ef4 New revision for release candidate 2024-07-10 10:28:29 -04:00
Raymond Hill
6fb697b490 Update changelog 2024-07-10 10:16:17 -04:00
Raymond Hill
b98ef8141a Fix CSP injection in non-document resources
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/229#issuecomment-2220354261
https://old.reddit.com/r/uBlockOrigin/comments/1dz6du7/

Regression from:
https://github.com/gorhill/uBlock/commit/7c3e060c01
2024-07-10 10:09:59 -04:00
Raymond Hill
e3b71a5861 Make Firefox dev build auto-update 2024-07-09 13:25:30 -04:00
Raymond Hill
462a4e0304 New revision for release candidate 2024-07-09 13:16:54 -04:00
Raymond Hill
2bdbac1b84 Import translation work from https://crowdin.com/project/ublock 2024-07-09 13:16:17 -04:00
Raymond Hill
25f8c03fde Update changelog 2024-07-09 13:06:31 -04:00
Raymond Hill
97d11c03c2 Add trusted-suppress-native-method scriptlet
Reference:
https://github.com/AdguardTeam/Scriptlets/blob/5a92d79489/wiki/about-trusted-scriptlets.md#trusted-suppress-native-method

This is a first draft version, see code comments for details.
2024-07-09 13:03:50 -04:00
Raymond Hill
a3576ea651 Add support for $currentISODate$ in trusted-set-cookie scriptlet
Related discussion:
https://github.com/uBlockOrigin/uAssets/discussions/20789#discussioncomment-9979107
2024-07-07 11:19:40 -04:00
Fanboynz
37d31a82d8 Add essential and nonessential to set-cookie (#3919) 2024-07-07 09:25:34 -04:00
Raymond Hill
966a233219 Make Firefox dev build auto-update 2024-07-05 10:41:17 -04:00
Raymond Hill
7343035a17 New revision for dev build 2024-07-05 10:34:26 -04:00
Raymond Hill
efc16c7069 Update changelog 2024-07-05 10:34:02 -04:00
Raymond Hill
9569969b55 Fix distance calculation in picker
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3279
2024-07-05 10:20:33 -04:00
Raymond Hill
8c5918dec7 Prevent resizing of title bar in popup menu
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3284
2024-07-05 10:11:27 -04:00
Raymond Hill
1d7feb83a2 [firefox] Add entry for 128px icon
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3285
2024-07-05 10:01:28 -04:00
Raymond Hill
c154aaa69c Fix bad serialization of Date objects
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3283
2024-06-28 13:40:19 -04:00
Raymond Hill
57ed293760 [mv3] Fix bad test re. managed storage 2024-06-28 13:39:38 -04:00
Raymond Hill
896737d098 Fix race condition when loading redirect/scriptlet resources
Related feedback:
https://github.com/uBlockOrigin/uAssets/issues/23806#issuecomment-2190491767
2024-06-26 11:00:50 -04:00
Raymond Hill
6b349ca0ef Make Firefox dev build auto-update 2024-06-25 10:05:54 -04:00
Raymond Hill
8447fc5d17 New revision for dev build 2024-06-25 09:59:07 -04:00
Raymond Hill
8eb3b19c69 Improve logging in prevent-addEventListener scriptlet
Related feedback:
https://github.com/uBlockOrigin/uAssets/discussions/17907#discussioncomment-9871079
2024-06-25 09:08:46 -04:00
Raymond Hill
88065d0091 [mv3] Bring procdural cosmetic filtering code up to date with uBO 2024-06-22 11:09:57 -04:00
Raymond Hill
5c69159b36 [mv3] Inject procedural cosmetic filtering script earlier
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/139
2024-06-22 11:06:19 -04:00
Raymond Hill
5dd59889b9 Make Firefox dev build auto-update 2024-06-20 21:06:09 -04:00
Raymond Hill
533c5c7c73 New revision for dev build 2024-06-20 20:59:21 -04:00
Raymond Hill
3aaff8604d Merge branch 'scripthunter' 2024-06-20 09:35:24 -04:00
Raymond Hill
47b985a056 Fix :matches-prop() operator when no value provided 2024-06-20 09:21:43 -04:00
scripthunter7
83aee4a516 Update subscription URL for hufilter 2024-06-20 10:48:09 +02:00
Raymond Hill
aaceabeba1 Make Firefox dev build auto-update 2024-06-19 19:31:19 -04:00
Raymond Hill
459060f564 New revision for dev build 2024-06-19 19:22:28 -04:00
Raymond Hill
ad3bdba7c9 Update changelog 2024-06-19 19:22:04 -04:00
Raymond Hill
aca7674bac Add :matches-prop() pseudo CSS operator
`subject:matches-prop(arg)`

Description: Allows to select an element by a property name (or chain of
properties), and optionally the property value.

Chainable: Yes.

`subject`: Can be a plain CSS selector, or a procedural cosmetic filter.

`arg`: A declaration in the form `chain=value`, where `chain` is a dot-
  separated string for the target property, and `value` is the optional
  property value to match. `value` can be literal text or literal regular
  expression. When no `value` is declared, the operator only tests for
  the presence of the target property

Example:

  example.org##div:matches-prop(imanad)
  example.org##img:matches-prop(naturalWidth=160)
2024-06-19 19:06:53 -04:00
Raymond Hill
7be7e0b870 Make Firefox dev build auto-update 2024-06-19 10:16:19 -04:00
Raymond Hill
cc860a67f8 New revision for dev build 2024-06-19 08:52:07 -04:00
Raymond Hill
297167755f Update changelog 2024-06-19 08:51:46 -04:00
Raymond Hill
b4d8750f44 Improve set-cookie scriptlet
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3178#issuecomment-2178502856
2024-06-19 08:48:54 -04:00
Raymond Hill
8e3eaf1cc8 Make Firefox dev build auto-update 2024-06-18 10:15:54 -04:00
Raymond Hill
1df4ea4506 New revision for dev build 2024-06-18 10:11:03 -04:00
Raymond Hill
58a9838e41 Update changelog 2024-06-18 10:10:45 -04:00
Raymond Hill
cb0f65e035 Improve trusted-replace-node-text scriptlet
Related discussion:
https://github.com/uBlockOrigin/uAssets/discussions/24143
2024-06-18 10:03:54 -04:00
Fanboynz
bdb99862ce Add hide and hidden to set-cookie (#3918) 2024-06-14 14:32:11 -04:00
Raymond Hill
62fdd8b4a4 Make Firefox dev build auto-update 2024-06-13 09:45:44 -04:00
Raymond Hill
f499cd2742 New revision for dev build 2024-06-13 09:39:31 -04:00
Raymond Hill
4611752f71 Update changelog 2024-06-13 09:39:07 -04:00
Raymond Hill
9072772f61 Improve trusted-replace-[fetch|xhr]-response scriptlets
Related discussion:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/831#discussioncomment-9750621
2024-06-13 09:32:30 -04:00
Raymond Hill
441cf7c2b8 Make Firefox dev build auto-update 2024-06-11 15:40:47 -04:00
Raymond Hill
b5819a29e9 New revision for dev build 2024-06-11 15:36:36 -04:00
Raymond Hill
3e35ea6414 Update changelog 2024-06-11 15:36:16 -04:00
Raymond Hill
b24793bc02 Import translation work from Crowdin 2024-06-11 07:47:26 -04:00
Raymond Hill
91ee5bdeae Improve prevent-addEventListener scriptlet
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3061#issuecomment-2159662039
2024-06-11 07:44:43 -04:00
Raymond Hill
79c2eec802 Make Firefox dev build auto-update 2024-06-07 09:05:45 -04:00
Raymond Hill
f10a17a6dc New revision for dev build 2024-06-07 08:55:03 -04:00
Raymond Hill
59b158217b Update changelog 2024-06-07 08:54:35 -04:00
Raymond Hill
d5208ee5dd Add isodate as available placeholder for auto-comment
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3265
2024-06-07 08:52:30 -04:00
Raymond Hill
6075dbb131 Make Firefox dev build auto-update 2024-06-05 08:50:42 -04:00
Raymond Hill
9ffba93712 New revision for dev build 2024-06-05 08:42:38 -04:00
Raymond Hill
b8619929bd Update changelog 2024-06-05 08:42:22 -04:00
Raymond Hill
fa6740a059 Improve trusted-replace-outbound-text scriptlet
As per filter list maintainers feedback.
2024-06-05 08:40:02 -04:00
Raymond Hill
cc417a0cd4 Fix transition to AdGuard Dutch from EasyDutch
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/3250

Related commit:
f1f63c940b
2024-06-03 10:46:08 -04:00
Raymond Hill
10918d3b11 Make Firefox dev build auto-update 2024-06-01 11:00:55 -04:00
Raymond Hill
f2555024a5 New revision for dev build 2024-06-01 10:53:45 -04:00
Raymond Hill
43c4c70e64 Update changelog 2024-06-01 10:53:18 -04:00
Raymond Hill
8f81833efc Classify generic cosmetic filters with comma as highly generic
Related discussion:
https://old.reddit.com/r/uBlockOrigin/comments/1d3ezoy/
2024-06-01 10:46:18 -04:00
Raymond Hill
82a3992896 Raise max buffer size for response body filtering
Related discussion:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/891
2024-06-01 10:42:14 -04:00
Raymond Hill
ad77938f24 [mv3] Raise minimum chromium version to 118
This allows to drop the special handling of `isUrlFilterCaseSensitive`
for chromium-based browsers.
2024-05-29 09:57:09 -04:00
Raymond Hill
044b7face1 Make Firefox dev build auto-update 2024-05-29 07:56:08 -04:00
Raymond Hill
3c3eef9246 New revision for dev build 2024-05-29 07:50:18 -04:00
Raymond Hill
f444e3f22c Update changelog 2024-05-29 07:49:57 -04:00
Raymond Hill
98977971db [mv3] Improve generic cosmetic filtering surveyor 2024-05-28 22:08:24 -04:00
Raymond Hill
8ea1bac80b Trim end of class tokens in generic cosmetic filtering's surveyor
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3257
2024-05-28 18:42:06 -04:00
Raymond Hill
ce7806e3f1 Make Firefox dev build auto-update 2024-05-28 09:30:44 -04:00
Raymond Hill
96df6539f9 New revision for dev build 2024-05-28 09:21:17 -04:00
Raymond Hill
3cebe53ee2 Update changelog 2024-05-28 09:20:46 -04:00
Raymond Hill
0e1e4b82c5 Improve trusted-set-cookie scriptlet
Replace placehoders instead of direct assignement

Related feedback:
https://github.com/uBlockOrigin/uAssets/pull/23877#issuecomment-2134417389
2024-05-28 09:18:09 -04:00
Raymond Hill
d8a77f38ce New revision for stable release 2024-05-21 08:40:16 -04:00
Raymond Hill
70737da2af Fine tune eslint 2024-05-20 14:00:36 -04:00
Raymond Hill
f1b2a367b2 Make Firefox dev build auto-update 2024-05-16 09:46:18 -04:00
Raymond Hill
406bbd4668 Update changelog 2024-05-16 09:31:24 -04:00
Raymond Hill
1ffb1db701 New revision for release candidate 2024-05-16 09:30:07 -04:00
Raymond Hill
59ffc96e89 Fallback to requestAnimationFrame when requestIdleCallback is not available
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3237
2024-05-16 09:29:12 -04:00
Fanboynz
7f0b2f4a5e Add Approved/disapproved (#3917) 2024-05-14 21:51:27 -04:00
Raymond Hill
e03f1a6955 Make Firefox dev build auto-update 2024-05-14 12:20:47 -04:00
Raymond Hill
a4989039c9 New revision for release candidate 2024-05-14 12:14:10 -04:00
Raymond Hill
c1b3b39c52 Update changelog 2024-05-14 12:13:45 -04:00
Raymond Hill
3e7eca364b Make logger console filter expression case-insensitive 2024-05-14 11:58:53 -04:00
Raymond Hill
ee67cd6284 Improve trusted-click-element scriptlet
Use `openOrClosedShadowRoot` to lookup shadow root.

Related issue:
https://github.com/AdguardTeam/AdguardFilters/issues/178995
2024-05-14 11:37:19 -04:00
Raymond Hill
e738eaa447 Import translation work from https://crowdin.com/project/ublock 2024-05-12 15:51:46 -04:00
Raymond Hill
ca7d2ad61d Replace EasyDutch with AdGuard Dutch
Related discussion:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/380#discussioncomment-9402570
2024-05-12 10:19:37 -04:00
Raymond Hill
f1f63c940b Replace EasyDutch with AdGuard Dutch
Related discussion:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/380#discussioncomment-9402570
2024-05-12 10:17:54 -04:00
Raymond Hill
19e568b6b9 Make Firefox dev build auto-update 2024-05-11 19:11:20 -04:00
Raymond Hill
27224c0738 New revision for dev build 2024-05-11 19:06:53 -04:00
Raymond Hill
509dba1441 Fix regression in previous commit
Related feedback:
https://github.com/uBlockOrigin/uAssets/issues/23652#issuecomment-2105555721

Related commit:
2ccc3135c1
2024-05-11 19:05:14 -04:00
Raymond Hill
661c1c6e16 Make Firefox dev build auto-update 2024-05-09 21:35:42 -04:00
Raymond Hill
f2d00dbb8c New revision for dev build 2024-05-09 21:31:56 -04:00
Raymond Hill
a8cc3759ad Update changelog 2024-05-09 21:31:37 -04:00
Raymond Hill
0e6d607484 Add checksum validation when loading trie buffers in selfie
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3217#issuecomment-2103048654
2024-05-09 21:29:24 -04:00
Raymond Hill
bb479b0a66 Catch exceptions in API calls for the sake of old Chromium versions
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3217#issuecomment-2103628821
2024-05-09 21:29:24 -04:00
Fanboynz
363ad6795c Add accept/reject to local-storage (#3916) 2024-05-09 20:51:07 -04:00
Raymond Hill
809a57af05 Make Firefox dev build auto-update 2024-05-05 12:01:21 -04:00
Raymond Hill
0987956bce New revision for dev build 2024-05-05 11:51:33 -04:00
Raymond Hill
635e054f93 Update changelog 2024-05-05 11:51:10 -04:00
Raymond Hill
923452b788 Use raw string for regex patterns in python scripts
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3229
2024-05-05 11:47:31 -04:00
Raymond Hill
4d8ee35ef7 Improve noeval-if scriptlet
Related feedback:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/841#discussioncomment-9320245
2024-05-05 11:46:16 -04:00
Raymond Hill
a351852268 Update changelog 2024-05-05 06:59:31 -04:00
Raymond Hill
2ccc3135c1 Improve trusted-set-local-storage-item scriptlet
Related discussion:
df1041c616 (commitcomment-141265533)
2024-05-05 06:54:46 -04:00
Raymond Hill
f0cfc77170 Make Firefox dev build auto-update 2024-05-02 20:46:30 -04:00
Raymond Hill
f98a24b47b New revision for dev build 2024-05-02 20:34:44 -04:00
Raymond Hill
bae2c64cc8 Update changelog 2024-05-02 20:34:20 -04:00
Raymond Hill
c098eb8625 Fix potential corruption when reading serialized data
Corrpution would occur when reading back serialized data which
contained multiple references to same instance of an object.

The issue could manifest when reading cache storage-related
data from the browser storage API, since the serializer is not
used when reading from indexedDB. Private/incognito mode
fall back on using browser storage API as cache storage.

Off the top of my head, I think the following conditions all
together could result in high likelihood of malfunction caused
by improperly deserializing data at launch time:

- Load from a selfie
- Selfie created after uBO ran for a while
- Selfie loaded from browser storage API (not the case by
  default)

Possibly related to reports of uBO malfunctioning:
https://github.com/uBlockOrigin/uBlock-issues/issues/3217#event-12686416838
2024-05-02 20:21:47 -04:00
Raymond Hill
e891465775 Add more console logging for cache storage code 2024-05-02 20:15:46 -04:00
Raymond Hill
1ce845b2dc Update changelog 2024-04-22 06:56:45 -04:00
Raymond Hill
f81003c45e Make Firefox dev build auto-update 2024-04-22 06:36:09 -04:00
Raymond Hill
12451d733a New revision for dev build 2024-04-22 06:25:36 -04:00
Raymond Hill
4c530b732f Adjust element picker visuals
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3220
2024-04-22 06:08:49 -04:00
Raymond Hill
a60a43103c Make Firefox dev build auto-update 2024-04-17 09:33:00 -04:00
Raymond Hill
facd16d3fe New revision for dev build 2024-04-17 09:21:05 -04:00
Raymond Hill
1157e51130 Update changelog 2024-04-17 09:20:38 -04:00
Raymond Hill
91dfcbef2a Improve remove-[attr|class] scriptlets
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3215
2024-04-17 09:17:49 -04:00
Raymond Hill
5de19ace91 Make Firefox dev build auto-update 2024-04-16 11:31:18 -04:00
Raymond Hill
fd08e90070 New revision for dev build 2024-04-16 11:23:59 -04:00
Raymond Hill
f3cf75ec92 Update changelog 2024-04-16 11:23:39 -04:00
Raymond Hill
6152f5269e Improve dashboard layout at high zoom factor
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3211
2024-04-16 11:21:06 -04:00
Raymond Hill
2481e4a130 Make Firefox dev build auto-update 2024-04-13 16:15:48 -04:00
Raymond Hill
bf2c7e729b New revision for dev build 2024-04-13 16:07:49 -04:00
Raymond Hill
539938969d Ensure reading last data written
Related discussion:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/888
2024-04-13 16:03:17 -04:00
Raymond Hill
800eca7b58 Make Firefox dev build auto-update 2024-04-11 18:20:38 -04:00
Raymond Hill
ca518bcf41 New revision for dev build 2024-04-11 18:03:01 -04:00
Raymond Hill
931f44ae16 Improve logging in m3u-prune scriptlet
Related feedback:
https://github.com/uBlockOrigin/uAssets/issues/23042#issuecomment-2050238172
2024-04-11 15:44:07 -04:00
Raymond Hill
6e61a13e40 Open details pane only when clicking non-interactive elements
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/3202
2024-04-11 11:12:37 -04:00
Raymond Hill
79543d6c32 Make Firefox dev build auto-update 2024-04-10 11:41:14 -04:00
Raymond Hill
9bca28cea0 New revision for dev build 2024-04-10 11:32:10 -04:00
Raymond Hill
ed694d09f8 Update changelog 2024-04-10 11:31:51 -04:00
Raymond Hill
3b4f02db21 Add a console pane to the logger
The console pane will report logging information reported by
scriptlets.

Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/3096#discussioncomment-8748932

Plus other changes.
2024-04-10 11:27:40 -04:00
Raymond Hill
5e7b88cb86 Update changelog 2024-04-10 10:30:47 -04:00
Raymond Hill
c0b56cffab Improve suggested candidate filters in element picker
Additionally, fix eslint warnings.
2024-04-10 10:28:11 -04:00
Raymond Hill
89fa666bc4 Improve set-cookie.fn scriptlet
As per browser behavior, space character does not require encoding.
2024-04-10 08:25:24 -04:00
Raymond Hill
581c2824d0 Minor code review 2024-04-09 20:05:53 -04:00
Raymond Hill
e3247cb48c Fine tune eslint behavior 2024-04-09 20:05:40 -04:00
Raymond Hill
277e90a4a7 Improve spoof-css scriptlet 2024-04-09 20:05:05 -04:00
Raymond Hill
a5f6c35bb0 Fix bad date computation in auto-comment feature
Related feedback:
https://old.reddit.com/r/uBlockOrigin/comments/1bxz6oi/
2024-04-09 12:15:03 -04:00
Raymond Hill
846c6462c3 Make Firefox dev build auto-update 2024-04-08 21:00:47 -04:00
Raymond Hill
8c0ca68529 New revision for dev build 2024-04-08 20:53:31 -04:00
Raymond Hill
db6e9b2ec0 New revision for dev build 2024-04-08 20:53:03 -04:00
Raymond Hill
c13fbac549 Update changelog 2024-04-08 20:52:02 -04:00
Raymond Hill
c223a8cd39 Fix regression breaking import of file:// lists
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3199
2024-04-08 20:48:58 -04:00
Raymond Hill
d4a99a98f4 Update changelog 2024-04-08 08:24:21 -04:00
Raymond Hill
e7951c2114 Import translation work from https://crowdin.com/project/ublock 2024-04-08 08:23:48 -04:00
Raymond Hill
e61f093fa0 Make Firefox dev build auto-update 2024-04-07 18:31:08 -04:00
Raymond Hill
7e8beca971 New revision for dev build 2024-04-07 18:24:00 -04:00
Raymond Hill
defd68ef7d Fix stray lists in redesigned cache storage
Related issue:
https://old.reddit.com/r/uBlockOrigin/comments/1bxzwf9/

These stray filter lists prevents uBO from properly updating
those filter lists.
2024-04-07 18:21:37 -04:00
Raymond Hill
98a600698e Remove letsblock.it as target for subscribe.js content script
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/discussions/3194
2024-04-03 10:51:39 -04:00
Raymond Hill
4533f0e37e Fix eslint warnings 2024-04-03 10:22:57 -04:00
Raymond Hill
8dc0e885b5 Make Firefox dev build auto-update 2024-04-02 11:10:50 -04:00
Raymond Hill
80315a53ec New revision for dev build 2024-04-02 11:06:15 -04:00
Raymond Hill
c6e99f8490 Improve trusted-replace-outbound-text scriptlet
Add vararg `condition, [pattern]`.
2024-04-02 11:04:27 -04:00
Raymond Hill
f9408415a5 Add missing alarms permissions in Thunderbird manifest
Possibly related:
https://old.reddit.com/r/uBlockOrigin/comments/1bquaw8/ublock_origin_157_announcement_thread_please/kxktycl/
2024-04-01 14:50:06 -04:00
Raymond Hill
21f81145bc Make Firefox dev build auto-update 2024-04-01 11:35:58 -04:00
Raymond Hill
5045810a9d Update changelog 2024-04-01 11:30:54 -04:00
Raymond Hill
a2fa36386f New revision for dev build 2024-04-01 11:30:10 -04:00
Raymond Hill
21e1ee30ee Add trusted-replace-outbound-text scriptlet
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3157

Paremeters:
- `pattern`: a string or regex to match in the outbound text. If
  not provided or empty, the scriptlet will only log the outbound
  text without modifying it.
- `replacement`: the replacement string for the matched part.
2024-04-01 11:27:19 -04:00
Raymond Hill
6876fa46cc Update changelog 2024-04-01 09:19:10 -04:00
Raymond Hill
8e0cf1765c Make Firefox dev build auto-update 2024-04-01 08:51:03 -04:00
Raymond Hill
7ca3855395 Import translation work from https://crowdin.com/project/ublock 2024-04-01 08:33:56 -04:00
Raymond Hill
49ff7cffb1 Improve [trusted-]set-cookie scriptlets
As per RFC 6265 the characters ", should be encoded but apparently
browsers don't care. Remove them from the set of characters which
presence trigger encoding.

Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3178#issuecomment-2029622321
2024-04-01 08:23:10 -04:00
Raymond Hill
08aa3ebe10 Fix eslint warnings 2024-03-31 13:35:11 -04:00
Raymond Hill
152e9c9a95 New revision for dev build 2024-03-30 13:24:40 -04:00
Raymond Hill
d2ea9c1b2f Fix eslint warnings 2024-03-30 13:24:27 -04:00
Raymond Hill
0579d14d52 Update changelog 2024-03-29 10:36:25 -04:00
Raymond Hill
7d321c0a11 Spin-off cookie notices/social widgets lists into own category
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3154
2024-03-29 10:23:07 -04:00
Raymond Hill
b2a927d5ed New revision for stable release 2024-03-29 10:22:27 -04:00
Raymond Hill
08b8b875ca Import translation work from https://crowdin.com/project/ublock 2024-03-29 09:26:56 -04:00
Raymond Hill
d3fe073149 Import translation work from https://crowdin.com/project/ublock 2024-03-28 08:21:46 -04:00
Raymond Hill
108f1556c2 Use hard tabs for assets.json 2024-03-26 13:59:12 -04:00
Raymond Hill
fdb78b63d5 Make Firefox dev build auto-update 2024-03-26 13:25:55 -04:00
Raymond Hill
5307b886d3 New revision for release candidate 2024-03-26 12:48:33 -04:00
Raymond Hill
082d38d9d9 New revision for dev build 2024-03-26 12:48:00 -04:00
Raymond Hill
27e0db1dd2 Import translation work from https://crowdin.com/project/ublock 2024-03-26 12:47:05 -04:00
Raymond Hill
8e5e13cbdc Fine tune allowed tab indents in eslint 2024-03-26 12:45:05 -04:00
Raymond Hill
3919a16bb8 Do not block large media resources when loaded as top-level document
Related issues:
- https://github.com/uBlockOrigin/uBlock-issues/issues/1201
- https://github.com/uBlockOrigin/uBlock-issues/issues/3184

Top-level media resources are not meant to be blocked, see:
https://github.com/gorhill/uBlock/issues/2813#issuecomment-317177212
2024-03-26 12:44:08 -04:00
Raymond Hill
616c54f475 Make Firefox dev build auto-update 2024-03-23 13:40:50 -04:00
Raymond Hill
4c96acb913 Update changelog 2024-03-23 13:33:57 -04:00
Raymond Hill
c6019e755b Import translation work from https://crowdin.com/project/ublock 2024-03-23 13:33:08 -04:00
Raymond Hill
ce69a45d75 New revision for release candidate 2024-03-23 13:30:59 -04:00
Raymond Hill
90ab1a76ab Properly manage cache storage regarding managed user filters
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3177
2024-03-23 13:28:18 -04:00
Raymond Hill
11a48561e0 Improve [trusted-]set-cookie scriptlets
Related issues:
- https://github.com/uBlockOrigin/uBlock-issues/issues/3178
- https://github.com/uBlockOrigin/uBlock-issues/issues/2777
2024-03-23 11:00:45 -04:00
Raymond Hill
b78f0c4fa4 Make Firefox dev build auto-update 2024-03-22 15:35:59 -04:00
Raymond Hill
47ae87724a Import translation work from https://crowdin.com/project/ublock 2024-03-22 14:53:22 -04:00
Raymond Hill
513942c2a4 New revision for release candidate 2024-03-22 14:49:21 -04:00
Raymond Hill
5d60df4b1b Fix bad eslint rule + minor code review
`webext.js` module needs to be explicitly imported.

Added time-based heuristic to decide when a webpage loses
communication with background process.
2024-03-22 14:46:57 -04:00
Raymond Hill
d368747235 Import translation work from https://crowdin.com/project/ublock 2024-03-22 09:49:42 -04:00
Raymond Hill
0a7e2d2ae8 Import translation work from https://crowdin.com/project/ublock 2024-03-21 13:59:06 -04:00
Raymond Hill
764a1772ba [mv3] Add option to disable toolbar icon badge
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/119
2024-03-21 13:57:50 -04:00
Raymond Hill
62965cd34f Import translation work from https://crowdin.com/project/ublock 2024-03-21 13:55:53 -04:00
Raymond Hill
fbfbae7c74 Make Firefox dev build auto-update 2024-03-20 16:20:46 -04:00
Raymond Hill
630cca4b8e New revision for release candidate 2024-03-20 16:14:24 -04:00
Raymond Hill
9fd80cf6dd Improve spoof-css scriptlet 2024-03-20 09:31:17 -04:00
Raymond Hill
466126704c Make Firefox dev build auto-update 2024-03-19 12:06:16 -04:00
Raymond Hill
60c7ffb0af New revision for release candidate 2024-03-19 11:56:27 -04:00
Raymond Hill
61e916901b Add concept of "preferred" lists
Preferred lists will be visually listed above other lists.
2024-03-19 11:51:03 -04:00
Raymond Hill
7e48a03927 Make syntax errors more visible
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/992#issuecomment-2002586019
2024-03-19 11:39:07 -04:00
Raymond Hill
0cb6170584 Fix various quirks with "My filters" trust-related checkbox
Simplify code to force syntax highlighter and linter to reprocess
the content when toggling trust-related checkbox.

Fix issue with using `mousedown` on searchbar widgets, related
feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3161#issuecomment-2002112770

Fix issues reported by eslint.
2024-03-19 10:59:15 -04:00
Raymond Hill
58c935aa9e Fine tune eslint
Allow arbitrary indent inside literal array declaration.
2024-03-19 09:55:28 -04:00
Raymond Hill
7c235df611 Make Firefox dev build auto-update 2024-03-18 12:36:05 -04:00
Raymond Hill
7a7f7ee7a9 New revision for release candidate 2024-03-18 12:27:44 -04:00
Raymond Hill
d5aa38aec8 Update changelog 2024-03-18 12:27:20 -04:00
Raymond Hill
950b5ea55e Fine tune eslint
Support no-indentation for file-level if block or
arrow function block.
2024-03-18 11:08:52 -04:00
Raymond Hill
38b325ecce Raise the limit for detection of stale content scripts 2024-03-17 13:03:19 -04:00
Raymond Hill
fc1f0b771a Allow body of file-level if statement to not be indented 2024-03-17 13:03:19 -04:00
Imre Kristoffer Eilertsen
499c80bd8a Fixed Belgian and Nepali flags for Windows Chromium users (#3914)
* Added flagcode matching for Belgium specifically

* Added a transparent Nepal flag
2024-03-17 10:42:20 -04:00
Raymond Hill
36f81be13b Use eslint instead of jshint
Eslint supports newer JS syntax such as static fields in classes,
which is supported by all browsers/version with official uBO
support.

Reference:
https://eslint.org/docs/latest/

Fixing all warnings for all JS files will be done over time.
2024-03-17 09:44:00 -04:00
Raymond Hill
42dfdfea5d Fix regression in visual of document-blocked page
Related commit:
46ea5519c1
2024-03-17 09:40:59 -04:00
Raymond Hill
94de4e266e Fix popup panel when embedded in logger
Regression from commit:
https://github.com/gorhill/uBlock/commit/0d77ccded7

Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/2419#discussioncomment-8759449
2024-03-17 09:36:39 -04:00
Raymond Hill
3f7374c1f1 Mind that tabs.sendMessage can throw 2024-03-17 09:34:05 -04:00
Raymond Hill
9146134874 Improve set-cookie scriptlet
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3016
2024-03-15 12:29:22 -04:00
Raymond Hill
85955368bd Make Firefox dev build auto-update 2024-03-14 17:01:19 -04:00
Raymond Hill
52705c6e6e New revision for dev build 2024-03-14 16:55:24 -04:00
Raymond Hill
ac8abc4eba Update changelog 2024-03-14 16:54:52 -04:00
Raymond Hill
1cb190e102 Append wildcard character only when filter starts & ends with /
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/1088
2024-03-14 13:32:36 -04:00
Raymond Hill
65b6753c69 Simpler to use an extra property than to use a new assets.json 2024-03-14 10:20:25 -04:00
Raymond Hill
8165067b9b Act on default mouse button 2024-03-14 09:14:15 -04:00
Raymond Hill
706c79b226 Make Firefox dev build auto-update 2024-03-13 14:45:44 -04:00
Raymond Hill
3807844b34 New revision for dev build 2024-03-13 14:41:13 -04:00
Raymond Hill
78bffee4ae Update changelog 2024-03-13 14:40:18 -04:00
Raymond Hill
67a653046d Import translation work from https://crowdin.com/project/ublock 2024-03-13 14:39:55 -04:00
Raymond Hill
52b46eb98b Add procedural operator :shadow() -- status is experimental
For internal use by filter list maintainers, do not open issues
about this. Left undocumented on purpose.

This new procedural operator allows to target elements in the
shadow root of an element.

subject:shadow(arg)

- Description: Look-up matching elements inside the shadow root (if
  present) of _subject_.
- Chainable: Yes
- _subject_: Can be a plain or procedural selector.
- _arg_: A plain or a procedural selector for the elements to target
  inside the shadowroot.

Example:

..##body > div:not([class]):shadow(div[style]):has(:shadow([data-i18n^="#ad"]))
2024-03-13 14:28:53 -04:00
Raymond Hill
6f54317bdf Keep search input field visuals consistent
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3161#issuecomment-1992340127
2024-03-13 10:57:56 -04:00
Raymond Hill
df5a6d1fcc Constant name consistency 2024-03-13 10:03:05 -04:00
Raymond Hill
c8762945d9 Fix failure to create popup logger window sometimes
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2249
2024-03-13 10:01:33 -04:00
Raymond Hill
924d3b3c4c Make Firefox dev build auto-update 2024-03-12 13:36:17 -04:00
Raymond Hill
474fd3d2f3 New revision for dev build 2024-03-12 13:28:16 -04:00
Raymond Hill
747a354548 Update changelog 2024-03-12 13:27:53 -04:00
Raymond Hill
e7a0f8c781 Improve json-prune-related scriptlets
New special properties:
- `[-]`: remove an array entry if part right of `[-]` matches the
  inspected item.
- `{-}`: remove a property if part right of `{-}` mmatches the
  inspected item.

This is useful to remove entries which have unspecified names.
2024-03-12 13:21:16 -04:00
Raymond Hill
664dd95700 Support maximizing editor to viewport size
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3161#issuecomment-1991066618
2024-03-12 11:25:50 -04:00
Raymond Hill
710d8c6494 Import translation work from https://crowdin.com/project/ublock 2024-03-12 10:08:22 -04:00
Raymond Hill
258a26283d assets.json is not meant to be updated until 1.57 is widespread 2024-03-11 22:24:15 -04:00
Raymond Hill
2c9ab8ee04 Fix the salvaging of rule ids 2024-03-11 22:22:57 -04:00
Raymond Hill
7c14b3963e actions/checkout@v3 => actions/checkout@v4 2024-03-11 19:31:17 -04:00
Raymond Hill
633135745f Need new assets.son file for next release
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3154
2024-03-11 18:41:18 -04:00
Raymond Hill
461810d93c Rename scuo- to s14e- 2024-03-11 15:40:50 -04:00
Raymond Hill
9c35ffe3c7 Make Firefox dev build auto-update 2024-03-11 13:36:30 -04:00
Raymond Hill
0332bf163c Import translation work from https://crowdin.com/project/ublock 2024-03-11 13:29:30 -04:00
Raymond Hill
24fd6f587c New revision for dev build 2024-03-11 13:10:00 -04:00
Raymond Hill
25687f9124 Update changelog 2024-03-11 13:07:58 -04:00
Raymond Hill
0d77ccded7 Add advanced setting to force popup panel orientation
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/discussions/2419#discussioncomment-8746679

Name: `popupPanelOrientation`

Supported values:
- `unset` (default): uBO decides whichever mode is best
- `landscape`: force popup panel to landscape mode
- `portrait`: force popup panel to portrait mode
2024-03-11 13:01:51 -04:00
Raymond Hill
46ea5519c1 Add checkboxes to "My filters" pane
Related issues:
- https://github.com/uBlockOrigin/uBlock-issues/issues/3161
- https://github.com/uBlockOrigin/uBlock-issues/discussions/2895#discussioncomment-8504374

Two checkboxes have been added to the "My filters "pane:

1. A checkbox to wholly disable/enable "My filters". This is equivalent
   to the checkbox for "My filters" in "Filter lists" pane.

2. A checkbox to enable/disable the trustworthiness of the content
   of "My filters". Default to untrusted.

Since toggling these checkboxes requires reloading all filter lists,
their new state must be committed through the "Apply changes" button.

Additionally: a "book" icon has been added to the top-right of the
dashboard, which is a link to the wiki according to whichever pane is
currently active.
2024-03-11 11:39:31 -04:00
Raymond Hill
640eaf89d0 Import translation work from https://crowdin.com/project/ublock 2024-03-11 08:38:57 -04:00
Raymond Hill
d5c359d411 Import translation work from https://crowdin.com/project/ublock 2024-03-07 13:09:24 -05:00
Raymond Hill
e1e861704b [mv3] Fix build script 2024-03-07 09:19:16 -05:00
Raymond Hill
8533fa74ee [mv3] Use EasyList lists for "Annoyances" section 2024-03-07 09:14:30 -05:00
Raymond Hill
02966afb8c [mv3] Do not pollute browser console in stable release versions 2024-03-06 12:46:12 -05:00
Raymond Hill
4f6fa840c3 Use 100svh everywhere 100vh is used
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3058
2024-03-06 08:45:49 -05:00
Raymond Hill
7dffaa03d5 Make Firefox dev build auto-update 2024-03-05 12:11:22 -05:00
Raymond Hill
c990e74ee5 New revision for dev build 2024-03-05 11:50:52 -05:00
Raymond Hill
f6e2cb29d5 Update changelog 2024-03-05 11:20:33 -05:00
Raymond Hill
63acdcbdeb Assume UTF-8 when no encoding can be looked up.
This will make HTML filtering and `replace=` filter option less
likely to be bypassed by uBO, as the body response filterer
previously required an encoding to be expressly declared before
acting on the response body.

UTF-8 usage is currently reported as ~98.2%:
https://w3techs.com/technologies/history_overview/character_encoding
2024-03-05 11:11:42 -05:00
Raymond Hill
b95a1e987f Use hard tabs 2024-03-05 09:03:51 -05:00
Raymond Hill
f18d62ee4c Import translation work from https://crowdin.com/project/ublock 2024-03-05 08:11:39 -05:00
Raymond Hill
04fead8d8a Group lists with unknown group to special section
Related issue:
https://old.reddit.com/r/uBlockOrigin/comments/1b6tad0
2024-03-05 08:02:55 -05:00
Raymond Hill
24d94e559d Fix issue with "My filters" pane on mobile
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3058
2024-03-05 08:00:42 -05:00
Raymond Hill
185ff3fd96 Empty target directory instead of re-creating it
For better web-ext compatibility.
2024-03-05 07:59:11 -05:00
Raymond Hill
395fa7197b Reduce TTL of serializer workers 2024-03-05 07:27:02 -05:00
Raymond Hill
238724eed1 Fix looking-up unexisting sections in "Filter lists" pane
Related feedback:
https://old.reddit.com/r/uBlockOrigin/comments/1b6tad0/i_updated_to_the_new_dev_build_1561b10_and_now/
2024-03-04 23:57:47 -05:00
Raymond Hill
3682eed638 Use "small viewport" for max height of dashboard
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3058
2024-03-04 21:52:34 -05:00
Raymond Hill
c7a9bcb7b2 Import translation work from https://crowdin.com/project/ublock 2024-03-04 11:38:55 -05:00
Raymond Hill
041e13304e Make Firefox dev build auto-update 2024-03-03 20:35:57 -05:00
Raymond Hill
0a72745f9c Import translation work from https://crowdin.com/project/ublock 2024-03-03 20:28:07 -05:00
Raymond Hill
e2ed86ff65 New revision for dev build 2024-03-03 20:19:24 -05:00
Raymond Hill
a557f62112 Support aborting "Pick" mode in element picker
This allows a user to go back to the previous selection after
entering interactive "Pick" mode.
2024-03-03 20:08:15 -05:00
Raymond Hill
0f4e50db07 Remove sections with no lists in "Filter lists" pane
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3154#issuecomment-1975413427
2024-03-03 20:05:45 -05:00
Raymond Hill
ca432fa5d2 Make Firefox dev build auto-update 2024-03-03 15:40:49 -05:00
Raymond Hill
d1ccbdfc7c New revision for dev build 2024-03-03 15:34:28 -05:00
Raymond Hill
0268980233 Update changelog 2024-03-03 15:33:56 -05:00
Raymond Hill
393fb91325 Import translation work from https://crowdin.com/project/ublock 2024-03-03 15:32:37 -05:00
Raymond Hill
8781ffe82a Minor CSS fine-tuning 2024-03-03 15:31:41 -05:00
Raymond Hill
21a76e32a1 Add "Social widgets", "Cookie notices" sections in "Filter lists" pane
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3154
2024-03-03 15:29:38 -05:00
Raymond Hill
aac88ac766 Import translation work from https://crowdin.com/project/ublock 2024-03-03 14:30:30 -05:00
Raymond Hill
270040d466 Fix disabled state of new benchmark buttons 2024-03-03 13:46:29 -05:00
Raymond Hill
43e0e15125 More fine-tuning of element picker visual/behavior
- Group "Pick" and "Preview"
- Set minimal button width
- Auto-minimize when picking instead of fully hiding the dialog:
  this allows to quit while in picking mode
2024-03-03 10:08:56 -05:00
Raymond Hill
7f68c62f23 Remove obsolete built-in trusted directives
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3101#issuecomment-1974922229
2024-03-02 18:02:43 -05:00
Raymond Hill
41aab2a20e Make Firefox dev build auto-update 2024-03-02 17:11:07 -05:00
Raymond Hill
48e1c8d9a8 New revision for dev build 2024-03-02 17:01:56 -05:00
Raymond Hill
fa3c1f7200 Update changelog 2024-03-02 16:59:51 -05:00
Raymond Hill
6266c4718d Move "Quit" button to top bar in element picker
Additionally:

- Removed auto fade out of dialog when mouse does not hover the
  dialog.
- Added a minimize/maximize button in top bar

Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/55
2024-03-02 16:45:03 -05:00
Raymond Hill
a0a6ae0d0c Rename module-scoped classes for better distinction in profiling data 2024-03-02 09:41:12 -05:00
Raymond Hill
7ab7104a54 Clicking again currently inspected row will close the dialog 2024-03-02 09:37:15 -05:00
Raymond Hill
252656968e Benchmark buttons must be disabled by default 2024-03-02 08:58:49 -05:00
Raymond Hill
7a768e7b1a No longer disable generic cosmetic filters by default on mobile
As discussed with filter list maintainers.
2024-03-02 08:52:42 -05:00
Raymond Hill
603239970d Improve spoof-css scriptlet 2024-03-02 08:11:29 -05:00
Raymond Hill
a086ae1f19 Make Firefox dev build auto-update 2024-03-01 20:06:09 -05:00
Raymond Hill
2aef53a117 New revision for dev build 2024-03-01 19:59:14 -05:00
Raymond Hill
ea2d5dde85 Update changelog 2024-03-01 19:58:56 -05:00
Raymond Hill
96704f2fda Make asset updater compatible with non-persistent background page
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2969

Additionally, modified default timing values for asset updater and
selfie creation.
2024-03-01 19:52:55 -05:00
Raymond Hill
80b66c849a Add more benchmark tools to devtool page 2024-03-01 17:26:21 -05:00
Raymond Hill
9215fefab4 Remove Kurdish as target language
No translation work has ever be done to it.
2024-03-01 16:26:14 -05:00
Raymond Hill
953c978d59 Move dragbar to the top of element picker dialog
Also fine-tuning CSS for small screen displays.

Related feedback:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/871
2024-03-01 11:56:22 -05:00
Raymond Hill
7b290e99ab Make Firefox dev build auto-update 2024-02-29 20:35:43 -05:00
Raymond Hill
bc8aba48ab New revision for dev build 2024-02-29 20:31:23 -05:00
Raymond Hill
c2c80be897 Forgot Chromium's alarms API is not promisified... 2024-02-29 20:29:36 -05:00
Raymond Hill
d1fe023281 Make Firefox dev build auto-update 2024-02-29 20:05:38 -05:00
Raymond Hill
a2ad1a67a9 New revision for dev build 2024-02-29 20:00:16 -05:00
Raymond Hill
9b60a68a75 Update changelog 2024-02-29 19:59:39 -05:00
Raymond Hill
e02ea69c86 Add advanced setting requestStatsDisabled
To disable collating global blocked/allowed counts.

Boolean, default to `false`.

Setting to `true` will prevent uBO from loading/saving global
blocked/allowed counts, and in such case the "Blocked since
install" count instead reflects the count since uBO launched.

Setting back to `false` will cause the counts to resume from
last time they were saved.

Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3100
2024-02-29 19:53:06 -05:00
Raymond Hill
e0971fe0ac Make Firefox dev build auto-update 2024-02-29 13:36:16 -05:00
Raymond Hill
70cf53067d New revision for dev build 2024-02-29 13:29:26 -05:00
Raymond Hill
801d6500b0 Fix idbStorage.keys()
Related commit:
https://github.com/gorhill/uBlock/commit/d4efaf020b
2024-02-29 13:28:04 -05:00
Raymond Hill
d8544dc047 Forgot to declarare "alarms" permmission in manifest for Chromium
Related commit:
https://github.com/gorhill/uBlock/commit/059e4e5e28
2024-02-29 13:18:33 -05:00
Raymond Hill
727e71b328 Make Firefox dev build auto-update 2024-02-29 12:05:40 -05:00
Raymond Hill
2a27643874 Update changelog 2024-02-29 11:56:49 -05:00
Raymond Hill
275a1299e1 New revision for dev build 2024-02-29 11:54:51 -05:00
Raymond Hill
059e4e5e28 Imrpove saving request stats for non-persistent background page
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2969

Related previous commit:
https://github.com/gorhill/uBlock/commit/5a338b7210

The save-to-storage period is back to being around ~4 minutes, but
now browser.storage.session API is used to keep track of request
stats should the extension be suspended before the period elapse.
2024-02-29 11:43:51 -05:00
Raymond Hill
09bba3199e Import translation work from https://crowdin.com/project/ublock 2024-02-29 09:48:01 -05:00
Raymond Hill
d7154de9e9 Minor renaming of variables 2024-02-29 09:18:07 -05:00
Raymond Hill
ba95d2bc49 Minor code review of last commit
Related commit:
https://github.com/gorhill/uBlock/commit/2b16a10b82
2024-02-29 08:37:44 -05:00
Raymond Hill
2b16a10b82 First lookup matching stock lists when importing URLs
Related discussion:
https://github.com/MasterKia/PersianBlocker/discussions/224
2024-02-29 07:51:08 -05:00
Raymond Hill
b0067b79d5 Reset filter lists in worker when creating filters via "Block element"
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/968
2024-02-28 18:53:27 -05:00
Raymond Hill
c6706c1983 Make Firefox dev build auto-update 2024-02-28 17:45:38 -05:00
Raymond Hill
a2aa357dac Update changelog 2024-02-28 17:42:38 -05:00
Raymond Hill
0dc8cf6e8a New revision for dev build 2024-02-28 17:39:13 -05:00
Raymond Hill
d4efaf020b Make indexedDB to default fast cache by default
Turns out it's currently the fastest among the three currently
implemented (Cache, browser.storage.session, indexedDB). Possibly
because indexedDB can natively persist structure-cloneable data,
something uBO can now benefit with the work on abstracting away
the limitations of various storages being limited to persist only
text or JSON data.

Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2969
2024-02-28 17:31:29 -05:00
Raymond Hill
9862446b10 Various fine tuning code of recent commits 2024-02-28 13:32:24 -05:00
Raymond Hill
3c299b8632 Remove trusted-source requireement when using badfilter
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3136
2024-02-28 12:14:59 -05:00
Raymond Hill
ad03f7d86a Make Firefox dev build auto-update 2024-02-27 21:56:01 -05:00
Raymond Hill
50271e2ba0 New revision for dev build 2024-02-27 21:47:42 -05:00
Raymond Hill
79ea85dbc4 More fine tuning of cache storage-related code 2024-02-27 21:47:06 -05:00
Raymond Hill
a9211cfa2f Make Firefox dev build auto-update 2024-02-27 18:51:05 -05:00
Raymond Hill
96d45f12d2 New revision for dev build 2024-02-27 18:42:43 -05:00
Raymond Hill
b0fc5d3d21 Fix race condition when saving cache registry
Related to new cache storage code.
2024-02-27 18:41:10 -05:00
Raymond Hill
e8b7037ba8 Make Firefox dev build auto-update 2024-02-27 15:11:11 -05:00
Raymond Hill
ac665ba7cc New revision for dev build 2024-02-27 15:05:25 -05:00
Raymond Hill
7590c0711d Fine-tune cache storage related-code
Related discussion:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/876

Related commit:
086766a924
2024-02-27 15:04:05 -05:00
Raymond Hill
4d88b5121c Fine tune publishing scripts 2024-02-27 07:09:02 -05:00
Raymond Hill
65ab026f25 Make Firefox dev build auto-update 2024-02-26 18:21:19 -05:00
Raymond Hill
30036ad36f New revision for dev build 2024-02-26 18:02:38 -05:00
Raymond Hill
385bc21ef1 Update changelog 2024-02-26 17:57:03 -05:00
Raymond Hill
086766a924 Redesign cache storage
In uBO, the "cache storage" is used to save resources which can
be safely discarded, though at the cost of having to fetch or
recompute them again.

Extension storage (browser.storage.local) is now always used as
cache storage backend. This has always been the default for
Chromium-based browsers.

For Firefox-based browsers, IndexedDB was used as backend for
cache storage, with fallback to extension storage when using
Firefox in private mode by default.

Extension storage is reliable since it works in all contexts,
though it may not be the most performant one.

To speed-up loading of resources from extension storage, uBO will
now make use of Cache API storage, which will mirror content of
key assets saved to extension storage. Typically loading resources
from Cache API is faster than loading the same resources from
the extension storage.

Only resources which must be loaded in memory as fast as possible
will make use of the Cache API storage layered on top of the
extension storage.

Compiled filter lists and memory snapshot of filtering engines
(aka "selfies") will be mirrored to the Cache API storage, since
these must be loaded into memory as fast as possible, and reloading
filter lists from their compiled counterpart is a common
operation.

This new design makes it now seamless to work in permanent private
mode for Firefox-based browsers, since extension storage now
always contains cache-related assets.

Support for IndexedDB is removed for the time being, except to
support migration of cached assets the first time uBO runs with
the new cache storage design.

In order to easily support all choices of storage, a new serializer
has been introduced, which is capable of serializing/deserializing
structure-cloneable data to/from a JS string.

Because of this new serializer, JS data structures can be stored
directly from their native representation, and deserialized
directly to their native representation from uBO's point of view,
since the serialization occurs (if needed) only at the storage
interface level.

This new serializer simplifies many code paths where data
structures such as Set, Map, TypedArray, RegExp, etc. had to be
converted in a disparate manner to be able to persist them to
extension storage.

The new serializer supports workers and LZ4 compression. These
can be configured through advanced settings.

With this new layered design, it's possible to introduce more
storage layers if measured as beneficial (i.e. maybe
browser.storage.session)

References:
- https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage/local
- https://developer.mozilla.org/en-US/docs/Web/API/Cache
- https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm
2024-02-26 16:50:11 -05:00
Raymond Hill
2262a129ec Don't match network filter-derived regexes against non-network URIs
Context: element picker

Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3142
2024-02-26 16:08:12 -05:00
Raymond Hill
f7e00e4223 [mv3] Fix rule id-salvaging task 2024-02-25 20:49:25 -05:00
Raymond Hill
fcc77e7c92 [mv3] Add ability to manually add filters to a ruleset 2024-02-25 20:39:21 -05:00
Raymond Hill
c4d2dcd835 Add ability to clean dist/build/[assets-related folders] 2024-02-25 18:27:07 -05:00
Raymond Hill
439a059cca Remove obsolete trusted directives
All supported browsers now have the concept of priviledged
pages, there is no need for these extra trusted-site directives.

Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3101
2024-02-19 11:06:39 -05:00
Raymond Hill
e527a8f9af Support logging details of calls to json-prune-fetch-response
Example:

    example.com##+js(json-prune-fetch-response)

This will output to the logger details of all fetch() with a
Response.json() call.

Related discussion:
https://github.com/uBlockOrigin/uAssets/discussions/22556
2024-02-19 10:59:12 -05:00
Raymond Hill
fef26e234d Make the "untrusted sources" warning always visible
It won't disappear when vertical space is restricted.
2024-02-18 08:00:34 -05:00
Raymond Hill
9666eeb9cf Do not treat selectors as "common" when char 0x09-0x0D are in attr value 2024-02-17 20:25:41 -05:00
Raymond Hill
0096b74d46 Make Firefox dev build auto-update 2024-02-17 20:06:02 -05:00
Raymond Hill
a7e8485b32 Update changelog 2024-02-17 20:01:42 -05:00
Raymond Hill
e6e01d96a4 New revision for dev build 2024-02-17 19:59:53 -05:00
Raymond Hill
be3e366019 Escape special whitespace characters in attribute values
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3127

Reference:
https://mathiasbynens.be/notes/css-escapes
2024-02-17 19:57:44 -05:00
Raymond Hill
33749d2d3f Use requestIdleCallback() in href-sanitizer scriptlet
Instead of requestAnimationFrame().
2024-02-17 12:53:57 -05:00
Raymond Hill
4af57e3e60 Import translation work from https://crowdin.com/project/ublock 2024-02-17 09:34:41 -05:00
Raymond Hill
557d8075a2 New version for stable release 2024-02-17 09:28:38 -05:00
Raymond Hill
d8fc4b6c68 Make Firefox dev build auto-update 2024-02-15 14:46:13 -05:00
Raymond Hill
f6d68be858 New revision for release candidate 2024-02-15 14:40:25 -05:00
Raymond Hill
0f4078901a Update changelog 2024-02-15 14:39:50 -05:00
Raymond Hill
2a5a444482 Mind that multiple uritransform may apply to a single request
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3125
2024-02-15 14:34:50 -05:00
Raymond Hill
9bff0c2f94 Fix incorrect built-in filtering expression in logger
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3126
2024-02-15 14:03:15 -05:00
Raymond Hill
4832821715 Minor code review 2024-02-15 10:05:10 -05:00
Raymond Hill
84481fcd98 Fix typo in log message 2024-02-15 09:47:15 -05:00
Raymond Hill
7e00046b8e [mv3] Salvage rule ids for all rulesets 2024-02-15 08:02:46 -05:00
Raymond Hill
8d47eac6e6 [mv3] Indent rulesets with fewer rules 2024-02-14 15:48:59 -05:00
Raymond Hill
88d9064a30 Put back proper account id 2024-02-14 15:09:03 -05:00
Raymond Hill
c6eefe3992 Make Firefox dev build auto-update 2024-02-14 15:06:10 -05:00
Raymond Hill
57c387af36 Update changelog 2024-02-14 14:57:56 -05:00
Raymond Hill
a2ced90398 Update changelog 2024-02-14 14:54:13 -05:00
Raymond Hill
bc0248bd07 Merge remote-tracking branch 'origin/master' 2024-02-14 14:51:43 -05:00
Raymond Hill
41511726dc Further improve detection of forbidden report-xxx usage in filters
As per feedback from https://github.com/distinctmondaylila

Related commit:
https://github.com/gorhill/uBlock/commit/db5656f607
2024-02-14 14:48:31 -05:00
Raymond Hill
e8194aecf0 Further improve detection of forbidden report-xxx usage in filters
As per feedback from https://github.com/distinctmondaylila
2024-02-14 14:43:29 -05:00
Raymond Hill
1ef2ea0e93 Update changelog 2024-02-14 14:34:23 -05:00
Raymond Hill
b39dac34b1 New revision for release candidate 2024-02-14 14:33:25 -05:00
Raymond Hill
21ec5a277c Fix improper invalidation of valid uritransform exception filters
Related feedback:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/831#discussioncomment-8461847
2024-02-14 14:30:05 -05:00
Raymond Hill
f2d7413a42 [mv3] Reuse rule ids across release where possible
This is to reduce the diff size of rulesets in new
releases. Beside smaller diff size, this also makes it
easier to investigate rule changes across releases.
2024-02-14 14:27:36 -05:00
Raymond Hill
d6b88d5d6e Make Firefox dev build auto-update 2024-02-14 11:50:43 -05:00
Raymond Hill
65b71f2e19 New revision for release candidate 2024-02-14 11:43:39 -05:00
Raymond Hill
ebb110fb3e Fix logging code in trusted-replace-argument scriptlet
Related feedback:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/859#discussioncomment-8368839
2024-02-14 11:41:58 -05:00
Raymond Hill
e16cedb18d Make Firefox dev build auto-update 2024-02-14 09:11:15 -05:00
Raymond Hill
71eccf94dc Update changelog 2024-02-14 08:46:40 -05:00
Raymond Hill
f2c1e72661 New revision for release candidate 2024-02-14 08:40:09 -05:00
Raymond Hill
50ebfb9932 Mind that attribute names are case-insensitive
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3121
2024-02-14 08:37:01 -05:00
Raymond Hill
b22b3d729b Improve prevent-addEventListener scriptlet
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3061#issuecomment-1899042062
2024-02-14 08:23:16 -05:00
Raymond Hill
068b625bef In set-attr, restrict on... attributes to empty string only
As per feedback from https://github.com/distinctmondaylilac

Related commit:
https://github.com/gorhill/uBlock/commit/3037ae5f04

Additionally, added logging ability to the scriptlet.
2024-02-13 19:41:25 -05:00
Raymond Hill
68186a9242 Minor code review 2024-02-13 17:52:05 -05:00
Raymond Hill
e2d40cc446 Make Firefox dev build auto-update 2024-02-13 17:00:29 -05:00
Raymond Hill
9e1e19bdf3 New revision for release candidate 2024-02-13 16:49:00 -05:00
Raymond Hill
d80a3e30f8 Minor code review 2024-02-13 16:41:45 -05:00
Fanboynz
397d6d47b9 Fix Chartbeat flicker control div's (#3913) 2024-02-13 16:35:20 -05:00
Raymond Hill
6551cab525 Improve loggger output of prevent-fetch scriptlet
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/3115
2024-02-13 16:12:11 -05:00
Raymond Hill
246ae91c79 Make Firefox dev build auto-update 2024-02-13 15:46:21 -05:00
Raymond Hill
a7786a0a32 Import translation work from https://crowdin.com/project/ublock 2024-02-13 15:36:10 -05:00
Raymond Hill
00d90570a3 Update changelog 2024-02-13 15:16:11 -05:00
Raymond Hill
cc1199f4b6 New revision for dev build 2024-02-13 15:13:40 -05:00
Raymond Hill
7b138b58c6 Fix potential exfiltration of browsing history by a rogue list author through permissions=
As with `csp=` option, reporting capabilities need to be taken
into account with `permissions=` option.

Reference:
https://github.com/w3c/webappsec-permissions-policy/blob/main/reporting.md

This commit ensures that `permissions=` option using `report-to` are
marked as invalid.
2024-02-13 15:09:38 -05:00
Raymond Hill
3037ae5f04 Ignore event handler-related attributes in set-attr scriptlet
As suggested by https://github.com/distinctmondaylilac in internal
email to ubo-security:

> As a sidenote, it may be worth considering if `set-attr` should
> be able to set event handler attributes. It could potentially
> be used to copy the contents of e.g. onclick to other event handlers,
> resulting in self-clicking buttons.
2024-02-13 14:59:00 -05:00
Raymond Hill
db5656f607 Fix potential exfiltration of browsing history by a rogue list author through csp=
As reported internally to ubo-security by https://github.com/distinctmondaylila

One issue is a regression from the rewriting of the static filtering
parser in version 1.47.0, specifically the following commit:
https://github.com/gorhill/uBlock/commit/8ea3b0f64c
The existing regex was no longer suitable to properly detect
some usage of `report-xxx` in the rwritten parser.

Another issue which predates 1.47.0 is that the regex used for
validation was case-sensititive, while the `report-uri` directive
can be written using uppercase letters, i.e. `Report-uri`.
2024-02-13 14:35:08 -05:00
Raymond Hill
2705059d7a Make Firefox dev build auto-update 2024-02-02 12:55:48 -05:00
Raymond Hill
ca3bd00d74 New revision for dev build 2024-02-02 12:48:23 -05:00
Raymond Hill
9b40b2150a Fix argument list lookup in trusted-replace-argument scriptlet 2024-02-02 12:46:59 -05:00
Raymond Hill
8c7a33fe90 Make Firefox dev build auto-update 2024-02-02 09:56:17 -05:00
Raymond Hill
4688138d0f New revision for dev build 2024-02-02 09:47:45 -05:00
Raymond Hill
b4da81f8d4 Improve logging information in prevent-window-open scriptlet 2024-02-02 09:36:08 -05:00
Raymond Hill
28e1424058 Fall back to console if log info can't be relayed to logger 2024-02-02 09:24:24 -05:00
Raymond Hill
b0122bb9fc Do not rely on vAPI presence in logger broadcast code
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/3096#discussioncomment-8339494
2024-02-02 09:15:09 -05:00
Raymond Hill
605c830312 Review/fix content of assets.json 2024-02-01 18:22:48 -05:00
Raymond Hill
12a9245164 Remove outdated, unused scriptlet
Related commit:
2b2e0fcb14
2024-01-31 11:31:24 -05:00
Raymond Hill
0e8ff10e92 [mv3] Mind service workers for sites in "no filtering" mode
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/114
2024-01-31 09:59:45 -05:00
Raymond Hill
ad88ff213b Make Firefox dev build auto-update 2024-01-30 21:11:07 -05:00
Raymond Hill
46d09c5b7a New revision for dev build 2024-01-30 20:53:35 -05:00
Raymond Hill
1db54c47e1 Fix the logging of all prevent-xhr calls
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/3096#discussioncomment-8309729
2024-01-30 20:52:07 -05:00
Raymond Hill
1e614a7b10 Remove duplicate URL
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3099
2024-01-29 09:04:27 -05:00
Raymond Hill
d731ea11e0 Make Firefox dev build auto-update 2024-01-28 19:05:37 -05:00
Raymond Hill
0d1b9a14e2 New revision for dev build 2024-01-28 18:58:30 -05:00
Raymond Hill
7282d953b6 Fix last commit
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/3096#discussioncomment-8272470

Related commit:
6cfba082f9
2024-01-28 18:54:37 -05:00
Raymond Hill
0f12d5f344 Make Firefox dev build auto-update 2024-01-28 11:45:31 -05:00
Raymond Hill
2b257d86fc New revision for dev build 2024-01-28 11:31:18 -05:00
Raymond Hill
59d46ecd78 Postprocess selections only from from logger entries
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3097
2024-01-28 11:17:36 -05:00
Raymond Hill
6cfba082f9 Add more output to logger re. scriptlets 2024-01-28 10:58:41 -05:00
Raymond Hill
55879e6014 Add more output to logger re. scriptlets 2024-01-28 10:27:46 -05:00
Raymond Hill
54fba5270f Make Firefox dev build auto-update 2024-01-27 18:36:13 -05:00
Raymond Hill
6173610422 New revision for dev build 2024-01-27 18:25:43 -05:00
Raymond Hill
030072c324 Output more information to dev console when loading filter lists
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/discussions/2993#discussioncomment-8265914
2024-01-27 18:23:04 -05:00
Raymond Hill
6c54731a72 Add remove-cache-storage-item scriptlet
Usage:

...##+js(remove-cache-storage-item, cacheNamePattern[, urlPattern])

`cacheNamePattern`: the name of the cache to target. Plain string
  or regex.

`urlPattern`: the URL of the resource to remove. Plain string
  or regex. If no pattern is provided, the whole cache is removed.

Reference:
https://developer.mozilla.org/en-US/docs/Web/API/CacheStorage
2024-01-27 18:17:28 -05:00
Raymond Hill
fa162e2a31 Fix type
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/3096#discussioncomment-8265304
2024-01-27 08:56:00 -05:00
Raymond Hill
cd736b515c Fix bad CSS style 2024-01-27 07:54:37 -05:00
Raymond Hill
7fee16a4bd Minor CSS changes in logger's 'Export' tool 2024-01-27 07:51:05 -05:00
Raymond Hill
9d1d5f9839 Support 'week' unit in ! Expires: directive 2024-01-27 07:36:58 -05:00
Raymond Hill
7cd0ef6ab5 Make Firefox dev build auto-update 2024-01-27 07:30:30 -05:00
Raymond Hill
d1b3f78ba8 New revision for dev build 2024-01-27 07:23:05 -05:00
Raymond Hill
f200bbf5d5 Add trace information to console 2024-01-27 07:22:32 -05:00
Raymond Hill
8be8ac57a7 Bring back ability to log all calls to JSON.parse
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/3096
2024-01-27 06:43:36 -05:00
Raymond Hill
0df57e08d2 Make Firefox dev build auto-update 2024-01-26 22:45:41 -05:00
Raymond Hill
efddb727bd New revision for dev build 2024-01-26 22:42:02 -05:00
Raymond Hill
302d2f5670 Fix type
Related issue:
https://github.com/uBlockOrigin/uAssets/pull/22228
2024-01-26 22:38:31 -05:00
Raymond Hill
11dc33eb02 Make Firefox dev build auto-update 2024-01-26 21:11:08 -05:00
Raymond Hill
98ef5f0576 Update changelog 2024-01-26 21:05:42 -05:00
Raymond Hill
f37aa96033 New revision for dev build 2024-01-26 21:03:01 -05:00
Raymond Hill
cb6ff38f86 Fix error when site has only exception scriptlet filters
Cause by recent refactoring of scriptlet-related code.
2024-01-26 20:57:26 -05:00
Raymond Hill
be1f938c17 [mv3] Adjust as per changes in uBO base 2024-01-26 14:51:50 -05:00
Raymond Hill
120e845a81 Make Firefox dev build auto-update 2024-01-26 13:56:28 -05:00
Raymond Hill
f941043fc9 New revision for dev build 2024-01-26 13:53:00 -05:00
Raymond Hill
94ec65b7db Fix regression in response body filtering 2024-01-26 13:52:17 -05:00
Raymond Hill
6148d450ac Make Firefox dev build auto-update 2024-01-26 13:11:18 -05:00
Raymond Hill
5ece451cbd New revision for dev build 2024-01-26 13:01:41 -05:00
Raymond Hill
34da372d7a Ensure scriptlet logging information make it to destination
Avoid race conditions between isolated world-side broadcast channel
and main-side broadcast channel, so as to not lose logging
information if the isolated world-side is not yet ready to
receive through its broadcast channel.

Additionally, added new scriptlet: `trusted-replace-argument`.

[...]##+js(trusted-replace-argument, fn, argpos, argval [,condition, pattern])

Where:

- `fn` is the function we want to proxy through an `apply` handler.
  This can also be a class, in which case the scriptlet will proxy
  through `construct` handler. At the moment, `fn` must exist at the
  time the scriptlet executes.

- `argpos` is the 0-based position of the argument we want to change

- `argval` is the value we want to have for the argument -- the value
  is interpreted the same way the value for `set-constant` is
  interpreted.

- `condition, pattern` is a vararg which tells the scriptlet to act
  only if `pattern` is found in the argument to overwrite.

Example of usage:

    alliptvlinks.com##+js(trusted-replace-argument, MutationObserver, 0, noopFunc)
2024-01-26 12:18:30 -05:00
Raymond Hill
55e4cee6e8 Discard repeating adjacent entries in the logger 2024-01-26 09:24:10 -05:00
Raymond Hill
c1af7a7e0d Make Firefox dev build auto-update 2024-01-26 06:55:46 -05:00
Raymond Hill
f65109233f New revision for dev build 2024-01-26 06:47:27 -05:00
Raymond Hill
567508f619 Fix regression in looking up scriptlets for entity
Related feedback:
https://www.reddit.com/r/uBlockOrigin/comments/19fihsu/
2024-01-26 06:46:21 -05:00
Raymond Hill
663df76e8a Make Firefox dev build auto-update 2024-01-25 13:41:24 -05:00
Raymond Hill
e9c417d77e New revision for dev build 2024-01-25 13:32:01 -05:00
Raymond Hill
49a6dc868f Fix verbose mode not applying to newly injected scriptlets
Related commit:
869a653fdf
2024-01-25 13:30:41 -05:00
Raymond Hill
aa56fe1224 Make Firefox dev build auto-update 2024-01-25 13:06:07 -05:00
Raymond Hill
022a7ddf0e New revision for dev build 2024-01-25 12:51:13 -05:00
Raymond Hill
4dd9bcf956 Update changelog 2024-01-25 12:50:45 -05:00
Raymond Hill
c11db790ff Import translation work from https://crowdin.com/project/ublock 2024-01-25 12:49:32 -05:00
Raymond Hill
feb05f7e83 Add default tooltip until i18n-ed 2024-01-25 12:43:31 -05:00
Raymond Hill
869a653fdf Output scriptlet logging information to the logger
This commit brings the following changes to the logger:

All logging output generated by injected scriptlets are now sent to
the logger, the developer console will no longer be used to log
scriptlet logging information.

When the logger is not opened, the scriplets will not output any
logging information.

The goal with this new approach is to allow filter authors to
more easily assess the working of scriptlets without having to
go through scriptlet parameters to enable logging.

Consequently all the previous ways to tell scriptlets to log
information are now obsolete: if the logger is opened, the
scriptlets will log information to the logger.

Another benefit of this approach is that the dev tools do not
need to be open to obtain scriptlets logging information.

Accordingly, new filter expressions have been added to the logger:
"info" and "error". Selecting the "scriptlet" expression will also
keep the logging information from scriptlets.

A new button has been added to the logger (not yet i18n-ed): a
"volume" icon, which allows to enable verbose mode. When verbose
mode is enabled, the scriptlets may choose to output more
information regarding their inner working.

The entries in the logger will automatically expand on mouse hover.
This allows to scroll through entries which text does not fit into
a single row.

Clicking anywhere on an entry in the logger will open the detailed
view when applicable.

Generic information/errors will now be rendered regardless of which
tab is currently selected in the logger (similar to how tabless
entries are already being rendered).
2024-01-25 12:20:38 -05:00
Raymond Hill
f1889b02ee [mv3] Fix conversion of :xpath procedural filters
Procedural filters with `:xpath` operator were silently rejected
at conversion time because the parser was failing to evaluate the
xpath expression due to the absence of a `document` object in
nodejs.

If `document` object is not present, the parser will assume the
xpath expression is valid.
2024-01-22 10:57:48 -05:00
Raymond Hill
46e19e4f7f Update changelog 2024-01-21 14:46:59 -05:00
Raymond Hill
2e12d14259 Make Firefox dev build auto-update 2024-01-21 14:40:28 -05:00
Raymond Hill
3d576603c4 [mv3] uritransform cannot be converted to DNR 2024-01-21 14:32:14 -05:00
Raymond Hill
ec3f029b18 New revision for dev build 2024-01-21 14:30:44 -05:00
Raymond Hill
49dd68ef3d Code review recent commit re. quoting parameters
Related commit:
fa3a290ad4
2024-01-21 09:26:17 -05:00
Raymond Hill
77dc3339ac Make Firefox dev build auto-update 2024-01-20 22:00:49 -05:00
Raymond Hill
e3e01e32e7 New revision for dev build 2024-01-20 21:55:02 -05:00
Raymond Hill
967ec33b6a Update changelog 2024-01-20 21:54:35 -05:00
Raymond Hill
fa3a290ad4 Fix decompiling of scriptlet parameters
Scriptlets parameters which are quoted must be re-quoted when
output to the logger to be sure they can be properly looked up
in the list, and that they can be used through copy-paste
operations.
2024-01-20 21:46:12 -05:00
Raymond Hill
12b9efe74b Make Firefox dev build auto-update 2024-01-20 10:55:42 -05:00
Raymond Hill
b88fa360a7 New revision for dev build 2024-01-20 10:41:03 -05:00
Raymond Hill
2657cc0413 Update changelog 2024-01-20 10:39:21 -05:00
Raymond Hill
45e62c939f Add support for extraMatch in trusted-click-element scriptlet
Related issue:
https://github.com/uBlockOrigin/uAssets/issues/20744#issuecomment-1900710708

Reference documentation:
https://github.com/AdguardTeam/Scriptlets/blob/master/wiki/about-trusted-scriptlets.md#-%EF%B8%8F-trusted-click-element

Except that in uBO's implementation, if a regex is given as value
to match, it will be tested against an assembled "key=value"
string.
2024-01-20 10:33:36 -05:00
Raymond Hill
728799dab9 Make Firefox dev build auto-update 2024-01-19 11:41:28 -05:00
Raymond Hill
3160fa5825 New revision for dev build 2024-01-19 11:28:48 -05:00
Raymond Hill
6fc4dd31e7 Update changelog 2024-01-19 11:28:22 -05:00
Raymond Hill
f624c835c2 Remove minimum height constraint from "My filters" pane
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3058
2024-01-19 11:26:01 -05:00
Raymond Hill
13dcd844a7 Unregister all scriptlets when disabling uBO on a specific site
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3083

This will not completely eliminate the issue but it should
lower the likelihood it will occur -- so at least uBO can
still benefit from reliable scriptlet execution in Firefox.
2024-01-19 11:00:07 -05:00
Raymond Hill
5e9a7c60db Make Firefox dev build auto-update 2024-01-18 12:15:33 -05:00
Raymond Hill
ed761041fc New revision for dev build 2024-01-18 12:06:28 -05:00
Raymond Hill
b549cf3892 Update changelog 2024-01-18 12:06:02 -05:00
Raymond Hill
b19094339f Allow uritransform to process the hash part of a URL
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3084
2024-01-18 11:36:40 -05:00
Raymond Hill
c9ceb561fc Make Firefox dev build auto-update 2024-01-17 10:55:31 -05:00
Raymond Hill
f4f6b5d864 Import translation work from https://crowdin.com/project/ublock 2024-01-17 10:44:41 -05:00
Raymond Hill
c9b1a802ec New revision for dev build 2024-01-17 10:40:33 -05:00
Raymond Hill
3bc2f55146 Update changelog 2024-01-17 10:40:10 -05:00
Raymond Hill
3d1b100646 Remember presentation state of "My rules" pane
Related feedback:
https://old.reddit.com/r/uBlockOrigin/comments/198ohgi/
2024-01-17 10:36:23 -05:00
Raymond Hill
588468821c Add support for differential updates to Swedish list
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3079
2024-01-17 08:13:58 -05:00
Raymond Hill
cfd5b95361 Make Firefox dev build auto-update 2024-01-16 10:15:45 -05:00
Raymond Hill
c1d5e34fc8 Update changelog 2024-01-16 10:07:47 -05:00
Raymond Hill
0e00010b91 Fix improperly assembled !#include sublists
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3077
2024-01-16 10:04:21 -05:00
Raymond Hill
757b8be9cd Mark procedural filters with pseudo-elements selector as invalid
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2786
2024-01-16 09:25:22 -05:00
Raymond Hill
101cef44d2 Import translation work from https://crowdin.com/project/ublock 2024-01-16 08:49:52 -05:00
Raymond Hill
5e26e7474a New revision for dev build 2024-01-16 08:43:06 -05:00
Raymond Hill
249186452e Update changelog 2024-01-16 08:36:51 -05:00
Raymond Hill
bc641fc024 Prevent access to picker when "My filters" is not enabled
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3076
2024-01-16 08:31:46 -05:00
Raymond Hill
a15c3564ef Make Firefox dev build auto-update 2024-01-14 13:40:54 -05:00
Raymond Hill
7719e7665a New revision for dev build 2024-01-14 13:30:53 -05:00
Raymond Hill
3e6333d02b Further fine tune visual as per feedback
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3066#issuecomment-1891023881
2024-01-14 13:29:58 -05:00
Raymond Hill
975e3819a9 Make Firefox dev build auto-update 2024-01-14 13:05:58 -05:00
Raymond Hill
8db074b780 New revision for dev build 2024-01-14 12:59:48 -05:00
Raymond Hill
44faf7bd69 Update changelog 2024-01-14 12:59:02 -05:00
Raymond Hill
c4bb8a0f64 Provide visual feedback when applying changes in "Filter lists" pane
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3066#event-11479409505
2024-01-14 11:25:41 -05:00
Raymond Hill
a605f13e63 Import translation work from https://crowdin.com/project/ublock 2024-01-14 09:58:34 -05:00
Raymond Hill
1cac61a9a4 Empty query parameters must still use =
Related issue:
https://github.com/uBlockOrigin/uAssets/commit/453b544f31
2024-01-14 08:03:03 -05:00
Raymond Hill
edf7897eb5 Make Firefox dev build auto-update 2024-01-12 18:05:42 -05:00
Raymond Hill
89659a06f5 New revision for dev build 2024-01-12 17:50:51 -05:00
Raymond Hill
e15cb4e8d3 Import translation work from https://crowdin.com/project/ublock 2024-01-12 17:50:08 -05:00
Raymond Hill
1c2d21d91e Add missing entries in manifest for new toggle-javascript command
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/692
2024-01-12 17:34:59 -05:00
Raymond Hill
b3b8f45961 Make Firefox dev build auto-update 2024-01-12 12:36:18 -05:00
Raymond Hill
cdf3537b3c New revision for dev build 2024-01-12 12:06:23 -05:00
Raymond Hill
56e7ccd9d6 Update changelog 2024-01-12 12:05:59 -05:00
Raymond Hill
1c1091b83f import translation work from https://crowdin.com/project/ublock 2024-01-12 12:05:03 -05:00
Raymond Hill
936444883f Add support to toggle no-scripting switch with keyboard shortcut
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/692
2024-01-12 12:01:23 -05:00
Raymond Hill
c03c23d962 Import translation work from https://crowdin.com/project/ublock 2024-01-12 12:00:55 -05:00
Raymond Hill
4680cccf10 Make Firefox dev build auto-update 2024-01-11 13:40:34 -05:00
Raymond Hill
c1dab02124 New revision for dev build 2024-01-11 13:34:01 -05:00
Raymond Hill
0ad198ecfc Update changelog 2024-01-11 13:33:43 -05:00
Raymond Hill
63fe18a761 Do not exceed rate-limited calls to handlerBehaviorChanged()
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3063

To prevent spurious performance warnings by chromium-based browsers.
2024-01-11 13:25:19 -05:00
Raymond Hill
ba3a8d58a7 Make Firefox dev build auto-update 2024-01-11 11:55:34 -05:00
Raymond Hill
fc0b9b1d50 New revision for dev build 2024-01-11 11:47:54 -05:00
Raymond Hill
9caaad8fd0 Update changelog 2024-01-11 11:47:09 -05:00
Raymond Hill
534d877e95 Shield some code paths against potentially tampered global properties
Related feedback:
https://github.com/uBlockOrigin/uAssets/issues/21895#issuecomment-1887472623
2024-01-11 11:41:37 -05:00
Raymond Hill
f6b726136c Do not prevent applying changes when lists are updating
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3066
2024-01-11 10:50:18 -05:00
Raymond Hill
bfb4304b1d Make Firefox dev build auto-update 2024-01-10 13:05:26 -05:00
Raymond Hill
010cd3f9e0 Import translation work from https://crowdin.com/project/ublock 2024-01-10 12:59:09 -05:00
Raymond Hill
d5a5ca851c Update changelog 2024-01-10 12:56:13 -05:00
Raymond Hill
dbfbd63871 New revision for dev build 2024-01-10 12:54:14 -05:00
Raymond Hill
060f9d68fc Add elements vararg to prevent-addEventListener scriptlet
If present, `elements` vararg must be a valid CSS selector, which will
be used to apply the scriptlet to only elements matching the
selector.

Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3061

Example of usage:

[...]##+js(aeld, click, return"undefined", elements, a.indirect)
2024-01-10 12:46:23 -05:00
Raymond Hill
a9eb9630cf Do not use tab character as field separator
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2730#issuecomment-1881821674

Character `\x1F` is now used instead.
2024-01-09 14:31:00 -05:00
Raymond Hill
17be8dafc5 Make Firefox dev build auto-update 2024-01-04 11:25:27 -05:00
Raymond Hill
b8a8e70c67 Update changelog 2024-01-04 11:04:47 -05:00
Raymond Hill
36a1e45e5c New revision for dev build 2024-01-04 11:02:17 -05:00
Raymond Hill
4234faafc4 Use arrow function 2024-01-04 11:01:51 -05:00
Raymond Hill
9a104bcbd2 Prevent :others() from hiding html tag
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3060
2024-01-04 10:57:27 -05:00
Raymond Hill
c65dbdbffa New version for stable release 2024-01-03 15:08:40 -05:00
Raymond Hill
8f3397f581 Make Firefox dev build auto-update 2024-01-01 10:40:38 -05:00
Raymond Hill
1ea1ff7f4f Import translation work from https://crowdin.com/project/ublock 2024-01-01 10:30:57 -05:00
Raymond Hill
3adb2b7cfb New revision for release candidate 2024-01-01 10:26:55 -05:00
Raymond Hill
e1ae17ed00 Improve prevent-fetch scriptlet
Related issue:
https://github.com/AdguardTeam/AdguardFilters/issues/153796
2024-01-01 10:24:47 -05:00
Raymond Hill
00fb5f18b2 Add to error message 2023-12-26 11:32:08 -05:00
Raymond Hill
35bf15cf96 Make Firefox dev build auto-update 2023-12-25 09:15:33 -05:00
Raymond Hill
3e17146daf New revision for release candidate 2023-12-25 09:10:52 -05:00
Raymond Hill
38bde79146 Use CSS.supports() to detect support of native :has()
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2480#issuecomment-1868595930
2023-12-25 09:06:42 -05:00
Raymond Hill
abbff2dea9 Make Firefox dev build auto-update 2023-12-23 17:55:41 -05:00
Raymond Hill
26f45e1fdf Import translation work from https://crowdin.com/project/ublock 2023-12-23 17:45:36 -05:00
Raymond Hill
313df91f54 New revision for release candidate 2023-12-23 17:42:46 -05:00
Raymond Hill
ec8292ef92 Fix bad text colors in logger for dark theme
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/1963#discussioncomment-7921578
2023-12-22 19:49:36 -05:00
Raymond Hill
82becb8329 Make Firefox dev build auto-update 2023-12-22 12:15:55 -05:00
Raymond Hill
bf1be1c031 New revision for dev build 2023-12-22 11:46:40 -05:00
Raymond Hill
f81d71c6e8 Mind type of drop event items
Related feedback:
https://github.com/gorhill/uBlock/commit/c8b7d1a526#commitcomment-135590810
2023-12-22 11:45:35 -05:00
Raymond Hill
bdbb52e538 Make Firefox dev build auto-update 2023-12-22 10:55:42 -05:00
Raymond Hill
71c3bbe46b New revision for dev build 2023-12-22 10:48:15 -05:00
Raymond Hill
7287a852e7 Update changelog 2023-12-22 10:47:45 -05:00
Raymond Hill
c8b7d1a526 Mind drop events in filter expression field of logger
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/issues/3036#issuecomment-1867497436
2023-12-22 10:45:43 -05:00
Raymond Hill
d7063a052f Improve xml-prune scriptlet
Related issue:
https://github.com/uBlockOrigin/uAssets/issues/21532
2023-12-22 10:15:37 -05:00
Raymond Hill
a770ed957b Make Firefox dev build auto-update 2023-12-21 12:11:16 -05:00
Raymond Hill
fa2f91216e Update changelog 2023-12-21 12:05:49 -05:00
Raymond Hill
ac860837ef New revision for dev build 2023-12-21 12:04:40 -05:00
Raymond Hill
49c8310e22 Fix message entry overflowing in logger
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3021
2023-12-21 12:02:57 -05:00
Raymond Hill
34a8a7ae82 Make Firefox dev build auto-update 2023-12-21 11:35:35 -05:00
Raymond Hill
4907864e50 Update changelog 2023-12-21 11:17:53 -05:00
Raymond Hill
2ae5c33449 New revision for dev build 2023-12-21 11:16:52 -05:00
Raymond Hill
826bc7d457 It's ok for toLogger() to be in derived class
Related commit:
aa7f77aaad
2023-12-21 11:14:33 -05:00
Raymond Hill
aa7f77aaad Split scriptlet filtering engine into lo- and hi-level classes
The idea is to remove as many dependencies as possible for
low-level ScriptletFilteringEngine in order to make it easier
to reuse the module outside uBO itself.

The high-level derived class takes care of caching and
injection of scriptlets into documents, which requires
more knowledge about the environment in which scriptlets
are to be used.

Also improve scriptlet cache usage to minimize overhead of
retrieving scriptlets.
2023-12-21 10:48:01 -05:00
Raymond Hill
abeadf18eb Add support for application/x-javascript in replace= option
Related issue:
https://github.com/uBlockOrigin/uAssets/issues/5090
2023-12-21 10:43:14 -05:00
Raymond Hill
c692be3969 Make Firefox dev build auto-update 2023-12-20 11:46:03 -05:00
Raymond Hill
546c989ebb New revision for dev build 2023-12-20 11:32:42 -05:00
Raymond Hill
9a8dd66517 Fix having picker & inspector active at the same time
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3004#issuecomment-1863610146
2023-12-20 11:23:25 -05:00
Raymond Hill
698bec4f5b Make Firefox dev build auto-update 2023-12-19 12:20:47 -05:00
Raymond Hill
462e8fe917 Import translation work from https://crowdin.com/project/ublock 2023-12-19 12:04:22 -05:00
Raymond Hill
4a929dbde3 Update changelog 2023-12-19 12:00:57 -05:00
Raymond Hill
4ef8945693 New revision for dev build 2023-12-19 11:59:29 -05:00
Raymond Hill
7f2703acd6 Only filter lists are diff-updatable 2023-12-19 11:51:20 -05:00
Raymond Hill
443c1f81e1 Extend support for differential updates to imported lists
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3028
2023-12-19 11:01:40 -05:00
Raymond Hill
d13cd30043 Make Firefox dev build auto-update 2023-12-18 10:56:30 -05:00
Raymond Hill
95813793a5 New revision for dev build 2023-12-18 10:44:11 -05:00
Raymond Hill
24ab492b77 Fix overlooking whether auto-update is disabled
Related feedback:
https://old.reddit.com/r/uBlockOrigin/comments/18ktpd5/
2023-12-18 10:41:48 -05:00
Raymond Hill
ebd9d93666 Prevent element picker from throwing when targeting html/body
Occurred when element picker was launched from context menu
as a result of clicking on `html` or `body` elements.
2023-12-16 11:23:58 -05:00
Raymond Hill
c2b5fb1fda Make Firefox dev build auto-update 2023-12-15 17:20:46 -05:00
Raymond Hill
0efa583202 Update changelog 2023-12-15 17:13:26 -05:00
Raymond Hill
b850ea7f83 New revision for dev build 2023-12-15 17:01:06 -05:00
Raymond Hill
9f4b31a96f Add detection of mismatched!#if-!#endif in linter
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/1712
2023-12-15 16:57:49 -05:00
Raymond Hill
ac814302e0 Make Firefox dev build auto-update 2023-12-15 13:21:16 -05:00
Raymond Hill
625250716a New revision for dev build 2023-12-15 13:10:23 -05:00
Raymond Hill
d56468b4ec Fix launch of auto update shortly after launch
Regression from:
https://github.com/gorhill/uBlock/commit/bd7ce41224
2023-12-15 09:59:56 -05:00
Raymond Hill
b9476cfb6e Make Firefox dev build auto-update 2023-12-14 17:06:27 -05:00
Raymond Hill
ef4870b179 New revision for dev build 2023-12-14 16:57:18 -05:00
Raymond Hill
a2caa7da78 Fix heuristic to verify whether a resource on a remote server is stale
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/discussions/3022
2023-12-14 16:51:28 -05:00
Raymond Hill
7822db1304 Make Firefox dev build auto-update 2023-12-14 10:46:42 -05:00
Raymond Hill
1a27f6a6cd Import translation work from https://crowdin.com/translate/ublock 2023-12-14 10:36:18 -05:00
Raymond Hill
2087114d48 Update changelog 2023-12-14 10:24:43 -05:00
Raymond Hill
035be61be0 New revision for dev build 2023-12-14 10:20:26 -05:00
Raymond Hill
5e3f9695b4 Support links to update lists which are differential update-friendly
If the `manual` parameter is assigned a date in the form of
`YYMMDD`, this will tell uBO to update lists from origin sources
when the current time is within the range of the specified date,
otherwise lists will be updated from CDNs. Updating from CDNs
is always strongly recommended since this enables differential
updates.

For the time being, `manual=1` will always cause to update lists
from origin, but this form will be deprecated once next stable
release is widespread. The idea is to not leave behind stale
and obsolete links which would be detrimental to differential
updates should someone click on one of these old links left
behind.
2023-12-14 09:50:11 -05:00
Raymond Hill
bd7ce41224 Remove "Purge all caches" button from "Filter lists" pane
Purging all the lists from cache storage is detrimental to
differential update, and cause filter lists to be updated less
often and consequently to be less up to date then when letting
differential updater do its work.
2023-12-13 21:01:51 -05:00
Raymond Hill
14926913f7 Add support for all list token in updater-link feature
Using `listkeys=all` will cause all enabled lists to be updated.
2023-12-12 11:04:16 -05:00
Raymond Hill
4305ea9c0c Fix logging of broad exception filter #@#+js()
Related feedback:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/843

Regression from:
https://github.com/gorhill/uBlock/commit/1a863a877d
2023-12-12 08:21:47 -05:00
Raymond Hill
a3e3cd9216 Ensure cache storage backend is selected before use
Related commit:
bfa28b960e
2023-12-11 12:17:25 -05:00
Raymond Hill
acc2950736 [mv3] Fine tuning ruleset output 2023-12-11 09:29:59 -05:00
Raymond Hill
cc305b84e0 Make Firefox dev build auto-update 2023-12-10 15:30:54 -05:00
Raymond Hill
e1b23444aa Update changelog 2023-12-10 15:23:40 -05:00
Raymond Hill
d01ad24291 Improve no-xhr-if scriptlet
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2518
2023-12-10 15:21:29 -05:00
Raymond Hill
afcefb4b35 Update changelog 2023-12-10 13:55:33 -05:00
Raymond Hill
33add0bbbf New revision for dev build 2023-12-10 13:53:39 -05:00
Raymond Hill
f2dc195576 Fix URLs for EasyDutch 2023-12-10 13:48:51 -05:00
Raymond Hill
bfa28b960e Ensure cache storage is selected before access
Possibly related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2136

Also reported internally, steps to reproduce the issue fixed here:

- Open uBO's dashboard through 3-dot > Add-ons > uBO > Settings
- Bring forth "Filter lists" pane
  We want the tab to be already opened at next launch
- Quit Firefox for Android
- Launch Firefox for Android

Result:

Very long launch time, lists marked as out of date.
2023-12-10 12:33:51 -05:00
Raymond Hill
184942503f Make Firefox dev build auto-update 2023-12-09 18:06:13 -05:00
Raymond Hill
6cdf030125 New revision for dev build 2023-12-09 17:57:53 -05:00
Raymond Hill
563b6cf0bf Update changelog 2023-12-09 17:57:33 -05:00
Raymond Hill
4183ce477a Fix popup panel rendering when embedded in logger
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3015
2023-12-09 17:54:02 -05:00
Raymond Hill
af0a3f4abb [mv3] Have one rule per line in ruleset files 2023-12-09 11:02:20 -05:00
Raymond Hill
7e44db763e Add visual hint in support information re. differential update
In Support pane's troubleshooting information, a delta sign will
be added to list update information when the list was last updated
through differential update.
2023-12-08 15:28:20 -05:00
Raymond Hill
310bfec6a1 Remove obsolete web accessible resources 2023-12-08 12:06:34 -05:00
Raymond Hill
b35d17143b Fix DNR output in uBO's dev tools page 2023-12-08 11:45:39 -05:00
Raymond Hill
db16dfbfbc Make Firefox dev build auto-update 2023-12-08 10:26:13 -05:00
Raymond Hill
e789a6b0c5 Import translation work from https://crowdin.com/project/ublock 2023-12-08 10:19:18 -05:00
Raymond Hill
6ad8bad45a New revision for dev build 2023-12-08 10:13:05 -05:00
Raymond Hill
1d9a4e9178 Update changelog 2023-12-08 10:12:42 -05:00
Raymond Hill
cdc5e89f52 Rename urltransform to uritransform
Related commit:
https://github.com/uBlockOrigin/uAssets/commit/20312c2178

To work around incompatibity with `urltransform` in 1.53.0.
With this commit support for `urltransform` is dropped in
favor of `uritransform`. Since `uritransform` won't be parsed
by older versions of uBO, the change in syntax for `urltransform`
between 1.53.0 and 1.54.0 will no longer cause issue.
2023-12-08 10:07:11 -05:00
Raymond Hill
01ce24eea2 Make Firefox dev build auto-update 2023-12-07 21:31:12 -05:00
Raymond Hill
4ec0cf09ed New revision for dev build 2023-12-07 21:24:34 -05:00
Raymond Hill
994c9264de Update changelog 2023-12-07 21:23:58 -05:00
Raymond Hill
885bc3875b Vertically expand/collapse in steps in dom inspector
Additionally, lock the inspected page to the item under
the mouse in the dom inspector.
2023-12-07 20:59:45 -05:00
Raymond Hill
77b33c47b3 Make Firefox dev build auto-update 2023-12-06 21:31:20 -05:00
Raymond Hill
695acce53b New revision for dev build 2023-12-06 21:22:00 -05:00
Raymond Hill
15b1250c99 [firefox] Fix DOM inspector being broken in private window
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3004

Related commit:
ee83a4304a

Use extensions API message ports to establish direct communication
between content script and logger window.
2023-12-06 21:16:48 -05:00
Raymond Hill
fddca0b7cb Log all by default when needle is empty in aost scriptlet
As discussed with filter list maintainers.
2023-12-06 10:17:19 -05:00
Raymond Hill
42f31b9d16 Make Firefox dev build auto-update 2023-12-05 19:11:06 -05:00
Raymond Hill
3c921a1812 New revision for dev build 2023-12-05 19:04:31 -05:00
Raymond Hill
b38d89c335 Disable session storage for the time being
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3003#issuecomment-1841831191
2023-12-05 19:03:04 -05:00
Raymond Hill
2afd4846b2 Make Firefox dev build auto-update 2023-12-05 17:50:49 -05:00
Raymond Hill
b6d307d66c New revision for dev build 2023-12-05 17:43:02 -05:00
Raymond Hill
06d22ca6c3 Fix details regarding light/dark theme in dom inspector
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/1411#issuecomment-1841509464
2023-12-05 17:38:12 -05:00
Raymond Hill
cc726c06cd Remove untranslated language 2023-12-05 13:15:00 -05:00
Raymond Hill
71be1a4fe5 [mv3] Detect and discard regex-based from=/to= domains 2023-12-05 09:18:58 -05:00
Raymond Hill
b8b4193f15 Import translation work from https://crowdin.com/project/ublock 2023-12-04 17:06:06 -05:00
Raymond Hill
eb66820728 ]firefox] Improve load time & behavior from suspended state
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2969

Changes:

Use browser.alarms to trigger selfie creation. Presence of a selfie
improve markedly time to readiness when uBO is unsuspended.

Mirror content of storage.local to (in-memory) storage.session for
faster load to readiness when uBO is ususpended.
2023-12-04 15:15:08 -05:00
Raymond Hill
a969a672e0 Change official description in source code top comment 2023-12-04 12:10:34 -05:00
Raymond Hill
5dcb9d42ab Add support to auto-complete permissions= 2023-12-04 11:19:06 -05:00
Raymond Hill
87e2f350a7 Make Firefox dev build auto-update 2023-12-04 11:01:42 -05:00
Raymond Hill
13f47d71f7 New revision for dev build 2023-12-04 09:55:21 -05:00
Raymond Hill
aa584d750b Import translation work from https://crowdin.com/project/ublock 2023-12-04 08:13:19 -05:00
Raymond Hill
c744c87607 Reset the DOM inspector when URL in top context changes
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/542
2023-12-04 08:07:53 -05:00
Raymond Hill
941077a25c Support shadow-piercing combinator >>> in trusted-click-element
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2971

Example usage:

...##+js(trusted-trusted-click-element, #cmpwrapper >>> .cmpboxbtnyes)

The substring before ` >>> ` must select an element with a non-null
shadow root, in which case the substring after ` >>> ` will be used
to find the element in the targeted shadow root. ` >>> ` can be used
recursively when multiple shadow root must be pierced.
2023-12-04 08:02:07 -05:00
Raymond Hill
f15f1b3937 Make Firefox dev build auto-update 2023-12-03 16:41:45 -05:00
Raymond Hill
16e8e0c634 Update changelog 2023-12-03 16:31:28 -05:00
Raymond Hill
a9b509ec1e New revision for dev build 2023-12-03 16:27:26 -05:00
Raymond Hill
03ea001681 Minor 2023-12-03 16:26:05 -05:00
Raymond Hill
ee83a4304a Isolate DOM inspector layers from page context
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/1411

Additionally, refactored communication mechanism between content
script contexts and uBO contexts by using MessageChannel/BroadcastChannel
web APIs.
2023-12-03 16:21:32 -05:00
Raymond Hill
2c495487f1 Import translation work from https://crowdin.com/project/ublock 2023-12-02 12:59:05 -05:00
Raymond Hill
67fb969572 Refactoring: Replace DOM events with broadcast channels
Broadcast channels are more suited to uBO than DOM events to dispatch
notifications to different parts of uBO.

DOM events can only be dispatched to local context, broadcast channels
dispatch to all contexts (i.e. background process, workers, auxiliary
pages) -- this last behavior is better suited to uBO to communicate
internal changes to all potential listeners, not just those in the local
context.

Additionally, broadcasting to content scripts is now done through
tabs.sendMessage() instead of through potentially opened message
ports, this simplifies broadcasting to content scripts, and this
doesn't require to have long-lived message ports in content
scripts.
2023-12-01 14:35:28 -05:00
Raymond Hill
c4de5552e5 Fix non-filter lists ending into selected lists at install time
Fortunately, getAvailableLists() filters out non-filter
list resources thus preventing those mistakenly selected
resources from being loaded as filter lists.
2023-12-01 12:03:54 -05:00
Raymond Hill
ea7d411bc2 Support non-default sticky lists
"Sticky" lists are those which stay visible when collapsing
non-used lists in the "Filter lists" pane.
2023-12-01 08:31:28 -05:00
rajiv
a8cf08325d Add enableLazyLoad function
see https://developers.google.com/publisher-tag/reference#javascript_16

Fixes https://github.com/uBlockOrigin/uAssets/issues/20988
2023-12-01 02:20:40 -05:00
Raymond Hill
c16fcc1105 Import translation work from https://crowdin.com/project/ublock 2023-11-29 16:19:23 -05:00
Raymond Hill
a77c23c74f [mv3] Improve and cleanup options page
Additionally, ensure the options page stay in sync with the
internal state of the extension.
2023-11-29 16:11:22 -05:00
Raymond Hill
554400f7bd Import translation work from https://crowdin.com/project/ublock 2023-11-28 21:15:51 -05:00
Raymond Hill
d7acad6c90 [mv3] Add textarea to list/edit trusted sites
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/29
2023-11-28 21:13:44 -05:00
Raymond Hill
2bd2e6a079 Import translation work from https://crowdin.com/project/ublock 2023-11-28 21:10:29 -05:00
Raymond Hill
4f07df33a1 [mv3] Remove reference to nonexistent ruleset 2023-11-28 11:02:55 -05:00
Raymond Hill
430c578978 Import translation work from https://crowdin.com/project/ublock 2023-11-27 19:04:43 -05:00
Raymond Hill
5a33492b8d Make Firefox dev build auto-update 2023-11-25 11:36:21 -05:00
Raymond Hill
ccda6e0ee6 Update changelog 2023-11-25 11:27:06 -05:00
Raymond Hill
5a338b7210 Change frequency of save-to-storage blocking stats
In order to prepare for support of non-persistent background
process.
2023-11-25 11:22:26 -05:00
Raymond Hill
187c06fe01 New revision for dev build 2023-11-25 11:21:27 -05:00
Raymond Hill
6aeab2adbc Improve prevent-fetch scriptlet
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2526

Improvements:

Support fulfilling the response with the content of a
`web_accessible_resources` resource, using the syntax already
supported by `prevent-xhr`: `war:[name of resource]`

Support fulfilling the response with randomized text with length
specified using `length:min[-max]` directive.
2023-11-25 11:13:57 -05:00
Raymond Hill
74f54d0633 Make Firefox dev build auto-update 2023-11-22 13:56:34 -05:00
Raymond Hill
b40b1a0fb2 Update changelog 2023-11-22 13:44:37 -05:00
Raymond Hill
d65c6fe4ef New revision for dev build 2023-11-22 13:41:57 -05:00
Raymond Hill
9ce958432d Catch cases of ! Expires: field with no value 2023-11-22 13:40:49 -05:00
Raymond Hill
bda46d5cc7 New version for stable release 2023-11-22 10:36:58 -05:00
Raymond Hill
5e2bee11b2 Remove obsolete workflow 2023-11-22 10:35:36 -05:00
Raymond Hill
fb84cc3cbc Forgot to save file before commit 2023-11-22 10:33:21 -05:00
Raymond Hill
f546b4f91d Update KOR-1 URL as per request 2023-11-22 10:32:14 -05:00
Raymond Hill
72a5914dab Create draft release by default 2023-11-22 10:31:15 -05:00
Raymond Hill
9123563895 Make Firefox dev build auto-update 2023-11-20 19:51:17 -05:00
Raymond Hill
9a5e661924 Update changelog 2023-11-20 19:46:51 -05:00
Raymond Hill
747191950e New revision for release candidate 2023-11-20 19:40:00 -05:00
Raymond Hill
c5724c1cce Enable path for native has() selector in Firefox
Reference:
https://bugzilla.mozilla.org/show_bug.cgi?id=1858743
2023-11-20 19:38:18 -05:00
Raymond Hill
c090ab1d1d Make Firefox dev build auto-update 2023-11-20 13:31:33 -05:00
Raymond Hill
d1f1c9d62b New revision for release candidate 2023-11-20 13:20:47 -05:00
Raymond Hill
f77481f740 Import translation work from https://crowdin.com/project/ublock 2023-11-20 12:47:49 -05:00
Raymond Hill
e9cab80151 Fix untranslated "Filter lists" in dashboard 2023-11-20 12:36:01 -05:00
Raymond Hill
2da9f0b03f [mv3] Ensure filters incompatible with DNR are properly reported 2023-11-18 10:46:25 -05:00
Raymond Hill
0c29374a72 Add abp-resource:blank-mp4 alias for increased ABP compatibility 2023-11-18 10:04:52 -05:00
Raymond Hill
a4f8ec6d54 Support AdGuard's emptyArr/emptyObj for increased compatibility
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2411
2023-11-17 09:28:23 -05:00
Raymond Hill
bfb66297dd Make Firefox dev build auto-update 2023-11-16 19:50:51 -05:00
Raymond Hill
27d2ac092c New revision for release candidate 2023-11-16 17:17:24 -05:00
Raymond Hill
dc6fbd2011 Update changelog 2023-11-16 17:15:39 -05:00
Raymond Hill
3fd2588650 Allow scriptlets to be injected in about:blank
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2963
2023-11-16 17:07:48 -05:00
Raymond Hill
c292a90b90 Fix faulty as vararg in set-constant scriptlet 2023-11-16 13:18:39 -05:00
Raymond Hill
bd8a91ed3a Add support to redirect to noop.json
There ar ea couple of AdGuard filters supporting this local
resource.

Reference:
https://github.com/AdguardTeam/Scriptlets/blob/master/wiki/about-redirects.md#noopjson
2023-11-16 09:54:21 -05:00
Dave Vandyke
c1d8f5908d More improvements to the google-ima shim script (#3908)
We have enabled the google-ima shim script again in the DuckDuckGo
Privacy Essentials browser extension, and found a couple more issues:
- Some websites set the enablePreloading[1] option, which should
  cause[2] the AdsManager.init() method to trigger the LOADED AdEvent
  to fire. If the event doesn't fire, those websites can get stuck
  waiting for the event forever.
- When AdsManager.start() method is called, a bunch of events are
  dispatched in order, to simulate ads loading, playing and
  finishing. There was a mistake in that logic though. The
  CONTENT_PAUSE_REQUESTED and CONTENT_RESUME_REQUESTED events[3]
  should fire as the ads start and finish respectively. By firing the
  latter early, and skipping the former, some websites got confused
  and tried to display ad overlays at the same time as playing their
  content, or didn't display they content at all.

1 - https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.AdsRenderingSettings#enablePreloading
2 - https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/preload#timing
3 - https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.AdEvent
2023-11-16 09:41:07 -05:00
Raymond Hill
8df6c3243c Make Firefox dev build auto-update 2023-11-14 18:16:15 -05:00
Raymond Hill
5d4d745d45 New revision for release candidate 2023-11-14 18:03:28 -05:00
Raymond Hill
dac320e396 Fix bad argument passing 2023-11-14 18:03:02 -05:00
Raymond Hill
0b871e6546 If response is 404, skip trying other CDNs
When there is a 404 response, in all likelihood other
CDNs will also return 404, no point pointlessly fetching
from others.
2023-11-14 17:39:48 -05:00
Raymond Hill
c7490e8493 Make Firefox dev build auto-update 2023-11-14 14:21:05 -05:00
Raymond Hill
14fcc4e167 New revision for release candidate 2023-11-14 14:08:07 -05:00
Raymond Hill
28d92d38f3 Use trusted- prefix for replace-node-text
The official name is `trusted-replace-node-text`.

`replace-node-text` is demoted to alias. `trusted-rpnt` added
asan alias. Aliases not prefixed with `trusted-` are deprecated
and will be removed eventually.

Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/2895#discussioncomment-7567863
2023-11-14 13:53:29 -05:00
Raymond Hill
6a9c69aa94 Add support for minute unit 2023-11-14 13:53:17 -05:00
Raymond Hill
143fc84f40 Make Firefox dev build auto-update 2023-11-14 10:11:26 -05:00
Raymond Hill
5a1a547432 New revision for release candidate 2023-11-14 10:02:19 -05:00
Raymond Hill
d2b8d990e6 All exceptions filters are exempt from requiring a trusted source
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/2895#discussioncomment-7566154
2023-11-14 09:58:26 -05:00
Raymond Hill
1e05665bdc Make Firefox dev build auto-update 2023-11-14 09:16:20 -05:00
Raymond Hill
7c6005278e Import translation work from https://crowdin.com/project/ublock 2023-11-14 09:05:37 -05:00
Raymond Hill
6d38180608 Fix spurious change in i18n strings 2023-11-14 09:04:06 -05:00
Raymond Hill
929c6a5299 New revision for release candidate 2023-11-14 08:45:15 -05:00
Raymond Hill
92c0088f64 Keep assetKey and diffName well separated 2023-11-13 14:55:52 -05:00
Raymond Hill
7a2994c74e Make Firefox dev build auto-update 2023-11-13 12:06:17 -05:00
Raymond Hill
2d25b78e59 Update changelog 2023-11-13 10:42:13 -05:00
Raymond Hill
f3d6a21e7a Add trusted-set-session-storage-item scriptlet
Related discussion:
https://github.com/uBlockOrigin/uAssets/issues/20630#issuecomment-1807390945
2023-11-13 10:36:55 -05:00
Raymond Hill
a373efe9c0 Import translation work from https://crowdin.com/project/ublock 2023-11-13 10:34:09 -05:00
Raymond Hill
d0b3452848 New revision for release candidate 2023-11-13 10:31:30 -05:00
Raymond Hill
7b2149e595 Fix quirks re. diff-updater 2023-11-13 09:42:31 -05:00
Raymond Hill
1f88359964 Make Firefox dev build auto-update 2023-11-12 19:36:19 -05:00
Raymond Hill
ffe3b548f3 Update changelog 2023-11-12 19:28:40 -05:00
Raymond Hill
7c562d0c5c Allow the use of quotes in set-cookie scriptlet
Related discussion:
https://github.com/uBlockOrigin/uAssets/issues/20630#issuecomment-1807260357
2023-11-12 19:26:05 -05:00
Raymond Hill
30a01d8e84 Update changelog 2023-11-12 19:09:07 -05:00
Raymond Hill
decafc5cbf Allow the use of quotes in set-[local|session]-storage-item
Related discussion:
https://github.com/uBlockOrigin/uAssets/issues/20630#issuecomment-1807260357
2023-11-12 19:05:56 -05:00
Raymond Hill
b26d421a57 Add Punjabi (pa) translation 2023-11-12 13:51:50 -05:00
Raymond Hill
ce38e6c81a Import changes following removal of unused i18n strings 2023-11-12 13:50:40 -05:00
Raymond Hill
01d796346c Import translation work from https://crowdin.com/project/ublock 2023-11-12 13:48:39 -05:00
Raymond Hill
b201c61584 [mv3] Remove unused i18n strings 2023-11-12 13:45:46 -05:00
Fanboynz
32fb93c525 Add a few more cookie names (#3907) 2023-11-12 12:51:58 -05:00
Raymond Hill
d24b2d8165 Make Firefox dev build auto-update 2023-11-12 11:51:21 -05:00
Raymond Hill
dee19fb51b New revision for release candidate 2023-11-12 11:45:33 -05:00
Raymond Hill
3db46c1728 Allow for support of more event types
Related commit:
ef311ddbec
2023-11-12 11:44:24 -05:00
Raymond Hill
11fe8ee3b5 Make Firefox dev build auto-update 2023-11-12 10:45:35 -05:00
Raymond Hill
38c606d7ad Update changelog 2023-11-12 10:39:56 -05:00
Raymond Hill
b3c48fd1ad Swap canonical name with alias 2023-11-12 10:39:43 -05:00
Raymond Hill
d6db5374b0 New revision for release candidate 2023-11-12 10:37:13 -05:00
Raymond Hill
ef311ddbec Add ability to trigger cookie removal on specific events
As discussed with filter list volunteers.

Related discussion:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/834
2023-11-12 10:35:28 -05:00
Raymond Hill
bcf809615c Make Firefox dev build auto-update 2023-11-12 09:26:04 -05:00
Raymond Hill
e9ddd99deb New revision for release candidate 2023-11-11 19:55:00 -05:00
Raymond Hill
1db569d4ee Fix last commit
Related commit:
e30223c42e

This needs to be done with currently cached list, not with
failed modified list.
2023-11-11 19:54:05 -05:00
Raymond Hill
a014b547ef Make Firefox dev build auto-update 2023-11-11 16:05:56 -05:00
Raymond Hill
6c80bb0de0 New revision for release candidate 2023-11-11 15:54:47 -05:00
Raymond Hill
e30223c42e Add check-then-fix code to ensure diff-path name in sync
There is a lot asynchronicity in the auto-update code, and
the fix here is to detect then fix instances of out of sync
state between a cached filter list and its metadata stored
separately.
2023-11-11 15:51:59 -05:00
Raymond Hill
4422926b63 Add more details to error message 2023-11-11 13:25:58 -05:00
Raymond Hill
130c437dd3 Import translation work from https://crowdin.com/project/ublock 2023-11-11 10:55:40 -05:00
Raymond Hill
18f6f143af Make Firefox dev build auto-update 2023-11-11 09:45:51 -05:00
Raymond Hill
5baff8275a New revision for release candidate 2023-11-11 09:36:58 -05:00
Raymond Hill
193672dae5 Extract diff-name from diff-path when diff-name field is missing 2023-11-11 09:35:08 -05:00
Raymond Hill
54edb62bcf Make Firefox dev build auto-update 2023-11-10 12:46:15 -05:00
Raymond Hill
a197cab446 New revision for release candidate 2023-11-10 12:37:47 -05:00
Raymond Hill
f68683f988 Do not use implicit regex flag when pattern is regex
As discussed with filter list volunteers.
2023-11-10 12:31:30 -05:00
Raymond Hill
15e3f763a3 Mind exception filters for replace= option
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/2952
2023-11-10 10:45:24 -05:00
Raymond Hill
a986a03b97 Make Firefox dev build auto-update 2023-11-09 20:10:36 -05:00
Raymond Hill
bd54c4bff9 New revision for release candidate 2023-11-09 20:03:55 -05:00
Raymond Hill
9f52b4763e Lookup asset key from diff name
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2948

This fix has to make it into next stable release to ensure
imported external lists can benefit from diff-updater.
2023-11-09 20:01:39 -05:00
Raymond Hill
5b7d951c4b New revision for release candidate 2023-11-09 19:59:29 -05:00
Raymond Hill
7dd98258e9 Add stackToMatch vararg to trusted-prune-inbound-object.js
As discussed with filter list maintainers.
2023-11-09 19:57:51 -05:00
Raymond Hill
574bd8fba3 Make Firefox dev build auto-update 2023-11-09 09:50:44 -05:00
Raymond Hill
eaa00607d2 New revision for stable release 2023-11-09 09:38:04 -05:00
Raymond Hill
ec53a8f2c7 Re-work unescaping arguments in parser
Related issue:
https://github.com/uBlockOrigin/uAssets/issues/5184#issuecomment-1803455520
2023-11-09 09:11:59 -05:00
Raymond Hill
2bc7996d64 Remove country flag because occurrences below threshold
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/issues/2946
2023-11-09 07:10:25 -05:00
Raymond Hill
9204fdf92c Partially revert 3ff456a
Related feedback:
3ff456a63d (commitcomment-132105051)
2023-11-09 07:01:22 -05:00
Raymond Hill
1809b2d1ad Make Firefox dev build auto-update 2023-11-08 22:46:16 -05:00
Raymond Hill
831a707616 Typo in comment 2023-11-08 22:40:43 -05:00
Raymond Hill
abe114c8e3 Update changelog 2023-11-08 22:39:19 -05:00
Raymond Hill
1100480d22 New revision for release candidate 2023-11-08 22:37:58 -05:00
Raymond Hill
1dba557c9a Ensure CSSTree does not hold onto last parsed string
When done compiling, force CSSTree to parse an empty string, so
as to ensure it doesn't keep a reference to that string.

Typically, the string passed to CSSTree is a small slice of a
larger string which is a whole filter list. This means that
holding a reference to the sliced string causes the JS engine
to hold in memory to the whole filter list last parsed.
2023-11-08 22:33:01 -05:00
Raymond Hill
f7511cc13f Make Firefox dev build auto-update 2023-11-08 19:56:19 -05:00
Raymond Hill
bef2e88199 Update changelog 2023-11-08 19:45:00 -05:00
Raymond Hill
9ebed116da Import translation work from https://crowdin.com/project/ublock 2023-11-08 19:44:33 -05:00
Raymond Hill
4282b9ab61 New revision for release candidate 2023-11-08 19:40:40 -05:00
Raymond Hill
3c5491a8bd Improve comment 2023-11-08 07:22:23 -05:00
Raymond Hill
856e8de64c Diff-updater: report URL without the hash part 2023-11-08 07:16:23 -05:00
Raymond Hill
eb52d46afa Make Firefox dev build auto-update 2023-11-07 17:46:16 -05:00
Raymond Hill
a1e8bcfc3b New revision for dev build 2023-11-07 17:39:53 -05:00
Raymond Hill
2170051c4a Fix documentation in comment following recent changes 2023-11-07 17:29:25 -05:00
Raymond Hill
b8193ea5f9 Fix detection of unfilled filter list fields
Related feedback:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/781#discussioncomment-7503866
2023-11-07 17:27:37 -05:00
Raymond Hill
cd430386f5 Forgot to git-add this one in last commit 2023-11-07 13:48:32 -05:00
Raymond Hill
74a0af8af6 Replace flag with more relevant one
Related discussion:
https://github.com/EasyDutch-uBO/EasyDutch/issues/92
2023-11-07 13:47:04 -05:00
Raymond Hill
09b609cbb4 Update changelog 2023-11-07 10:12:21 -05:00
Raymond Hill
3ff456a63d Prefer CDNs when subscribing to a new list
Also, purging the cache of a list should not remove the
compiled version of that list so that it keep being seen
as cached, but obsolete.
2023-11-07 08:21:22 -05:00
Raymond Hill
ae24032607 Add more replace-able types
Reference:
https://en.wikipedia.org/wiki/M3U#Internet_media_types
2023-11-07 07:53:37 -05:00
Raymond Hill
1aa92c7570 Update image to reflect actual implementation 2023-11-07 07:52:35 -05:00
Raymond Hill
f96cf25436 Update changelog 2023-11-06 20:10:36 -05:00
Raymond Hill
a9a523e2fc Make Firefox dev build auto-update 2023-11-06 19:56:22 -05:00
Raymond Hill
b324b85c5d Update changelog 2023-11-06 19:48:10 -05:00
Raymond Hill
355b40a965 New revision for release candidate 2023-11-06 19:46:42 -05:00
Raymond Hill
2360bc02f3 Lower maximum Expires value to 4h
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2899
2023-11-06 19:45:16 -05:00
Raymond Hill
8ed1ad9c9d Properly reset needle length in unserialized buffer
Possible related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2925
2023-11-06 19:22:47 -05:00
Imre Kristoffer Eilertsen
a2ab313ae2 Attempted to set flag codes for Chromium Windows users (#3906)
* Attempted to set flag codes for Chromium users

* Not sure how I missed MD.
2023-11-06 16:46:56 -05:00
Raymond Hill
d8d42f2cc1 Synchronize changes in both versions of assets.json 2023-11-06 15:15:57 -05:00
Imre Kristoffer Eilertsen
0962366524 Added additional flags to regional lists (#3904) 2023-11-06 15:11:38 -05:00
Raymond Hill
4f48f42e26 Make Firefox dev build auto-update 2023-11-06 12:46:35 -05:00
Raymond Hill
d334fd97c8 Update changelog 2023-11-06 12:19:14 -05:00
Raymond Hill
09a6ba74f8 New revision for release candidate 2023-11-06 12:18:00 -05:00
Raymond Hill
11ebb736ca Import translation work from https://crowdin.com/project/ublock 2023-11-06 12:16:48 -05:00
Raymond Hill
7823d98070 Harden scriptlets which need to serialize function code into string
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2907
2023-11-06 09:10:21 -05:00
Raymond Hill
5d1618e1be Reset potential g regex before use in replace= option
Related discussion:
https://github.com/uBlockOrigin/uAssets/issues/5184#issuecomment-1794058253
2023-11-06 07:16:41 -05:00
Raymond Hill
b2bf5c255e Make Firefox dev build auto-update 2023-11-05 20:50:47 -05:00
Raymond Hill
815d66bfcc New revision for dev build 2023-11-05 20:39:09 -05:00
Raymond Hill
b87570bda8 Update changelog 2023-11-05 20:38:28 -05:00
Raymond Hill
cdc3f66a6b Reset g regexes before use in rmnt/rpnt scriptlets 2023-11-05 20:35:05 -05:00
Raymond Hill
bf001f4796 Make Firefox dev build auto-update 2023-11-05 19:30:51 -05:00
Raymond Hill
284bf060d0 Fix github actions workflow 2023-11-05 19:26:02 -05:00
Raymond Hill
c3e62784fb Update changelog 2023-11-05 19:20:35 -05:00
Raymond Hill
ead73c3e3a New revision for dev build 2023-11-05 19:17:13 -05:00
Raymond Hill
6417f54299 Apply response filtering according to mime type
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2833
2023-11-05 19:13:38 -05:00
jambohawk
971f36c78e Update assets.json
I believe this is a typo?
2023-11-05 17:01:06 -06:00
Raymond Hill
eb93ce862d Do not use @latest, there is no master branch at uAssetsCDN
Related documentation:
https://github.com/jsdelivr/jsdelivr#omit-the-version-completely-or-use-latest-to-load-the-latest-one-only-works-with-valid-semver-versions-not-recommended-for-production-usage
2023-11-05 17:23:07 -05:00
Raymond Hill
6027abfe12 Need to use g flag in sedfor all instances in one line 2023-11-05 16:50:21 -05:00
Raymond Hill
875402b292 Move the repetitive portion of release notes to the bottom 2023-11-05 16:42:33 -05:00
Fanboynz
4ab1c36ac9 Add t/f to set-cookie (#3905) 2023-11-05 16:07:58 -05:00
Raymond Hill
931187d903 Make Firefox dev build auto-update 2023-11-05 15:11:11 -05:00
Raymond Hill
6a804583b7 New revision for dev build 2023-11-05 14:55:43 -05:00
Raymond Hill
1055203542 Avoid creating a session if there are no jobs 2023-11-05 14:54:59 -05:00
Raymond Hill
ce835bb300 Remove extraneous increment in charset sniffing code
Related commit:
7c3e060c01

Related feedback:
7c3e060c01 (commitcomment-131759551)
2023-11-05 14:19:06 -05:00
Raymond Hill
737799e43d Expand GitHub Actions to Fill the release notes
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2937

Hopefully this works as expected in next release.
2023-11-05 14:02:46 -05:00
Raymond Hill
a2d942e491 Make Firefox dev build auto-update 2023-11-05 13:05:54 -05:00
Raymond Hill
15773caedc new revision for dev build 2023-11-05 12:51:41 -05:00
Raymond Hill
b69b0b5fb9 Add more mimes as valid target for response filtering
Related feedback:
7c3e060c01 (commitcomment-131754750)

application/vnd.apple.mpegurl
Reference:
https://www.iana.org/assignments/media-types/application/vnd.apple.mpegurl

application/vnd.api+json
Reference:
https://www.iana.org/assignments/media-types/application/vnd.api+json
2023-11-05 12:50:03 -05:00
Raymond Hill
2de1ebc2c3 Make Firefox dev build auto-update 2023-11-05 11:56:29 -05:00
Raymond Hill
dfa419ff80 New revision for dev build 2023-11-05 11:37:00 -05:00
Raymond Hill
d7c99b46e6 Have urltransform= use the same syntax as replace=
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2924
2023-11-05 11:19:03 -05:00
Raymond Hill
5f78d83fea Fix various code paths in bodyFilterer
Related to extracting charset of response body.
2023-11-05 10:32:23 -05:00
Raymond Hill
1cf634cce0 Leave out hash part when extracting patch file name
Related commit:
aeff955667
2023-11-05 08:03:43 -05:00
Raymond Hill
247972c0d3 Make Firefox dev build auto-update 2023-11-04 10:01:21 -04:00
Raymond Hill
970b51539c New revision for dev build 2023-11-04 09:55:45 -04:00
Raymond Hill
c38267bb2b Fix charset sniffing in reworked response body filtering code
Related feedback:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/830

Related commit:
https://github.com/uBlockOrigin/uBlock-issues/discussions/2537#discussioncomment-5277574
2023-11-04 09:50:10 -04:00
Raymond Hill
4de6bd6f07 Fix potential exceptions in new response body filtering code
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/2929

Related commit:
7c3e060c01
2023-11-04 09:43:38 -04:00
Raymond Hill
4774a39b17 [mv3] Fix converter to DNR rules 2023-11-03 21:32:44 -04:00
Raymond Hill
4c48148eb2 Support auto-complete for from= same as domain= 2023-11-03 20:19:19 -04:00
Raymond Hill
6f8ce65765 Make Firefox dev build auto-update 2023-11-03 19:20:59 -04:00
Raymond Hill
d12d014b10 Import translation work from https://crowdin.com/project/ublock 2023-11-03 19:13:07 -04:00
Raymond Hill
d68912e5b3 New revision for dev build 2023-11-03 19:03:27 -04:00
Raymond Hill
7c3e060c01 Implement network filter option replace=
Reference documentation:
https://adguard.com/kb/general/ad-filtering/create-own-filters/#replace-modifier

This is a network filter option which can only be loaded from a
trusted source.

Since this filter is about modifying the response body, it currently
only works in Firefox.

As discussed with filter list maintainers.
2023-11-03 19:01:01 -04:00
Raymond Hill
aeff955667 Extract list name from hash portion of ! Diff-Path: 2023-11-03 18:39:14 -04:00
Raymond Hill
b7bb26807d Make Firefox dev build auto-update 2023-11-03 10:56:05 -04:00
Raymond Hill
ae2e35d2bd New revision for dev build 2023-11-03 10:43:51 -04:00
Raymond Hill
89b272775a Prevent evaluating the SNFE until fully loaded
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2925
2023-11-03 10:01:40 -04:00
Raymond Hill
605ad238b4 Report modifier stats in built-in benchmark of SNFE 2023-11-02 19:23:06 -04:00
Raymond Hill
4032ac9149 Minor re-wording in log output 2023-11-02 11:49:15 -04:00
Raymond Hill
4a57c174a5 Make Firefox dev build auto-update 2023-11-01 16:16:36 -04:00
Raymond Hill
825a621be8 New revision for dev build 2023-11-01 10:56:30 -04:00
Raymond Hill
69fce3aa6e Fine-tune details about when differential update should kick in
Manual update of one or more lists will cause the most recent version
of these lists to be fetched from the "origin" server, and since the
lists from "origin" servers cannot be updated through differential
update, the lists will be subsequently updated according to their
`Expires` directive.

When the lists are auto-updated, the "CDN" servers will be used,
and as a result the lists will start to be updated trhough
differential updates every 6-hour (currently).

Thus it is recommended and optimal to let the lists auto-update,
since you will benefit from a much shorter delay to get up-to-date
lists (i.e. every 6-hour instead of every 6-day).

You can force the auto-updater to fetch all the lists by clicking
"Purge all caches", then restart uBO without clicking "Update".
This will cause uBO to perform an emergency auto-update at restart
time, after which you will have all the lists which are candidates
for differential update.

The "Update now" button in the "Support" pane will also cause lists
to be fetched from their "origin" server.
2023-11-01 10:45:31 -04:00
Raymond Hill
2acf8a638d Make Firefox dev build auto-update 2023-10-31 16:40:51 -04:00
Raymond Hill
9058fce037 Fire notification when no update but writeTime change 2023-10-31 16:33:03 -04:00
Raymond Hill
c5fa273723 Update EasyDutch list to new URLs
Related discussion:
https://github.com/uBlockOrigin/uAssets/discussions/20386
2023-10-31 14:57:50 -04:00
Raymond Hill
89d535bd23 New revision for dev build 2023-10-31 11:06:35 -04:00
Raymond Hill
abd8577096 Distinguish diff patch not-available from not-yet-available
A not-yet-available won't cause a list to become candidate for
full update.

A not-available will cause the list to be candidate for full
update.
2023-10-31 10:52:03 -04:00
Raymond Hill
2d645cdd31 Make Firefox dev build auto-update 2023-10-30 20:51:03 -04:00
Raymond Hill
55aded109c New revision for release candidate 2023-10-30 20:43:47 -04:00
Raymond Hill
153783cfaa Forgot to lower update period limit to 6-hour 2023-10-30 20:42:38 -04:00
Raymond Hill
9a81f75cfa Make Firefox dev build auto-update 2023-10-30 20:01:05 -04:00
Raymond Hill
6704cbc304 New revision for release candidate 2023-10-30 19:50:20 -04:00
Raymond Hill
3dca115eb6 Add more dev console tracing to asset updater 2023-10-30 19:49:17 -04:00
Raymond Hill
206b9c8efb Make Firefox dev build auto-update 2023-10-30 14:16:35 -04:00
Raymond Hill
aae265075c New revision for dev build 2023-10-30 14:03:16 -04:00
Raymond Hill
19d6d7ff5c Minor code review: remove pointless argument 2023-10-30 14:02:47 -04:00
Raymond Hill
2344cbdeca Harden diff-updater against unexpected errors
The diff-updater worker will terminate upon unexpected
error, in order to avoid a stalled updater.
2023-10-30 13:47:24 -04:00
Raymond Hill
a45e33cd7a Make Firefox dev build auto-update 2023-10-30 13:06:00 -04:00
Raymond Hill
979ca04379 New revision for dev build 2023-10-30 12:55:41 -04:00
Raymond Hill
d05ff8ffeb Add support for diff-patching filter lists
Related discussion:
https://github.com/ameshkov/diffupdates

The benefits of diff-patching filter lists is much shorter update
schedule and significantly less bandwidth consumed.

At the moment, only default filter lists are subject to be
diff-patched.

External filter lists can make their lists diff-patchable by
following the specification link above.

Only filter lists fetched by the auto-updater are candidate for
diff-patching.

Forcing a manual update of the filter lists will prevent the
diff-patcher from kicking in until one or more lists are
auto-updated.

Some back-of-the-envelop calculations regarding the load on free
CDN solutions used by uBO to distribute its own filter lists:

Currently, for each CDN (with lists updating after days):
~560 M req/month, ~78 TB/month

With diff-patching lists on a 6-hour schedule:
~390 M req/month, 1 TB/month

Those estimates were done according to statistics shown by
jsDelivr, which is one of 4 CDNs picked randomly when a list
updates:
https://www.jsdelivr.com/package/gh/uBlockOrigin/uAssetsCDN?tab=stats
2023-10-30 12:30:46 -04:00
Raymond Hill
032f170dba Make update-through-link equivalent to auto-update cycle 2023-10-30 12:09:16 -04:00
Raymond Hill
4fa92f930e Support soft-updating through update links
Where "soft-updating" means updating from CDNs, and "hard-updating"
means updating from `ublockorigin.github.io/uAssets`.
2023-10-30 10:47:38 -04:00
Raymond Hill
b061db229e Prevent contentScripts.register from throwing
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2915
2023-10-30 10:44:04 -04:00
Raymond Hill
bc632b5464 Make Firefox dev build auto-update 2023-10-30 00:46:15 -04:00
Raymond Hill
e1ac68129c New revision for release candidate 2023-10-30 00:36:12 -04:00
Raymond Hill
c9aeb6a43b Use minified version of badware list in package 2023-10-30 00:35:30 -04:00
Raymond Hill
c378d55dfb Minor 2023-10-29 23:44:43 -04:00
Raymond Hill
d110c21db7 Ship minified version of lists in package 2023-10-29 23:39:40 -04:00
Fanboynz
d51b393fdb Add additional set-cookie names (#3902) 2023-10-29 11:01:32 -04:00
Raymond Hill
9433dc52ab Make Firefox dev build auto-update 2023-10-29 10:35:52 -04:00
Raymond Hill
654dc20deb New revision for release candidate 2023-10-29 10:26:04 -04:00
Raymond Hill
5244ad5baf Do not use bind as a way to access native calls 2023-10-29 10:22:54 -04:00
Raymond Hill
3c4932e1a6 Make Firefox dev build auto-update 2023-10-28 07:51:22 -04:00
Raymond Hill
904e5dff7a Import translation work from https://crowdin.com/project/ublock 2023-10-28 07:41:18 -04:00
Raymond Hill
30f5e5daff New revision for release candidate 2023-10-28 07:38:42 -04:00
Raymond Hill
fc40393c81 Improve trusted-prune-inbound-object scriptlet
Trap incoming argument only if it matches the properties to
prune and matches. If there is no match, the inbound object
is passed through untouched.
2023-10-28 07:35:38 -04:00
Raymond Hill
9829ee12a5 Make Firefox dev build auto-update 2023-10-27 21:36:22 -04:00
Raymond Hill
0b59ebf1c6 Import translation work from https://crowdin.com/project/ublock 2023-10-27 21:27:28 -04:00
Raymond Hill
e2f5814c50 New revision for release candidate 2023-10-27 21:14:13 -04:00
Raymond Hill
07ac27e07b Give precedence to Last modified: field when evaluating "age" if lists
Available network information is not very reliable and should be
used only when `Last modified:` is not available.
2023-10-27 21:09:49 -04:00
Raymond Hill
ed4b31931a Prepare to ship minified lists in package 2023-10-26 13:38:24 -04:00
Raymond Hill
88a510cf7c Make Firefox dev build auto-update 2023-10-25 20:16:33 -04:00
Raymond Hill
a87813614a New revision for release candidate 2023-10-25 20:05:44 -04:00
Raymond Hill
51dfde8f41 Import translation work from https://crowdin.com/project/ublock 2023-10-25 20:04:58 -04:00
Dave Vandyke
0fa30a73c5 Further improve google-ima shim script (#3900)
I worked through some of the websites listed in the google-ima shim
script issue[1], to see what was going wrong. It turned out the
addEventListener method supports an optional context Object, which is
bound to the listener if provided. Some websites make use of that,
and then break when `this` is not bound correctly when events are
dispatched.

See also https://github.com/duckduckgo/tracker-surrogates/pull/24

1 - https://github.com/uBlockOrigin/uBlock-issues/issues/2265
2023-10-25 12:00:21 -04:00
Raymond Hill
c2217a170e Update user interface srings as suggested 2023-10-25 07:31:23 -04:00
Raymond Hill
e2b9e090ce Update user interface srings as suggested 2023-10-25 07:28:41 -04:00
Raymond Hill
33a9b97f25 Make Firefox dev build auto-update 2023-10-24 12:45:46 -04:00
Raymond Hill
5d4f0da5aa New revision for release candidate 2023-10-24 12:31:56 -04:00
Raymond Hill
c1657c2f9c Import translation work from https://crowdin.com/project/ublock 2023-10-24 11:22:21 -04:00
Dave Vandyke
b445f4f4cd Improve google-ima shim script (#3899)
We made use of the google-ima shim script from uBlock in the
DuckDuckGo Privacy Essentials extension recently, but found a few
issues with website breakage. After debugging and fixing those[1], I
thought it would be worth sharing the improvements back again. Issues
we ran into:

- The AdDisplayContainer[2] constructor usually creates some DOM
  elements inside the given container. They are all nested within a
  DIV and some websites break when at least that top DIV element isn't
  created.
- While not documented (that I could see), the event listeners can be
  added using an array of event types. Some websites make use of that
  and then hang forever when the expected events aren't fired. This
  caused videos not to play on some websites.
- The Ad.prototype.getUniversalAdIds()[3] method should return an
  array of UniversalAdIdInfo Objects, instead of an Array of
  strings. When an array of strings are returned, some websites then
  break when the UniversalAdIdInfo's methods are missing.
- The UniversalAdIdInfo.prototype.getAdIdValue()[4] method had a typo
  in the name ("getAsIdValue") and was effectively missing. That
  caused some websites to break when the missing method was called.
- The google.ima.OmidVerificationVendor[5] Object was missing, which
  broke some websites that attempted to access it.

1 - 52f2999523
2 - https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.AdDisplayContainer
3 - https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.Ad#getUniversalAdIds
4 - https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.UniversalAdIdInfo#getAdIdValue
5 - https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima#.OmidVerificationVendor
2023-10-24 11:16:14 -04:00
Raymond Hill
d32204f984 Match type exactly in prevent-addEventListener scriptlet
Unless `type` is a regex of course.

Related feedback:
https://github.com/uBlockOrigin/uAssets/discussions/17907#discussioncomment-7362212
2023-10-23 21:15:00 -04:00
Raymond Hill
b8542cb894 Make Firefox dev build auto-update 2023-10-23 10:11:19 -04:00
Raymond Hill
e351551dc4 Move warning sentence to the start
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/discussions/2895#discussioncomment-7353454
2023-10-23 10:01:33 -04:00
Raymond Hill
4e0b74e562 new revision for release candidate 2023-10-23 10:00:52 -04:00
Raymond Hill
6c672c99c2 Import translation work from https://crowdin.com/project/ublock 2023-10-23 09:20:59 -04:00
Raymond Hill
3c04ae41b3 Make Firefox dev build auto-update 2023-10-22 18:41:37 -04:00
Raymond Hill
589f281f21 Fine tune CSS
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/discussions/2895#discussioncomment-7353182
2023-10-22 18:33:28 -04:00
Raymond Hill
3562cc2e4c New revision for release candidate 2023-10-22 18:22:59 -04:00
Raymond Hill
1a1876e593 Import translation work from https://crowdin.com/project/ublock 2023-10-22 18:22:27 -04:00
Raymond Hill
82c59b4b6e Add domain vararg to trusted-set-cookie
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2893
2023-10-22 18:19:18 -04:00
Raymond Hill
1e745c2f4d Emphasize warning in "My filters"
Related feedback:
f1ce3b2191 (commitcomment-130633291)
2023-10-22 17:52:38 -04:00
Raymond Hill
9bd483bec3 Enable "not permissions" filtering expression in logger
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/2714#discussioncomment-6959861
2023-10-22 17:50:45 -04:00
Raymond Hill
7ca18f77d9 Make Firefox dev build auto-update 2023-10-22 15:51:26 -04:00
Raymond Hill
9fed114374 New revision for dev build 2023-10-22 15:40:48 -04:00
Raymond Hill
9e2c919c24 Import translation work from https://crowdin.com/project/ublock 2023-10-22 15:40:16 -04:00
Raymond Hill
a9ff41ae55 Add filter expressions for logger output
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/2714#discussioncomment-6959761
2023-10-22 15:33:21 -04:00
Raymond Hill
70019e41a6 Make Firefox dev build auto-update 2023-10-22 13:21:19 -04:00
Raymond Hill
52d1357c67 New revision for release candidate 2023-10-22 13:10:33 -04:00
Raymond Hill
86f0d6dd97 Add trusted-prune-outbound-object.js scriptlet
Essentially a complement of `trusted-prune-inbound-object.js` added in
1c9da227d7

To perform object pruning on any object returned synchronously by
any given call.

The arguments for `trusted-prune-outbound-object` in order are:

- The name of the property to trap. Must be a function, and must
  exist when the scriptlet tries to install the trap.

- The properties to prune (as with `json-prune`)

- The properties which must all be present for pruning to occur
  (as with `json-prune`)

The scriptlets `json-prune.js` and `evaldata-prune.js` essentially
perform the same function, and will eventually be rewritten to
internally delegate to generic `trusted-prune-outbound-object.js`.
2023-10-22 12:35:49 -04:00
Raymond Hill
0b9b5a4802 Enable dev console by default in dev build 2023-10-22 12:33:10 -04:00
Raymond Hill
8c283d4d38 Flush the registered scriptlet cache as needed only
Related commit:
e5b438257f
2023-10-22 12:31:33 -04:00
Raymond Hill
f1ce3b2191 Add warning against adding custom filters from untrusted sources
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/discussions/2895#discussioncomment-7351138
2023-10-22 10:47:52 -04:00
Raymond Hill
e33c0f9d9c Minor refactoring plus other minor changes
Added more evocative error messages to linter.

Made the content of _My filters_ trusted by default in
dev build.
2023-10-22 08:53:01 -04:00
Raymond Hill
5dd9584da2 Make Firefox dev build auto-update 2023-10-21 19:45:50 -04:00
Raymond Hill
fe36da3525 New revision for release candidate 2023-10-21 19:35:06 -04:00
Raymond Hill
64c1f8767c Add ability to control trusted status of filter lists
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/discussions/2895

Changes:

The _content of the My filters_ pane is now considered untrusted by
default, and only uBO's own lists are now trusted by default.

It has been observed that too many people will readily copy-paste
filters from random sources. Copy-pasting filters which require trust
represents a security risk to users with no understanding of how the
filters work and their potential abuse.

Using a filter which requires trust in a filter list from an untrusted
source will cause the filter to be invalid, i.e. shown as an error.

A new advanced setting has been added to control which lists are
considered trustworthy: `trustedListPrefixes`, which is a space-
separated list of tokens. Examples of possible values:

- `ublock-`: trust only uBO lists, exclude everything else including
  content of _My filters_ (default value)

- `ublock- user-`: trust uBO lists and content of _My filters_

- `-`: trust no list, essentially disabling all filters requiring
  trust (admins or people who don't trust us may want to use this)

One can also decide to trust lists maintained elsewhere. For example,
for stock AdGuard lists add ` adguard-`. To trust stock EasyList lists,
add ` easylist-`.

To trust a specific regional stock list, look-up its token in
assets.json and add to `trustedListPrefixes`.

The matching is made with String.startsWith(), hence why `ublock-`
matches all uBO's own filter lists.

This also allows to trust imported lists, for example add
` https://filters.adtidy.org/extension/ublock/filters/` to trust all
non-stock AdGuard lists.

Add the complete URL of a given imported list to trust only that one
list.

URLs not starting with `https://` or `file:///` will be rejected,
i.e. `http://example.org` will be ignored.

Invalid URLs are rejected.
2023-10-21 19:29:10 -04:00
Raymond Hill
801d569585 Make Firefox dev build auto-update 2023-10-21 14:56:27 -04:00
Raymond Hill
e275e1b197 New revision for release candidate 2023-10-21 14:36:38 -04:00
Raymond Hill
e5b438257f Ensure scriptlet cache is reset when filtering profile changes
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2896

TODO: Eventually, distinguish between filtering profile increasing
or decreasing so as to avoid flushing caches when increasing
filtering, which should not affect the scriptlets cache.
2023-10-21 14:25:26 -04:00
Raymond Hill
d6bd14d708 Make Firefox dev build auto-update 2023-10-21 10:11:30 -04:00
Raymond Hill
e4490ee92a New revision for release candidate 2023-10-21 10:00:02 -04:00
Raymond Hill
1c9da227d7 Add trusted-prune-inbound-object scriptlet
As per discussion with filter list maintainers.

To perform object pruning for any given call which has an object
as argument (hence "inbound").

Since `json-prune-stringify` scriptlet is a specific form of
pruning inbound objects, it has been removed.

The arguments for `trusted-prune-inbound-object` in order are:

- The name of the property to trap. Must be a function, and must
  exist when the scriptlet tries to install the trap.

- The position of the object to prune in the argument list when
  the trapped function is called. The position is 1-based and
  must be an integer greater than 0.

- The properties to prune (as with `json-prune`)

- The properties which must all be present for pruning to occur
  (as with `json-prune`)

- Varargs:
  - `, dontOverwrite, 1`: do not modify the target inbound object

Examples:

Remove `title` and `name` properties before passing the object to
`JSON.stringify` call:

  example.org##+js(trusted-prune-inbound-object, JSON.stringify, 1, title name)

Remove `status` property before passing the object to `Object.keys`
call but do not modify caller's instance of the object:

  example.org##+js(trusted-prune-inbound-object, Object.keys, 1, status, , dontOverwrite, 1)
2023-10-21 09:31:50 -04:00
Raymond Hill
287f7711aa Import translation work from https://crowdin.com/project/ublock 2023-10-21 08:19:28 -04:00
Raymond Hill
6af4494946 [mv3] Honor scriptlets' target world in Firefox
When the target world of a scriptlet is the ISOLATED one,
skip Blob-based injection in Firefox, as the current world
is always the ISOLATED one. This should make ISOLATED
world-based scriptlets more reliable (i.e. execute sooner)
in Firefox.
2023-10-21 07:11:12 -04:00
Raymond Hill
607bba6eaf Add dontOverwrite vararg to (trusted-)set-cookie scriptlet
When the vararg `, dontOverwrite, 1` is present, the scriptlet will
not modify the cookie if it already exists.

Related discussion:
https://github.com/uBlockOrigin/uAssets/issues/19976#issuecomment-1773466740
2023-10-20 21:38:54 -04:00
Raymond Hill
009c572cb0 Make Firefox dev build auto-update 2023-10-20 20:56:10 -04:00
Raymond Hill
9aaa7ab3f5 New revision for dev build 2023-10-20 20:44:57 -04:00
peace2000
eb66129fbf Add "on" and "off" values to set-cookie (#3898)
* Add "on" and "off" values to set-cookie

Used on praxisplan.at.

0cd4612e18

* Update scriptlets.js
2023-10-20 20:43:52 -04:00
Raymond Hill
41d91ed080 Fine tune set-local-storage-item as per feedback
Related feedback:
- https://github.com/uBlockOrigin/uAssets/discussions/20194
- https://github.com/gorhill/uBlock/pull/3898
2023-10-20 20:10:35 -04:00
Raymond Hill
f0cd93335e Revert "Turns out delay does apply to first element"
This reverts commit 906c6eb430.
2023-10-19 17:23:05 -04:00
Raymond Hill
906c6eb430 Turns out delay does apply to first element
Regarding `trusted-click-element`, and as per documentation
and code:
- https://github.com/AdguardTeam/Scriptlets/blob/master/wiki/about-trusted-scriptlets.md#trusted-scriptlets
- https://github.com/AdguardTeam/Scriptlets/blob/master/src/scriptlets/trusted-click-element.js
2023-10-19 14:08:57 -04:00
Raymond Hill
e873fd5378 Add cdn.statically.io as CDN for ublock-quick-fixes (dev build) 2023-10-18 11:38:00 -04:00
Raymond Hill
b219faf3c7 Make Firefox dev build auto-update 2023-10-18 10:51:36 -04:00
Raymond Hill
b73a0bef59 New revision for dev build 2023-10-18 10:18:55 -04:00
Raymond Hill
4dc396ff05 Fix typos in comments 2023-10-18 09:50:58 -04:00
Raymond Hill
9d3acd91b8 Support AdGuard's [trusted-]set-cookie-reload scriptlets
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2881
2023-10-18 09:48:08 -04:00
Raymond Hill
5bd40b34cd Support pairing doc with urltransform
Related feedback:
2e4525fe3c (commitcomment-130203742)
2023-10-18 09:06:28 -04:00
Raymond Hill
74a4772e41 Fix comment 2023-10-18 08:55:09 -04:00
Raymond Hill
b0fe6d228a Use @latest instead of @main for jsDelivr CDN 2023-10-17 23:25:06 -04:00
Raymond Hill
b98ee0f442 Minor code review 2023-10-17 23:11:06 -04:00
Raymond Hill
31bdc9ef0d Make Firefox dev build auto-update 2023-10-17 17:50:55 -04:00
Raymond Hill
5a471c2a01 New revision for dev build 2023-10-17 17:35:39 -04:00
Raymond Hill
51359c6585 [experimental] Add json-stringify scriptlet
Will be evaluated this current dev cycle and as a result
might be removed before next stable.

Other changes to increase code consistency.
2023-10-17 17:33:49 -04:00
Raymond Hill
c0ea5ebab5 Make Firefox dev build auto-update 2023-10-17 12:41:16 -04:00
Raymond Hill
5827f7161e New revision for dev build 2023-10-17 12:32:05 -04:00
Raymond Hill
f34855b859 Do not consider same-creation time to be a stale status
Related commit:
7daf31336a
2023-10-17 12:30:06 -04:00
Raymond Hill
7daf31336a Ignore assets older than cached version when fetching from CDNs
As discussed with filter list volunteers.

https://github.com/uBlockOrigin/uBlock-discussions/discussions/781#discussioncomment-7283981
2023-10-17 12:08:10 -04:00
Raymond Hill
f122ce7320 Add logging ability to trusted-click-element
If the vararg `, log, 1` is present, the scriptlet will log to
the console it's execution steps. Works only in dev build.
2023-10-16 19:53:48 -04:00
Raymond Hill
5a24fad8ad Make fine-tuned json-prune-[...] scriptlets the default behavior
As discussed with filter list maintainers.
2023-10-16 19:36:16 -04:00
Raymond Hill
05ae51beb2 Minor code review of last commit
Related commit:
027c7a4fb5
2023-10-16 18:05:41 -04:00
Raymond Hill
027c7a4fb5 Support quoting scriptlet parameters with backticks
(In addition to in already supported single- and double-quote).

The parsing of (optionally) quoted arguments from an argument
list has been spinned off into a standalone helper in order to
be reused in other parts of the parser eventually.
2023-10-16 17:38:57 -04:00
Raymond Hill
1e4818a6e3 Make Firefox dev build auto-update 2023-10-16 11:21:00 -04:00
Raymond Hill
5f0a883475 New revision for dev build 2023-10-16 11:16:06 -04:00
Raymond Hill
c06f5e014f Prevent redirecting when URL is not transformed
Related commit:
https://github.com/gorhill/uBlock/commit/2e4525fe3c
2023-10-16 11:14:12 -04:00
Raymond Hill
8b107e1bac Make Firefox dev build auto-update 2023-10-16 10:21:22 -04:00
Raymond Hill
90e4a57062 New revision for dev build 2023-10-16 10:11:27 -04:00
Raymond Hill
2e4525fe3c Add new static network filter option: urltransform
The `urltransform` option allows to redirect a non-blocked network
request to another URL. There are restrictions on its usage:

- require a trusted source -- thus uBO-maintained lists or user
  filters
- the `urltransform` value must start with a `/`

If at least one of these conditions is not fulfilled, the filter
will be invalid and rejected.

The requirement to start with `/` is to enforce that only the path
part of a URL can be modified, thus ensuring the network request
is redirected to the same scheme and authority (as defined at
https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#Syntax).

Usage example (redirect requests for CSS resources to a non-existing
resource, for demonstration purpose):

    ||iana.org^$css,urltransform=/notfound.css

Name of this option is inspired from DNR API:
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/declarativeNetRequest/URLTransform

This commit required to bring the concept of "trusted source" to
the static network filtering engine.
2023-10-16 09:47:29 -04:00
Raymond Hill
bee64ebd90 Support pane: mark lists as obsolete only when update button is clicked
Lists older than 2 hours were unconditionally marked as obsolete when
opening the _Support_ pane. Those lists will now be marked as obsolete
only when the _Update now_ button in the _Support_ pane is pressed, i.e.
when launching an update cycle.

Related discussion:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/781#discussioncomment-7287323
2023-10-16 07:33:38 -04:00
Raymond Hill
b1530e2659 Fix #2874 as suggested 2023-10-15 20:16:44 -04:00
Raymond Hill
763e9eb2a8 Make Firefox dev build auto-update 2023-10-15 16:51:30 -04:00
Raymond Hill
99fb888328 New revision for dev build 2023-10-15 16:41:08 -04:00
Raymond Hill
7c660b2aad Remove stray tab 2023-10-15 16:40:35 -04:00
Raymond Hill
c0d80ac510 Fine tune trusted-click-element scriptlet 2023-10-15 16:14:44 -04:00
Raymond Hill
906c6072d6 Make Firefox dev build auto-update 2023-10-15 13:46:14 -04:00
Raymond Hill
349825ac08 New revision for dev build 2023-10-15 13:35:06 -04:00
Raymond Hill
c96a673338 Bring header= filter option out of experimental status
Related commits:
- bde3164eb4
- 5db8d05975

Reference documentation:
https://github.com/gorhill/uBlock/wiki/Static-filter-syntax#header

Compatible with AdGuard's `header=` option:
https://adguard.com/kb/general/ad-filtering/create-own-filters/#header-modifier

Partially compatible with ABP's `header=` option: Not compatible if
a header value is specified, as ABP requires `=` as separator between
the header name and header value, whereas uBO and AdGuard require `:`
as separator. If no header value is present, the option becomes compatible
with ABP's syntax.
https://gitlab.com/adblockinc/ext/adblockplus/adblockplusui/-/issues/898
2023-10-15 13:17:13 -04:00
Raymond Hill
7af88b025d Add trusted-click-element scriptlet
Implemented as per AdGuard API documentation:
https://github.com/AdguardTeam/Scriptlets/blob/master/wiki/about-trusted-scriptlets.md#trusted-click-element

The current implementation in uBO does not support the `extraMatch`
argument. If the extraMatch argument is not empty, the scriptlet
will abort and do nothing.

As for the rest, it complies with the documentation.
2023-10-15 11:08:15 -04:00
Raymond Hill
9a809a8e7c Fix comment 2023-10-15 11:06:40 -04:00
Raymond Hill
b41c4c25e3 Make Firefox dev build auto-update 2023-10-14 14:06:03 -04:00
Raymond Hill
d25306f300 Modify manifest.json for other platforms
As per 0325dcdcb4
2023-10-14 13:55:46 -04:00
Raymond Hill
006f4ed68f New revision for dev build 2023-10-14 13:52:39 -04:00
Raymond Hill
0325dcdcb4 Add ability to update lists through links with specifically crafted URLs
As per discussion with uBO volunteers.

Volunteers offering support for uBO will be able to craft links with
specially formed URLs, which once clicked will cause uBO to automatically
force an update of specified filter lists.

The URL must be crafted as shown in the example below:

https://ublockorigin.github.io/uAssets/update-lists.html?listkeys=ublock-filters,easylist

Where the `listkeys` parameter is a comma-separated list of tokens
corresponding to filter lists. If a token does not match an enabled
filter list, it will be ignored.

The ability to update filter lists through a specially crafted link
is available only on uBO's own support sites:

- https://github.com/uBlockOrigin/
- https://reddit.com/r/uBlockOrigin/
- https://ublockorigin.github.io/

Additionally, a visual cue has been added in the "Filter lists" pane
to easily spot the filter lists which have been recently updated, where
"recently" is currently defined as less than an hour ago.
2023-10-14 13:41:49 -04:00
Raymond Hill
17d30343c5 Use safe Array.from() in no-xhr-if scriptlet
Related issue:
https://github.com/uBlockOrigin/uAssets/issues/20063
2023-10-14 08:03:29 -04:00
Raymond Hill
70f247d7f5 Make Firefox dev build auto-update 2023-10-13 22:05:56 -04:00
Raymond Hill
657d34c371 New revision for dev build 2023-10-13 21:54:08 -04:00
Raymond Hill
e5c1b63315 Fix overzealous matching in (remove|replace)-node-text scriptlets
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2868
2023-10-13 21:51:13 -04:00
Raymond Hill
be60ac33c2 Make Firefox dev build auto-update 2023-10-13 21:36:11 -04:00
Raymond Hill
9bd85d4142 New revision for dev build 2023-10-13 21:25:26 -04:00
Raymond Hill
6f74df942d Fix no-xhr-if scriptlet for Firefox
Related feedback:
https://github.com/uBlockOrigin/uAssets/issues/20063#issuecomment-1762157408
2023-10-13 21:24:21 -04:00
Raymond Hill
fb42411efb Add browser_specific_settings.gecko_android to Firefox manifests
Reference:
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_specific_settings
2023-10-11 12:32:38 -04:00
Raymond Hill
f15dff27fe Minor code review 2023-10-10 13:30:18 -04:00
Raymond Hill
3a5606125d Import translation work from https://crowdin.com/project/ublock 2023-10-10 10:42:14 -04:00
Raymond Hill
e376712ee1 Make Firefox dev build auto-update 2023-10-10 10:36:38 -04:00
Raymond Hill
72f33ea1dc New revision for dev build 2023-10-10 10:24:48 -04:00
Raymond Hill
437453233d Support restoring from application/json file
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2853
2023-10-10 10:16:55 -04:00
Raymond Hill
0a18f75897 Fix dumping of CFE internals when no cosmetic filters present 2023-10-09 11:12:10 -04:00
Raymond Hill
780383faef Use safe versions of Math.floor/Math.random in scriptlets
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/78
2023-10-09 09:45:26 -04:00
Raymond Hill
ad75b1bdba Remove unreferenced dependencies
Related commit:
d4918c1d0a
2023-10-07 13:48:28 -04:00
Raymond Hill
92ca156c56 Make Firefox dev build auto-update 2023-10-07 12:35:49 -04:00
Raymond Hill
078bb7b102 New revision for dev build 2023-10-07 12:28:54 -04:00
Raymond Hill
02c7b32bef Improve google-ima.js surrogate
Related issues:
- https://github.com/uBlockOrigin/uBlock-issues/issues/2265
- https://github.com/uBlockOrigin/uAssets/issues/19981
2023-10-07 12:27:03 -04:00
Raymond Hill
d4918c1d0a Add version vararg to [...]-fetch-response scriptlets
If the `version` vararg is present and set to `2`, and if a
fetch Request argument is present, it will be cloned before
being matched to `propsToMatch` properties.

Additionally, created a `.fn` version of `[...]-fetch-response`
scriptlets to avoid redundant code in final injected scriptlets.
2023-10-07 11:49:17 -04:00
Raymond Hill
67f1d7de66 Make Firefox dev build auto-update 2023-10-05 11:36:20 -04:00
Raymond Hill
d94ee8d6e1 New revision for dev build 2023-10-05 11:28:41 -04:00
Raymond Hill
bd71d131a8 Catch unhandled exceptions
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/77
2023-10-05 11:25:28 -04:00
Raymond Hill
6b211f622c Add stackToMatch vararg to json-prune-related scriptlets
As per discussion with filter list maintainers.
2023-10-05 11:24:35 -04:00
Raymond Hill
7416340144 Prune rules with invalid regex-based filter for all realms
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/77
2023-10-03 10:51:47 -04:00
Raymond Hill
1268f7733e Make Firefox dev build auto-update 2023-10-02 09:06:17 -04:00
Raymond Hill
50140f3da7 New revision for dev build 2023-10-02 08:59:26 -04:00
Raymond Hill
4cac9d185b Reduce race conditions in scriptlet injection on Firefox
This is done by taking advantage through Firefox-specific
contentScripts.register() API:

https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/contentScripts
2023-10-02 08:42:03 -04:00
Raymond Hill
f580cb414d Make Firefox dev build auto-update 2023-09-29 13:00:48 -04:00
Raymond Hill
34f18acca5 New revision for dev build 2023-09-29 12:53:29 -04:00
Raymond Hill
d3b95c1c68 Add site-specific scriptlet
Related issue:
https://github.com/uBlockOrigin/uAssets/issues/19903
2023-09-29 12:51:44 -04:00
Raymond Hill
1ff3878a49 Add prevent-canvas scriptlet
Prevent usage of specific or all (default) canvas APIs.

Syntax

```text
example.com##+js(prevent-canvas [, contextType])
```

- `contextType`: A specific type of canvas API to prevent (default to all
  APIs). Can be a string or regex which will be matched against the type
  used in getContext() call. Prepend with `!` to test for no-match.

Examples

1. Prevent `example.com` from accessing all canvas APIs

```adblock
example.com##+js(prevent-canvas)
```

2. Prevent access to any flavor of WebGL API, everywhere

```adblock
*##+js(prevent-canvas, /webgl/)
```

3. Prevent `example.com` from accessing any flavor of canvas API except `2d`

```adblock
example.com##+js(prevent-canvas, !2d)
```

References

https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext
2023-09-28 11:26:45 -04:00
Raymond Hill
c20cfd41a9 Make Firefox dev build auto-update 2023-09-28 10:15:47 -04:00
Raymond Hill
2ca4b73f95 New revision for dev build 2023-09-28 10:09:52 -04:00
Raymond Hill
4e2aa3e384 Add scriptlet aliases for compatibility with AdGuard lists
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2828
2023-09-28 10:07:03 -04:00
Raymond Hill
c3cd596175 Remove unmaintained urlhaus PUP filter list
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2844
2023-09-28 09:49:07 -04:00
Raymond Hill
402e2ebf57 Use AG version of urlhaus list
Related discussion:
https://github.com/uBlockOrigin/uAssets/issues/7636#issuecomment-1735697402
2023-09-26 16:20:01 -04:00
Raymond Hill
38ac26a949 Make Firefox dev build auto-update 2023-09-22 09:45:51 -04:00
Raymond Hill
b95c90ba7c Import translation work from https://crowdin.com/project/ublock 2023-09-22 09:36:01 -04:00
Raymond Hill
bf828bc022 New revision for dev build 2023-09-22 09:33:43 -04:00
Raymond Hill
cce3f3efc1 Minor code review of scriptlets 2023-09-22 09:33:02 -04:00
Raymond Hill
3f3f383473 Make Firefox dev build auto-update 2023-09-19 07:31:31 -04:00
Raymond Hill
3e55da476c New revision for dev build 2023-09-19 07:19:39 -04:00
Daylin Cooper
ce959164bb Fix XHR hook partial response handling. 2023-09-18 23:39:17 -07:00
Raymond Hill
54dc0cd32d Make Firefox dev build auto-update 2023-09-17 10:46:27 -04:00
Raymond Hill
f81ec52fa8 New revision for dev build 2023-09-17 10:39:22 -04:00
Raymond Hill
20d3c6a466 Fix detection of leading combinators
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/2778#issuecomment-1722488224
2023-09-17 10:37:43 -04:00
Raymond Hill
d005e3f3ac [mv3] Fix glitchy popup panel when width increases
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/66
2023-09-16 12:23:47 -04:00
Raymond Hill
ee6de37b6e [mv3] Rework dashboard to avoid usage of iframe
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/67
2023-09-16 11:46:39 -04:00
Raymond Hill
e6aae07310 Make Firefox dev build auto-update 2023-09-16 10:36:38 -04:00
Raymond Hill
723302069d New revision for dev build 2023-09-16 10:30:08 -04:00
Raymond Hill
7ef3408712 Fix regression in :is() operator
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2818
2023-09-16 09:45:46 -04:00
Raymond Hill
98e1b264de Update scriptlets
Allow smaller multipliers in nano-sib/nano-stb
https://github.com/uBlockOrigin/uBlock-issues/issues/2808

Remove adfly-defuser, which is now unused.
2023-09-14 11:13:58 -04:00
Raymond Hill
c7535f1eda Make Firefox dev build auto-update 2023-09-12 20:40:57 -04:00
Raymond Hill
627254bdc9 New revision for dev build 2023-09-12 20:35:20 -04:00
Raymond Hill
313a3121c9 Do not assume set viewport for popup panel when using portrait mode in descktop
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2814
2023-09-12 20:33:14 -04:00
Raymond Hill
77a04584d0 Make Firefox dev build auto-update 2023-09-11 12:46:23 -04:00
Raymond Hill
552a094bd6 New revision for dev build 2023-09-11 12:37:14 -04:00
Raymond Hill
2571660161 Fix removal of :scope prefix in :has() operator
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/2778#issuecomment-1705101771
2023-09-11 12:34:53 -04:00
Raymond Hill
d5fb3c08a1 Remove broken content link for ROU list 2023-09-10 16:10:04 -04:00
Raymond Hill
74d04f1945 [mv3] Fix overiting of version in manifest 2023-09-10 14:24:29 -04:00
Raymond Hill
1db17ac4bf [mv3] Support the tagname being set externally 2023-09-09 09:47:38 -04:00
Raymond Hill
b2d8c9a0ba Drop cdn.statically.io for quick-fixes for the time being 2023-09-08 09:35:19 -04:00
573 changed files with 67183 additions and 34812 deletions

View File

@@ -10,5 +10,5 @@ contact_links:
url: https://github.com/uBlockOrigin/uAssets/issues
about: Report issues with filter lists or broken website functionality in the uAssets issue tracker.
- name: uBO Lite (uBOL) Issues
url: https://github.com/uBlockOrigin/uBOL-issues/issues
url: https://github.com/uBlockOrigin/uBOL-home/issues
about: Report issues specific to the Manifest Version 3 (MV3) variant in the uBOL issue tracker.

7
.github/workflows/RELEASE.HEAD.md vendored Normal file
View File

@@ -0,0 +1,7 @@
[Commits to Master Since This Release](https://github.com/gorhill/uBlock/compare/%version%...master)
#### How to Install the Developer Build:
- **Firefox**: Signing pending <!-- Download the build from [uBlock0_%version%.firefox.signed.xpi](https://github.com/gorhill/uBlock/releases/download/%version%/uBlock0_%version%.firefox.signed.xpi). -->
uBO works best on Gecko-based browsers, check out [why](https://github.com/gorhill/uBlock/wiki/uBlock-Origin-works-best-on-Firefox).
- **Chromium**: Install directly from the [Chrome Web Store](https://chromewebstore.google.com/detail/ublock-origin-development/cgbcahbpdhpcegmbfconppldiemgcoii).

View File

@@ -7,9 +7,6 @@ on:
permissions:
contents: read
# I used the following project as template to get started:
# https://github.com/dessant/search-by-image/blob/master/.github/workflows/ci.yml
jobs:
build:
permissions:
@@ -19,65 +16,35 @@ jobs:
if: startsWith(github.ref, 'refs/tags/')
steps:
- name: Clone repository
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
persist-credentials: false
- name: Clone uAssets
run: |
tools/pull-assets.sh
# https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html
- name: Get release information
id: release_info
run: |
echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}
echo "VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
- name: Build MV2 packages
run: |
tools/make-chromium.sh ${{ env.VERSION }}
tools/make-firefox.sh ${{ env.VERSION }}
- name: Assemble release notes
run: |
> release.body.txt
grep -m1 -B10000 -- "----------" CHANGELOG.md >> release.body.txt
sed -e 's/%version%/${{ env.VERSION }}/g' .github/workflows/RELEASE.HEAD.md >> release.body.txt
- name: Create GitHub release
id: create_release
uses: actions/create-release@v1
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ github.token }}
with:
tag_name: ${{ steps.release_info.outputs.VERSION }}
release_name: ${{ steps.release_info.outputs.VERSION }}
tag_name: ${{ env.VERSION }}
name: ${{ env.VERSION }}
draft: true
prerelease: true
- name: Build MV2 packages
run: |
tools/make-chromium.sh ${{ steps.release_info.outputs.VERSION }}
tools/make-firefox.sh ${{ steps.release_info.outputs.VERSION }}
tools/make-thunderbird.sh ${{ steps.release_info.outputs.VERSION }}
tools/make-npm.sh ${{ steps.release_info.outputs.VERSION }}
- name: Upload Chromium package
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: dist/build/uBlock0_${{ steps.release_info.outputs.VERSION }}.chromium.zip
asset_name: uBlock0_${{ steps.release_info.outputs.VERSION }}.chromium.zip
asset_content_type: application/octet-stream
- name: Upload Firefox package
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: dist/build/uBlock0_${{ steps.release_info.outputs.VERSION }}.firefox.xpi
asset_name: uBlock0_${{ steps.release_info.outputs.VERSION }}.firefox.xpi
asset_content_type: application/octet-stream
- name: Upload Thunderbird package
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: dist/build/uBlock0_${{ steps.release_info.outputs.VERSION }}.thunderbird.xpi
asset_name: uBlock0_${{ steps.release_info.outputs.VERSION }}.thunderbird.xpi
asset_content_type: application/octet-stream
- name: Upload NodeJS package
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: dist/build/uBlock0_${{ steps.release_info.outputs.VERSION }}.npm.tgz
asset_name: uBlock0_${{ steps.release_info.outputs.VERSION }}.npm.tgz
asset_content_type: application/octet-stream
body_path: release.body.txt
files: |
dist/build/uBlock0_${{ env.VERSION }}.chromium.zip
dist/build/uBlock0_${{ env.VERSION }}.firefox.xpi

View File

@@ -1,69 +0,0 @@
name: uBO Lite release
on: workflow_dispatch
permissions:
contents: read
# I used the following project as template to get started:
# https://github.com/dessant/search-by-image/blob/master/.github/workflows/ci.yml
jobs:
build:
permissions:
contents: write # for creating release
name: Build packages
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v3
with:
persist-credentials: false
# https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html
# Chromium
- name: Build Chromium uBOLite MV3 packages
run: |
tools/make-mv3.sh chromium full
echo "PACKAGE=$(basename $(ls dist/build/uBOLite_*.chromium.mv3.zip))" >> $GITHUB_ENV
echo "TAGNAME=$(basename $(ls dist/build/uBOLite_*.chromium.mv3.zip) .chromium.mv3.zip)" >> $GITHUB_ENV
RELEASENAME=${TAGNAME/_/ }
echo "RELEASENAME=$RELEASENAME" >> $GITHUB_ENV
cp dist/build/mv3-data/log.txt dist/mv3/
- name: Commit uBOLite MV3 build log file
# https://github.com/marketplace/actions/github-action-for-committing-changes-to-a-repository
uses: devops-infra/action-commit-push@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
commit_message: Update build log file
- name: Create GitHub release
id: create_release
uses: ncipollo/release-action@v1
with:
tag: ${{ env.TAGNAME }}
owner: uBlockOrigin
prerelease: true
repo: uBOL-home
token: ${{ secrets.PAT }}
- name: Upload Chromium uBOLite MV3 package
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.PAT }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: dist/build/${{ env.PACKAGE }}
asset_name: ${{ env.PACKAGE }}
asset_content_type: application/octet-stream
# Firefox
- name: Build Firefox uBOLite MV3 packages
run: |
tools/make-mv3.sh firefox full
echo "PACKAGE=$(basename $(ls dist/build/uBOLite_*.firefox.mv3.xpi))" >> $GITHUB_ENV
- name: Upload Firefox uBOLite MV3 package
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.PAT }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: dist/build/${{ env.PACKAGE }}
asset_name: ${{ env.PACKAGE }}
asset_content_type: application/octet-stream

3
.gitignore vendored
View File

@@ -1,4 +1,7 @@
*.bak
*.pem
__pycache__/
node_modules/
/dist/build/
/tmp/
.DS_Store

6
.gitmodules vendored
View File

@@ -0,0 +1,6 @@
[submodule "platform/mv3/extension/lib/codemirror/codemirror-ubol"]
path = platform/mv3/extension/lib/codemirror/codemirror-ubol
url = https://github.com/gorhill/codemirror-ubol.git
[submodule "publish-extension"]
path = publish-extension
url = https://github.com/gorhill/publish-extension.git

View File

@@ -1,22 +0,0 @@
{
"browser": true,
"devel": true,
"eqeqeq": true,
"esversion": 11,
"globals": {
"chrome": false, // global variable in Chromium, Chrome, Opera
"globalThis": false,
"self": false,
"vAPI": false,
"URLSearchParams": false,
"WebAssembly": false
},
"laxbreak": true,
"newcap": false,
"nonew": false,
"strict": "global",
"sub": true,
"undef": true,
"unused": true,
"validthis": true
}

448
CHANGELOG.md Normal file
View File

@@ -0,0 +1,448 @@
- [Improve `href-sanitizer` scriptlet](https://github.com/gorhill/uBlock/commit/a43d1d8c42)
- [Fix `editInboundObjectFn` utility scriptlet](https://github.com/gorhill/uBlock/commit/d376adaae8)
- [Improve `trusted-replace-argument` scriptlet](https://github.com/gorhill/uBlock/commit/52bc354bce)
- [Add ability to test against regex in JSONPath expressions](https://github.com/gorhill/uBlock/commit/f36d2b8496)
- [Improve `proxy-apply` utility scriptlet](https://github.com/gorhill/uBlock/commit/dd4f764920)
- [Fix `removeparam` for multiple query parameters with same name](https://github.com/gorhill/uBlock/commit/3e5ea3b03f)
- [Improve `trusted-click-element` scriptlet](https://github.com/gorhill/uBlock/commit/9aa91ba111)
- [Improve `google-ima` shim](https://github.com/gorhill/uBlock/commit/8de47f250d)
- [Add back a uBO-specific version of "CERT.PL's Warning List"](https://github.com/gorhill/uBlock/commit/87dddb7d78)
----------
# 1.66.4
- [Fix potential infinite loop when scanning for `$` anchor](https://github.com/gorhill/uBlock/commit/889c0eb208)
- [Allow generic exception for `replace=` option](https://github.com/gorhill/uBlock/commit/52dba4116e)
----------
# 1.66.2
- [Fix version snafu](https://github.com/gorhill/uBlock/commit/50cb780107)
----------
# 1.66.0
- [Improve `prevent-fetch` scriptlet](https://github.com/gorhill/uBlock/commit/d2bce26e7d)
- [Add support to strict-block from `ipaddress=` option](https://github.com/gorhill/uBlock/commit/6327aae56c)
- [Improve rendering with high-contrast theme](https://github.com/gorhill/uBlock/commit/5d7e5ee3a0) (fix suggested by @emv33)
- [Fix undue fetch from remote server at first install](https://github.com/gorhill/uBlock/commit/9327e19233)
- [Improve compatibility of `uritransform=` with DNR syntax](https://github.com/gorhill/uBlock/commit/aaf35d9d71)
- [Allow usage of `csp=`/`permissions=` with resource type object](https://github.com/gorhill/uBlock/commit/07e9f805bb)
- [JSONPath: Add ability to select root node for appending/modifying](https://github.com/gorhill/uBlock/commit/faff035203)
- [JSONPath: Add ability to substitute a pattern within a string value](https://github.com/gorhill/uBlock/commit/38ca6d41ff)
- [Remove "CERT.PL's Warning List" from stock lists](https://github.com/gorhill/uBlock/commit/e713e133eb)
- [Fix incorrect CNAME-related test in advanced settings](https://github.com/gorhill/uBlock/commit/171ddd3e06)
- [Remove "AdGuard Tracking Protection"from stock list](https://github.com/gorhill/uBlock/commit/14a9572c86)
- [Add filter list for experimental filters](https://github.com/gorhill/uBlock/commit/d88814bc12)
- [Improve `fingerprint2.js` shim](https://github.com/gorhill/uBlock/commit/7d9317bb17)
- [Make `google-ima` a valid injectable scriptlet](https://github.com/gorhill/uBlock/commit/47cbb43a0e)
- [Improve `abort-current-script` scriptlet](https://github.com/gorhill/uBlock/commit/fef50e59f2)
- [Fix potential exception in procedural operator `:matches-attr`](https://github.com/gorhill/uBlock/commit/e07e7bbd09)
- [Improve reporting of `reason` option in strict-blocked pages](https://github.com/gorhill/uBlock/commit/b7510eee61)
- [Improve `prevent-innerHTML` scriptlet](https://github.com/gorhill/uBlock/commit/b0396029bd)
----------
# 1.65.0
## Fixes / changes
- [Reset `important` option flag at `header` evaluation time](https://github.com/gorhill/uBlock/commit/66b68b4442)
- [Fix broken reverse lookup of filter lists](https://github.com/gorhill/uBlock/commit/527b4a201f)
- [Add `[trusted-]edit-inbound-object` scriptlets](https://github.com/gorhill/uBlock/commit/6e466cf945)
- [Improve `remove-cookie` scriptlet](https://github.com/gorhill/uBlock/commit/0a8ea58bb7)
- [Add `json-edit`-related scriptlets](https://github.com/gorhill/uBlock/commit/87e0434c90)
- [Improve `trusted-set-cookie` scriptlet](https://github.com/gorhill/uBlock/commit/3a2bb62519)
- [Force cache bypass reload when no-scripting switch is toggled](https://github.com/gorhill/uBlock/commit/4affe343dd)
- [Improve `jsonl[...]` suite of scriptlets](https://github.com/gorhill/uBlock/commit/ed9999efd6)
- [Add support for network filter option `message`](https://github.com/gorhill/uBlock/commit/d8298bb067)
- [Complete support for reporing strict-block messages](https://github.com/gorhill/uBlock/commit/253ef7ade3)
- [Make `header=` syntax compatible with DNR rules](https://github.com/gorhill/uBlock/commit/408b538e75)
- [Counter CodeMirror's `pointer-events: none` on scrollbars](https://github.com/gorhill/uBlock/commit/c44f043ed3)
- [Fix element picker issue with explicit dark theme](https://github.com/gorhill/uBlock/commit/0130fdf4a1)
----------
# 1.64.0
## Fixes / changes
- [Use custom blank page for embedded iframe in dashboard](https://github.com/gorhill/uBlock/commit/8cd6212867)
- [Use `color-scheme` `meta` tag, as suggested](https://github.com/gorhill/uBlock/commit/5c029b3532)
- [Bring zapper look in line with uBO Lite's zapper](https://github.com/gorhill/uBlock/commit/3f59f94b60)
- [Ignore `start_page` transition for popup-blocking purpose](https://github.com/gorhill/uBlock/commit/0243a141a7)
- [Exclude `chrome:` as valid openers for popup candidates](https://github.com/gorhill/uBlock/commit/59f4aca010)
- [Fetch diff patches from "reliable" servers only](https://github.com/gorhill/uBlock/commit/8b964a8c54)
- [Add `trusted-create-html` scriptlet](https://github.com/gorhill/uBlock/commit/20dd606504)
- [Mind potential race condition when dynamically registering scriptlets](https://github.com/gorhill/uBlock/commit/15e832da8a)
- [Fix undue unchecking of setting in "My filters"](https://github.com/gorhill/uBlock/commit/2bb6999e3f)
- [Add path support as target option in static extended filtering](https://github.com/gorhill/uBlock/commit/8b696a691a)
- [Add `trusted-prevent-fetch` scriptlet](https://github.com/gorhill/uBlock/commit/4ce26b63ff)
- [Code viewer shouldn't be maximizable](https://github.com/gorhill/uBlock/commit/97e740bd2c)
- [Add `json-edit` suite of scriptlets; extend `replace=` option](https://github.com/gorhill/uBlock/commit/b18daa53aa)
- [Improve `trusted-prevent-dom-bypass` scriptlet](https://github.com/gorhill/uBlock/commit/68a256bdde)
- [Add `jsonl-prune-xhr-response`/`jsonl-prune-fetch-response` scriptlets](https://github.com/gorhill/uBlock/commit/95a3be9d56)
- [Improve `[json-prune|trusted-replace]-fetch-response` scriptlets](https://github.com/gorhill/uBlock/commit/88fa550a96)
----------
# 1.63.2
## Fixes / changes
- [Fix TypedArray overflow](https://github.com/gorhill/uBlock/commit/76b80baaea)
- [Add prevent-innerHTML scriptlet](https://github.com/gorhill/uBlock/commit/fe744816f1)
----------
# 1.63.0
## Fixes / changes
- [Improve `prevent-set[Timeout|Interval]` scriptlets](https://github.com/gorhill/uBlock/commit/d36ea89a02)
- [Add quit button to element zapper mode](https://github.com/gorhill/uBlock/commit/4aebdbb0a9)
- [Improve `trusted-override-element-method` scriptlet](https://github.com/gorhill/uBlock/commit/9e946ce0c3)
- [Disable obsolete cache-control workaround for Firefox](https://github.com/gorhill/uBlock/commit/34cea70924)
- [Improve `overlay-buster` scriptlet](https://github.com/gorhill/uBlock/commit/fc231998b9)
- [Add ability to inject scriptlets according to origin of ancestor contexts](https://github.com/gorhill/uBlock/commit/a483f7955f)
- [Fix range parser in prevent-setTimeout scriptlet](https://github.com/gorhill/uBlock/commit/e636c32f2a)
- [Add filter option synonyms for `strict1p`/`strict3p`](https://github.com/gorhill/uBlock/commit/34df044808)
- [Increase URL buffer size to 8192 (from 2048)](https://github.com/gorhill/uBlock/commit/36404543e4)
- [Use onmessage/postMessage instead of BroadcastChannel in diff updater](https://github.com/gorhill/uBlock/commit/ea8853cda3)
- [Improve `disable-newtab-links` scriptlet](https://github.com/gorhill/uBlock/commit/d41989e62a)
- [Improve `prevent-addEventListener` scriptlet](https://github.com/gorhill/uBlock/commit/9c26a07b53)
- [Fix reverse lookup of `##^responseheader(...)` filters](https://github.com/gorhill/uBlock/commit/5921e50e03)
- [Improve `evaldata-prune` scriptlet](https://github.com/gorhill/uBlock/commit/9bb1a2baaf)
- [Comply with Mozilla's "User Consent and Control"](https://github.com/gorhill/uBlock/commit/344539d793)
- [Improve `noeval-if` scriptlet](https://github.com/gorhill/uBlock/commit/0df7faffac)
- [Add "closed","next", "mandatory", "agree/disagree" values to `set-cookie` scriptlet](https://github.com/gorhill/uBlock/commit/35a47d674b) (by @ryanbr)
- [Add `decline` value to `set-cookie` scriptlet](https://github.com/gorhill/uBlock/commit/4b12247da1)
- [Improve `abort-on-stack-trace` scriptlet](https://github.com/gorhill/uBlock/commit/b617926c1c)
- [Improve `href-sanitizer` scriptlet](https://github.com/gorhill/uBlock/commit/551c6bc6eb)
----------
# 1.62.0
## Fixes / changes
- [Fix deserialization of ArrayBuffer shared by multiple TypedArrays](https://github.com/gorhill/uBlock/commit/c92a518218)
- [Improve `trusted-suppress-native-method` scriptlet](https://github.com/gorhill/uBlock/commit/cb6c11ab6f)
- [Improve `urlskip=` filter option](https://github.com/gorhill/uBlock/commit/a7aa755f18)
- [Improve `parse-properties-to-match` scriptlet helper](https://github.com/gorhill/uBlock/commit/7494eaf621)
- [Improve `href-sanitizer` scriptlet](https://github.com/gorhill/uBlock/commit/9bf8d53ebe)
- [Improve quote usage in filter options and scriptlets](https://github.com/gorhill/uBlock/commit/8ba71f09d7)
- [Improve `trusted-suppress-native-method` scriptlet](https://github.com/gorhill/uBlock/commit/7ed3470844)
- [Improve `trusted-replace-argument` scriptlet](https://github.com/gorhill/uBlock/commit/3417fe3d5d)
- [Block media elements unconditionally when max size is set to 0](https://github.com/gorhill/uBlock/commit/36db7f8327)
- Regression from <https://github.com/gorhill/uBlock/commit/73ce4e6bcf>
- [Visually separate scriptlet parameters in active line](https://github.com/gorhill/uBlock/commit/076e9fa73e)
- [Mitigate potentially delayed execution of scriptlets in Firefox](https://github.com/gorhill/uBlock/commit/b1a00145bd)
- [Improve `prevent-setTimeout`/`prevent-setInterval` scriptlets](https://github.com/gorhill/uBlock/commit/3b7fa79a68)
- [Improve `trusted-replace-argument` scriptlet](https://github.com/gorhill/uBlock/commit/adced29b5b)
- [Add `-safebase64` directive to `urlskip=` option](https://github.com/gorhill/uBlock/commit/bcc058eba7)
- [Improve `urlskip=` filter option](https://github.com/gorhill/uBlock/commit/77ed83ff2f)
- [Improve `spoof-css` scriptlet](https://github.com/gorhill/uBlock/commit/5f5e3d730f)
- [Improve `trusted-set-attr` scriptlet](https://github.com/gorhill/uBlock/commit/c8174d6032)
- [Add support for EasyList `{ remove: true }` cosmetic filter syntax](https://github.com/gorhill/uBlock/commit/ff5fc61753)
- [Keep moving related scriptlets into separate files](https://github.com/gorhill/uBlock/commit/e5a088738d)
- [Improve `prevent-xhr` scriptlet](https://github.com/gorhill/uBlock/commit/ce4908b341)
- [Improve `trusted-suppress-native-method` scriptlet](https://github.com/gorhill/uBlock/commit/41616df866)
- [Improve `set-cookie` scriptlet](https://github.com/gorhill/uBlock/commit/e613282698)
----------
# 1.61.2
## Fixes / changes
- [Better handle unexpected conditions when deserializing](https://github.com/gorhill/uBlock/commit/4c299bfca9)
- [Fix potential infinite async loop](https://github.com/gorhill/uBlock/commit/335d947c10) (issue found by @Rob--W)
----------
# 1.61.0
## Fixes / changes
- [Improve `prevent-refresh` scriptlet](https://github.com/gorhill/uBlock/commit/8884f259c1)
- [Improve `googlesyndication_adsbygoogle.js` scriptlet](https://github.com/gorhill/uBlock/commit/f645e8f0d2)
- [Offer ability to skip redirects in strict-blocked page](https://github.com/gorhill/uBlock/commit/20b54185fa)
- [Add `-blocked` directive to `urlskip=` option](https://github.com/gorhill/uBlock/commit/d04dc4c767)
- [Add `trusted-set-attr` scriptlet](https://github.com/gorhill/uBlock/commit/11ca4a3923)
- [Remove `64:ff9b:` as private network block](https://github.com/gorhill/uBlock/commit/2621c908c3)
- [Ensure `urlskip=` redirects only to `https:`](https://github.com/gorhill/uBlock/commit/32f27c5131)
- [Add support to `urlskip=` media resources](https://github.com/gorhill/uBlock/commit/ce9fc5dc14)
- [Add `-uricomponent` to `urlskip=` option](https://github.com/gorhill/uBlock/commit/01eebffc1f)
- [Add `forbidden`/`forever` as safe cookie values](https://github.com/gorhill/uBlock/commit/4d982d9972) (by @ryanbr)
- [Add regex extraction transformation step to `urlskip=` option](https://github.com/gorhill/uBlock/commit/c86ed5287b)
- [Improve `prevent-window-open` scriptlet](https://github.com/gorhill/uBlock/commit/85877b12ed)
- [Add support to parse Adguard's `[$domain=/.../]` regex-based modifier](https://github.com/gorhill/uBlock/commit/58bfe4c846)
- [Validate result type of XPath expressions](https://github.com/gorhill/uBlock/commit/c746633693)
- [Fix npm test suite](https://github.com/gorhill/uBlock/commit/818cb2d801)
- [Add ability to lookup parameter name in `urlskip=`](https://github.com/gorhill/uBlock/commit/64b2086ba4)
- [Mind that BroadcastChannel contructor can throw in Firefox](https://github.com/gorhill/uBlock/commit/6d2b3375f8)
- [Add `trusted-override-element-method` scriptlet](https://github.com/gorhill/uBlock/commit/95b0ce5e3a)
- [Add `trusted-prevent-dom-bypass` scriptlet](https://github.com/gorhill/uBlock/commit/1abc864742)
- [Improve `prevent-xhr` scriptlet; add `trusted-prevent-xhr` scriptlet](https://github.com/gorhill/uBlock/commit/fe49ced2ac)
- [Skip dns resolution when requests are proxied through http](https://github.com/gorhill/uBlock/commit/4305bfbdb1)
- [Blocking large media elements also prevents autoplay, regardless of size](https://github.com/gorhill/uBlock/commit/73ce4e6bcf)
- [Do not discard `!#else` block for unknown preprocessor tokens](https://github.com/gorhill/uBlock/commit/6cac645830)
- [Add ability to decode base64 in `urlskip=`](https://github.com/gorhill/uBlock/commit/e81e70937f)
- [Fix images not properly downloading on click](https://github.com/gorhill/uBlock/commit/aec0bd39e3)
----------
# 1.60.0
## Fixes / changes
- [Add advanced setting `dnsResolveEnabled`](https://github.com/gorhill/uBlock/commit/760b2ffce6)
- [Fix contextual menu quirks](https://github.com/gorhill/uBlock/commit/0a6dc47a72)
- [Fix exception thrown in `spoof-css` in Firefox](https://github.com/gorhill/uBlock/commit/11c3a16036)
- [Throttle down repeated scriptlet logging information](https://github.com/gorhill/uBlock/commit/e8f6f3ddff)
- [Improve scriptlet helper `proxy-apply`](https://github.com/gorhill/uBlock/commit/547fae4842)
- [Add an entry in _Report_ page for badware/phishing category](https://github.com/gorhill/uBlock/commit/e18a3707c7)
- [New static network filter option `urlskip=`](https://github.com/gorhill/uBlock/commit/266ec4894b)
- [Rewrite cname uncloaking code to account for new `ipaddress=` option](https://github.com/gorhill/uBlock/commit/6acf97bf51)
- [Avoid using dns.resolve() for proxied DNS resolution](https://github.com/gorhill/uBlock/commit/d5f14ffa32)
- [Add support for `lan`/`loopback` values to `ipaddress=` option](https://github.com/gorhill/uBlock/commit/030d7334e4)
- [New static network filter option `ipaddress=`](https://github.com/gorhill/uBlock/commit/c6dedd253f)
- [Add ability to quote static network option values](https://github.com/gorhill/uBlock/commit/20115697e5)
- [Improve `prevent-fetch` scriptlet](https://github.com/gorhill/uBlock/commit/e8202af11d)
- [Apply CSP/PP injections to `object` resources](https://github.com/gorhill/uBlock/commit/89f02098fd)
- [Improve `xml-prune` scriptlet](https://github.com/gorhill/uBlock/commit/c8307f58a3)
- [Add support for `application/dash+xml` in `replace=` option](https://github.com/gorhill/uBlock/commit/91125d29cf)
- [Add ability to directly evaluate static network filtering engine](https://github.com/gorhill/uBlock/commit/b7ed3b45ed)
- [Fix `prevent-window-open` for when logger is open](https://github.com/gorhill/uBlock/commit/f552f655cb)
- [Improve `prevent-window-open` scriptlet](https://github.com/gorhill/uBlock/commit/7f11d6216e)
- [Improve `validate-constant` scriptlet helper](https://github.com/gorhill/uBlock/commit/ae5dc6299e)
- [Improve `trusted-replace-outbound-text` scriptlet](https://github.com/gorhill/uBlock/commit/0dcb985601)
- [Improve `prevent-xhr` scriptlet](https://github.com/gorhill/uBlock/commit/3a249f395c)
- [Add noop resources for redirect purpose](https://github.com/gorhill/uBlock/commit/59a9a43a83)
- [Use helper function to lookup safe cookie values](https://github.com/gorhill/uBlock/commit/79e10323ad)
- [Add `checked`/`unchecked` to `set-cookie`](https://github.com/gorhill/uBlock/commit/3e2171f550) (by @ryanbr)
- [Add `allowed`/`denied` to `set-local-storage-item`](https://github.com/gorhill/uBlock/commit/41c2258f91) (by @ryanbr)
- [Fix plain exceptions not overriding block filters using `header=` option](https://github.com/gorhill/uBlock/commit/1cb660b94e)
- [Improve various scriptlets](https://github.com/gorhill/uBlock/commit/56dfdd2568)
- [Improve `href-sanitizer` scriptlet](https://github.com/gorhill/uBlock/commit/db3dc69bcc)
- [Improve `remove-attr.js` scriptlet](https://github.com/gorhill/uBlock/commit/fb037e97d0)
- [Improve `trusted-replace-node-text` scriptlet](https://github.com/gorhill/uBlock/commit/4f0d1301ab)
----------
# 1.59.0
## Fixes / changes
- [Improve `href-sanitizer` scriptlet](https://github.com/gorhill/uBlock/commit/84be9cde6d)
- [Improve `trusted-replace-node-text` scriptlet](https://github.com/gorhill/uBlock/commit/8afd9e233d)
- [Improve `set-constant` scriptlet](https://github.com/gorhill/uBlock/commit/77feb25c4d)
- [Improve `prevent-fetch` scriptlet](https://github.com/gorhill/uBlock/commit/e785b99338)
- [Improve `href-sanitizer` scriptlet](https://github.com/gorhill/uBlock/commit/66e3a1ad47)
- [Fix CSP/PP header injection in non-document resources](https://github.com/gorhill/uBlock/commit/c90f4933df)
- [Add `trusted-suppress-native-method` scriptlet](https://github.com/gorhill/uBlock/commit/97d11c03c2)
- [Add support for `$currentISODate$` in `trusted-set-cookie` scriptlet](https://github.com/gorhill/uBlock/commit/a3576ea651)
- [Add `essential` and `nonessential` to set-cookie](https://github.com/gorhill/uBlock/commit/37d31a82d8) (by @ryanbr)
- [Fix distance calculation in picker](https://github.com/gorhill/uBlock/commit/9569969b55)
- [Fix bad serialization of Date objects](https://github.com/gorhill/uBlock/commit/c154aaa69c)
- [Fix race condition when loading redirect/scriptlet resources](https://github.com/gorhill/uBlock/commit/896737d098)
- [Improve logging in `prevent-addEventListener` scriptlet](https://github.com/gorhill/uBlock/commit/8eb3b19c69)
- [Add `:matches-prop()` pseudo CSS operator](https://github.com/gorhill/uBlock/commit/aca7674bac)
- [Improve `set-cookie` scriptlet](https://github.com/gorhill/uBlock/commit/b4d8750f44)
- [Improve `trusted-replace-node-text` scriptlet](https://github.com/gorhill/uBlock/commit/cb0f65e035)
- [Improve `trusted-replace-(fetch|xhr)-response` scriptlets](https://github.com/gorhill/uBlock/commit/9072772f61)
- [Improve `prevent-addEventListener` scriptlet](https://github.com/gorhill/uBlock/commit/91ee5bdeae)
- [Add `isodate` as available placeholder for auto-comment](https://github.com/gorhill/uBlock/commit/d5208ee5dd)
- [Improve `trusted-replace-outbound-text` scriptlet](https://github.com/gorhill/uBlock/commit/fa6740a059)
- [Classify generic cosmetic filters with comma as highly generic](https://github.com/gorhill/uBlock/commit/8f81833efc)
- [Raise max buffer size for response body filtering](https://github.com/gorhill/uBlock/commit/82a3992896)
- [Trim end of class tokens in generic cosmetic filtering's surveyor](https://github.com/gorhill/uBlock/commit/8ea1bac80b)
- [Improve `trusted-set-cookie` scriptlet](https://github.com/gorhill/uBlock/commit/0e1e4b82c5)
----------
# 1.58.0
## Fixes / changes
- [Fallback to `requestAnimationFrame` when `requestIdleCallback` is not available](https://github.com/gorhill/uBlock/commit/59ffc96e89)
- [Improve `trusted-click-element` scriptlet](https://github.com/gorhill/uBlock/commit/ee67cd6284)
- [Replace EasyDutch with AdGuard Dutch](https://github.com/gorhill/uBlock/commit/ca7d2ad61d)
- [Add checksum validation when loading trie buffers in selfie](https://github.com/gorhill/uBlock/commit/0e6d607484)
- [Catch exceptions in API calls for the sake of old Chromium versions](https://github.com/gorhill/uBlock/commit/bb479b0a66)
- [Add `accept`/`reject` to `set-local-storage-item`](https://github.com/gorhill/uBlock/commit/363ad6795c) (by @ryanbr)
- [Use raw string for regex patterns in python scripts](https://github.com/gorhill/uBlock/commit/923452b788)
- [Improve `noeval-if` scriptlet](https://github.com/gorhill/uBlock/commit/4d8ee35ef7)
- [Improve `trusted-set-local-storage-item` scriptlet](https://github.com/gorhill/uBlock/commit/2ccc3135c1)
- [Fix potential corruption when reading serialized data](https://github.com/gorhill/uBlock/commit/c098eb8625)
- [Improve `remove-[attr|class]` scriptlets](https://github.com/gorhill/uBlock/commit/91dfcbef2a)
- [Improve dashboard layout at high zoom factor](https://github.com/gorhill/uBlock/commit/6152f5269e)
- [Add a console pane to the logger](https://github.com/gorhill/uBlock/commit/3b4f02db21)
- [Improve `spoof-css` scriptlet](https://github.com/gorhill/uBlock/commit/277e90a4a7)
- [Fix bad date computation in auto-comment feature](https://github.com/gorhill/uBlock/commit/a5f6c35bb0)
- [Fix regression breaking import of `file://` lists](https://github.com/gorhill/uBlock/commit/c223a8cd39)
- [Add `trusted-replace-outbound-text` scriptlet](https://github.com/gorhill/uBlock/commit/21e1ee30ee)
- [Improve `[trusted-]set-cookie` scriptlets](https://github.com/gorhill/uBlock/commit/49ff7cffb1)
----------
# 1.57.2
## Fixes / changes
- [Fix stray lists in redesigned cache storage](https://github.com/gorhill/uBlock/commit/defd68ef7d)
----------
# 1.57.0
## Fixes / changes
- [Do not block large media resources when loaded as top-level document](https://github.com/gorhill/uBlock/commit/3919a16bb8)
- [Properly manage cache storage regarding managed user filters](https://github.com/gorhill/uBlock/commit/90ab1a76ab)
- [Improve `[trusted-]set-cookie` scriptlets](https://github.com/gorhill/uBlock/commit/11a48561e0)
- [Fixed Belgian and Nepali flags for Windows Chromium users](https://github.com/gorhill/uBlock/commit/499c80bd8a) (by @DandelionSprout)
- [Mind that `tabs.sendMessage` can throw](https://github.com/gorhill/uBlock/commit/3f7374c1f1)
- [Improve `set-cookie` scriptlet](https://github.com/gorhill/uBlock/commit/9146134874)
- [Append wildcard character only when filter starts & ends with `/`](https://github.com/gorhill/uBlock/commit/1cb190e102)
- [Fix failure to create popup logger window sometimes](https://github.com/gorhill/uBlock/commit/c8762945d9)
- [Improve json-prune-related scriptlets](https://github.com/gorhill/uBlock/commit/e7a0f8c781)
- [Support maximizing editor to viewport size](https://github.com/gorhill/uBlock/commit/664dd95700)
- [Add advanced setting to force popup panel orientation](https://github.com/gorhill/uBlock/commit/0d77ccded7)
- [Add checkboxes to "My filters" pane](https://github.com/gorhill/uBlock/commit/46ea5519c1)
- [Assume UTF-8 when no encoding can be looked up](https://github.com/gorhill/uBlock/commit/63acdcbdeb)
- [Fix issue with "My filters" pane on mobile](https://github.com/gorhill/uBlock/commit/24d94e559d)
- [Support aborting "Pick" mode in element picker](https://github.com/gorhill/uBlock/commit/a557f62112)
- [Remove sections with no lists in "Filter lists" pane](https://github.com/gorhill/uBlock/commit/0f4e50db07)
- [Add "Social widgets", "Cookie notices" sections in "Filter lists" pane](https://github.com/gorhill/uBlock/commit/21a76e32a1)
- [No longer disable generic cosmetic filters by default on mobile](https://github.com/gorhill/uBlock/commit/7a768e7b1a)
- [Improve `spoof-css` scriptlet](https://github.com/gorhill/uBlock/commit/603239970d)
- [Make asset updater compatible with non-persistent background page](https://github.com/gorhill/uBlock/commit/96704f2fda)
- [Move dragbar to the top of element picker dialog](https://github.com/gorhill/uBlock/commit/953c978d59)
- [Move "Quit" button to top bar in element picker](https://github.com/gorhill/uBlock/commit/6266c4718d)
- [Add advanced setting `requestStatsDisabled`](https://github.com/gorhill/uBlock/commit/e02ea69c86)
- [First lookup matching stock lists when importing URLs](https://github.com/gorhill/uBlock/commit/2b16a10b82)
- [Reset filter lists in worker when creating filters via "Block element"](https://github.com/gorhill/uBlock/commit/b0067b79d5)
- [Remove trusted-source requirement when using `badfilter`](https://github.com/gorhill/uBlock/commit/3c299b8632)
- [Redesign cache storage](https://github.com/gorhill/uBlock/commit/086766a924)
- [Don't match network filter-derived regexes against non-network URIs](https://github.com/gorhill/uBlock/commit/2262a129ec)
- [Remove obsolete trusted directives](https://github.com/gorhill/uBlock/commit/439a059cca)
- [Support logging details of calls to `json-prune-fetch-response`](https://github.com/gorhill/uBlock/commit/e527a8f9af)
- [Escape special whitespace characters in attribute values](https://github.com/gorhill/uBlock/commit/be3e366019)
----------
# 1.56.0
## Fixes / changes
- [Mind that multiple `uritransform` may apply to a single request](https://github.com/gorhill/uBlock/commit/2a5a444482)
- [Fix incorrect built-in filtering expression in logger](https://github.com/gorhill/uBlock/commit/9bff0c2f94)
- [Fix improper invalidation of valid `uritransform` exception filters](https://github.com/gorhill/uBlock/commit/21ec5a277c)
- [Improve `prevent-addEventListener` scriptlet](https://github.com/gorhill/uBlock/commit/b22b3d729b)
- [Fix Chartbeat flicker control `div`'s](https://github.com/gorhill/uBlock/commit/397d6d47b9) (by @ryanbr)
- [Fix potential exfiltration of browsing history by a rogue list author through `permissions=`](https://github.com/gorhill/uBlock/commit/7b138b58c6)
- [Ignore event handler-related attributes in `set-attr` scriptlet](https://github.com/gorhill/uBlock/commit/3037ae5f04) (suggested by @distinctmondaylilac)
- [Fix potential exfiltration of browsing history by a rogue list author through `csp=`](https://github.com/gorhill/uBlock/commit/db5656f607) (reported by @distinctmondaylilac)
- [Output scriptlet logging information to the logger](https://github.com/gorhill/uBlock/commit/869a653fdf)
- [Fix decompiling of scriptlet parameters](https://github.com/gorhill/uBlock/commit/49dd68ef3d)
- [Add support for `extraMatch` in `trusted-click-element` scriptlet](https://github.com/gorhill/uBlock/commit/45e62c939f)
- [Remove minimum height constraint from "My filters" pane](https://github.com/gorhill/uBlock/commit/f624c835c2)
- [Unregister all scriptlets when disabling uBO on a specific site](https://github.com/gorhill/uBlock/commit/13dcd844a7)
- [Allow `uritransform` to process the hash part of a URL](https://github.com/gorhill/uBlock/commit/b19094339f)
- [Remember presentation state of "My rules" pane](https://github.com/gorhill/uBlock/commit/3d1b100646)
- [Fix improperly assembled `!#include` sublists](https://github.com/gorhill/uBlock/commit/0e00010b91)
- [Mark procedural filters with pseudo-elements selector as invalid](https://github.com/gorhill/uBlock/commit/757b8be9cd)
- [Prevent access to picker when "My filters" is not enabled](https://github.com/gorhill/uBlock/commit/bc641fc024)
- [Provide visual feedback when applying changes in "Filter lists" pane](https://github.com/gorhill/uBlock/commit/c4bb8a0f64)
- [Empty query parameters must still use `=`](https://github.com/gorhill/uBlock/commit/1cac61a9a4)
- [Add support to toggle no-scripting switch with keyboard shortcut](https://github.com/gorhill/uBlock/commit/936444883f)
- [Do not exceed rate-limited calls to `handlerBehaviorChanged()`](https://github.com/gorhill/uBlock/commit/63fe18a761)
- [Shield some code paths against potentially tampered global properties](https://github.com/gorhill/uBlock/commit/534d877e95) (in scriptlets)
- [Do not prevent applying changes when lists are updating](https://github.com/gorhill/uBlock/commit/f6b726136c)
- [Add `elements` vararg to `prevent-addEventListener` scriptlet](https://github.com/gorhill/uBlock/commit/060f9d68fc)
- [Do not use tab character as field separator](https://github.com/gorhill/uBlock/commit/a9eb9630cf) (in logger)
- [Prevent `:others()` from hiding `html` tag](https://github.com/gorhill/uBlock/commit/9a104bcbd2)
----------
# 1.55.0
## Fixes / changes
- [Discard repeating adjacent entries in the logger](https://github.com/gorhill/uBlock/commit/55e4cee6e8)
- [Mind drop events in filter expression field of logger](https://github.com/gorhill/uBlock/commit/c8b7d1a526)
- [Improve `xml-prune` scriptlet](https://github.com/gorhill/uBlock/commit/d7063a052f)
- [Fix message entries overflowing in logger](https://github.com/gorhill/uBlock/commit/49c8310e22)
- [Add support for `application/x-javascript` in `replace=` option](https://github.com/gorhill/uBlock/commit/abeadf18eb)
- [Extend support for differential updates to imported lists](https://github.com/gorhill/uBlock/commit/443c1f81e1)
- [Add detection of mismatched `!#if`-`!#endif` in linter](https://github.com/gorhill/uBlock/commit/9f4b31a96f)
- [Support links to update lists which are differential update-friendly](https://github.com/gorhill/uBlock/commit/5e3f9695b4)
- [Remove "Purge all caches" button from "Filter lists" pane](https://github.com/gorhill/uBlock/commit/bd7ce41224)
- [Add support for `all` list token in updater-link feature](https://github.com/gorhill/uBlock/commit/14926913f7)
- [Fix logging of broad exception filter `#@#+js()`](https://github.com/gorhill/uBlock/commit/4305ea9c0c)
- [Improve `no-xhr-if` scriptlet](https://github.com/gorhill/uBlock/commit/d01ad24291)
- [Ensure cache storage backend is selected before access](https://github.com/gorhill/uBlock/commit/bfa28b960e)
- [Fix popup panel rendering when embedded in logger](https://github.com/gorhill/uBlock/commit/4183ce477a)
- [Add visual hint in support information re. differential update](https://github.com/gorhill/uBlock/commit/7e44db763e)
- [Remove obsolete web accessible resources](https://github.com/gorhill/uBlock/commit/310bfec6a1)
- [Rename `urltransform` to `uritransform`](https://github.com/gorhill/uBlock/commit/cdc5e89f52)
- [Vertically expand/collapse in steps in dom inspector](https://github.com/gorhill/uBlock/commit/885bc3875b)
- [Reset the DOM inspector when URL in top context changes](https://github.com/gorhill/uBlock/commit/c744c87607)
- [Support shadow-piercing combinator `>>>` in `trusted-click-element`](https://github.com/gorhill/uBlock/commit/941077a25c)
- [Isolate DOM inspector layers from page context](https://github.com/gorhill/uBlock/commit/ee83a4304a)
- [Refactoring: Replace DOM events with broadcast channels](https://github.com/gorhill/uBlock/commit/67fb969572)
- [Support non-default sticky lists](https://github.com/gorhill/uBlock/commit/ea7d411bc2)
- [Add enableLazyLoad function](https://github.com/gorhill/uBlock/commit/a8cf08325d) (by @spazmodius )
- [Change frequency of save-to-storage blocking stats](https://github.com/gorhill/uBlock/commit/5a338b7210)
- [Improve `prevent-fetch` scriptlet](https://github.com/gorhill/uBlock/commit/6aeab2adbc)
- [Catch cases of `! Expires:` field with no value](https://github.com/gorhill/uBlock/commit/9ce958432d)
----------
# 1.54.0
## New
Differential update of filter lists, as a result of discussions at <https://github.com/AdguardTeam/FiltersCompiler/issues/192>. Resulting spec is [here](https://github.com/ameshkov/diffupdates).
![inkscape](https://github.com/gorhill/uBlock/assets/585534/3ee3567b-e24f-4d39-90e2-915b39a114fb)
The goal is to **NOT** be ranked among the "most popular projects" by bandwidth usage (as per [jsDelivr's public stats](https://www.jsdelivr.com/statistics)):
![jsDelivr stats](https://github.com/gorhill/uBlock/assets/585534/96c7e0fa-ffcc-4879-a01e-e340b4f0fa9e)
It is expected that differential updates will lower both requests and bandwidth usage.
To benefit the much shorter update period enabled by differential updates, you must let uBO auto-update the filter lists. Forcing a manual update will prevent differential updates until the next time a list auto-update.
## Fixes / changes
- [Enable path for native `has()` selector in Firefox](https://github.com/gorhill/uBlock/commit/c5724c1cce)
- [Allow scriptlets to be injected in `about:blank`](https://github.com/gorhill/uBlock/commit/3fd2588650)
- [Fix faulty `as` vararg in `set-constant` scriptlet](https://github.com/gorhill/uBlock/commit/c292a90b90)
- [Add support to redirect to `noop.json`](https://github.com/gorhill/uBlock/commit/bd8a91ed3a)
- [More improvements to the `google-ima` shim script](https://github.com/gorhill/uBlock/commit/c1d8f5908d) (by @kzar)
- [All exceptions filters are exempt from requiring a trusted source](https://github.com/gorhill/uBlock/commit/d2b8d990e6)
- [Add `trusted-set-session-storage-item` scriptlet](https://github.com/gorhill/uBlock/commit/f3d6a21e7a)
- [Allow the use of quotes in `set-cookie` scriptlet ](https://github.com/gorhill/uBlock/commit/7c562d0c5c)
- [Allow the use of quotes in `set-(local|session)-storage-item`](https://github.com/gorhill/uBlock/commit/decafc5cbf)
- [Add ability to trigger cookie removal on specific events](https://github.com/gorhill/uBlock/commit/ef311ddbec)
- [Ensure CSSTree does not hold a reference onto last parsed string](https://github.com/gorhill/uBlock/commit/1dba557c9a)
- [Lower minimum Expires value to 4h](https://github.com/gorhill/uBlock/commit/2360bc02f3)
- [Properly reset needle length in unserialized buffer](https://github.com/gorhill/uBlock/commit/8ed1ad9c9d)
- [Add additional flags to regional lists](https://github.com/gorhill/uBlock/commit/0962366524) (by @DandelionSprout)
- [Harden scriptlets which need to serialize function code into string](https://github.com/gorhill/uBlock/commit/7823d98070)
- [Reset `g` regexes before use in `rmnt`/`rpnt` scriptlets](https://github.com/gorhill/uBlock/commit/cdc3f66a6b)
- [Apply response filtering according to mime type](https://github.com/gorhill/uBlock/commit/6417f54299)
- [Add t/f to set-cookie](https://github.com/gorhill/uBlock/commit/4ab1c36ac9) (by @ryanbr)
- [Have `urltransform=` use the same syntax as `replace=`](https://github.com/gorhill/uBlock/commit/d7c99b46e6)
- [Implement network filter option `replace=`](https://github.com/gorhill/uBlock/commit/7c3e060c01) (Firefox only because [filterResponseData](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/filterResponseData#browser_compatibility))
- [Prevent evaluating the SNFE until fully loaded](https://github.com/gorhill/uBlock/commit/89b272775a)
- [Add support for differential update of filter lists](https://github.com/gorhill/uBlock/commit/d05ff8ffeb)
----------

View File

@@ -1,31 +1,31 @@
# Contributions
Refer to the following sections to direct you to the appropriate destination. Thank you in advance for your help.
Please refer to the sections below to find the appropriate destination for your contributions. Thank you for your support!
---
### Translations
Help translate uBO via [Crowdin](https://crowdin.com/project/ublock).
You can help translate uBO via [Crowdin](https://crowdin.com/project/ublock).
---
### Reporting Issues
The issue tracker in this repository is deprecated. Use the links below to guide you to where you need to report your issue.
The issue tracker in this repository is deprecated. Use the links below to report your issues.
#### Support Forum
For support, questions, or help, visit [/r/uBlockOrigin](https://www.reddit.com/r/uBlockOrigin/).
For support, questions, or assistance, please visit [/r/uBlockOrigin](https://www.reddit.com/r/uBlockOrigin/).
#### Filter List Issues
Report issues with filter lists or broken website functionality in the [uAssets issue tracker](https://github.com/uBlockOrigin/uAssets/issues).
Report issues related to filter lists or broken website functionality in the [uAssets issue tracker](https://github.com/uBlockOrigin/uAssets/issues).
#### uBlock Origin (uBO) Issues
Report issues with uBO in the [uBO issue tracker](https://github.com/uBlockOrigin/uBlock-issues/issues).
For issues specifically about uBO, please use the [uBO issue tracker](https://github.com/uBlockOrigin/uBlock-issues/issues).
#### uBO Lite (uBOL) Issues
Report issues specific to the Manifest Version 3 (MV3) variant in the [uBOL issue tracker](https://github.com/uBlockOrigin/uBOL-issues/issues).
For issues related to the Manifest Version 3 (MV3) variant, report them in the [uBOL issue tracker](https://github.com/uBlockOrigin/uBOL-home/issues).

138
Makefile
View File

@@ -1,12 +1,25 @@
# https://stackoverflow.com/a/6273809
run_options := $(filter-out $@,$(MAKECMDGOALS))
.PHONY: all clean test lint chromium opera firefox npm dig mv3 mv3-quick \
compare maxcost medcost mincost modifiers record wasm
.PHONY: all clean cleanassets test lint chromium opera firefox npm dig \
mv3-chromium mv3-firefox mv3-edge mv3-safari ubol-codemirror \
compare maxcost medcost mincost modifiers record wasm \
publish-chromium publish-edge publish-firefox \
publish-dev-chromium publish-dev-firefox \
upload-firefox upload-dev-firefox
sources := $(wildcard assets/* assets/*/* dist/version src/* src/*/* src/*/*/* src/*/*/*/*)
platform := $(wildcard platform/* platform/*/* platform/*/*/* platform/*/*/*/* platform/*/*/*/*/*)
sources := ./dist/version $(shell find ./assets -type f) $(shell find ./src -type f)
platform := $(wildcard platform/*/*)
assets := dist/build/uAssets
mv3-sources := \
$(shell find ./src -type f) \
$(wildcard platform/mv3/*) \
$(shell find ./platform/mv3/extension -name codemirror-ubol -prune -o -type f) \
platform/mv3/extension/lib/codemirror/codemirror-ubol/dist/cm6.bundle.ubol.min.js
mv3-data := $(shell find ./dist/build/mv3-data -type f)
mv3-edge-deps := $(wildcard platform/mv3/edge/*)
mv3-safari-deps := $(wildcard platform/mv3/safari/*)
all: chromium firefox npm
@@ -31,20 +44,16 @@ firefox: dist/build/uBlock0.firefox
dist/build/uBlock0.npm: tools/make-nodejs.sh $(sources) $(platform) $(assets)
tools/make-npm.sh
# Build the Node.js package.
npm: dist/build/uBlock0.npm
lint: npm
cd dist/build/uBlock0.npm && npm run lint
# Dev tools
node_modules:
npm install
test: npm
cd dist/build/uBlock0.npm && npm run test
init: node_modules
test-full-battery: npm
cd dist/build/uBlock0.npm && npm run test-full-battery
check-leaks: npm
cd dist/build/uBlock0.npm && npm run check-leaks
lint: init
npm run lint
dist/build/uBlock0.dig: tools/make-nodejs.sh $(sources) $(platform) $(assets)
tools/make-dig.sh
@@ -55,24 +64,111 @@ dig: dist/build/uBlock0.dig
dig-snfe: dig
cd dist/build/uBlock0.dig && npm run snfe $(run_options)
mv3-chromium: tools/make-mv3.sh $(sources) $(platform)
dist/build/mv3-data:
mkdir -p dist/build/mv3-data
ubol-codemirror:
$(MAKE) -sC platform/mv3/extension/lib/codemirror/codemirror-ubol/ ubol.bundle
dist/build/uBOLite.chromium: tools/make-mv3.sh $(mv3-sources) $(platform) $(mv3-data) dist/build/mv3-data
tools/make-mv3.sh chromium
mv3-firefox: tools/make-mv3.sh $(sources) $(platform)
mv3-chromium: ubol-codemirror dist/build/uBOLite.chromium
dist/build/uBOLite.firefox: tools/make-mv3.sh $(mv3-sources) $(platform) $(mv3-data) dist/build/mv3-data
tools/make-mv3.sh firefox
mv3-quick: tools/make-mv3.sh $(sources) $(platform)
tools/make-mv3.sh quick
mv3-firefox: ubol-codemirror dist/build/uBOLite.firefox
mv3-full: tools/make-mv3.sh $(sources) $(platform)
tools/make-mv3.sh full
dist/build/uBOLite.edge: tools/make-mv3.sh $(mv3-sources) $(mv3-edge-deps) $(mv3-data) dist/build/mv3-data
tools/make-mv3.sh edge
mv3-edge: ubol-codemirror dist/build/uBOLite.edge
dist/build/uBOLite.safari: tools/make-mv3.sh $(mv3-sources) $(mv3-safari-deps) $(mv3-data) dist/build/mv3-data
tools/make-mv3.sh safari
mv3-safari: ubol-codemirror dist/build/uBOLite.safari
dist/build/uAssets:
tools/pull-assets.sh
clean:
rm -rf dist/build tmp/node_modules
rm -rf dist/build tmp/node_modules node_modules
cleanassets:
rm -rf dist/build/mv3-data dist/build/uAssets
# Usage: make publish-publish version=?
publish-chromium:
node publish-extension/publish-chromium.js \
ghowner=gorhill \
ghrepo=uBlock \
ghtag=$(version) \
ghasset=chromium \
storeid=cjpalhdlnbpafiamejdnhcphjbkeiagm
# Usage: make publish-edge version=?
publish-edge:
node publish-extension/publish-edge.js \
ghowner=gorhill \
ghrepo=uBlock \
ghtag=$(version) \
ghasset=chromium \
datebasedmajor=1 \
storeid=odfafepnkmbhccpbejgmiehpchacaeak \
productid=$(shell secret-tool lookup token ubo_edge_id)
# Usage: make publish-firefox version=?
publish-firefox:
node publish-extension/publish-firefox.js \
ghowner=gorhill \
ghrepo=uBlock \
ghtag=$(version) \
ghasset=firefox \
storeid=uBlock0@raymondhill.net \
channel=listed
# Usage: make publish-dev-chromium version=?
publish-dev-chromium:
node publish-extension/publish-chromium.js \
ghowner=gorhill \
ghrepo=uBlock \
ghtag=$(version) \
ghasset=chromium \
storeid=cgbcahbpdhpcegmbfconppldiemgcoii
# Usage: make publish-dev-firefox version=?
publish-dev-firefox:
node publish-extension/publish-firefox.js \
ghowner=gorhill \
ghrepo=uBlock \
ghtag=$(version) \
ghasset=firefox \
storeid=uBlock0@raymondhill.net \
channel=unlisted \
updatepath=./dist/firefox/updates.json
# Usage: make upload-firefox version=?
upload-firefox:
node publish-extension/upload-firefox.js \
ghowner=gorhill \
ghrepo=uBlock \
ghtag=$(version) \
ghasset=firefox \
storeid=uBlock0@raymondhill.net \
channel=listed
# Usage: make upload-dev-firefox version=?
upload-dev-firefox:
node publish-extension/upload-firefox.js \
ghowner=gorhill \
ghrepo=uBlock \
ghtag=$(version) \
ghasset=firefox \
storeid=uBlock0@raymondhill.net \
channel=unlisted \
updatepath=./dist/firefox/updates.json
# Not real targets, just convenient for auto-completion at shell prompt
compare:

View File

@@ -15,19 +15,15 @@
</sub>
uBlock Origin (uBO)
</h1>
<p align="center">
<sub><a href="https://github.com/gorhill/uBlock/wiki/uBlock-Origin-is-completely-unrelated-to-the-web-site-ublock.org"><b>BEWARE!</b> uBO is (and has always been) COMPLETELY UNRELATED to the website <code>ublock.org</code></a>.</sub>
</p>
***
<p align="center">
<a href="https://addons.mozilla.org/addon/ublock-origin/"><img src="https://user-images.githubusercontent.com/585534/107280546-7b9b2a00-6a26-11eb-8f9f-f95932f4bfec.png" alt="Get uBlock Origin for Firefox"></a>
<a href="https://chrome.google.com/webstore/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm"><img src="https://user-images.githubusercontent.com/585534/107280622-91a8ea80-6a26-11eb-8d07-77c548b28665.png" alt="Get uBlock Origin for Chromium"></a>
<a href="https://microsoftedge.microsoft.com/addons/detail/ublock-origin/odfafepnkmbhccpbejgmiehpchacaeak"><img src="https://user-images.githubusercontent.com/585534/107280673-a5ece780-6a26-11eb-9cc7-9fa9f9f81180.png" alt="Get uBlock Origin for Microsoft Edge"></a>
<a href="https://addons.opera.com/extensions/details/ublock/"><img src="https://user-images.githubusercontent.com/585534/107280692-ac7b5f00-6a26-11eb-85c7-088926504452.png" alt="Get uBlock Origin for Opera"></a>
<a href="https://addons.thunderbird.net/thunderbird/addon/ublock-origin/"><img src="https://user-images.githubusercontent.com/124740436/235314672-73243149-3683-4407-a2d5-ad0f2b08bc17.png" alt="Get uBlock Origin for Thunderbird"></a>
</p>
| Browser | Install from ... | Status |
| :-------: | ---------------- | ------ |
| <img src="https://github.com/user-attachments/assets/b0136512-56a5-4856-8c50-4971c957a24f" alt="Get uBlock Origin for Firefox"> | <a href="https://addons.mozilla.org/addon/ublock-origin/">Firefox Add-ons</a> | [uBO works best on Firefox](https://github.com/gorhill/uBlock/wiki/uBlock-Origin-works-best-on-Firefox) |
| <img src="https://github.com/user-attachments/assets/3a7569f8-688b-4eb1-a643-8d0fe173aefe" alt="Get uBlock Origin for Microsoft Edge"> | <a href="https://microsoftedge.microsoft.com/addons/detail/ublock-origin/odfafepnkmbhccpbejgmiehpchacaeak">Edge Add-ons</a> |
| <img src="https://github.com/user-attachments/assets/938f080c-fe64-4e48-8b89-4bfceabb56e6" alt="Get uBlock Origin for Opera"> | <a href="https://addons.opera.com/extensions/details/ublock/">Opera Add-ons</a> |
| <img src="https://github.com/user-attachments/assets/5463ef88-873b-4516-8514-5277664cfde7" alt="Get uBlock Origin for Chromium"> | <a href="https://chromewebstore.google.com/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm">Chrome Web Store</a> | <a href="https://github.com/uBlockOrigin/uBlock-issues/wiki/About-Google-Chrome's-%22This-extension-may-soon-no-longer-be-supported%22">About Google Chrome's "This extension may soon no longer be supported"</a><br>End of support on Chrome 139 |
| <img src="https://github.com/user-attachments/assets/2e9037c4-836d-44c1-a716-ba96e89daaff" alt="Get uBlock Origin for Thunderbird"> | <a href="https://addons.thunderbird.net/thunderbird/addon/ublock-origin/">Thunderbird Add-ons</a> | [No longer updated and stuck at 1.49.2.](https://github.com/uBlockOrigin/uBlock-issues/issues/2928) Later versions require "GitHub - Releases". |
| <img src="https://upload.wikimedia.org/wikipedia/commons/c/c2/GitHub_Invertocat_Logo.svg" height="50" alt="Get uBlock Origin through GitHub"> | <a href="https://github.com/gorhill/uBlock/releases">GitHub - Releases</a> | Stable and development versions on Firefox, Chromium MV2, and Thunderbird. Must be placed manually into web browsers; the Chromium and Thunderbird versions usually won't auto-update.
***
@@ -93,11 +89,13 @@ uBO [works best][Works Best] on Firefox and is available for desktop and Android
[Thunderbird Add-ons][Thunderbird]
In Thunderbird, uBlock Origin does not affect emails, just feeds.
#### Chromium
[Chrome Web Store][Chrome]
[Microsoft Edge Add-ons][Edge] (Published by: [Nicole Rolls][Nicole Rolls])
[Microsoft Edge Add-ons][Edge] (Published by [Nicole Rolls][Nicole Rolls] until version 1.62. Ownership transfer at version 1.64.)
[Opera Add-ons][Opera]
@@ -140,16 +138,16 @@ If you ever want to contribute something, think about the people working hard to
[Peter Lowe's Blocklist]: https://pgl.yoyo.org/adservers/
[Malicious Blocklist]: https://gitlab.com/malware-filter/urlhaus-filter#malicious-url-blocklist
[Performance]: https://www.debugbear.com/blog/chrome-extension-performance-2021#how-do-ad-blockers-and-privacy-tools-affect-browser-performance
[Performance]: https://www.debugbear.com/blog/chrome-extensions-website-performance#the-impact-of-ad-blocking-on-website-performance
[EasyPrivacy]: https://easylist.to/#easyprivacy
[Thunderbird]: https://addons.thunderbird.net/thunderbird/addon/ublock-origin/
[Chrome Dev]: https://chrome.google.com/webstore/detail/ublock-origin-development/cgbcahbpdhpcegmbfconppldiemgcoii
[Chrome Dev]: https://chromewebstore.google.com/detail/ublock-origin-development/cgbcahbpdhpcegmbfconppldiemgcoii
[EasyList]: https://easylist.to/#easylist
[Mozilla]: https://addons.mozilla.org/addon/ublock-origin/
[Crowdin]: https://crowdin.com/project/ublock
[Chrome]: https://chrome.google.com/webstore/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm
[Chrome]: https://chromewebstore.google.com/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm
[Reddit]: https://www.reddit.com/r/uBlockOrigin/
[Theft]: https://twitter.com/LeaVerou/status/518154828166725632
[Theft]: https://x.com/LeaVerou/status/518154828166725632
[Opera]: https://addons.opera.com/extensions/details/ublock/
[Edge]: https://microsoftedge.microsoft.com/addons/detail/ublock-origin/odfafepnkmbhccpbejgmiehpchacaeak
[NPM]: https://www.npmjs.com/package/@gorhill/ubo-core
@@ -159,7 +157,6 @@ If you ever want to contribute something, think about the people working hard to
[Nicole Rolls]: https://github.com/nicole-ashley
<!---------------------------------[ Internal ]-------------------------------->
[Manual Installation]: https://github.com/gorhill/uBlock/tree/master/dist#install
@@ -176,7 +173,6 @@ If you ever want to contribute something, think about the people working hard to
[Beta]: https://github.com/gorhill/uBlock/blob/master/dist/README.md#for-beta-version
[Wiki]: https://github.com/gorhill/uBlock/wiki
<!----------------------------------[ Badges ]--------------------------------->
[Badge Localization]: https://d322cqt584bo4o.cloudfront.net/ublock/localized.svg
@@ -187,4 +183,3 @@ If you ever want to contribute something, think about the people working hard to
[Badge Edge]: https://img.shields.io/badge/dynamic/json?label=Edge&color=brightgreen&query=%24.averageRating&suffix=%2F%35&url=https%3A%2F%2Fmicrosoftedge.microsoft.com%2Faddons%2Fgetproductdetailsbycrxid%2Fodfafepnkmbhccpbejgmiehpchacaeak
[Badge Issues]: https://img.shields.io/github/issues/uBlockOrigin/uBlock-issues
[Badge NPM]: https://img.shields.io/npm/v/@gorhill/ubo-core

View File

@@ -52,6 +52,10 @@
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/filters.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/filters.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"ublock-badware": {
@@ -62,13 +66,18 @@
"tags": "malware security",
"contentURL": [
"https://ublockorigin.github.io/uAssets/filters/badware.txt",
"assets/ublock/badware.min.txt",
"assets/ublock/badware.txt"
],
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/badware.txt",
"https://ublockorigin.pages.dev/filters/badware.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/badware.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/badware.txt"
"https://ublockorigin.github.io/uAssetsCDN/filters/badware.min.txt",
"https://ublockorigin.pages.dev/filters/badware.min.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/badware.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/badware.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets",
"instructionURL": "https://github.com/gorhill/uBlock/wiki/Badware-risks"
@@ -90,6 +99,10 @@
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/privacy.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/privacy.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"ublock-unbreak": {
@@ -99,6 +112,7 @@
"title": "uBlock filters Unbreak",
"contentURL": [
"https://ublockorigin.github.io/uAssets/filters/unbreak.txt",
"assets/ublock/unbreak.min.txt",
"assets/ublock/unbreak.txt"
],
"cdnURLs": [
@@ -107,6 +121,10 @@
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/unbreak.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/unbreak.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"ublock-quick-fixes": {
@@ -116,13 +134,36 @@
"title": "uBlock filters Quick fixes",
"contentURL": [
"https://ublockorigin.github.io/uAssets/filters/quick-fixes.txt",
"assets/ublock/quick-fixes.min.txt",
"assets/ublock/quick-fixes.txt"
],
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/quick-fixes.txt",
"https://ublockorigin.pages.dev/filters/quick-fixes.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/quick-fixes.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/quick-fixes.txt"
"https://ublockorigin.github.io/uAssetsCDN/filters/quick-fixes.min.txt",
"https://ublockorigin.pages.dev/filters/quick-fixes.min.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/quick-fixes.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/quick-fixes.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"ublock-experimental": {
"content": "filters",
"group": "default",
"off": true,
"title": "uBlock filters Experimental",
"contentURL": "https://ublockorigin.github.io/uAssets/filters/experimental.txt",
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/experimental.min.txt",
"https://ublockorigin.pages.dev/filters/experimental.min.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/experimental.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/experimental.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
@@ -133,8 +174,7 @@
"title": "AdGuard Ads",
"tags": "ads",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/2_without_easylist.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"adguard-mobile": {
"content": "filters",
@@ -144,24 +184,26 @@
"tags": "ads mobile",
"ua": "mobile",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/11.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"easylist": {
"content": "filters",
"group": "ads",
"title": "EasyList",
"tags": "ads",
"preferred": true,
"contentURL": [
"https://ublockorigin.github.io/uAssets/thirdparties/easylist.txt",
"assets/thirdparties/easylist/easylist.txt",
"assets/thirdparties/easylist-downloads.adblockplus.org/easylist.txt"
"assets/thirdparties/easylist/easylist.txt"
],
"cdnURLs": [
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist.txt",
"https://ublockorigin.pages.dev/thirdparties/easylist.txt",
"https://easylist.to/easylist/easylist.txt"
"https://ublockorigin.pages.dev/thirdparties/easylist.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://easylist.to/"
},
@@ -172,17 +214,7 @@
"title": "AdGuard URL Tracking Protection",
"tags": "privacy",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/17.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
},
"adguard-spyware": {
"content": "filters",
"group": "privacy",
"off": true,
"title": "AdGuard Tracking Protection",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/3.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"block-lan": {
"content": "filters",
@@ -204,16 +236,19 @@
"group": "privacy",
"title": "EasyPrivacy",
"tags": "privacy",
"preferred": true,
"contentURL": [
"https://ublockorigin.github.io/uAssets/thirdparties/easyprivacy.txt",
"assets/thirdparties/easylist/easyprivacy.txt",
"assets/thirdparties/easylist-downloads.adblockplus.org/easyprivacy.txt"
"assets/thirdparties/easylist/easyprivacy.txt"
],
"cdnURLs": [
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easyprivacy.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easyprivacy.txt",
"https://ublockorigin.pages.dev/thirdparties/easyprivacy.txt",
"https://easylist.to/easylist/easyprivacy.txt"
"https://ublockorigin.pages.dev/thirdparties/easyprivacy.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://easylist.to/"
},
@@ -222,13 +257,13 @@
"group": "malware",
"title": "Online Malicious URL Blocklist",
"contentURL": [
"https://malware-filter.gitlab.io/urlhaus-filter/urlhaus-filter-online.txt",
"https://malware-filter.gitlab.io/urlhaus-filter/urlhaus-filter-ag-online.txt",
"assets/thirdparties/urlhaus-filter/urlhaus-filter-online.txt"
],
"cdnURLs": [
"https://curbengh.github.io/malware-filter/urlhaus-filter-online.txt",
"https://malware-filter.gitlab.io/urlhaus-filter/urlhaus-filter-online.txt",
"https://malware-filter.pages.dev/urlhaus-filter-online.txt"
"https://curbengh.github.io/malware-filter/urlhaus-filter-ag-online.txt",
"https://malware-filter.gitlab.io/urlhaus-filter/urlhaus-filter-ag-online.txt",
"https://malware-filter.pages.dev/urlhaus-filter-ag-online.txt"
],
"supportURL": "https://gitlab.com/malware-filter/urlhaus-filter#malicious-url-blocklist"
},
@@ -245,45 +280,22 @@
],
"supportURL": "https://gitlab.com/malware-filter/phishing-filter#phishing-url-blocklist"
},
"curben-pup": {
"content": "filters",
"group": "malware",
"off": true,
"title": "PUP Domains Blocklist",
"contentURL": "https://malware-filter.gitlab.io/pup-filter/pup-filter.txt",
"cdnURLs": [
"https://curbengh.github.io/pup-filter/pup-filter.txt",
"https://malware-filter.gitlab.io/pup-filter/pup-filter.txt",
"https://pup-filter.pages.dev/pup-filter.txt"
],
"supportURL": "https://gitlab.com/malware-filter/pup-filter#pup-domains-blocklist"
},
"adguard-social": {
"content": "filters",
"group": "annoyances",
"parent": "AdGuard Annoyances",
"off": true,
"title": "AdGuard Social Media",
"tags": "annoyances social",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/4.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
},
"adguard-cookies": {
"content": "filters",
"group": "annoyances",
"parent": "AdGuard Annoyances|AdGuard/uBO Cookie Notices",
"group2": "cookies",
"parent": "AdGuard/uBO Cookie Notices",
"off": true,
"title": "AdGuard Cookie Notices",
"tags": "annoyances cookies",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/18.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"ublock-cookies-adguard": {
"content": "filters",
"group": "annoyances",
"parent": "AdGuard Annoyances|AdGuard/uBO Cookie Notices",
"group2": "cookies",
"parent": "AdGuard/uBO Cookie Notices",
"off": true,
"title": "uBlock filters Cookie Notices",
"tags": "annoyances cookies",
@@ -296,98 +308,15 @@
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"adguard-popup-overlays": {
"content": "filters",
"group": "annoyances",
"parent": "AdGuard Annoyances",
"off": true,
"title": "AdGuard Popup Overlays",
"tags": "annoyances",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/19.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
},
"adguard-mobile-app-banners": {
"content": "filters",
"group": "annoyances",
"parent": "AdGuard Annoyances",
"off": true,
"title": "AdGuard Mobile App Banners",
"tags": "annoyances mobile",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/20.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
},
"adguard-other-annoyances": {
"content": "filters",
"group": "annoyances",
"parent": "AdGuard Annoyances",
"off": true,
"title": "AdGuard Other Annoyances",
"tags": "annoyances",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/21.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
},
"adguard-widgets": {
"content": "filters",
"group": "annoyances",
"parent": "AdGuard Annoyances",
"off": true,
"title": "AdGuard Widgets",
"tags": "annoyances",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/22.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
},
"fanboy-thirdparty_social": {
"content": "filters",
"group": "annoyances",
"off": true,
"title": "Fanboy Anti-Facebook",
"tags": "privacy",
"contentURL": "https://secure.fanboy.co.nz/fanboy-antifacebook.txt",
"supportURL": "https://github.com/ryanbr/fanboy-adblock/issues"
},
"easylist-annoyances": {
"content": "filters",
"group": "annoyances",
"parent": "EasyList Annoyances",
"off": true,
"title": "EasyList Other Annoyances",
"tags": "annoyances",
"contentURL": "https://ublockorigin.github.io/uAssets/thirdparties/easylist-annoyances.txt",
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-annoyances.txt",
"https://ublockorigin.pages.dev/thirdparties/easylist-annoyances.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-annoyances.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist-annoyances.txt"
],
"supportURL": "https://github.com/easylist/easylist#fanboy-lists"
},
"easylist-chat": {
"content": "filters",
"group": "annoyances",
"parent": "EasyList Annoyances",
"off": true,
"title": "EasyList Chat Widgets",
"tags": "annoyances",
"contentURL": "https://ublockorigin.github.io/uAssets/thirdparties/easylist-chat.txt",
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-chat.txt",
"https://ublockorigin.pages.dev/thirdparties/easylist-chat.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-chat.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist-chat.txt"
],
"supportURL": "https://github.com/easylist/easylist#fanboy-lists"
},
"fanboy-cookiemonster": {
"content": "filters",
"group": "annoyances",
"parent": "EasyList Annoyances|EasyList/uBO Cookie Notices",
"group2": "cookies",
"parent": "EasyList/uBO Cookie Notices",
"off": true,
"title": "EasyList Cookie Notices",
"tags": "annoyances cookies",
"preferred": true,
"contentURL": [
"https://ublockorigin.github.io/uAssets/thirdparties/easylist-cookies.txt",
"https://secure.fanboy.co.nz/fanboy-cookiemonster_ubo.txt"
@@ -404,10 +333,12 @@
"ublock-cookies-easylist": {
"content": "filters",
"group": "annoyances",
"parent": "EasyList Annoyances|EasyList/uBO Cookie Notices",
"group2": "cookies",
"parent": "EasyList/uBO Cookie Notices",
"off": true,
"title": "uBlock filters Cookie Notices",
"tags": "annoyances cookies",
"preferred": true,
"contentURL": "https://ublockorigin.github.io/uAssets/filters/annoyances-cookies.txt",
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/annoyances-cookies.txt",
@@ -417,6 +348,123 @@
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"adguard-social": {
"content": "filters",
"group": "annoyances",
"group2": "social",
"parent": null,
"off": true,
"title": "AdGuard Social Widgets",
"tags": "annoyances social",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/4.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"fanboy-social": {
"content": "filters",
"group": "annoyances",
"group2": "social",
"parent": null,
"off": true,
"title": "EasyList Social Widgets",
"tags": "annoyances social",
"preferred": true,
"contentURL": [
"https://ublockorigin.github.io/uAssets/thirdparties/easylist-social.txt",
"https://secure.fanboy.co.nz/fanboy-social_ubo.txt"
],
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-social.txt",
"https://ublockorigin.pages.dev/thirdparties/easylist-social.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-social.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist-social.txt",
"https://secure.fanboy.co.nz/fanboy-social_ubo.txt"
],
"supportURL": "https://easylist.to/"
},
"fanboy-thirdparty_social": {
"content": "filters",
"group": "annoyances",
"group2": "social",
"off": true,
"title": "Fanboy Anti-Facebook",
"tags": "privacy",
"contentURL": "https://secure.fanboy.co.nz/fanboy-antifacebook.txt",
"supportURL": "https://github.com/ryanbr/fanboy-adblock/issues"
},
"adguard-popup-overlays": {
"content": "filters",
"group": "annoyances",
"parent": "AdGuard Annoyances",
"off": true,
"title": "AdGuard Popup Overlays",
"tags": "annoyances",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/19.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"adguard-mobile-app-banners": {
"content": "filters",
"group": "annoyances",
"parent": "AdGuard Annoyances",
"off": true,
"title": "AdGuard Mobile App Banners",
"tags": "annoyances mobile",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/20.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"adguard-other-annoyances": {
"content": "filters",
"group": "annoyances",
"parent": "AdGuard Annoyances",
"off": true,
"title": "AdGuard Other Annoyances",
"tags": "annoyances",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/21.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"adguard-widgets": {
"content": "filters",
"group": "annoyances",
"parent": "AdGuard Annoyances",
"off": true,
"title": "AdGuard Widgets",
"tags": "annoyances",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/22.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"easylist-annoyances": {
"content": "filters",
"group": "annoyances",
"parent": "EasyList Annoyances",
"off": true,
"title": "EasyList Other Annoyances",
"tags": "annoyances",
"preferred": true,
"contentURL": "https://ublockorigin.github.io/uAssets/thirdparties/easylist-annoyances.txt",
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-annoyances.txt",
"https://ublockorigin.pages.dev/thirdparties/easylist-annoyances.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-annoyances.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist-annoyances.txt"
],
"supportURL": "https://github.com/easylist/easylist#fanboy-lists"
},
"easylist-chat": {
"content": "filters",
"group": "annoyances",
"parent": "EasyList Annoyances",
"off": true,
"title": "EasyList Chat Widgets",
"tags": "annoyances",
"preferred": true,
"contentURL": "https://ublockorigin.github.io/uAssets/thirdparties/easylist-chat.txt",
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-chat.txt",
"https://ublockorigin.pages.dev/thirdparties/easylist-chat.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-chat.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist-chat.txt"
],
"supportURL": "https://github.com/easylist/easylist#fanboy-lists"
},
"easylist-newsletters": {
"content": "filters",
"group": "annoyances",
@@ -424,6 +472,7 @@
"off": true,
"title": "EasyList Newsletter Notices",
"tags": "annoyances",
"preferred": true,
"contentURL": [
"https://ublockorigin.github.io/uAssets/thirdparties/easylist-newsletters.txt"
],
@@ -442,6 +491,7 @@
"off": true,
"title": "EasyList Notifications",
"tags": "annoyances",
"preferred": true,
"contentURL": [
"https://ublockorigin.github.io/uAssets/thirdparties/easylist-notifications.txt"
],
@@ -453,26 +503,6 @@
],
"supportURL": "https://easylist.to/"
},
"fanboy-social": {
"content": "filters",
"group": "annoyances",
"parent": "EasyList Annoyances",
"off": true,
"title": "EasyList Social Widgets",
"tags": "annoyances social",
"contentURL": [
"https://ublockorigin.github.io/uAssets/thirdparties/easylist-social.txt",
"https://secure.fanboy.co.nz/fanboy-social_ubo.txt"
],
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-social.txt",
"https://ublockorigin.pages.dev/thirdparties/easylist-social.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-social.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist-social.txt",
"https://secure.fanboy.co.nz/fanboy-social_ubo.txt"
],
"supportURL": "https://easylist.to/"
},
"ublock-annoyances": {
"content": "filters",
"group": "annoyances",
@@ -486,6 +516,10 @@
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/annoyances.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/annoyances.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"dpollock-0": {
@@ -504,6 +538,7 @@
"updateAfter": 13,
"title": "Peter Lowes Ad and tracking server list",
"tags": "ads privacy security",
"preferred": true,
"contentURL": [
"https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=1&mimetype=plaintext",
"assets/thirdparties/pgl.yoyo.org/as/serverlist.txt",
@@ -515,7 +550,7 @@
"content": "filters",
"group": "regions",
"off": true,
"title": "🇦🇱al: Adblock List for Albania",
"title": "🇦🇱al 🇽🇰xk: Adblock List for Albania",
"tags": "ads albania shqipja",
"lang": "sq",
"contentURL": "https://raw.githubusercontent.com/AnXh3L0/blocklist/master/albanian-easylist-addition/Albania.txt",
@@ -527,7 +562,7 @@
"off": true,
"title": "🇪🇬eg 🇸🇦sa 🇲🇦ma 🇩🇿dz: Liste AR",
"tags": "ads arabic اَلْعَرَبِيَّةُ‎",
"lang": "ar",
"lang": "ar kab",
"contentURL": "https://easylist-downloads.adblockplus.org/Liste_AR.txt",
"supportURL": "https://forums.lanik.us/viewforum.php?f=98"
},
@@ -581,8 +616,8 @@
"title": "🇪🇪ee: Eesti saitidele kohandatud filter",
"tags": "ads estonian",
"lang": "et",
"contentURL": "https://adblock.ee/list.php",
"supportURL": "https://adblock.ee/"
"contentURL": "https://adblock.ee/list.txt",
"supportURL": "https://adblock.ee"
},
"FIN-0": {
"content": "filters",
@@ -600,7 +635,7 @@
"off": true,
"title": "🇫🇷fr 🇨🇦ca: AdGuard Français",
"tags": "ads french",
"lang": "ar br ff fr lb oc son",
"lang": "ar br ff fr kab lb oc son",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/16.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
@@ -608,7 +643,7 @@
"content": "filters",
"group": "regions",
"off": true,
"title": "🇬🇷gr: Greek AdBlock Filter",
"title": "🇬🇷gr 🇨🇾cy: Greek AdBlock Filter",
"tags": "ads greek",
"lang": "el",
"contentURL": "https://www.void.gr/kargig/void-gr-filters.txt",
@@ -619,9 +654,13 @@
"group": "regions",
"off": true,
"title": "🇭🇷hr 🇷🇸rs: Dandelion Sprout's Serbo-Croatian filters",
"tags": "ads croatian serbian",
"lang": "hr sr",
"contentURL": "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/SerboCroatianList.txt",
"tags": "ads croatian serbian bosnian",
"lang": "bs hr sr",
"contentURL": [
"https://raw.githubusercontent.com/DandelionSprout/adfilt/master/SerboCroatianList.txt",
"https://cdn.jsdelivr.net/gh/DandelionSprout/adfilt@master/SerboCroatianList.txt",
"https://cdn.statically.io/gl/DandelionSprout/adfilt/master/SerboCroatianList.txt"
],
"supportURL": "https://github.com/DandelionSprout/adfilt#readme"
},
"HUN-0": {
@@ -631,7 +670,7 @@
"title": "🇭🇺hu: hufilter",
"tags": "ads hungarian",
"lang": "hu",
"contentURL": "https://raw.githubusercontent.com/hufilter/hufilter/master/hufilter-ublock.txt",
"contentURL": "https://cdn.jsdelivr.net/gh/hufilter/hufilter@gh-pages/hufilter-ublock.txt",
"supportURL": "https://github.com/hufilter/hufilter"
},
"IDN-0": {
@@ -650,7 +689,7 @@
"off": true,
"title": "🇮🇳in 🇱🇰lk 🇳🇵np: IndianList",
"tags": "ads assamese bengali gujarati hindi kannada malayalam marathi nepali punjabi sinhala tamil telugu",
"lang": "as bn gu hi kn ml mr ne pa si ta te",
"lang": "as bn gu hi kn ml mr ne pa sat si ta te",
"contentURL": "https://easylist-downloads.adblockplus.org/indianlist.txt",
"supportURL": "https://github.com/mediumkreation/IndianList"
},
@@ -659,17 +698,16 @@
"group": "regions",
"off": true,
"title": "🇮🇷ir: PersianBlocker",
"tags": "ads persian pashto tajik",
"tags": "ads af ir persian pashto tajik tj",
"lang": "fa ps tg",
"contentURL": [
"https://raw.githubusercontent.com/MasterKia/PersianBlocker/main/PersianBlocker.txt",
"https://cdn.statically.io/gh/MasterKia/PersianBlocker/main/PersianBlocker.txt",
"https://raw.githubusercontent.com/MasterKia/PersianBlocker/main/PersianBlocker.txt"
"https://cdn.statically.io/gh/MasterKia/PersianBlocker/main/PersianBlocker.txt"
],
"cdnURLs": [
"cdnURLs": [
"https://cdn.jsdelivr.net/gh/MasterKia/PersianBlocker@main/PersianBlocker.txt",
"https://cdn.statically.io/gh/MasterKia/PersianBlocker/main/PersianBlocker.txt"
],
],
"supportURL": "https://github.com/MasterKia/PersianBlocker"
},
"ISL-0": {
@@ -679,8 +717,8 @@
"title": "🇮🇸is: Icelandic ABP List",
"tags": "ads icelandic",
"lang": "is",
"contentURL": "https://adblock.gardar.net/is.abp.txt",
"supportURL": "https://adblock.gardar.net/"
"contentURL": "https://raw.githubusercontent.com/brave/adblock-lists/master/custom/is.txt",
"supportURL": "https://github.com/brave/adblock-lists/issues"
},
"ISR-0": {
"content": "filters",
@@ -698,7 +736,7 @@
"off": true,
"title": "🇮🇹it: EasyList Italy",
"tags": "ads italian",
"lang": "it lij",
"lang": "fur it lij sc",
"contentURL": "https://easylist-downloads.adblockplus.org/easylistitaly.txt",
"supportURL": "https://forums.lanik.us/viewforum.php?f=96"
},
@@ -710,8 +748,7 @@
"tags": "ads japanese 日本語",
"lang": "ja",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/7.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"KOR-1": {
"content": "filters",
@@ -720,7 +757,7 @@
"title": "🇰🇷kr: List-KR",
"tags": "ads korean 한국어",
"lang": "ko",
"contentURL": "https://cdn.jsdelivr.net/gh/List-KR/List-KR@master/filter-uBlockOrigin.txt",
"contentURL": "https://cdn.jsdelivr.net/gh/List-KR/List-KR@latest/filter-uBlockOrigin.txt",
"supportURL": "https://github.com/List-KR/List-KR#readme"
},
"LTU-0": {
@@ -761,16 +798,12 @@
"content": "filters",
"group": "regions",
"off": true,
"title": "🇳🇱nl: EasyDutch",
"tags": "ads afrikaans frisian dutch flemish",
"title": "🇳🇱nl 🇧🇪be: AdGuard Dutch",
"tags": "ads afrikaans be belgië frisian dutch flemish nederlands netherlands nl sr suriname za",
"lang": "af fy nl",
"contentURL": "https://easydutch-ubo.github.io/EasyDutch/EasyDutch.txt",
"cdnURLs": [
"https://cdn.statically.io/gh/EasyDutch-uBO/EasyDutch/gh-pages/EasyDutch.txt",
"https://cdn.jsdelivr.net/gh/EasyDutch-uBO/EasyDutch@gh-pages/EasyDutch.txt",
"https://easydutch-ubo.github.io/EasyDutchCDN/EasyDutch.txt"
],
"supportURL": "https://github.com/EasyDutch-uBO/EasyDutch/"
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/8.txt",
"cdnURLs": null,
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"NOR-0": {
"content": "filters",
@@ -780,9 +813,7 @@
"tags": "ads norwegian danish icelandic",
"lang": "nb nn no da is",
"contentURL": [
"https://raw.githubusercontent.com/DandelionSprout/adfilt/master/NorwegianList.txt"
],
"cdnURLs": [
"https://raw.githubusercontent.com/DandelionSprout/adfilt/master/NorwegianList.txt",
"https://cdn.jsdelivr.net/gh/DandelionSprout/adfilt@master/NorwegianList.txt",
"https://cdn.statically.io/gl/DandelionSprout/adfilt/master/NorwegianList.txt"
],
@@ -795,31 +826,29 @@
"off": true,
"title": "🇵🇱pl: Oficjalne Polskie Filtry do uBlocka Origin",
"tags": "ads polish polski",
"lang": "szl pl",
"lang": "szl pl _",
"contentURL": "https://raw.githubusercontent.com/MajkiIT/polish-ads-filter/master/polish-adblock-filters/adblock.txt",
"supportURL": "https://github.com/MajkiIT/polish-ads-filter/issues",
"instructionURL": "https://github.com/MajkiIT/polish-ads-filter#polish-filters-for-adblock-ublock-origin--adguard"
"supportURL": "https://github.com/MajkiIT/polish-ads-filter"
},
"POL-2": {
"POL-3": {
"content": "filters",
"group": "regions",
"parent": "🇵🇱pl: Oficjalne Polskie Filtry",
"off": true,
"title": "🇵🇱pl: Oficjalne polskie filtry przeciwko alertom o Adblocku",
"tags": "ads polish polski",
"title": "🇵🇱pl: CERT.PL's Warning List",
"tags": "malware polish polski",
"lang": "szl pl",
"contentURL": "https://raw.githubusercontent.com/olegwukr/polish-privacy-filters/master/anti-adblock.txt",
"supportURL": "https://github.com/olegwukr/polish-privacy-filters/issues"
"contentURL": "https://hole.cert.pl/domains/v2/domains_ublock.txt",
"supportURL": "https://cert.pl/lista-ostrzezen/"
},
"ROU-1": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇷🇴ro: Romanian Ad (ROad) Block List Light",
"title": "🇷🇴ro 🇲🇩md: Romanian Ad (ROad) Block List Light",
"tags": "ads romanian română moldavian moldovenească молдовеняскэ",
"lang": "ro",
"contentURL": [
"https://road.adblock.ro/lista.txt",
"https://raw.githubusercontent.com/tcptomato/ROad-Block/master/road-block-filters-light.txt"
],
"supportURL": "https://github.com/tcptomato/ROad-Block"
@@ -827,14 +856,32 @@
"RUS-0": {
"content": "filters",
"group": "regions",
"parent": "🇷🇺ru 🇺🇦ua 🇺🇿uz 🇰🇿kz: RU AdList",
"off": true,
"title": "🇷🇺ru 🇺🇦ua 🇺🇿uz 🇰🇿kz: RU AdList",
"tags": "ads belarusian беларуская kazakh tatar russian русский ukrainian українська uzbek",
"lang": "be kk tt ru uk uz",
"tags": "ads belarusian беларуская kazakh tatar russian русский ukrainian українська uzbek uk",
"lang": "be kk tt ru uz",
"contentURL": "https://raw.githubusercontent.com/easylist/ruadlist/master/RuAdList-uBO.txt",
"cdnURLs": [
"https://cdn.jsdelivr.net/gh/easylist/ruadlist@master/RuAdList-uBO.txt",
"https://cdn.statically.io/gh/easylist/ruadlist/master/RuAdList-uBO.txt"
"https://cdn.jsdelivr.net/gh/dimisa-RUAdList/RUAdListCDN@main/lists/ruadlist.ubo.min.txt",
"https://cdn.statically.io/gh/dimisa-RUAdList/RUAdListCDN/main/lists/ruadlist.ubo.min.txt",
"https://raw.githubusercontent.com/dimisa-RUAdList/RUAdListCDN/main/lists/ruadlist.ubo.min.txt"
],
"supportURL": "https://forums.lanik.us/viewforum.php?f=102",
"instructionURL": "https://forums.lanik.us/viewtopic.php?f=102&t=22512"
},
"RUS-1": {
"content": "filters",
"group": "regions",
"parent": "🇷🇺ru 🇺🇦ua 🇺🇿uz 🇰🇿kz: RU AdList",
"off": true,
"title": "🇷🇺ru 🇺🇦ua 🇺🇿uz 🇰🇿kz: RU AdList: Counters",
"tags": "ads belarusian беларуская kazakh tatar russian русский ukrainian українська uzbek be kk tt ru uk uz",
"contentURL": "https://raw.githubusercontent.com/easylist/ruadlist/master/cntblock.txt",
"cdnURLs": [
"https://cdn.jsdelivr.net/gh/easylist/ruadlist@master/cntblock.txt",
"https://cdn.statically.io/gh/easylist/ruadlist/master/cntblock.txt",
"https://raw.githubusercontent.com/easylist/ruadlist/master/cntblock.txt"
],
"supportURL": "https://forums.lanik.us/viewforum.php?f=102",
"instructionURL": "https://forums.lanik.us/viewtopic.php?f=102&t=22512"
@@ -857,8 +904,7 @@
"tags": "ads aragonese basque catalan spanish español galician guarani portuguese português",
"lang": "an ast ca cak es eu gl gn trs pt quz",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/9.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"SVN-0": {
"content": "filters",
@@ -878,6 +924,10 @@
"tags": "ads swedish svenska",
"lang": "sv",
"contentURL": "https://raw.githubusercontent.com/lassekongo83/Frellwits-filter-lists/master/Frellwits-Swedish-Filter.txt",
"cdnURLs": [
"https://raw.githubusercontent.com/lassekongo83/Frellwits-filter-lists/swefilter/swefilter.min.txt",
"https://cdn.jsdelivr.net/gh/lassekongo83/Frellwits-filter-lists@swefilter/swefilter.min.txt"
],
"supportURL": "https://github.com/lassekongo83/Frellwits-filter-lists"
},
"THA-0": {
@@ -898,8 +948,17 @@
"tags": "ads turkish türkçe",
"lang": "tr",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/13.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"UKR-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇺🇦ua: AdGuard Ukrainian",
"tags": "ads ukraine україна",
"lang": "uk",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/23.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"VIE-1": {
"content": "filters",

View File

@@ -52,6 +52,10 @@
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/filters.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/filters.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"ublock-badware": {
@@ -62,13 +66,18 @@
"tags": "malware security",
"contentURL": [
"https://ublockorigin.github.io/uAssets/filters/badware.txt",
"assets/ublock/badware.min.txt",
"assets/ublock/badware.txt"
],
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/badware.txt",
"https://ublockorigin.pages.dev/filters/badware.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/badware.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/badware.txt"
"https://ublockorigin.github.io/uAssetsCDN/filters/badware.min.txt",
"https://ublockorigin.pages.dev/filters/badware.min.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/badware.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/badware.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets",
"instructionURL": "https://github.com/gorhill/uBlock/wiki/Badware-risks"
@@ -90,6 +99,10 @@
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/privacy.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/privacy.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"ublock-unbreak": {
@@ -99,6 +112,7 @@
"title": "uBlock filters Unbreak",
"contentURL": [
"https://ublockorigin.github.io/uAssets/filters/unbreak.txt",
"assets/ublock/unbreak.min.txt",
"assets/ublock/unbreak.txt"
],
"cdnURLs": [
@@ -107,6 +121,10 @@
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/unbreak.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/unbreak.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"ublock-quick-fixes": {
@@ -116,13 +134,36 @@
"title": "uBlock filters Quick fixes",
"contentURL": [
"https://ublockorigin.github.io/uAssets/filters/quick-fixes.txt",
"assets/ublock/quick-fixes.min.txt",
"assets/ublock/quick-fixes.txt"
],
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/quick-fixes.txt",
"https://ublockorigin.pages.dev/filters/quick-fixes.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/quick-fixes.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/quick-fixes.txt"
"https://ublockorigin.github.io/uAssetsCDN/filters/quick-fixes.min.txt",
"https://ublockorigin.pages.dev/filters/quick-fixes.min.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/quick-fixes.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/quick-fixes.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"ublock-experimental": {
"content": "filters",
"group": "default",
"off": true,
"title": "uBlock filters Experimental",
"contentURL": "https://ublockorigin.github.io/uAssets/filters/experimental.txt",
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/experimental.min.txt",
"https://ublockorigin.pages.dev/filters/experimental.min.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/experimental.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/experimental.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
@@ -133,8 +174,7 @@
"title": "AdGuard Ads",
"tags": "ads",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/2_without_easylist.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"adguard-mobile": {
"content": "filters",
@@ -144,24 +184,26 @@
"tags": "ads mobile",
"ua": "mobile",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/11.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"easylist": {
"content": "filters",
"group": "ads",
"title": "EasyList",
"tags": "ads",
"preferred": true,
"contentURL": [
"https://ublockorigin.github.io/uAssets/thirdparties/easylist.txt",
"assets/thirdparties/easylist/easylist.txt",
"assets/thirdparties/easylist-downloads.adblockplus.org/easylist.txt"
"assets/thirdparties/easylist/easylist.txt"
],
"cdnURLs": [
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist.txt",
"https://ublockorigin.pages.dev/thirdparties/easylist.txt",
"https://easylist.to/easylist/easylist.txt"
"https://ublockorigin.pages.dev/thirdparties/easylist.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://easylist.to/"
},
@@ -172,17 +214,7 @@
"title": "AdGuard URL Tracking Protection",
"tags": "privacy",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/17.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
},
"adguard-spyware": {
"content": "filters",
"group": "privacy",
"off": true,
"title": "AdGuard Tracking Protection",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/3.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"block-lan": {
"content": "filters",
@@ -204,16 +236,19 @@
"group": "privacy",
"title": "EasyPrivacy",
"tags": "privacy",
"preferred": true,
"contentURL": [
"https://ublockorigin.github.io/uAssets/thirdparties/easyprivacy.txt",
"assets/thirdparties/easylist/easyprivacy.txt",
"assets/thirdparties/easylist-downloads.adblockplus.org/easyprivacy.txt"
"assets/thirdparties/easylist/easyprivacy.txt"
],
"cdnURLs": [
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easyprivacy.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easyprivacy.txt",
"https://ublockorigin.pages.dev/thirdparties/easyprivacy.txt",
"https://easylist.to/easylist/easyprivacy.txt"
"https://ublockorigin.pages.dev/thirdparties/easyprivacy.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://easylist.to/"
},
@@ -222,13 +257,13 @@
"group": "malware",
"title": "Online Malicious URL Blocklist",
"contentURL": [
"https://malware-filter.gitlab.io/urlhaus-filter/urlhaus-filter-online.txt",
"https://malware-filter.gitlab.io/urlhaus-filter/urlhaus-filter-ag-online.txt",
"assets/thirdparties/urlhaus-filter/urlhaus-filter-online.txt"
],
"cdnURLs": [
"https://curbengh.github.io/malware-filter/urlhaus-filter-online.txt",
"https://malware-filter.gitlab.io/urlhaus-filter/urlhaus-filter-online.txt",
"https://malware-filter.pages.dev/urlhaus-filter-online.txt"
"https://curbengh.github.io/malware-filter/urlhaus-filter-ag-online.txt",
"https://malware-filter.gitlab.io/urlhaus-filter/urlhaus-filter-ag-online.txt",
"https://malware-filter.pages.dev/urlhaus-filter-ag-online.txt"
],
"supportURL": "https://gitlab.com/malware-filter/urlhaus-filter#malicious-url-blocklist"
},
@@ -245,45 +280,22 @@
],
"supportURL": "https://gitlab.com/malware-filter/phishing-filter#phishing-url-blocklist"
},
"curben-pup": {
"content": "filters",
"group": "malware",
"off": true,
"title": "PUP Domains Blocklist",
"contentURL": "https://malware-filter.gitlab.io/pup-filter/pup-filter.txt",
"cdnURLs": [
"https://curbengh.github.io/pup-filter/pup-filter.txt",
"https://malware-filter.gitlab.io/pup-filter/pup-filter.txt",
"https://pup-filter.pages.dev/pup-filter.txt"
],
"supportURL": "https://gitlab.com/malware-filter/pup-filter#pup-domains-blocklist"
},
"adguard-social": {
"content": "filters",
"group": "annoyances",
"parent": "AdGuard Annoyances",
"off": true,
"title": "AdGuard Social Media",
"tags": "annoyances social",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/4.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
},
"adguard-cookies": {
"content": "filters",
"group": "annoyances",
"parent": "AdGuard Annoyances|AdGuard/uBO Cookie Notices",
"group2": "cookies",
"parent": "AdGuard/uBO Cookie Notices",
"off": true,
"title": "AdGuard Cookie Notices",
"tags": "annoyances cookies",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/18.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"ublock-cookies-adguard": {
"content": "filters",
"group": "annoyances",
"parent": "AdGuard Annoyances|AdGuard/uBO Cookie Notices",
"group2": "cookies",
"parent": "AdGuard/uBO Cookie Notices",
"off": true,
"title": "uBlock filters Cookie Notices",
"tags": "annoyances cookies",
@@ -296,98 +308,15 @@
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"adguard-popup-overlays": {
"content": "filters",
"group": "annoyances",
"parent": "AdGuard Annoyances",
"off": true,
"title": "AdGuard Popup Overlays",
"tags": "annoyances",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/19.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
},
"adguard-mobile-app-banners": {
"content": "filters",
"group": "annoyances",
"parent": "AdGuard Annoyances",
"off": true,
"title": "AdGuard Mobile App Banners",
"tags": "annoyances mobile",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/20.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
},
"adguard-other-annoyances": {
"content": "filters",
"group": "annoyances",
"parent": "AdGuard Annoyances",
"off": true,
"title": "AdGuard Other Annoyances",
"tags": "annoyances",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/21.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
},
"adguard-widgets": {
"content": "filters",
"group": "annoyances",
"parent": "AdGuard Annoyances",
"off": true,
"title": "AdGuard Widgets",
"tags": "annoyances",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/22.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
},
"fanboy-thirdparty_social": {
"content": "filters",
"group": "annoyances",
"off": true,
"title": "Fanboy Anti-Facebook",
"tags": "privacy",
"contentURL": "https://secure.fanboy.co.nz/fanboy-antifacebook.txt",
"supportURL": "https://github.com/ryanbr/fanboy-adblock/issues"
},
"easylist-annoyances": {
"content": "filters",
"group": "annoyances",
"parent": "EasyList Annoyances",
"off": true,
"title": "EasyList Other Annoyances",
"tags": "annoyances",
"contentURL": "https://ublockorigin.github.io/uAssets/thirdparties/easylist-annoyances.txt",
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-annoyances.txt",
"https://ublockorigin.pages.dev/thirdparties/easylist-annoyances.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-annoyances.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist-annoyances.txt"
],
"supportURL": "https://github.com/easylist/easylist#fanboy-lists"
},
"easylist-chat": {
"content": "filters",
"group": "annoyances",
"parent": "EasyList Annoyances",
"off": true,
"title": "EasyList Chat Widgets",
"tags": "annoyances",
"contentURL": "https://ublockorigin.github.io/uAssets/thirdparties/easylist-chat.txt",
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-chat.txt",
"https://ublockorigin.pages.dev/thirdparties/easylist-chat.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-chat.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist-chat.txt"
],
"supportURL": "https://github.com/easylist/easylist#fanboy-lists"
},
"fanboy-cookiemonster": {
"content": "filters",
"group": "annoyances",
"parent": "EasyList Annoyances|EasyList/uBO Cookie Notices",
"group2": "cookies",
"parent": "EasyList/uBO Cookie Notices",
"off": true,
"title": "EasyList Cookie Notices",
"tags": "annoyances cookies",
"preferred": true,
"contentURL": [
"https://ublockorigin.github.io/uAssets/thirdparties/easylist-cookies.txt",
"https://secure.fanboy.co.nz/fanboy-cookiemonster_ubo.txt"
@@ -404,10 +333,12 @@
"ublock-cookies-easylist": {
"content": "filters",
"group": "annoyances",
"parent": "EasyList Annoyances|EasyList/uBO Cookie Notices",
"group2": "cookies",
"parent": "EasyList/uBO Cookie Notices",
"off": true,
"title": "uBlock filters Cookie Notices",
"tags": "annoyances cookies",
"preferred": true,
"contentURL": "https://ublockorigin.github.io/uAssets/filters/annoyances-cookies.txt",
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/annoyances-cookies.txt",
@@ -417,6 +348,123 @@
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"adguard-social": {
"content": "filters",
"group": "annoyances",
"group2": "social",
"parent": null,
"off": true,
"title": "AdGuard Social Widgets",
"tags": "annoyances social",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/4.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"fanboy-social": {
"content": "filters",
"group": "annoyances",
"group2": "social",
"parent": null,
"off": true,
"title": "EasyList Social Widgets",
"tags": "annoyances social",
"preferred": true,
"contentURL": [
"https://ublockorigin.github.io/uAssets/thirdparties/easylist-social.txt",
"https://secure.fanboy.co.nz/fanboy-social_ubo.txt"
],
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-social.txt",
"https://ublockorigin.pages.dev/thirdparties/easylist-social.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-social.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist-social.txt",
"https://secure.fanboy.co.nz/fanboy-social_ubo.txt"
],
"supportURL": "https://easylist.to/"
},
"fanboy-thirdparty_social": {
"content": "filters",
"group": "annoyances",
"group2": "social",
"off": true,
"title": "Fanboy Anti-Facebook",
"tags": "privacy",
"contentURL": "https://secure.fanboy.co.nz/fanboy-antifacebook.txt",
"supportURL": "https://github.com/ryanbr/fanboy-adblock/issues"
},
"adguard-popup-overlays": {
"content": "filters",
"group": "annoyances",
"parent": "AdGuard Annoyances",
"off": true,
"title": "AdGuard Popup Overlays",
"tags": "annoyances",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/19.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"adguard-mobile-app-banners": {
"content": "filters",
"group": "annoyances",
"parent": "AdGuard Annoyances",
"off": true,
"title": "AdGuard Mobile App Banners",
"tags": "annoyances mobile",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/20.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"adguard-other-annoyances": {
"content": "filters",
"group": "annoyances",
"parent": "AdGuard Annoyances",
"off": true,
"title": "AdGuard Other Annoyances",
"tags": "annoyances",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/21.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"adguard-widgets": {
"content": "filters",
"group": "annoyances",
"parent": "AdGuard Annoyances",
"off": true,
"title": "AdGuard Widgets",
"tags": "annoyances",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/22.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"easylist-annoyances": {
"content": "filters",
"group": "annoyances",
"parent": "EasyList Annoyances",
"off": true,
"title": "EasyList Other Annoyances",
"tags": "annoyances",
"preferred": true,
"contentURL": "https://ublockorigin.github.io/uAssets/thirdparties/easylist-annoyances.txt",
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-annoyances.txt",
"https://ublockorigin.pages.dev/thirdparties/easylist-annoyances.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-annoyances.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist-annoyances.txt"
],
"supportURL": "https://github.com/easylist/easylist#fanboy-lists"
},
"easylist-chat": {
"content": "filters",
"group": "annoyances",
"parent": "EasyList Annoyances",
"off": true,
"title": "EasyList Chat Widgets",
"tags": "annoyances",
"preferred": true,
"contentURL": "https://ublockorigin.github.io/uAssets/thirdparties/easylist-chat.txt",
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-chat.txt",
"https://ublockorigin.pages.dev/thirdparties/easylist-chat.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-chat.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist-chat.txt"
],
"supportURL": "https://github.com/easylist/easylist#fanboy-lists"
},
"easylist-newsletters": {
"content": "filters",
"group": "annoyances",
@@ -424,6 +472,7 @@
"off": true,
"title": "EasyList Newsletter Notices",
"tags": "annoyances",
"preferred": true,
"contentURL": [
"https://ublockorigin.github.io/uAssets/thirdparties/easylist-newsletters.txt"
],
@@ -442,6 +491,7 @@
"off": true,
"title": "EasyList Notifications",
"tags": "annoyances",
"preferred": true,
"contentURL": [
"https://ublockorigin.github.io/uAssets/thirdparties/easylist-notifications.txt"
],
@@ -453,26 +503,6 @@
],
"supportURL": "https://easylist.to/"
},
"fanboy-social": {
"content": "filters",
"group": "annoyances",
"parent": "EasyList Annoyances",
"off": true,
"title": "EasyList Social Widgets",
"tags": "annoyances social",
"contentURL": [
"https://ublockorigin.github.io/uAssets/thirdparties/easylist-social.txt",
"https://secure.fanboy.co.nz/fanboy-social_ubo.txt"
],
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-social.txt",
"https://ublockorigin.pages.dev/thirdparties/easylist-social.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-social.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist-social.txt",
"https://secure.fanboy.co.nz/fanboy-social_ubo.txt"
],
"supportURL": "https://easylist.to/"
},
"ublock-annoyances": {
"content": "filters",
"group": "annoyances",
@@ -486,6 +516,10 @@
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/annoyances.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/annoyances.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"dpollock-0": {
@@ -504,6 +538,7 @@
"updateAfter": 13,
"title": "Peter Lowes Ad and tracking server list",
"tags": "ads privacy security",
"preferred": true,
"contentURL": [
"https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=1&mimetype=plaintext",
"assets/thirdparties/pgl.yoyo.org/as/serverlist.txt",
@@ -515,7 +550,7 @@
"content": "filters",
"group": "regions",
"off": true,
"title": "🇦🇱al: Adblock List for Albania",
"title": "🇦🇱al 🇽🇰xk: Adblock List for Albania",
"tags": "ads albania shqipja",
"lang": "sq",
"contentURL": "https://raw.githubusercontent.com/AnXh3L0/blocklist/master/albanian-easylist-addition/Albania.txt",
@@ -527,7 +562,7 @@
"off": true,
"title": "🇪🇬eg 🇸🇦sa 🇲🇦ma 🇩🇿dz: Liste AR",
"tags": "ads arabic اَلْعَرَبِيَّةُ‎",
"lang": "ar",
"lang": "ar kab",
"contentURL": "https://easylist-downloads.adblockplus.org/Liste_AR.txt",
"supportURL": "https://forums.lanik.us/viewforum.php?f=98"
},
@@ -581,8 +616,8 @@
"title": "🇪🇪ee: Eesti saitidele kohandatud filter",
"tags": "ads estonian",
"lang": "et",
"contentURL": "https://adblock.ee/list.php",
"supportURL": "https://adblock.ee/"
"contentURL": "https://adblock.ee/list.txt",
"supportURL": "https://adblock.ee"
},
"FIN-0": {
"content": "filters",
@@ -600,7 +635,7 @@
"off": true,
"title": "🇫🇷fr 🇨🇦ca: AdGuard Français",
"tags": "ads french",
"lang": "ar br ff fr lb oc son",
"lang": "ar br ff fr kab lb oc son",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/16.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
@@ -608,7 +643,7 @@
"content": "filters",
"group": "regions",
"off": true,
"title": "🇬🇷gr: Greek AdBlock Filter",
"title": "🇬🇷gr 🇨🇾cy: Greek AdBlock Filter",
"tags": "ads greek",
"lang": "el",
"contentURL": "https://www.void.gr/kargig/void-gr-filters.txt",
@@ -619,9 +654,13 @@
"group": "regions",
"off": true,
"title": "🇭🇷hr 🇷🇸rs: Dandelion Sprout's Serbo-Croatian filters",
"tags": "ads croatian serbian",
"lang": "hr sr",
"contentURL": "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/SerboCroatianList.txt",
"tags": "ads croatian serbian bosnian",
"lang": "bs hr sr",
"contentURL": [
"https://raw.githubusercontent.com/DandelionSprout/adfilt/master/SerboCroatianList.txt",
"https://cdn.jsdelivr.net/gh/DandelionSprout/adfilt@master/SerboCroatianList.txt",
"https://cdn.statically.io/gl/DandelionSprout/adfilt/master/SerboCroatianList.txt"
],
"supportURL": "https://github.com/DandelionSprout/adfilt#readme"
},
"HUN-0": {
@@ -631,7 +670,7 @@
"title": "🇭🇺hu: hufilter",
"tags": "ads hungarian",
"lang": "hu",
"contentURL": "https://raw.githubusercontent.com/hufilter/hufilter/master/hufilter-ublock.txt",
"contentURL": "https://cdn.jsdelivr.net/gh/hufilter/hufilter@gh-pages/hufilter-ublock.txt",
"supportURL": "https://github.com/hufilter/hufilter"
},
"IDN-0": {
@@ -650,7 +689,7 @@
"off": true,
"title": "🇮🇳in 🇱🇰lk 🇳🇵np: IndianList",
"tags": "ads assamese bengali gujarati hindi kannada malayalam marathi nepali punjabi sinhala tamil telugu",
"lang": "as bn gu hi kn ml mr ne pa si ta te",
"lang": "as bn gu hi kn ml mr ne pa sat si ta te",
"contentURL": "https://easylist-downloads.adblockplus.org/indianlist.txt",
"supportURL": "https://github.com/mediumkreation/IndianList"
},
@@ -659,14 +698,13 @@
"group": "regions",
"off": true,
"title": "🇮🇷ir: PersianBlocker",
"tags": "ads persian pashto tajik",
"tags": "ads af ir persian pashto tajik tj",
"lang": "fa ps tg",
"contentURL": [
"https://raw.githubusercontent.com/MasterKia/PersianBlocker/main/PersianBlocker.txt",
"https://cdn.statically.io/gh/MasterKia/PersianBlocker/main/PersianBlocker.txt",
"https://raw.githubusercontent.com/MasterKia/PersianBlocker/main/PersianBlocker.txt"
"https://cdn.statically.io/gh/MasterKia/PersianBlocker/main/PersianBlocker.txt"
],
"cdnURLs": [
"cdnURLs": [
"https://cdn.jsdelivr.net/gh/MasterKia/PersianBlocker@main/PersianBlocker.txt",
"https://cdn.statically.io/gh/MasterKia/PersianBlocker/main/PersianBlocker.txt"
],
@@ -679,8 +717,8 @@
"title": "🇮🇸is: Icelandic ABP List",
"tags": "ads icelandic",
"lang": "is",
"contentURL": "https://adblock.gardar.net/is.abp.txt",
"supportURL": "https://adblock.gardar.net/"
"contentURL": "https://raw.githubusercontent.com/brave/adblock-lists/master/custom/is.txt",
"supportURL": "https://github.com/brave/adblock-lists/issues"
},
"ISR-0": {
"content": "filters",
@@ -698,7 +736,7 @@
"off": true,
"title": "🇮🇹it: EasyList Italy",
"tags": "ads italian",
"lang": "it lij",
"lang": "fur it lij sc",
"contentURL": "https://easylist-downloads.adblockplus.org/easylistitaly.txt",
"supportURL": "https://forums.lanik.us/viewforum.php?f=96"
},
@@ -710,8 +748,7 @@
"tags": "ads japanese 日本語",
"lang": "ja",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/7.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"KOR-1": {
"content": "filters",
@@ -720,7 +757,7 @@
"title": "🇰🇷kr: List-KR",
"tags": "ads korean 한국어",
"lang": "ko",
"contentURL": "https://cdn.jsdelivr.net/gh/List-KR/List-KR@master/filter-uBlockOrigin.txt",
"contentURL": "https://cdn.jsdelivr.net/gh/List-KR/List-KR@latest/filter-uBlockOrigin.txt",
"supportURL": "https://github.com/List-KR/List-KR#readme"
},
"LTU-0": {
@@ -761,16 +798,12 @@
"content": "filters",
"group": "regions",
"off": true,
"title": "🇳🇱nl: EasyDutch",
"tags": "ads afrikaans frisian dutch flemish",
"title": "🇳🇱nl 🇧🇪be: AdGuard Dutch",
"tags": "ads afrikaans be belgië frisian dutch flemish nederlands netherlands nl sr suriname za",
"lang": "af fy nl",
"contentURL": "https://easydutch-ubo.github.io/EasyDutch/EasyDutch.txt",
"cdnURLs": [
"https://cdn.statically.io/gh/EasyDutch-uBO/EasyDutch/gh-pages/EasyDutch.txt",
"https://cdn.jsdelivr.net/gh/EasyDutch-uBO/EasyDutch@gh-pages/EasyDutch.txt",
"https://easydutch-ubo.github.io/EasyDutchCDN/EasyDutch.txt"
],
"supportURL": "https://github.com/EasyDutch-uBO/EasyDutch/"
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/8.txt",
"cdnURLs": null,
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"NOR-0": {
"content": "filters",
@@ -780,9 +813,7 @@
"tags": "ads norwegian danish icelandic",
"lang": "nb nn no da is",
"contentURL": [
"https://raw.githubusercontent.com/DandelionSprout/adfilt/master/NorwegianList.txt"
],
"cdnURLs": [
"https://raw.githubusercontent.com/DandelionSprout/adfilt/master/NorwegianList.txt",
"https://cdn.jsdelivr.net/gh/DandelionSprout/adfilt@master/NorwegianList.txt",
"https://cdn.statically.io/gl/DandelionSprout/adfilt/master/NorwegianList.txt"
],
@@ -795,31 +826,29 @@
"off": true,
"title": "🇵🇱pl: Oficjalne Polskie Filtry do uBlocka Origin",
"tags": "ads polish polski",
"lang": "szl pl",
"lang": "szl pl _",
"contentURL": "https://raw.githubusercontent.com/MajkiIT/polish-ads-filter/master/polish-adblock-filters/adblock.txt",
"supportURL": "https://github.com/MajkiIT/polish-ads-filter/issues",
"instructionURL": "https://github.com/MajkiIT/polish-ads-filter#polish-filters-for-adblock-ublock-origin--adguard"
"supportURL": "https://github.com/MajkiIT/polish-ads-filter"
},
"POL-2": {
"POL-3": {
"content": "filters",
"group": "regions",
"parent": "🇵🇱pl: Oficjalne Polskie Filtry",
"off": true,
"title": "🇵🇱pl: Oficjalne polskie filtry przeciwko alertom o Adblocku",
"tags": "ads polish polski",
"title": "🇵🇱pl: CERT.PL's Warning List",
"tags": "malware polish polski",
"lang": "szl pl",
"contentURL": "https://raw.githubusercontent.com/olegwukr/polish-privacy-filters/master/anti-adblock.txt",
"supportURL": "https://github.com/olegwukr/polish-privacy-filters/issues"
"contentURL": "https://hole.cert.pl/domains/v2/domains_ublock.txt",
"supportURL": "https://cert.pl/lista-ostrzezen/"
},
"ROU-1": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇷🇴ro: Romanian Ad (ROad) Block List Light",
"title": "🇷🇴ro 🇲🇩md: Romanian Ad (ROad) Block List Light",
"tags": "ads romanian română moldavian moldovenească молдовеняскэ",
"lang": "ro",
"contentURL": [
"https://road.adblock.ro/lista.txt",
"https://raw.githubusercontent.com/tcptomato/ROad-Block/master/road-block-filters-light.txt"
],
"supportURL": "https://github.com/tcptomato/ROad-Block"
@@ -827,14 +856,32 @@
"RUS-0": {
"content": "filters",
"group": "regions",
"parent": "🇷🇺ru 🇺🇦ua 🇺🇿uz 🇰🇿kz: RU AdList",
"off": true,
"title": "🇷🇺ru 🇺🇦ua 🇺🇿uz 🇰🇿kz: RU AdList",
"tags": "ads belarusian беларуская kazakh tatar russian русский ukrainian українська uzbek",
"lang": "be kk tt ru uk uz",
"tags": "ads belarusian беларуская kazakh tatar russian русский ukrainian українська uzbek uk",
"lang": "be kk tt ru uz",
"contentURL": "https://raw.githubusercontent.com/easylist/ruadlist/master/RuAdList-uBO.txt",
"cdnURLs": [
"https://cdn.jsdelivr.net/gh/easylist/ruadlist@master/RuAdList-uBO.txt",
"https://cdn.statically.io/gh/easylist/ruadlist/master/RuAdList-uBO.txt"
"https://cdn.jsdelivr.net/gh/dimisa-RUAdList/RUAdListCDN@main/lists/ruadlist.ubo.min.txt",
"https://cdn.statically.io/gh/dimisa-RUAdList/RUAdListCDN/main/lists/ruadlist.ubo.min.txt",
"https://raw.githubusercontent.com/dimisa-RUAdList/RUAdListCDN/main/lists/ruadlist.ubo.min.txt"
],
"supportURL": "https://forums.lanik.us/viewforum.php?f=102",
"instructionURL": "https://forums.lanik.us/viewtopic.php?f=102&t=22512"
},
"RUS-1": {
"content": "filters",
"group": "regions",
"parent": "🇷🇺ru 🇺🇦ua 🇺🇿uz 🇰🇿kz: RU AdList",
"off": true,
"title": "🇷🇺ru 🇺🇦ua 🇺🇿uz 🇰🇿kz: RU AdList: Counters",
"tags": "ads belarusian беларуская kazakh tatar russian русский ukrainian українська uzbek be kk tt ru uk uz",
"contentURL": "https://raw.githubusercontent.com/easylist/ruadlist/master/cntblock.txt",
"cdnURLs": [
"https://cdn.jsdelivr.net/gh/easylist/ruadlist@master/cntblock.txt",
"https://cdn.statically.io/gh/easylist/ruadlist/master/cntblock.txt",
"https://raw.githubusercontent.com/easylist/ruadlist/master/cntblock.txt"
],
"supportURL": "https://forums.lanik.us/viewforum.php?f=102",
"instructionURL": "https://forums.lanik.us/viewtopic.php?f=102&t=22512"
@@ -857,8 +904,7 @@
"tags": "ads aragonese basque catalan spanish español galician guarani portuguese português",
"lang": "an ast ca cak es eu gl gn trs pt quz",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/9.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"SVN-0": {
"content": "filters",
@@ -878,6 +924,10 @@
"tags": "ads swedish svenska",
"lang": "sv",
"contentURL": "https://raw.githubusercontent.com/lassekongo83/Frellwits-filter-lists/master/Frellwits-Swedish-Filter.txt",
"cdnURLs": [
"https://raw.githubusercontent.com/lassekongo83/Frellwits-filter-lists/swefilter/swefilter.min.txt",
"https://cdn.jsdelivr.net/gh/lassekongo83/Frellwits-filter-lists@swefilter/swefilter.min.txt"
],
"supportURL": "https://github.com/lassekongo83/Frellwits-filter-lists"
},
"THA-0": {
@@ -898,8 +948,17 @@
"tags": "ads turkish türkçe",
"lang": "tr",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/13.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"UKR-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇺🇦ua: AdGuard Ukrainian",
"tags": "ads ukraine україна",
"lang": "uk",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/23.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"VIE-1": {
"content": "filters",

File diff suppressed because it is too large Load Diff

140
dist/README.md vendored
View File

@@ -1,81 +1,103 @@
## INSTALL
# INSTALL
### Chromium
## Chromium
- Download and unzip `ublock0.chromium.zip` ([latest release desirable](https://github.com/gorhill/uBlock/releases)).
- Rename the unzipped directory to `ublock`
- When you later update manually, replace the **content** of the `ublock` folder with the **content** of the latest zipped version.
- This will ensure that all the extension settings will be preserved
- As long as the extension loads **from same folder path from which it was originally installed**, all your settings will be preserved.
- Go to chromium/chrome *Extensions*.
- Click to check *Developer mode*.
- Click *Load unpacked extension...*.
- In the file selector dialog:
- Select the directory `ublock` which was created above.
- Click *Open*.
1. Download and unzip `ublock0.chromium.zip` ([latest release desirable](https://github.com/gorhill/uBlock/releases)).
2. Rename the unzipped directory to `ublock`.
- When you update manually, replace the **content** of the `ublock` folder with the **content** of the latest zipped version. This ensures all extension settings are preserved.
- As long as the extension loads from the same folder path as it was originally installed, your settings will be kept.
3. Open Chromium/Chrome and go to *Extensions*.
4. Click to enable *Developer mode*.
5. Click *Load unpacked extension...*.
6. In the file selector dialog:
- Select the `ublock` directory you created.
- Click *Open*.
The extension will now be available in your chromium/chromium-based browser.
The extension will now be available in your Chromium/Chromium-based browser.
Remember that you have to update manually also. For some users, updating manually is actually an advantage because:
- You can update when **you** want
- If ever a new version sucks, you can easily just re-install the previous one
**Note:** You must update manually. For some users, manual updates are beneficial because:
- You can update when **you** want.
- If a new version is unsatisfactory, you can easily reinstall the previous one.
### Firefox
## Firefox
Compatible with Firefox 52 and beyond.
Compatible with Firefox 52 and beyond.
#### For stable release version
### For Stable Release Version
This works only if you set `xpinstall.signatures.required` to `false` in `about:config`.<sup>[see "Add-on signing in Firefox"](https://support.mozilla.org/en-US/kb/add-on-signing-in-firefox)</sup>
This method only works if you set `xpinstall.signatures.required` to `false` in `about:config`.<sup>[see "Add-on signing in Firefox"](https://support.mozilla.org/en-US/kb/add-on-signing-in-firefox)</sup>
- Download `ublock0.firefox.xpi` ([latest release desirable](https://github.com/gorhill/uBlock/releases)).
- Right-click and choose _"Save As..."_.
- Drag and drop the previously downloaded `ublock0.firefox.xpi` into Firefox
1. Download `ublock0.firefox.xpi` ([latest release desirable](https://github.com/gorhill/uBlock/releases)).
- Right-click and choose _"Save As..."_.
2. Drag and drop the downloaded `ublock0.firefox.xpi` into Firefox.
#### For beta version
### For Beta Version
- Click on `ublock0.firefox.signed.xpi` ([latest release desirable](https://github.com/gorhill/uBlock/releases)).
#### Location of uBO settings
### Location of uBO Settings
On Linux, the settings are saved in a JSON file located at `~/.mozilla/firefox/[profile name]/browser-extension-data/uBlock0@raymondhill.net/storage.js`.
On Linux, the settings are saved in a JSON file located at:
```
~/.mozilla/firefox/[profile name]/browser-extension-data/uBlock0@raymondhill.net/storage.js
```
When you uninstall the extension, Firefox deletes this file, and all your settings will be lost.
When you uninstall the extension, Firefox deletes that file, so all your settings are lost when you uninstall.
### Firefox Legacy
### Firefox legacy
Compatible with Firefox 24-56, [Pale Moon](https://www.palemoon.org/), and [SeaMonkey](https://www.seamonkey-project.org/).
Compatible with Firefox 24-56, [Pale Moon](https://www.palemoon.org/) and [SeaMonkey](http://www.seamonkey-project.org/).
1. Download `ublock0.firefox-legacy.xpi` ([latest release desirable](https://github.com/gorhill/uBlock-for-firefox-legacy/releases)).
- Right-click and select "Save Link As..."
2. Drag and drop the downloaded `ublock0.firefox-legacy.xpi` into Firefox.
- Download `ublock0.firefox-legacy.xpi` ([latest release desirable](https://github.com/gorhill/uBlock-for-firefox-legacy/releases)).
- Right-click and select "Save Link As..."
- Drag and drop the previously downloaded `ublock0.firefox-legacy.xpi` into Firefox
For Firefox 43 and beyond, you may need to toggle the setting `xpinstall.signatures.required` to `false` in `about:config`.<sup>[see "Add-on signing in Firefox"](https://support.mozilla.org/en-US/kb/add-on-signing-in-firefox)</sup>
With Firefox 43 and beyond, you may need to toggle the setting `xpinstall.signatures.required` to `false` in `about:config`.<sup>[see "Add-on signing in Firefox"](https://support.mozilla.org/en-US/kb/add-on-signing-in-firefox)</sup>
Your uBlock Origin settings are preserved even after uninstalling the addon.
Your uBlock Origin settings are kept intact even after you uninstall the addon.
- On Linux, settings are saved in a SQLite file located at:
```
~/.mozilla/firefox/[profile name]/extension-data/ublock0.sqlite
```
- On Windows, settings are saved in a SQLite file located at:
```
%APPDATA%\Mozilla\Firefox\Profiles\[profile name]\extension-data\ublock0.sqlite
```
On Linux, the settings are saved in a SQlite file located at `~/.mozilla/firefox/[profile name]/extension-data/ublock0.sqlite`.
## Build Instructions (for Developers)
On Windows, the settings are saved in a SQlite file located at `%APPDATA%\Mozilla\Firefox\Profiles\[profile name]\extension-data\ublock0.sqlite`.
### Build instructions (for developers)
- Clone [uBlock repo](https://github.com/gorhill/uBlock): `git clone https://github.com/gorhill/uBlock.git`
- Set path to uBlock: `cd uBlock`
- The official version of uBO is in the `master` branch
- `git checkout master`
- Build the plugin:
- Chromium: `make chromium`
- Firefox: `make firefox`
- NPM package: `make npm`
- Load the result of the build into your browser:
- Chromium:
- Navigate to `chrome://extensions/`
- Check _"Developer mode"_
- Click _"Load unpacked"_
- Select `/uBlock/dist/build/uBlock0.chromium/`
- Firefox:
- Navigate to `about:debugging#/runtime/this-firefox`
- Click _"Load Temporary Add-on..."_
- Select `/uBlock/dist/build/uBlock0.firefox/`
1. Clone the [uBlock repository](https://github.com/gorhill/uBlock):
```bash
git clone https://github.com/gorhill/uBlock.git
```
2. Set the path to uBlock:
```bash
cd uBlock
```
3. The official version of uBO is in the `master` branch:
```bash
git checkout master
```
4. Build the plugin:
- Chromium:
```bash
make chromium
```
- Firefox:
```bash
make firefox
```
- NPM package:
```bash
make npm
```
5. Load the result of the build into your browser:
- **Chromium:**
- Navigate to `chrome://extensions/`
- Check _"Developer mode"_
- Click _"Load unpacked"_
- Select `/uBlock/dist/build/uBlock0.chromium/`
- **Firefox:**
- Navigate to `about:debugging#/runtime/this-firefox`
- Click _"Load Temporary Add-on..."_
- Select `/uBlock/dist/build/uBlock0.firefox/`

View File

@@ -1,190 +0,0 @@
#!/usr/bin/env python3
import datetime
import json
import os
import re
import requests
import shutil
import subprocess
import sys
import tempfile
import time
import zipfile
from string import Template
# - Download target (raw) uBlock0.chromium.zip from GitHub
# - This is referred to as "raw" package
# - This will fail if not a dev build
# - Upload uBlock0.chromium.zip to Chrome store
# - Publish uBlock0.chromium.zip to Chrome store
# Find path to project root
projdir = os.path.split(os.path.abspath(__file__))[0]
while not os.path.isdir(os.path.join(projdir, '.git')):
projdir = os.path.normpath(os.path.join(projdir, '..'))
# We need a version string to work with
if len(sys.argv) >= 2 and sys.argv[1]:
version = sys.argv[1]
else:
version = input('Github release version: ')
version.strip()
if not re.search('^\d+\.\d+\.\d+(b|rc)\d+$', version):
print('Error: Invalid version string.')
exit(1)
cs_extension_id = 'cgbcahbpdhpcegmbfconppldiemgcoii'
tmpdir = tempfile.TemporaryDirectory()
raw_zip_filename = 'uBlock0_' + version + '.chromium.zip'
raw_zip_filepath = os.path.join(tmpdir.name, raw_zip_filename)
github_owner = 'gorhill'
github_repo = 'uBlock'
# Load/save auth secrets
# The build directory is excluded from git
ubo_secrets = dict()
ubo_secrets_filename = os.path.join(projdir, 'dist', 'build', 'ubo_secrets')
if os.path.isfile(ubo_secrets_filename):
with open(ubo_secrets_filename) as f:
ubo_secrets = json.load(f)
def input_secret(prompt, token):
if token in ubo_secrets:
prompt += ''
prompt += ': '
value = input(prompt).strip()
if len(value) == 0:
if token not in ubo_secrets:
print('Token error:', token)
exit(1)
value = ubo_secrets[token]
elif token not in ubo_secrets or value != ubo_secrets[token]:
ubo_secrets[token] = value
exists = os.path.isfile(ubo_secrets_filename)
with open(ubo_secrets_filename, 'w') as f:
json.dump(ubo_secrets, f, indent=2)
if not exists:
os.chmod(ubo_secrets_filename, 0o600)
return value
# GitHub API token
github_token = input_secret('Github token', 'github_token')
github_auth = 'token ' + github_token
#
# Get metadata from GitHub about the release
#
# https://developer.github.com/v3/repos/releases/#get-a-single-release
print('Downloading release info from GitHub...')
release_info_url = 'https://api.github.com/repos/{0}/{1}/releases/tags/{2}'.format(github_owner, github_repo, version)
headers = { 'Authorization': github_auth, }
response = requests.get(release_info_url, headers=headers)
if response.status_code != 200:
print('Error: Release not found: {0}'.format(response.status_code))
exit(1)
release_info = response.json()
#
# Extract URL to raw package from metadata
#
# Find url for uBlock0.chromium.zip
raw_zip_url = ''
for asset in release_info['assets']:
if asset['name'] == raw_zip_filename:
raw_zip_url = asset['url']
if len(raw_zip_url) == 0:
print('Error: Release asset URL not found')
exit(1)
#
# Download raw package from GitHub
#
# https://developer.github.com/v3/repos/releases/#get-a-single-release-asset
print('Downloading raw zip package from GitHub...')
headers = {
'Authorization': github_auth,
'Accept': 'application/octet-stream',
}
response = requests.get(raw_zip_url, headers=headers)
# Redirections are transparently handled:
# http://docs.python-requests.org/en/master/user/quickstart/#redirection-and-history
if response.status_code != 200:
print('Error: Downloading raw package failed -- server error {0}'.format(response.status_code))
exit(1)
with open(raw_zip_filepath, 'wb') as f:
f.write(response.content)
print('Downloaded raw package saved as {0}'.format(raw_zip_filepath))
#
# Upload to Chrome store
#
# Auth tokens
cs_id = input_secret('Chrome store id', 'cs_id')
cs_secret = input_secret('Chrome store secret', 'cs_secret')
cs_refresh = input_secret('Chrome store refresh token', 'cs_refresh')
print('Uploading to Chrome store...')
with open(raw_zip_filepath, 'rb') as f:
print('Generating access token...')
auth_url = 'https://accounts.google.com/o/oauth2/token'
auth_payload = {
'client_id': cs_id,
'client_secret': cs_secret,
'grant_type': 'refresh_token',
'refresh_token': cs_refresh,
}
auth_response = requests.post(auth_url, data=auth_payload)
if auth_response.status_code != 200:
print('Error: Auth failed -- server error {0}'.format(auth_response.status_code))
print(auth_response.text)
exit(1)
response_dict = auth_response.json()
if 'access_token' not in response_dict:
print('Error: Auth failed -- no access token')
exit(1)
# Prepare access token
cs_auth = 'Bearer ' + response_dict['access_token']
headers = {
'Authorization': cs_auth,
'x-goog-api-version': '2',
}
# Upload
print('Uploading package...')
upload_url = 'https://www.googleapis.com/upload/chromewebstore/v1.1/items/{0}'.format(cs_extension_id)
upload_response = requests.put(upload_url, headers=headers, data=f)
f.close()
if upload_response.status_code != 200:
print('Upload failed -- server error {0}'.format(upload_response.status_code))
print(upload_response.text)
exit(1)
response_dict = upload_response.json();
if 'uploadState' not in response_dict or response_dict['uploadState'] != 'SUCCESS':
print('Upload failed -- server error {0}'.format(response_dict['uploadState']))
exit(1)
print('Upload succeeded.')
# Publish
print('Publishing package...')
publish_url = 'https://www.googleapis.com/chromewebstore/v1.1/items/{0}/publish'.format(cs_extension_id)
headers = {
'Authorization': cs_auth,
'x-goog-api-version': '2',
'Content-Length': '0',
}
publish_response = requests.post(publish_url, headers=headers)
if publish_response.status_code != 200:
print('Error: Chrome store publishing failed -- server error {0}'.format(publish_response.status_code))
exit(1)
response_dict = publish_response.json();
if 'status' not in response_dict or response_dict['status'][0] != 'OK':
print('Publishing failed -- server error {0}'.format(response_dict['status']))
exit(1)
print('Publishing succeeded.')
print('All done.')

View File

@@ -1,331 +0,0 @@
#!/usr/bin/env python3
import datetime
import json
import jwt
import os
import re
import requests
import shutil
import subprocess
import sys
import tempfile
import time
import zipfile
from string import Template
# - Download target (raw) uBlock0.firefox.xpi from GitHub
# - This is referred to as "raw" package
# - This will fail if not a dev build
# - Modify raw package to make it self-hosted
# - This is referred to as "unsigned" package
# - Ask AMO to sign uBlock0.firefox.xpi
# - Generate JWT to be used for communication with server
# - Upload unsigned package to AMO
# - Wait for a valid download URL for signed package
# - Download signed package as uBlock0.firefox.signed.xpi
# - This is referred to as "signed" package
# - Upload uBlock0.firefox.signed.xpi to GitHub
# - Remove uBlock0.firefox.xpi from GitHub
# - Modify updates.json to point to new version
# - Commit changes to repo
# Find path to project root
projdir = os.path.split(os.path.abspath(__file__))[0]
while not os.path.isdir(os.path.join(projdir, '.git')):
projdir = os.path.normpath(os.path.join(projdir, '..'))
# Check that found project root is valid
version_filepath = os.path.join(projdir, 'dist', 'version')
if not os.path.isfile(version_filepath):
print('Version file not found.')
exit(1)
# We need a version string to work with
if len(sys.argv) >= 2 and sys.argv[1]:
tag_version = sys.argv[1]
else:
tag_version = input('Github release version: ')
tag_version.strip()
match = re.search('^(\d+\.\d+\.\d+)(?:(b|rc)(\d+))?$', tag_version)
if not match:
print('Error: Invalid version string.')
exit(1)
ext_version = match.group(1);
if match.group(2):
revision = int(match.group(3))
if match.group(2) == 'rc':
revision += 100;
ext_version += '.' + str(revision)
extension_id = 'uBlock0@raymondhill.net'
tmpdir = tempfile.TemporaryDirectory()
raw_xpi_filename = 'uBlock0_' + tag_version + '.firefox.xpi'
raw_xpi_filepath = os.path.join(tmpdir.name, raw_xpi_filename)
unsigned_xpi_filepath = os.path.join(tmpdir.name, 'uBlock0.firefox.unsigned.xpi')
signed_xpi_filename = 'uBlock0_' + tag_version + '.firefox.signed.xpi'
signed_xpi_filepath = os.path.join(tmpdir.name, signed_xpi_filename)
github_owner = 'gorhill'
github_repo = 'uBlock'
# Load/save auth secrets
# The build directory is excluded from git
ubo_secrets = dict()
ubo_secrets_filename = os.path.join(projdir, 'dist', 'build', 'ubo_secrets')
if os.path.isfile(ubo_secrets_filename):
with open(ubo_secrets_filename) as f:
ubo_secrets = json.load(f)
def input_secret(prompt, token):
if token in ubo_secrets:
prompt += ''
prompt += ': '
value = input(prompt).strip()
if len(value) == 0:
if token not in ubo_secrets:
print('Token error:', token)
exit(1)
value = ubo_secrets[token]
elif token not in ubo_secrets or value != ubo_secrets[token]:
ubo_secrets[token] = value
exists = os.path.isfile(ubo_secrets_filename)
with open(ubo_secrets_filename, 'w') as f:
json.dump(ubo_secrets, f, indent=2)
if not exists:
os.chmod(ubo_secrets_filename, 0o600)
return value
# GitHub API token
github_token = input_secret('Github token', 'github_token')
github_auth = 'token ' + github_token
#
# Get metadata from GitHub about the release
#
# https://developer.github.com/v3/repos/releases/#get-a-single-release
print('Downloading release info from GitHub...')
release_info_url = 'https://api.github.com/repos/{0}/{1}/releases/tags/{2}'.format(github_owner, github_repo, tag_version)
headers = { 'Authorization': github_auth, }
response = requests.get(release_info_url, headers=headers)
if response.status_code != 200:
print('Error: Release not found: {0}'.format(response.status_code))
exit(1)
release_info = response.json()
#
# Extract URL to raw package from metadata
#
# Find url for uBlock0.firefox.xpi
raw_xpi_url = ''
for asset in release_info['assets']:
if asset['name'] == signed_xpi_filename:
print('Error: Found existing signed self-hosted package.')
exit(1)
if asset['name'] == raw_xpi_filename:
raw_xpi_url = asset['url']
if len(raw_xpi_url) == 0:
print('Error: Release asset URL not found')
exit(1)
#
# Download raw package from GitHub
#
# https://developer.github.com/v3/repos/releases/#get-a-single-release-asset
print('Downloading raw xpi package from GitHub...')
headers = {
'Authorization': github_auth,
'Accept': 'application/octet-stream',
}
response = requests.get(raw_xpi_url, headers=headers)
# Redirections are transparently handled:
# http://docs.python-requests.org/en/master/user/quickstart/#redirection-and-history
if response.status_code != 200:
print('Error: Downloading raw package failed -- server error {0}'.format(response.status_code))
exit(1)
with open(raw_xpi_filepath, 'wb') as f:
f.write(response.content)
print('Downloaded raw package saved as {0}'.format(raw_xpi_filepath))
#
# Convert the package to a self-hosted one: add `update_url` to the manifest
#
min_browser_version = '68';
print('Converting raw xpi package into self-hosted xpi package...')
with zipfile.ZipFile(raw_xpi_filepath, 'r') as zipin:
with zipfile.ZipFile(unsigned_xpi_filepath, 'w') as zipout:
for item in zipin.infolist():
data = zipin.read(item.filename)
if item.filename == 'manifest.json':
manifest = json.loads(bytes.decode(data))
min_browser_version = manifest['browser_specific_settings']['gecko']['strict_min_version']
manifest['browser_specific_settings']['gecko']['update_url'] = 'https://raw.githubusercontent.com/{0}/{1}/master/dist/firefox/updates.json'.format(github_owner, github_repo)
data = json.dumps(manifest, indent=2, separators=(',', ': '), sort_keys=True).encode()
zipout.writestr(item, data)
#
# Ask AMO to sign the self-hosted package
# - https://developer.mozilla.org/en-US/Add-ons/Distribution#Distributing_your_add-on
# - https://pyjwt.readthedocs.io/en/latest/usage.html
# - https://addons-server.readthedocs.io/en/latest/topics/api/auth.html
# - https://addons-server.readthedocs.io/en/latest/topics/api/signing.html
#
amo_api_key = ''
amo_secret = ''
def get_jwt_auth():
global amo_api_key
if amo_api_key == '':
amo_api_key = input_secret('AMO API key', 'amo_api_key')
global amo_secret
if amo_secret == '':
amo_secret = input_secret('AMO API secret', 'amo_secret')
amo_nonce = os.urandom(8).hex()
jwt_payload = {
'iss': amo_api_key,
'jti': amo_nonce,
'iat': datetime.datetime.utcnow(),
'exp': datetime.datetime.utcnow() + datetime.timedelta(seconds=15),
}
return 'JWT ' + jwt.encode(jwt_payload, amo_secret)
print('Ask AMO to sign self-hosted xpi package...')
with open(unsigned_xpi_filepath, 'rb') as f:
# https://blog.mozilla.org/addons/2019/11/11/security-improvements-in-amo-upload-tools/
# "We recommend allowing up to 15 minutes."
interval = 60 # check every 60 seconds
countdown = 60 * 60 / interval # for at most 60 minutes
headers = { 'Authorization': get_jwt_auth(), }
data = { 'channel': 'unlisted' }
files = { 'upload': f, }
signing_url = 'https://addons.mozilla.org/api/v4/addons/{0}/versions/{1}/'.format(extension_id, ext_version)
print('Submitting package to be signed...')
response = requests.put(signing_url, headers=headers, data=data, files=files)
if response.status_code != 202:
print('Error: Creating new version failed -- server error {0}'.format(response.status_code))
print(response.text)
exit(1)
print('Request for signing self-hosted xpi package succeeded.')
signing_request_response = response.json();
f.close()
print('Waiting for AMO to process the request to sign the self-hosted xpi package...')
# Wait for signed package to be ready
signing_check_url = signing_request_response['url']
while True:
time.sleep(interval)
sys.stdout.write('.')
sys.stdout.flush()
countdown -= 1
if countdown <= 0:
print('Error: AMO signing timed out')
exit(1)
headers = { 'Authorization': get_jwt_auth(), }
response = requests.get(signing_check_url, headers=headers)
if response.status_code != 200:
print('Error: AMO signing failed -- server error {0}'.format(response.status_code))
print(response.text)
exit(1)
signing_check_response = response.json()
if not signing_check_response['processed']:
continue
if not signing_check_response['valid']:
print('Error: AMO validation failed')
print(response.text)
exit(1)
if not signing_check_response['files'] or len(signing_check_response['files']) == 0:
continue
if not signing_check_response['files'][0]['signed']:
continue
if not signing_check_response['files'][0]['download_url']:
print('Error: AMO signing failed')
print(response.text)
exit(1)
print('\r')
print('Self-hosted xpi package successfully signed.')
download_url = signing_check_response['files'][0]['download_url']
print('Downloading signed self-hosted xpi package from {0}...'.format(download_url))
response = requests.get(download_url, headers=headers)
if response.status_code != 200:
print('Error: Download signed package failed -- server error {0}'.format(response.status_code))
print(response.text)
exit(1)
with open(signed_xpi_filepath, 'wb') as f:
f.write(response.content)
f.close()
print('Signed self-hosted xpi package downloaded.')
break
#
# Upload signed package to GitHub
#
# https://developer.github.com/v3/repos/releases/#upload-a-release-asset
print('Uploading signed self-hosted xpi package to GitHub...')
with open(signed_xpi_filepath, 'rb') as f:
url = release_info['upload_url'].replace('{?name,label}', '?name=' + signed_xpi_filename)
headers = {
'Authorization': github_auth,
'Content-Type': 'application/zip',
}
response = requests.post(url, headers=headers, data=f.read())
if response.status_code != 201:
print('Error: Upload signed package failed -- server error: {0}'.format(response.status_code))
exit(1)
#
# Remove raw package from GitHub
#
# https://developer.github.com/v3/repos/releases/#delete-a-release-asset
print('Remove raw xpi package from GitHub...')
headers = { 'Authorization': github_auth, }
response = requests.delete(raw_xpi_url, headers=headers)
if response.status_code != 204:
print('Error: Deletion of raw package failed -- server error: {0}'.format(response.status_code))
#
# Update updates.json to point to new package -- but only if just-signed
# package is higher version than current one.
#
# Be sure we are in sync with potentially modified files on remote
r = subprocess.run(['git', 'pull', 'origin', 'master'], stdout=subprocess.PIPE)
rout = bytes.decode(r.stdout).strip()
def int_from_version(version):
parts = version.split('.')
if len(parts) == 3:
parts.append('0')
return int(parts[0])*10e9 + int(parts[1])*10e6 + int(parts[2])*10e3 + int(parts[3])
print('Update GitHub to point to newly signed self-hosted xpi package...')
updates_json_filepath = os.path.join(projdir, 'dist', 'firefox', 'updates.json')
with open(updates_json_filepath) as f:
updates_json = json.load(f)
f.close()
previous_version = updates_json['addons'][extension_id]['updates'][0]['version']
if int_from_version(ext_version) > int_from_version(previous_version):
with open(os.path.join(projdir, 'dist', 'firefox', 'updates.template.json')) as f:
template_json = Template(f.read())
f.close()
updates_json = template_json.substitute(ext_version=ext_version, tag_version=tag_version, min_browser_version=min_browser_version)
with open(updates_json_filepath, 'w') as f:
f.write(updates_json)
f.close()
# - Stage the changed file
r = subprocess.run(['git', 'status', '-s', updates_json_filepath], stdout=subprocess.PIPE)
rout = bytes.decode(r.stdout).strip()
if len(rout) >= 2 and rout[1] == 'M':
subprocess.run(['git', 'add', updates_json_filepath])
# - Commit the staged file
r = subprocess.run(['git', 'status', '-s', updates_json_filepath], stdout=subprocess.PIPE)
rout = bytes.decode(r.stdout).strip()
if len(rout) >= 2 and rout[0] == 'M':
subprocess.run(['git', 'commit', '-m', 'Make Firefox dev build auto-update', updates_json_filepath])
subprocess.run(['git', 'push', 'origin', 'HEAD'])
print('All done.')

View File

@@ -1,13 +1,17 @@
{
"addons": {
"uBlock0@raymondhill.net": {
"updates": [
{
"version": "1.51.1.105",
"browser_specific_settings": { "gecko": { "strict_min_version": "79.0" } },
"update_link": "https://github.com/gorhill/uBlock/releases/download/1.51.1rc5/uBlock0_1.51.1rc5.firefox.signed.xpi"
"addons": {
"uBlock0@raymondhill.net": {
"updates": [
{
"version": "1.66.5.1",
"browser_specific_settings": {
"gecko": {
"strict_min_version": "92.0"
}
},
"update_link": "https://github.com/gorhill/uBlock/releases/download/1.66.5b1/uBlock0_1.66.5b1.firefox.signed.xpi"
}
]
}
]
}
}
}
}

View File

@@ -1,13 +0,0 @@
{
"addons": {
"uBlock0@raymondhill.net": {
"updates": [
{
"version": "$ext_version",
"browser_specific_settings": { "gecko": { "strict_min_version": "$min_browser_version" } },
"update_link": "https://github.com/gorhill/uBlock/releases/download/$tag_version/uBlock0_$tag_version.firefox.signed.xpi"
}
]
}
}
}

View File

@@ -1,195 +0,0 @@
#!/usr/bin/env python3
import datetime
import json
import os
import re
import requests
import shutil
import subprocess
import sys
import tempfile
import time
import zipfile
from string import Template
# - Download target (raw) uBOLite_*.chromium.mv3.zip from GitHub
# - This is referred to as "raw" package
# - This will fail if not a dev build
# - Upload uBOLite_*.chromium.mv3.zip to Chrome store
# - Publish uBOLite_*.chromium.mv3.zip to Chrome store
# Find path to project root
projdir = os.path.split(os.path.abspath(__file__))[0]
while not os.path.isdir(os.path.join(projdir, '.git')):
projdir = os.path.normpath(os.path.join(projdir, '..'))
# We need a version string to work with
if len(sys.argv) >= 2 and sys.argv[1]:
version = sys.argv[1]
else:
version = input('Github release version: ')
version.strip()
if not re.search('^uBOLite_\d+\.\d+\.\d+\.\d+$', version):
print('Error: Invalid version string.')
exit(1)
cs_extension_id = 'ddkjiahejlhfcafbddmgiahcphecmpfh'
tmpdir = tempfile.TemporaryDirectory()
raw_zip_filename = ''
raw_zip_filepath = ''
github_owner = 'gorhill'
github_repo = 'uBlock'
# Load/save auth secrets
# The build directory is excluded from git
ubo_secrets = dict()
ubo_secrets_filename = os.path.join(projdir, 'dist', 'build', 'ubo_secrets')
if os.path.isfile(ubo_secrets_filename):
with open(ubo_secrets_filename) as f:
ubo_secrets = json.load(f)
def input_secret(prompt, token):
if token in ubo_secrets:
prompt += ''
prompt += ': '
value = input(prompt).strip()
if len(value) == 0:
if token not in ubo_secrets:
print('Token error:', token)
exit(1)
value = ubo_secrets[token]
elif token not in ubo_secrets or value != ubo_secrets[token]:
ubo_secrets[token] = value
exists = os.path.isfile(ubo_secrets_filename)
with open(ubo_secrets_filename, 'w') as f:
json.dump(ubo_secrets, f, indent=2)
if not exists:
os.chmod(ubo_secrets_filename, 0o600)
return value
# GitHub API token
github_token = input_secret('Github token', 'github_token')
github_auth = 'token ' + github_token
#
# Get metadata from GitHub about the release
#
# https://developer.github.com/v3/repos/releases/#get-a-single-release
print('Downloading release info from GitHub...')
release_info_url = 'https://api.github.com/repos/{0}/{1}/releases/tags/{2}'.format(github_owner, github_repo, version)
headers = { 'Authorization': github_auth, }
response = requests.get(release_info_url, headers=headers)
if response.status_code != 200:
print('Error: Release not found: {0}'.format(response.status_code))
exit(1)
release_info = response.json()
#
# Extract URL to raw package from metadata
#
# Find url for uBOLite_*.chromium.mv3.zip
raw_zip_url = ''
for asset in release_info['assets']:
if re.search('uBOLite_\d+.\d+.\d+.\d+.chromium.mv3.zip', asset['name']):
raw_zip_url = asset['url']
raw_zip_filename = asset['name']
raw_zip_filepath = os.path.join(tmpdir.name, raw_zip_filename)
if len(raw_zip_url) == 0:
print('Error: Release asset URL not found')
exit(1)
if len(raw_zip_filepath) == 0:
print('Error: Invalid release asset file not set')
exit(1)
#
# Download raw package from GitHub
#
# https://developer.github.com/v3/repos/releases/#get-a-single-release-asset
print('Downloading raw zip package from GitHub...')
headers = {
'Authorization': github_auth,
'Accept': 'application/octet-stream',
}
response = requests.get(raw_zip_url, headers=headers)
# Redirections are transparently handled:
# http://docs.python-requests.org/en/master/user/quickstart/#redirection-and-history
if response.status_code != 200:
print('Error: Downloading raw package failed -- server error {0}'.format(response.status_code))
exit(1)
with open(raw_zip_filepath, 'wb') as f:
f.write(response.content)
print('Downloaded raw package saved as {0}'.format(raw_zip_filepath))
#
# Upload to Chrome store
#
# Auth tokens
cs_id = input_secret('Chrome store id', 'cs_id')
cs_secret = input_secret('Chrome store secret', 'cs_secret')
cs_refresh = input_secret('Chrome store refresh token', 'cs_refresh')
print('Uploading to Chrome store...')
with open(raw_zip_filepath, 'rb') as f:
print('Generating access token...')
auth_url = 'https://accounts.google.com/o/oauth2/token'
auth_payload = {
'client_id': cs_id,
'client_secret': cs_secret,
'grant_type': 'refresh_token',
'refresh_token': cs_refresh,
}
auth_response = requests.post(auth_url, data=auth_payload)
if auth_response.status_code != 200:
print('Error: Auth failed -- server error {0}'.format(auth_response.status_code))
print(auth_response.text)
exit(1)
response_dict = auth_response.json()
if 'access_token' not in response_dict:
print('Error: Auth failed -- no access token')
exit(1)
# Prepare access token
cs_auth = 'Bearer ' + response_dict['access_token']
headers = {
'Authorization': cs_auth,
'x-goog-api-version': '2',
}
# Upload
print('Uploading package...')
upload_url = 'https://www.googleapis.com/upload/chromewebstore/v1.1/items/{0}'.format(cs_extension_id)
upload_response = requests.put(upload_url, headers=headers, data=f)
f.close()
if upload_response.status_code != 200:
print('Upload failed -- server error {0}'.format(upload_response.status_code))
print(upload_response.text)
exit(1)
response_dict = upload_response.json();
if 'uploadState' not in response_dict or response_dict['uploadState'] != 'SUCCESS':
print('Upload failed -- server error {0}'.format(response_dict['uploadState']))
exit(1)
print('Upload succeeded.')
# Publish
print('Publishing package...')
publish_url = 'https://www.googleapis.com/chromewebstore/v1.1/items/{0}/publish'.format(cs_extension_id)
headers = {
'Authorization': cs_auth,
'x-goog-api-version': '2',
'Content-Length': '0',
}
publish_response = requests.post(publish_url, headers=headers)
if publish_response.status_code != 200:
print('Error: Chrome store publishing failed -- server error {0}'.format(publish_response.status_code))
exit(1)
response_dict = publish_response.json();
if 'status' not in response_dict or response_dict['status'][0] != 'OK':
print('Publishing failed -- server error {0}'.format(response_dict['status']))
exit(1)
print('Publishing succeeded.')
print('All done.')

View File

@@ -1,326 +0,0 @@
#!/usr/bin/env python3
import datetime
import json
import jwt
import os
import re
import requests
import shutil
import subprocess
import sys
import tempfile
import time
import zipfile
from string import Template
# - Download target (raw) uBlock0.firefox.xpi from GitHub
# - This is referred to as "raw" package
# - This will fail if not a dev build
# - Modify raw package to make it self-hosted
# - This is referred to as "unsigned" package
# - Ask AMO to sign uBlock0.firefox.xpi
# - Generate JWT to be used for communication with server
# - Upload unsigned package to AMO
# - Wait for a valid download URL for signed package
# - Download signed package as uBlock0.firefox.signed.xpi
# - This is referred to as "signed" package
# - Upload uBlock0.firefox.signed.xpi to GitHub
# - Remove uBlock0.firefox.xpi from GitHub
# - Modify updates.json to point to new version
# - Commit changes to repo
# Find path to project root
projdir = os.path.split(os.path.abspath(__file__))[0]
while not os.path.isdir(os.path.join(projdir, '.git')):
projdir = os.path.normpath(os.path.join(projdir, '..'))
# Check that found project root is valid
version_filepath = os.path.join(projdir, 'dist', 'version')
if not os.path.isfile(version_filepath):
print('Version file not found.')
exit(1)
# We need a version string to work with
if len(sys.argv) >= 2 and sys.argv[1]:
tag_version = sys.argv[1]
else:
tag_version = input('Github release version: ')
tag_version.strip()
match = re.search('^uBOLite_(\d+\.\d+\.\d+.\d+)$', tag_version)
if not match:
print('Error: Invalid version string.')
exit(1)
ext_version = match.group(1);
extension_id = 'uBOLite@raymondhill.net'
tmpdir = tempfile.TemporaryDirectory()
raw_xpi_filename = tag_version + '.firefox.mv3.xpi'
raw_xpi_filepath = os.path.join(tmpdir.name, raw_xpi_filename)
unsigned_xpi_filepath = os.path.join(tmpdir.name, 'uBOLite.firefox.unsigned.xpi')
signed_xpi_filename = tag_version + '.firefox.signed.mv3.xpi'
signed_xpi_filepath = os.path.join(tmpdir.name, signed_xpi_filename)
github_owner = 'gorhill'
github_repo = 'uBlock'
# Load/save auth secrets
# The build directory is excluded from git
ubo_secrets = dict()
ubo_secrets_filename = os.path.join(projdir, 'dist', 'build', 'ubo_secrets')
if os.path.isfile(ubo_secrets_filename):
with open(ubo_secrets_filename) as f:
ubo_secrets = json.load(f)
def input_secret(prompt, token):
if token in ubo_secrets:
prompt += ''
prompt += ': '
value = input(prompt).strip()
if len(value) == 0:
if token not in ubo_secrets:
print('Token error:', token)
exit(1)
value = ubo_secrets[token]
elif token not in ubo_secrets or value != ubo_secrets[token]:
ubo_secrets[token] = value
exists = os.path.isfile(ubo_secrets_filename)
with open(ubo_secrets_filename, 'w') as f:
json.dump(ubo_secrets, f, indent=2)
if not exists:
os.chmod(ubo_secrets_filename, 0o600)
return value
# GitHub API token
github_token = input_secret('Github token', 'github_token')
github_auth = 'token ' + github_token
#
# Get metadata from GitHub about the release
#
# https://developer.github.com/v3/repos/releases/#get-a-single-release
print('Downloading release info from GitHub...')
release_info_url = 'https://api.github.com/repos/{0}/{1}/releases/tags/{2}'.format(github_owner, github_repo, tag_version)
headers = { 'Authorization': github_auth, }
response = requests.get(release_info_url, headers=headers)
if response.status_code != 200:
print('Error: Release not found: {0}'.format(response.status_code))
exit(1)
release_info = response.json()
#
# Extract URL to raw package from metadata
#
# Find url for uBlock0.firefox.xpi
raw_xpi_url = ''
for asset in release_info['assets']:
if asset['name'] == signed_xpi_filename:
print('Error: Found existing signed self-hosted package.')
exit(1)
if asset['name'] == raw_xpi_filename:
raw_xpi_url = asset['url']
if len(raw_xpi_url) == 0:
print('Error: Release asset URL not found')
exit(1)
#
# Download raw package from GitHub
#
# https://developer.github.com/v3/repos/releases/#get-a-single-release-asset
print('Downloading raw xpi package from GitHub...')
headers = {
'Authorization': github_auth,
'Accept': 'application/octet-stream',
}
response = requests.get(raw_xpi_url, headers=headers)
# Redirections are transparently handled:
# http://docs.python-requests.org/en/master/user/quickstart/#redirection-and-history
if response.status_code != 200:
print('Error: Downloading raw package failed -- server error {0}'.format(response.status_code))
exit(1)
with open(raw_xpi_filepath, 'wb') as f:
f.write(response.content)
print('Downloaded raw package saved as {0}'.format(raw_xpi_filepath))
#
# Convert the package to a self-hosted one: add `update_url` to the manifest
#
min_browser_version = '114.0';
print('Converting raw xpi package into self-hosted xpi package...')
with zipfile.ZipFile(raw_xpi_filepath, 'r') as zipin:
with zipfile.ZipFile(unsigned_xpi_filepath, 'w') as zipout:
for item in zipin.infolist():
data = zipin.read(item.filename)
if item.filename == 'manifest.json':
manifest = json.loads(bytes.decode(data))
min_browser_version = manifest['browser_specific_settings']['gecko']['strict_min_version']
manifest['browser_specific_settings']['gecko']['update_url'] = 'https://raw.githubusercontent.com/{0}/{1}/master/dist/mv3/firefox/updates.json'.format(github_owner, github_repo)
data = json.dumps(manifest, indent=2, separators=(',', ': '), sort_keys=True).encode()
zipout.writestr(item, data)
#
# Ask AMO to sign the self-hosted package
# - https://developer.mozilla.org/en-US/Add-ons/Distribution#Distributing_your_add-on
# - https://pyjwt.readthedocs.io/en/latest/usage.html
# - https://addons-server.readthedocs.io/en/latest/topics/api/auth.html
# - https://addons-server.readthedocs.io/en/latest/topics/api/signing.html
#
amo_api_key = ''
amo_secret = ''
def get_jwt_auth():
global amo_api_key
if amo_api_key == '':
amo_api_key = input_secret('AMO API key', 'amo_api_key')
global amo_secret
if amo_secret == '':
amo_secret = input_secret('AMO API secret', 'amo_secret')
amo_nonce = os.urandom(8).hex()
jwt_payload = {
'iss': amo_api_key,
'jti': amo_nonce,
'iat': datetime.datetime.utcnow(),
'exp': datetime.datetime.utcnow() + datetime.timedelta(seconds=15),
}
return 'JWT ' + jwt.encode(jwt_payload, amo_secret)
print('Ask AMO to sign self-hosted xpi package...')
with open(unsigned_xpi_filepath, 'rb') as f:
# https://blog.mozilla.org/addons/2019/11/11/security-improvements-in-amo-upload-tools/
# "We recommend allowing up to 15 minutes."
interval = 60 # check every 60 seconds
countdown = 60 * 60 / interval # for at most 60 minutes
headers = { 'Authorization': get_jwt_auth(), }
data = { 'channel': 'unlisted' }
files = { 'upload': f, }
signing_url = 'https://addons.mozilla.org/api/v4/addons/{0}/versions/{1}/'.format(extension_id, ext_version)
print('Submitting package to be signed...')
response = requests.put(signing_url, headers=headers, data=data, files=files)
if response.status_code != 202:
print('Error: Creating new version failed -- server error {0}'.format(response.status_code))
print(response.text)
exit(1)
print('Request for signing self-hosted xpi package succeeded.')
signing_request_response = response.json();
f.close()
print('Waiting for AMO to process the request to sign the self-hosted xpi package...')
# Wait for signed package to be ready
signing_check_url = signing_request_response['url']
while True:
time.sleep(interval)
sys.stdout.write('.')
sys.stdout.flush()
countdown -= 1
if countdown <= 0:
print('Error: AMO signing timed out')
exit(1)
headers = { 'Authorization': get_jwt_auth(), }
response = requests.get(signing_check_url, headers=headers)
if response.status_code != 200:
print('Error: AMO signing failed -- server error {0}'.format(response.status_code))
print(response.text)
exit(1)
signing_check_response = response.json()
if not signing_check_response['processed']:
continue
if not signing_check_response['valid']:
print('Error: AMO validation failed')
print(response.text)
exit(1)
if not signing_check_response['files'] or len(signing_check_response['files']) == 0:
continue
if not signing_check_response['files'][0]['signed']:
continue
if not signing_check_response['files'][0]['download_url']:
print('Error: AMO signing failed')
print(response.text)
exit(1)
print('\r')
print('Self-hosted xpi package successfully signed.')
download_url = signing_check_response['files'][0]['download_url']
print('Downloading signed self-hosted xpi package from {0}...'.format(download_url))
response = requests.get(download_url, headers=headers)
if response.status_code != 200:
print('Error: Download signed package failed -- server error {0}'.format(response.status_code))
print(response.text)
exit(1)
with open(signed_xpi_filepath, 'wb') as f:
f.write(response.content)
f.close()
print('Signed self-hosted xpi package downloaded.')
break
#
# Upload signed package to GitHub
#
# https://developer.github.com/v3/repos/releases/#upload-a-release-asset
print('Uploading signed self-hosted xpi package to GitHub...')
with open(signed_xpi_filepath, 'rb') as f:
url = release_info['upload_url'].replace('{?name,label}', '?name=' + signed_xpi_filename)
headers = {
'Authorization': github_auth,
'Content-Type': 'application/zip',
}
response = requests.post(url, headers=headers, data=f.read())
if response.status_code != 201:
print('Error: Upload signed package failed -- server error: {0}'.format(response.status_code))
exit(1)
#
# Remove raw package from GitHub
#
# https://developer.github.com/v3/repos/releases/#delete-a-release-asset
print('Remove raw xpi package from GitHub...')
headers = { 'Authorization': github_auth, }
response = requests.delete(raw_xpi_url, headers=headers)
if response.status_code != 204:
print('Error: Deletion of raw package failed -- server error: {0}'.format(response.status_code))
#
# Update updates.json to point to new package -- but only if just-signed
# package is higher version than current one.
#
# Be sure we are in sync with potentially modified files on remote
r = subprocess.run(['git', 'pull', 'origin', 'master'], stdout=subprocess.PIPE)
rout = bytes.decode(r.stdout).strip()
def int_from_version(version):
parts = version.split('.')
if len(parts) == 3:
parts.append('0')
return int(parts[0])*10e9 + int(parts[1])*10e6 + int(parts[2])*10e3 + int(parts[3])
print('Update GitHub to point to newly signed self-hosted xpi package...')
updates_json_filepath = os.path.join(projdir, 'dist', 'mv3', 'firefox', 'updates.json')
with open(updates_json_filepath) as f:
updates_json = json.load(f)
f.close()
previous_version = updates_json['addons'][extension_id]['updates'][0]['version']
if int_from_version(ext_version) > int_from_version(previous_version):
with open(os.path.join(projdir, 'dist', 'mv3', 'firefox', 'updates.template.json')) as f:
template_json = Template(f.read())
f.close()
updates_json = template_json.substitute(ext_version=ext_version, tag_version=tag_version, min_browser_version=min_browser_version)
with open(updates_json_filepath, 'w') as f:
f.write(updates_json)
f.close()
# - Stage the changed file
r = subprocess.run(['git', 'status', '-s', updates_json_filepath], stdout=subprocess.PIPE)
rout = bytes.decode(r.stdout).strip()
if len(rout) >= 2 and rout[1] == 'M':
subprocess.run(['git', 'add', updates_json_filepath])
# - Commit the staged file
r = subprocess.run(['git', 'status', '-s', updates_json_filepath], stdout=subprocess.PIPE)
rout = bytes.decode(r.stdout).strip()
if len(rout) >= 2 and rout[0] == 'M':
subprocess.run(['git', 'commit', '-m', 'Make Firefox dev build auto-update', updates_json_filepath])
subprocess.run(['git', 'push', 'origin', 'HEAD'])
print('All done.')

View File

@@ -1,13 +0,0 @@
{
"addons": {
"uBOLite@raymondhill.net": {
"updates": [
{
"version": "1.0.23.8125",
"browser_specific_settings": { "gecko": { "strict_min_version": "114.0" } },
"update_link": "https://github.com/gorhill/uBlock/releases/download/uBOLite_1.0.23.8125/uBOLite_1.0.23.8125.firefox.signed.mv3.xpi"
}
]
}
}
}

View File

@@ -1,13 +0,0 @@
{
"addons": {
"uBOLite@raymondhill.net": {
"updates": [
{
"version": "$ext_version",
"browser_specific_settings": { "gecko": { "strict_min_version": "$min_browser_version" } },
"update_link": "https://github.com/gorhill/uBlock/releases/download/$tag_version/$tag_version.firefox.signed.mv3.xpi"
}
]
}
}
}

1584
dist/mv3/log.txt vendored

File diff suppressed because one or more lines are too long

2
dist/version vendored
View File

@@ -1 +1 @@
1.52.0
1.66.5.2

51
eslint.config.mjs Normal file
View File

@@ -0,0 +1,51 @@
import js from "@eslint/js";
import globals from "globals";
import json from "@eslint/json";
import { includeIgnoreFile } from "@eslint/compat";
import path from "node:path";
import { fileURLToPath } from "node:url";
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const gitignorePath = path.resolve(__dirname, ".gitignore");
export default [ includeIgnoreFile(gitignorePath), {
files: ["**/*.js", "**/*.mjs"],
...js.configs.recommended,
}, {
files: ["**/*.js", "**/*.mjs"],
languageOptions: {
globals: {
...globals.browser,
browser: "readonly",
chrome: "readonly",
vAPI: "readonly",
},
sourceType: "module",
},
rules: {
eqeqeq: ["warn", "always"],
indent: ["error", 4, {
ignoredNodes: [
"Program > BlockStatement",
"Program > ExpressionStatement > CallExpression > ArrowFunctionExpression > BlockStatement",
"Program > ExpressionStatement > CallExpression > FunctionExpression > BlockStatement",
"Program > IfStatement > BlockStatement",
"Program > VariableDeclaration > VariableDeclarator > CallExpression > ArrowFunctionExpression > BlockStatement",
"CallExpression > MemberExpression",
"ArrayExpression > *",
"ObjectExpression > *",
],
}],
"no-control-regex": "off",
"no-empty": "off",
"sort-imports": "error",
"strict": "error",
},
}, {
files: ["**/*.json"],
ignores: ["package-lock.json"],
language: "json/json",
...json.configs.recommended,
} ];

1163
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

32
package.json Normal file
View File

@@ -0,0 +1,32 @@
{
"name": "uBlock",
"version": "1.0.0",
"description": "npm dev tools",
"type": "module",
"scripts": {
"lint": "eslint --no-warn-ignored --ignore-pattern \"**/lib/\" --ignore-pattern \"**/npm/\" -- \"./src/js/*.js\" \"./src/js/**/*.js\" \"./**/*.json\" \"./platform/**/*.js\"",
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/gorhill/uBlock.git"
},
"author": "Raymond Hill",
"license": "GPLv3",
"bugs": {
"url": "https://github.com/gorhill/uBlock/issues"
},
"homepage": "https://github.com/gorhill/uBlock#readme",
"engines": {
"node": ">=22",
"npm": ">=11"
},
"devDependencies": {
"@eslint/compat": "^1.2.4",
"@eslint/js": "^9.17.0",
"@eslint/json": "^0.13.1",
"eslint": "^9.34.0",
"eslint-formatter-compact": "^8.40.0",
"globals": "^15.14.0"
}
}

View File

@@ -1,123 +0,0 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2014-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
'use strict';
/******************************************************************************/
import publicSuffixList from './lib/publicsuffixlist/publicsuffixlist.js';
import punycode from './lib/punycode.js';
import staticNetFilteringEngine from './js/static-net-filtering.js';
import { FilteringContext } from './js/filtering-context.js';
import { LineIterator } from './js/text-utils.js';
import * as sfp from './js/static-filtering-parser.js';
import {
CompiledListReader,
CompiledListWriter
} from './js/static-filtering-io.js';
/******************************************************************************/
function compileList(rawText, writer) {
const lineIter = new LineIterator(rawText);
const parser = new sfp.AstFilterParser({
interactive: true,
maxTokenLength: staticNetFilteringEngine.MAX_TOKEN_LENGTH,
});
const compiler = staticNetFilteringEngine.createCompiler();
while ( lineIter.eot() === false ) {
let line = lineIter.next();
while ( line.endsWith(' \\') ) {
if ( lineIter.peek(4) !== ' ' ) { break; }
line = line.slice(0, -2).trim() + lineIter.next().trim();
}
parser.parse(line);
if ( parser.isFilter() === false ) { continue; }
if ( parser.isNetworkFilter() === false ) { continue; }
if ( compiler.compile(parser, writer) ) { continue; }
if ( compiler.error !== undefined ) {
console.info(JSON.stringify({
realm: 'message',
type: 'error',
text: compiler.error
}));
}
}
return writer.toString();
}
function applyList(name, raw) {
const writer = new CompiledListWriter();
writer.properties.set('name', name);
const compiled = compileList(raw, writer);
const reader = new CompiledListReader(compiled);
staticNetFilteringEngine.fromCompiled(reader);
}
function enableWASM(path) {
return Promise.all([
publicSuffixList.enableWASM(`${path}/lib/publicsuffixlist`),
staticNetFilteringEngine.enableWASM(`${path}/js`),
]);
}
function pslInit(raw) {
if ( typeof raw !== 'string' || raw.trim() === '' ) {
console.info('Unable to populate public suffix list');
return;
}
publicSuffixList.parse(raw, punycode.toASCII);
console.info('Public suffix list populated');
}
function restart(lists) {
// Remove all filters
reset();
if ( Array.isArray(lists) && lists.length !== 0 ) {
// Populate filtering engine with filter lists
for ( const { name, raw } of lists ) {
applyList(name, raw);
}
// Commit changes
staticNetFilteringEngine.freeze();
staticNetFilteringEngine.optimize();
}
return staticNetFilteringEngine;
}
function reset() {
staticNetFilteringEngine.reset();
}
export {
FilteringContext,
enableWASM,
pslInit,
restart,
};

View File

@@ -1,71 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>uBO Static Network Filtering Engine</title>
</head>
<body>
<script type="module">
import {
FilteringContext,
enableWASM,
pslInit,
restart,
} from './main.js';
(async ( ) => {
await enableWASM('.');
await fetch('./data/effective_tld_names.dat').then(response => {
return response.text();
}).then(pslRaw => {
pslInit(pslRaw);
});
const snfe = await Promise.all([
fetch('./data/easylist.txt').then(response => {
return response.text();
}),
fetch('./data/easyprivacy.txt').then(response => {
return response.text();
}),
]).then(rawLists => {
return restart([
{ name: 'easylist', raw: rawLists[0] },
{ name: 'easyprivacy', raw: rawLists[1] },
]);
});
// Reuse filtering context: it's what uBO does
const fctxt = new FilteringContext();
// Tests
// Not blocked
fctxt.setDocOriginFromURL('https://www.bloomberg.com/');
fctxt.setURL('https://www.bloomberg.com/tophat/assets/v2.6.1/that.css');
fctxt.setType('stylesheet');
if ( snfe.matchRequest(fctxt) !== 0 ) {
console.log(snfe.toLogData());
}
// Blocked
fctxt.setDocOriginFromURL('https://www.bloomberg.com/');
fctxt.setURL('https://securepubads.g.doubleclick.net/tag/js/gpt.js');
fctxt.setType('script');
if ( snfe.matchRequest(fctxt) !== 0 ) {
console.log(snfe.toLogData());
}
// Unblocked
fctxt.setDocOriginFromURL('https://www.bloomberg.com/');
fctxt.setURL('https://sourcepointcmp.bloomberg.com/ccpa.js');
fctxt.setType('script');
if ( snfe.matchRequest(fctxt) !== 0 ) {
console.log(snfe.toLogData());
}
restart();
})();
</script>
</body>
</html>

View File

@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<title></title>
<script async src="js/is-webrtc-supported.js"></script>
<script async src="js/is-webrtc-supported.js" type="module"></script>
</head>
<body></body>
</html>

View File

@@ -1,6 +1,6 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
uBlock Origin - a comprehensive, efficient content blocker
Copyright (C) 2015 Raymond Hill
This program is free software: you can redistribute it and/or modify
@@ -30,11 +30,9 @@
// collected.
(function() {
'use strict';
var pc = null;
let pc = null;
try {
var PC = self.RTCPeerConnection || self.webkitRTCPeerConnection;
const PC = self.RTCPeerConnection || self.webkitRTCPeerConnection;
if ( PC ) {
pc = new PC(null);
}

View File

@@ -30,6 +30,9 @@
},
"toggle-cosmetic-filtering": {
"description": "__MSG_toggleCosmeticFiltering__"
},
"toggle-javascript": {
"description": "__MSG_toggleJavascript__"
}
},
"content_scripts": [
@@ -54,14 +57,25 @@
"https://filterlists.com/*",
"https://forums.lanik.us/*",
"https://github.com/*",
"https://*.github.io/*",
"https://*.letsblock.it/*"
"https://*.github.io/*"
],
"js": [
"/js/scriptlets/subscriber.js"
],
"run_at": "document_idle",
"all_frames": false
},
{
"matches": [
"https://github.com/uBlockOrigin/*",
"https://ublockorigin.github.io/*",
"https://*.reddit.com/r/uBlockOrigin/*"
],
"js": [
"/js/scriptlets/updater.js"
],
"run_at": "document_idle",
"all_frames": false
}
],
"content_security_policy": "script-src 'self'; object-src 'self'",
@@ -75,13 +89,14 @@
},
"incognito": "split",
"manifest_version": 2,
"minimum_chrome_version": "73.0",
"minimum_chrome_version": "93.0",
"name": "uBlock Origin",
"options_ui": {
"page": "dashboard.html",
"open_in_tab": true
},
"permissions": [
"alarms",
"contextMenus",
"privacy",
"storage",

View File

@@ -1,6 +1,6 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
uBlock Origin - a comprehensive, efficient content blocker
Copyright (C) 2017-present Raymond Hill
This program is free software: you can redistribute it and/or modify
@@ -19,10 +19,6 @@
Home: https://github.com/gorhill/uBlock
*/
/* globals browser */
'use strict';
/******************************************************************************/
// https://github.com/uBlockOrigin/uBlock-issues/issues/1659
@@ -30,6 +26,8 @@
// so we synthetize these missing events when this happens.
// https://github.com/uBlockOrigin/uAssets/issues/10323
// Also mind whether the new tab is launched from an external application.
// https://github.com/uBlockOrigin/uBlock-issues/issues/2227
// Revert commit related to issue above.
vAPI.Tabs = class extends vAPI.Tabs {
constructor() {
@@ -70,8 +68,7 @@ vAPI.Tabs = class extends vAPI.Tabs {
const isClientRedirect =
Array.isArray(details.transitionQualifiers) &&
details.transitionQualifiers.includes('client_redirect');
const isStartPage = details.transitionType === 'start_page';
if ( isClientRedirect === false && isStartPage === false ) { return; }
if ( isClientRedirect === false ) { return; }
this.onCreatedNavigationTargetHandler({
tabId: details.tabId,
sourceTabId: details.tabId,
@@ -90,71 +87,47 @@ vAPI.Tabs = class extends vAPI.Tabs {
['gif','image'],['ico','image'],['jpeg','image'],['jpg','image'],['png','image'],['webp','image']
]);
const headerValue = (headers, name) => {
let i = headers.length;
while ( i-- ) {
if ( headers[i].name.toLowerCase() === name ) {
return headers[i].value.trim();
}
}
return '';
};
const parsedURL = new URL('https://www.example.org/');
// Extend base class to normalize as per platform.
// Extend base class to normalize as per platform
vAPI.Net = class extends vAPI.Net {
normalizeDetails(details) {
// Chromium 63+ supports the `initiator` property, which contains
// the URL of the origin from which the network request was made.
if (
typeof details.initiator === 'string' &&
details.initiator !== 'null'
) {
// the URL of the origin from which the network request was made
if ( details.initiator && details.initiator !== 'null' ) {
details.documentUrl = details.initiator;
}
let type = details.type;
const type = details.type;
if ( type === 'imageset' ) {
details.type = 'image';
return;
}
// The rest of the function code is to normalize type
if ( type !== 'other' ) { return; }
// Try to map known "extension" part of URL to request type.
parsedURL.href = details.url;
const path = parsedURL.pathname,
pos = path.indexOf('.', path.length - 6);
if ( pos !== -1 && (type = extToTypeMap.get(path.slice(pos + 1))) ) {
details.type = type;
// Try to map known "extension" part of URL to request type
if ( details.responseHeaders === undefined ) {
parsedURL.href = details.url;
const path = parsedURL.pathname;
const pos = path.indexOf('.', path.length - 6);
if ( pos !== -1 ) {
details.type = extToTypeMap.get(path.slice(pos + 1)) || type;
}
return;
}
// Try to extract type from response headers if present.
if ( details.responseHeaders ) {
type = headerValue(details.responseHeaders, 'content-type');
if ( type.startsWith('font/') ) {
details.type = 'font';
return;
}
if ( type.startsWith('image/') ) {
details.type = 'image';
return;
}
if ( type.startsWith('audio/') || type.startsWith('video/') ) {
details.type = 'media';
return;
}
// Try to extract type from response headers
const ctype = this.headerValue(details.responseHeaders, 'content-type');
if ( ctype.startsWith('font/') ) {
details.type = 'font';
} else if ( ctype.startsWith('image/') ) {
details.type = 'image';
} else if ( ctype.startsWith('audio/') || ctype.startsWith('video/') ) {
details.type = 'media';
}
}
// https://www.reddit.com/r/uBlockOrigin/comments/9vcrk3/
// Some types can be mapped from 'other', thus include 'other' if and
// only if the caller is interested in at least one of those types.
// only if the caller is interested in at least one of those types
denormalizeTypes(types) {
if ( types.length === 0 ) {
return Array.from(this.validTypes);
@@ -236,19 +209,43 @@ vAPI.prefetching = (( ) => {
/******************************************************************************/
vAPI.scriptletsInjector = ((doc, details) => {
let script;
try {
script = doc.createElement('script');
script.appendChild(doc.createTextNode(details.scriptlets));
(doc.head || doc.documentElement).appendChild(script);
self.uBO_scriptletsInjected = details.filters;
} catch (ex) {
}
if ( script ) {
script.remove();
script.textContent = '';
}
}).toString();
vAPI.scriptletsInjector = (( ) => {
const parts = [
'(',
function(details) {
if ( self.uBO_scriptletsInjected !== undefined ) { return; }
const doc = document;
const { location } = doc;
if ( location === null ) { return; }
const { hostname } = location;
if ( hostname !== '' && details.hostname !== hostname ) { return; }
let script;
try {
script = doc.createElement('script');
script.appendChild(doc.createTextNode(details.scriptlets));
(doc.head || doc.documentElement).appendChild(script);
self.uBO_scriptletsInjected = details.filters;
} catch {
}
if ( script ) {
script.remove();
script.textContent = '';
}
return 0;
}.toString(),
')(',
'json-slot',
');',
];
const jsonSlot = parts.indexOf('json-slot');
return (hostname, details) => {
parts[jsonSlot] = JSON.stringify({
hostname,
scriptlets: details.mainWorld,
filters: details.filters,
});
return parts.join('');
};
})();
/******************************************************************************/

View File

@@ -1,6 +1,6 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
uBlock Origin - a comprehensive, efficient content blocker
Copyright (C) 2019-present Raymond Hill
This program is free software: you can redistribute it and/or modify
@@ -19,41 +19,56 @@
Home: https://github.com/gorhill/uBlock
*/
'use strict';
// `webext` is a promisified api of `chrome`. Entries are added as
// the promisification of uBO progress.
const promisifyNoFail = function(thisArg, fnName, outFn = r => r) {
const fn = thisArg[fnName];
return function() {
return function(...args) {
return new Promise(resolve => {
fn.call(thisArg, ...arguments, function() {
if ( chrome.runtime.lastError instanceof Object ) {
void chrome.runtime.lastError.message;
}
resolve(outFn(...arguments));
});
try {
fn.call(thisArg, ...args, function(...args) {
void chrome.runtime.lastError;
resolve(outFn(...args));
});
} catch(ex) {
console.error(ex);
resolve(outFn());
}
});
};
};
const promisify = function(thisArg, fnName) {
const fn = thisArg[fnName];
return function() {
return function(...args) {
return new Promise((resolve, reject) => {
fn.call(thisArg, ...arguments, function() {
const lastError = chrome.runtime.lastError;
if ( lastError instanceof Object ) {
return reject(lastError.message);
}
resolve(...arguments);
});
try {
fn.call(thisArg, ...args, function(...args) {
const lastError = chrome.runtime.lastError;
if ( lastError instanceof Object ) {
return reject(lastError.message);
}
resolve(...args);
});
} catch(ex) {
console.error(ex);
resolve();
}
});
};
};
const webext = {
// https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/alarms
alarms: {
clear: promisifyNoFail(chrome.alarms, 'clear'),
clearAll: promisifyNoFail(chrome.alarms, 'clearAll'),
create: promisifyNoFail(chrome.alarms, 'create'),
get: promisifyNoFail(chrome.alarms, 'get'),
getAll: promisifyNoFail(chrome.alarms, 'getAll'),
onAlarm: chrome.alarms.onAlarm,
},
// https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browserAction
browserAction: {
setBadgeBackgroundColor: promisifyNoFail(chrome.browserAction, 'setBadgeBackgroundColor'),
@@ -95,6 +110,7 @@ const webext = {
query: promisifyNoFail(chrome.tabs, 'query', tabs => Array.isArray(tabs) ? tabs : []),
reload: promisifyNoFail(chrome.tabs, 'reload'),
remove: promisifyNoFail(chrome.tabs, 'remove'),
sendMessage: promisifyNoFail(chrome.tabs, 'sendMessage'),
update: promisifyNoFail(chrome.tabs, 'update', tab => tab instanceof Object ? tab : null),
},
// https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webNavigation

View File

@@ -1,6 +1,6 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
uBlock Origin - a comprehensive, efficient content blocker
Copyright (C) 2014-2015 The uBlock Origin authors
Copyright (C) 2014-present Raymond Hill
@@ -22,14 +22,10 @@
// For background page
/* globals browser */
'use strict';
/******************************************************************************/
import webext from './webext.js';
import { ubolog } from './console.js';
import webext from './webext.js';
/******************************************************************************/
@@ -52,7 +48,7 @@ vAPI.supportsUserStylesheets = vAPI.webextFlavor.soup.has('user_stylesheet');
vAPI.app = {
name: manifest.name.replace(/ dev\w+ build/, ''),
version: (( ) => {
let version = manifest.version;
let version = manifest.version_name || manifest.version;
const match = /(\d+\.\d+\.\d+)(?:\.(\d+))?/.exec(version);
if ( match && match[2] ) {
const v = parseInt(match[2], 10);
@@ -88,11 +84,56 @@ vAPI.app = {
};
/******************************************************************************/
/******************************************************************************/
// Generate segments of random six alphanumeric characters, thus one segment
// is a value out of 36^6 = over 2x10^9 values.
vAPI.generateSecret = (size = 1) => {
let secret = '';
while ( size-- ) {
secret += (Math.floor(Math.random() * 2176782336) + 2176782336).toString(36).slice(1);
}
return secret;
};
/*******************************************************************************
*
* https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/storage/session
*
* Session (in-memory) storage is promise-based in all browsers, no need for
* a webext polyfill. However, not all browsers supports it in MV2.
*
* */
vAPI.sessionStorage = browser.storage.session || {
get() {
return Promise.resolve();
},
set() {
return Promise.resolve();
},
remove() {
return Promise.resolve();
},
clear() {
return Promise.resolve();
},
unavailable: true,
};
/*******************************************************************************
*
* Data written to and read from storage.local will be mirrored to in-memory
* storage.session.
*
* Data read from storage.local will be first fetched from storage.session,
* then if not available, read from storage.local.
*
* */
vAPI.storage = {
get(...args) {
return webext.storage.local.get(...args).catch(reason => {
get(key, ...args) {
return webext.storage.local.get(key, ...args).catch(reason => {
console.log(reason);
});
},
@@ -146,9 +187,9 @@ vAPI.browserSettings = (( ) => {
set: function(details) {
for ( const setting in details ) {
if ( details.hasOwnProperty(setting) === false ) { continue; }
if ( Object.hasOwn(details, setting) === false ) { continue; }
switch ( setting ) {
case 'prefetching':
case 'prefetching': {
const enabled = !!details[setting];
if ( enabled ) {
bp.network.networkPredictionEnabled.clear({
@@ -164,9 +205,9 @@ vAPI.browserSettings = (( ) => {
vAPI.prefetching(enabled);
}
break;
case 'hyperlinkAuditing':
if ( !!details[setting] ) {
}
case 'hyperlinkAuditing': {
if ( details[setting] ) {
bp.websites.hyperlinkAuditingEnabled.clear({
scope: 'regular',
});
@@ -177,7 +218,7 @@ vAPI.browserSettings = (( ) => {
});
}
break;
}
case 'webrtcIPAddress': {
// https://github.com/uBlockOrigin/uBlock-issues/issues/1928
// https://www.reddit.com/r/uBlockOrigin/comments/sl7p74/
@@ -269,14 +310,14 @@ vAPI.Tabs = class {
}
this.onRemovedHandler(tabId, details);
});
}
}
async executeScript() {
async executeScript(...args) {
let result;
try {
result = await webext.tabs.executeScript(...arguments);
result = await webext.tabs.executeScript(...args);
}
catch(reason) {
catch {
}
return Array.isArray(result) ? result : [];
}
@@ -290,7 +331,7 @@ vAPI.Tabs = class {
try {
tab = await webext.tabs.get(tabId);
}
catch(reason) {
catch {
}
return tab instanceof Object ? tab : null;
}
@@ -307,7 +348,7 @@ vAPI.Tabs = class {
try {
await webext.tabs.insertCSS(...arguments);
}
catch(reason) {
catch {
}
}
@@ -316,7 +357,7 @@ vAPI.Tabs = class {
try {
tabs = await webext.tabs.query(queryInfo);
}
catch(reason) {
catch {
}
return Array.isArray(tabs) ? tabs : [];
}
@@ -328,7 +369,7 @@ vAPI.Tabs = class {
try {
await webext.tabs.removeCSS(...arguments);
}
catch(reason) {
catch {
}
}
@@ -388,22 +429,26 @@ vAPI.Tabs = class {
// For some reasons, some platforms do not honor the left,top
// position when specified. I found that further calling
// windows.update again with the same position _may_ help.
//
// https://github.com/uBlockOrigin/uBlock-issues/issues/2249
// Mind that the creation of the popup window might fail.
if ( details.popup !== undefined && vAPI.windows instanceof Object ) {
const createDetails = {
const basicDetails = {
url: details.url,
type: details.popup,
};
if ( details.box instanceof Object ) {
Object.assign(createDetails, details.box);
const shouldRestorePosition = details.box instanceof Object;
const extraDetails = shouldRestorePosition
? Object.assign({}, basicDetails, details.box)
: basicDetails;
const win = await vAPI.windows.create(extraDetails);
if ( win === null ) {
if ( shouldRestorePosition === false ) { return; }
return vAPI.windows.create(basicDetails);
}
const win = await vAPI.windows.create(createDetails);
if ( win === null ) { return; }
if ( details.box instanceof Object === false ) { return; }
if (
win.left === details.box.left &&
win.top === details.box.top
) {
return;
if ( shouldRestorePosition === false ) { return; }
if ( win.left === details.box.left ) {
if ( win.top === details.box.top ) { return; }
}
vAPI.windows.update(win.id, {
left: details.box.left,
@@ -482,7 +527,7 @@ vAPI.Tabs = class {
try {
tab = await webext.tabs.update(...arguments);
}
catch (reason) {
catch {
}
return tab instanceof Object ? tab : null;
}
@@ -499,7 +544,7 @@ vAPI.Tabs = class {
targetURL = vAPI.getURL(targetURL);
}
vAPI.tabs.update(tabId, { url: targetURL });
return vAPI.tabs.update(tabId, { url: targetURL });
}
async remove(tabId) {
@@ -508,7 +553,7 @@ vAPI.Tabs = class {
try {
await webext.tabs.remove(tabId);
}
catch (reason) {
catch {
}
}
@@ -521,7 +566,7 @@ vAPI.Tabs = class {
{ bypassCache: bypassCache === true }
);
}
catch (reason) {
catch {
}
}
@@ -620,7 +665,7 @@ if ( webext.windows instanceof Object ) {
try {
win = await webext.windows.get(...arguments);
}
catch (reason) {
catch {
}
return win instanceof Object ? win : null;
},
@@ -629,7 +674,7 @@ if ( webext.windows instanceof Object ) {
try {
win = await webext.windows.create(...arguments);
}
catch (reason) {
catch {
}
return win instanceof Object ? win : null;
},
@@ -638,7 +683,7 @@ if ( webext.windows instanceof Object ) {
try {
win = await webext.windows.update(...arguments);
}
catch (reason) {
catch {
}
return win instanceof Object ? win : null;
},
@@ -654,7 +699,7 @@ if ( webext.browserAction instanceof Object ) {
try {
await webext.browserAction.setTitle(...arguments);
}
catch (reason) {
catch {
}
},
};
@@ -664,28 +709,28 @@ if ( webext.browserAction instanceof Object ) {
try {
await webext.browserAction.setBadgeTextColor(...arguments);
}
catch (reason) {
catch {
}
};
vAPI.browserAction.setBadgeBackgroundColor = async function() {
try {
await webext.browserAction.setBadgeBackgroundColor(...arguments);
}
catch (reason) {
catch {
}
};
vAPI.browserAction.setBadgeText = async function() {
try {
await webext.browserAction.setBadgeText(...arguments);
}
catch (reason) {
catch {
}
};
vAPI.browserAction.setIcon = async function() {
try {
await webext.browserAction.setIcon(...arguments);
}
catch (reason) {
catch {
}
};
}
@@ -759,7 +804,7 @@ if ( webext.browserAction instanceof Object ) {
let data;
try {
data = ctx.getImageData(0, 0, w, h);
} catch(ex) {
} catch {
}
return data;
};
@@ -820,8 +865,8 @@ if ( webext.browserAction instanceof Object ) {
const hasUnprocessedRequest = vAPI.net && vAPI.net.hasUnprocessedRequest(tabId);
const { parts, state } = details;
const { badge, color } = hasUnprocessedRequest
? { badge: '!', color: '#FC0' }
: details;
? { badge: '!', color: '#FC0' }
: details;
if ( browserAction.setIcon !== undefined ) {
if ( parts === undefined || (parts & 0b0001) !== 0 ) {
@@ -910,6 +955,7 @@ vAPI.messaging = {
onPortDisconnect: function(port) {
this.ports.delete(port.name);
void browser.runtime.lastError;
},
// https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/Port
@@ -967,71 +1013,11 @@ vAPI.messaging = {
}
},
broadcast: function(message) {
const messageWrapper = { broadcast: true, msg: message };
for ( const { port } of this.ports.values() ) {
try {
port.postMessage(messageWrapper);
} catch(ex) {
this.onPortDisconnect(port);
}
}
if ( this.defaultHandler ) {
this.defaultHandler(message, null, ( ) => { });
}
},
onFrameworkMessage: function(request, port, callback) {
const portDetails = this.ports.get(port.name) || {};
const tabId = portDetails.tabId;
const msg = request.msg;
switch ( msg.what ) {
case 'connectionAccepted':
case 'connectionRefused': {
const toPort = this.ports.get(msg.fromToken);
if ( toPort !== undefined ) {
msg.tabId = tabId;
toPort.port.postMessage(request);
} else {
msg.what = 'connectionBroken';
port.postMessage(request);
}
break;
}
case 'connectionRequested':
msg.tabId = tabId;
for ( const { port: toPort } of this.ports.values() ) {
if ( toPort === port ) { continue; }
try {
toPort.postMessage(request);
} catch (ex) {
this.onPortDisconnect(toPort);
}
}
break;
case 'connectionBroken':
case 'connectionCheck':
case 'connectionMessage': {
const toPort = this.ports.get(
port.name === msg.fromToken ? msg.toToken : msg.fromToken
);
if ( toPort !== undefined ) {
msg.tabId = tabId;
toPort.port.postMessage(request);
} else {
msg.what = 'connectionBroken';
port.postMessage(request);
}
break;
}
case 'extendClient':
vAPI.tabs.executeScript(tabId, {
file: '/js/vapi-client-extra.js',
frameId: portDetails.frameId,
}).then(( ) => {
callback();
});
break;
case 'localStorage': {
if ( portDetails.privileged !== true ) { break; }
const args = msg.args || [];
@@ -1040,7 +1026,7 @@ vAPI.messaging = {
});
break;
}
case 'userCSS':
case 'userCSS': {
if ( tabId === undefined ) { break; }
const promises = [];
if ( msg.add ) {
@@ -1071,6 +1057,9 @@ vAPI.messaging = {
});
break;
}
default:
break;
}
},
// Use a wrapper to avoid closure and to allow reuse.
@@ -1092,7 +1081,7 @@ vAPI.messaging = {
msgId: this.msgId,
msg: response !== undefined ? response : null,
});
} catch (ex) {
} catch {
this.messaging.onPortDisconnect(this.port);
}
// Store for reuse
@@ -1168,26 +1157,20 @@ vAPI.messaging = {
// Support using a new secret for every network request.
{
// Generate a 6-character alphanumeric string, thus one random value out
// of 36^6 = over 2x10^9 values.
const generateSecret = ( ) =>
(Math.floor(Math.random() * 2176782336) + 2176782336).toString(36).slice(1);
const root = vAPI.getURL('/');
const reSecret = /\?secret=(\w+)/;
const shortSecrets = [];
let lastShortSecretTime = 0;
// Long secrets are meant to be used multiple times, but for at most a few
// minutes. The realm is one value out of 36^18 = over 10^28 values.
const longSecrets = [ '', '' ];
let lastLongSecretTimeSlice = 0;
// Long secrets are valid until revoked or uBO restarts. The realm is one
// value out of 36^18 = over 10^28 values.
const longSecrets = new Set();
const guard = details => {
const match = reSecret.exec(details.url);
if ( match === null ) { return { cancel: true }; }
const secret = match[1];
if ( longSecrets.includes(secret) ) { return; }
if ( longSecrets.has(secret) ) { return; }
const pos = shortSecrets.indexOf(secret);
if ( pos === -1 ) { return { cancel: true }; }
shortSecrets.splice(pos, 1);
@@ -1211,18 +1194,17 @@ vAPI.messaging = {
}
}
lastShortSecretTime = Date.now();
const secret = generateSecret();
const secret = vAPI.generateSecret();
shortSecrets.push(secret);
return secret;
},
long: ( ) => {
const timeSlice = Date.now() >>> 19; // Changes every ~9 minutes
if ( timeSlice !== lastLongSecretTimeSlice ) {
longSecrets[1] = longSecrets[0];
longSecrets[0] = `${generateSecret()}${generateSecret()}${generateSecret()}`;
lastLongSecretTimeSlice = timeSlice;
long: previous => {
if ( previous !== undefined ) {
longSecrets.delete(previous);
}
return longSecrets[0];
const secret = vAPI.generateSecret(3);
longSecrets.add(secret);
return secret;
},
};
}
@@ -1235,7 +1217,7 @@ vAPI.Net = class {
{
const wrrt = browser.webRequest.ResourceType;
for ( const typeKey in wrrt ) {
if ( wrrt.hasOwnProperty(typeKey) ) {
if ( Object.hasOwn(wrrt, typeKey) ) {
this.validTypes.add(wrrt[typeKey]);
}
}
@@ -1397,6 +1379,14 @@ vAPI.Net = class {
if ( this.suspendDepth !== 0 ) { return; }
this.unsuspendAllRequests(discard);
}
headerValue(headers, name) {
for ( const header of headers ) {
if ( header.name.toLowerCase() === name ) {
return header.value.trim();
}
}
return '';
}
static canSuspend() {
return false;
}
@@ -1480,22 +1470,22 @@ vAPI.adminStorage = (( ) => {
let store;
try {
store = await webext.storage.managed.get();
} catch(ex) {
} catch {
}
webext.storage.local.set({ cachedManagedStorage: store || {} });
vAPI.storage.set({ cachedManagedStorage: store || {} });
};
return {
get: async function(key) {
let bin;
try {
bin = await webext.storage.local.get('cachedManagedStorage') || {};
bin = await vAPI.storage.get('cachedManagedStorage') || {};
if ( Object.keys(bin).length === 0 ) {
bin = await webext.storage.managed.get() || {};
} else {
bin = bin.cachedManagedStorage;
}
} catch(ex) {
} catch {
bin = {};
}
cacheManagedStorage();
@@ -1537,17 +1527,14 @@ vAPI.localStorage = {
start: async function() {
if ( this.cache instanceof Promise ) { return this.cache; }
if ( this.cache instanceof Object ) { return this.cache; }
this.cache = webext.storage.local.get('localStorage').then(bin => {
this.cache = bin instanceof Object &&
bin.localStorage instanceof Object
? bin.localStorage
: {};
this.cache = vAPI.storage.get('localStorage').then(bin => {
this.cache = bin && bin.localStorage || {};
});
return this.cache;
},
clear: function() {
this.cache = {};
return webext.storage.local.set({ localStorage: this.cache });
return vAPI.storage.set({ localStorage: this.cache });
},
getItem: function(key) {
if ( this.cache instanceof Object === false ) {
@@ -1569,7 +1556,7 @@ vAPI.localStorage = {
await this.start();
if ( value === this.cache[key] ) { return; }
this.cache[key] = value;
return webext.storage.local.set({ localStorage: this.cache });
return vAPI.storage.set({ localStorage: this.cache });
},
cache: undefined,
};
@@ -1668,10 +1655,7 @@ vAPI.cloud = (( ) => {
const push = async function(details) {
const { datakey, data, encode } = details;
if (
data === undefined ||
typeof data === 'string' && data === ''
) {
if ( data === undefined || typeof data === 'string' && data === '' ) {
return deleteChunks(datakey, 0);
}
const item = {
@@ -1679,10 +1663,9 @@ vAPI.cloud = (( ) => {
tstamp: Date.now(),
data,
};
const json = JSON.stringify(item);
const encoded = encode instanceof Function
? await encode(json)
: json;
? await encode(item)
: JSON.stringify(item);
// Chunkify taking into account QUOTA_BYTES_PER_ITEM:
// https://developer.chrome.com/extensions/storage#property-sync
@@ -1702,7 +1685,7 @@ vAPI.cloud = (( ) => {
// operation to fail.
try {
await deleteChunks(datakey, chunkCount + 1);
} catch (reason) {
} catch {
}
// Push the data to browser-provided cloud storage.
@@ -1747,13 +1730,16 @@ vAPI.cloud = (( ) => {
i += 1;
}
encoded = encoded.join('');
const json = decode instanceof Function
? await decode(encoded)
: encoded;
let entry = null;
try {
entry = JSON.parse(json);
} catch(ex) {
if ( decode instanceof Function ) {
entry = await decode(encoded) || null;
}
if ( typeof entry === 'string' ) {
entry = JSON.parse(entry);
}
} catch {
}
return entry;
};
@@ -1774,7 +1760,7 @@ vAPI.cloud = (( ) => {
webext.storage.sync.getBytesInUse(keys),
webext.storage.sync.getBytesInUse(null),
]);
} catch(ex) {
} catch {
}
if ( Array.isArray(results) === false ) { return; }
return { used: results[0], total: results[1], max: QUOTA_BYTES };
@@ -1800,3 +1786,26 @@ vAPI.cloud = (( ) => {
})();
/******************************************************************************/
/******************************************************************************/
vAPI.alarms = {
create(...args) {
webext.alarms.create(...args);
},
createIfNotPresent(name, ...args) {
webext.alarms.get(name).then(details => {
if ( details !== undefined ) { return; }
webext.alarms.create(name, ...args);
});
},
async clear(...args) {
return webext.alarms.clear(...args);
},
onAlarm: {
addListener(...args) {
webext.alarms.onAlarm.addListener(...args);
},
},
};
/******************************************************************************/

View File

@@ -1,312 +0,0 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2019-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
// For non-background page
'use strict';
/******************************************************************************/
// Direct messaging connection ability
(( ) => {
// >>>>>>>> start of private namespace
if (
typeof vAPI !== 'object' ||
vAPI.messaging instanceof Object === false ||
vAPI.MessagingConnection instanceof Function
) {
return;
}
const listeners = new Set();
const connections = new Map();
vAPI.MessagingConnection = class {
constructor(handler, details) {
this.messaging = vAPI.messaging;
this.handler = handler;
this.id = details.id;
this.to = details.to;
this.toToken = details.toToken;
this.from = details.from;
this.fromToken = details.fromToken;
this.checkTimer = undefined;
// On Firefox it appears ports are not automatically disconnected
// when navigating to another page.
const ctor = vAPI.MessagingConnection;
if ( ctor.pagehide !== undefined ) { return; }
ctor.pagehide = ( ) => {
for ( const connection of connections.values() ) {
connection.disconnect();
connection.handler(
connection.toDetails('connectionBroken')
);
}
};
window.addEventListener('pagehide', ctor.pagehide);
}
toDetails(what, payload) {
return {
what: what,
id: this.id,
from: this.from,
fromToken: this.fromToken,
to: this.to,
toToken: this.toToken,
payload: payload
};
}
disconnect() {
if ( this.checkTimer !== undefined ) {
clearTimeout(this.checkTimer);
this.checkTimer = undefined;
}
connections.delete(this.id);
const port = this.messaging.getPort();
if ( port === null ) { return; }
port.postMessage({
channel: 'vapi',
msg: this.toDetails('connectionBroken'),
});
}
checkAsync() {
if ( this.checkTimer !== undefined ) {
clearTimeout(this.checkTimer);
}
this.checkTimer = vAPI.setTimeout(
( ) => { this.check(); },
499
);
}
check() {
this.checkTimer = undefined;
if ( connections.has(this.id) === false ) { return; }
const port = this.messaging.getPort();
if ( port === null ) { return; }
port.postMessage({
channel: 'vapi',
msg: this.toDetails('connectionCheck'),
});
this.checkAsync();
}
receive(details) {
switch ( details.what ) {
case 'connectionAccepted':
this.toToken = details.toToken;
this.handler(details);
this.checkAsync();
break;
case 'connectionBroken':
connections.delete(this.id);
this.handler(details);
break;
case 'connectionMessage':
this.handler(details);
this.checkAsync();
break;
case 'connectionCheck':
const port = this.messaging.getPort();
if ( port === null ) { return; }
if ( connections.has(this.id) ) {
this.checkAsync();
} else {
details.what = 'connectionBroken';
port.postMessage({ channel: 'vapi', msg: details });
}
break;
case 'connectionRefused':
connections.delete(this.id);
this.handler(details);
break;
}
}
send(payload) {
const port = this.messaging.getPort();
if ( port === null ) { return; }
port.postMessage({
channel: 'vapi',
msg: this.toDetails('connectionMessage', payload),
});
}
static addListener(listener) {
listeners.add(listener);
vAPI.messaging.getPort(); // Ensure a port instance exists
}
static removeListener(listener) {
listeners.delete(listener);
}
static connectTo(from, to, handler) {
const port = vAPI.messaging.getPort();
if ( port === null ) { return; }
const connection = new vAPI.MessagingConnection(handler, {
id: `${from}-${to}-${vAPI.sessionId}`,
to: to,
from: from,
fromToken: port.name
});
connections.set(connection.id, connection);
port.postMessage({
channel: 'vapi',
msg: {
what: 'connectionRequested',
id: connection.id,
from: from,
fromToken: port.name,
to: to,
}
});
return connection.id;
}
static disconnectFrom(connectionId) {
const connection = connections.get(connectionId);
if ( connection === undefined ) { return; }
connection.disconnect();
}
static sendTo(connectionId, payload) {
const connection = connections.get(connectionId);
if ( connection === undefined ) { return; }
connection.send(payload);
}
static canDestroyPort() {
return listeners.length === 0 && connections.size === 0;
}
static mustDestroyPort() {
if ( connections.size === 0 ) { return; }
for ( const connection of connections.values() ) {
connection.receive({ what: 'connectionBroken' });
}
connections.clear();
}
static canProcessMessage(details) {
if ( details.channel !== 'vapi' ) { return; }
switch ( details.msg.what ) {
case 'connectionAccepted':
case 'connectionBroken':
case 'connectionCheck':
case 'connectionMessage':
case 'connectionRefused': {
const connection = connections.get(details.msg.id);
if ( connection === undefined ) { break; }
connection.receive(details.msg);
return true;
}
case 'connectionRequested':
if ( listeners.length === 0 ) { return; }
const port = vAPI.messaging.getPort();
if ( port === null ) { break; }
let listener, result;
for ( listener of listeners ) {
result = listener(details.msg);
if ( result !== undefined ) { break; }
}
if ( result === undefined ) { break; }
if ( result === true ) {
details.msg.what = 'connectionAccepted';
details.msg.toToken = port.name;
const connection = new vAPI.MessagingConnection(
listener,
details.msg
);
connections.set(connection.id, connection);
} else {
details.msg.what = 'connectionRefused';
}
port.postMessage(details);
return true;
default:
break;
}
}
};
vAPI.messaging.extensions.push(vAPI.MessagingConnection);
// <<<<<<<< end of private namespace
})();
/******************************************************************************/
// Broadcast listening ability
(( ) => {
// >>>>>>>> start of private namespace
if (
typeof vAPI !== 'object' ||
vAPI.messaging instanceof Object === false ||
vAPI.broadcastListener instanceof Object
) {
return;
}
const listeners = new Set();
vAPI.broadcastListener = {
add: function(listener) {
listeners.add(listener);
vAPI.messaging.getPort();
},
remove: function(listener) {
listeners.delete(listener);
},
canDestroyPort() {
return listeners.size === 0;
},
mustDestroyPort() {
listeners.clear();
},
canProcessMessage(details) {
if ( details.broadcast === false ) { return; }
for ( const listener of listeners ) {
listener(details.msg);
}
},
};
vAPI.messaging.extensions.push(vAPI.broadcastListener);
// <<<<<<<< end of private namespace
})();
/******************************************************************************/
/*******************************************************************************
DO NOT:
- Remove the following code
- Add code beyond the following code
Reason:
- https://github.com/gorhill/uBlock/pull/3721
- uBO never uses the return value from injected content scripts
**/
void 0;

View File

@@ -1,6 +1,6 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
uBlock Origin - a comprehensive, efficient content blocker
Copyright (C) 2014-2015 The uBlock Origin authors
Copyright (C) 2014-present Raymond Hill
@@ -22,8 +22,6 @@
// For non-background page
'use strict';
/******************************************************************************/
// https://github.com/chrisaljoudi/uBlock/issues/456
@@ -81,10 +79,9 @@ vAPI.messaging = {
port: null,
portTimer: null,
portTimerDelay: 10000,
extended: undefined,
extensions: [],
msgIdGenerator: 1,
pending: new Map(),
waitStartTime: 0,
shuttingDown: false,
shutdown: function() {
@@ -115,33 +112,16 @@ vAPI.messaging = {
// revisited to isolate the picker dialog DOM from the page DOM.
messageListener: function(details) {
if ( typeof details !== 'object' || details === null ) { return; }
// Response to specific message previously sent
if ( details.msgId !== undefined ) {
const resolver = this.pending.get(details.msgId);
if ( resolver !== undefined ) {
this.pending.delete(details.msgId);
resolver(details.msg);
return;
}
}
// Unhandled messages
this.extensions.every(ext => ext.canProcessMessage(details) !== true);
if ( details.msgId === undefined ) { return; }
const resolver = this.pending.get(details.msgId);
if ( resolver === undefined ) { return; }
this.pending.delete(details.msgId);
resolver(details.msg);
},
messageListenerBound: null,
canDestroyPort: function() {
return this.pending.size === 0 && (
this.extensions.length === 0 ||
this.extensions.every(e => e.canDestroyPort())
);
},
mustDestroyPort: function() {
if ( this.extensions.length === 0 ) { return; }
this.extensions.forEach(e => e.mustDestroyPort());
this.extensions.length = 0;
return this.pending.size === 0;
},
portPoller: function() {
@@ -166,7 +146,6 @@ vAPI.messaging = {
port.onDisconnect.removeListener(this.disconnectListenerBound);
this.port = null;
}
this.mustDestroyPort();
// service pending callbacks
if ( this.pending.size !== 0 ) {
const pending = this.pending;
@@ -186,7 +165,7 @@ vAPI.messaging = {
}
try {
this.port = browser.runtime.connect({name: vAPI.sessionId}) || null;
} catch (ex) {
} catch {
this.port = null;
}
// Not having a valid port at this point means the main process is
@@ -216,13 +195,18 @@ vAPI.messaging = {
// the main process is no longer reachable: memory leaks and bad
// performance become a risk -- especially for long-lived, dynamic
// pages. Guard against this.
if ( this.pending.size > 50 ) {
vAPI.shutdown.exec();
if ( this.pending.size > 64 ) {
if ( (Date.now() - this.waitStartTime) > 60000 ) {
vAPI.shutdown.exec();
}
}
const port = this.getPort();
if ( port === null ) {
return Promise.resolve();
}
if ( this.pending.size === 0 ) {
this.waitStartTime = Date.now();
}
const msgId = this.msgIdGenerator++;
const promise = new Promise(resolve => {
this.pending.set(msgId, resolve);
@@ -230,22 +214,6 @@ vAPI.messaging = {
port.postMessage({ channel, msgId, msg });
return promise;
},
// Dynamically extend capabilities.
//
// https://github.com/uBlockOrigin/uBlock-issues/issues/1571
// Don't use `self` to access `vAPI`.
extend: function() {
if ( this.extended === undefined ) {
this.extended = vAPI.messaging.send('vapi', {
what: 'extendClient'
}).then(( ) =>
typeof vAPI === 'object' && this.extensions.length !== 0
).catch(( ) => {
});
}
return this.extended;
},
};
vAPI.shutdown.add(( ) => {

View File

@@ -1,6 +1,6 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
uBlock Origin - a comprehensive, efficient content blocker
Copyright (C) 2014-2015 The uBlock Origin authors
Copyright (C) 2014-present Raymond Hill
@@ -22,19 +22,14 @@
// For background page or non-background pages
/* global browser */
'use strict';
/******************************************************************************/
/******************************************************************************/
vAPI.T0 = Date.now();
/******************************************************************************/
vAPI.setTimeout = vAPI.setTimeout || self.setTimeout.bind(self);
/******************************************************************************/
vAPI.defer = {
create(callback) {
return new this.Client(callback);
@@ -155,6 +150,9 @@ vAPI.webextFlavor = {
}
};
// https://bugzilla.mozilla.org/show_bug.cgi?id=1858743
// Add support for native `:has()` for Firefox 121+
(( ) => {
const ua = navigator.userAgent;
const flavor = vAPI.webextFlavor;
@@ -165,9 +163,12 @@ vAPI.webextFlavor = {
// This is always true.
soup.add('ublock').add('webext');
soup.add('ipaddress');
// Whether this is a dev build.
if ( /^\d+\.\d+\.\d+\D/.test(browser.runtime.getManifest().version) ) {
const manifest = browser.runtime.getManifest();
const version = manifest.version_name || manifest.version;
if ( /^\d+\.\d+\.\d+\D/.test(version) ) {
soup.add('devbuild');
}
@@ -175,35 +176,27 @@ vAPI.webextFlavor = {
soup.add('mobile');
}
// Asynchronous
if (
browser instanceof Object &&
typeof browser.runtime.getBrowserInfo === 'function'
) {
browser.runtime.getBrowserInfo().then(info => {
flavor.major = parseInt(info.version, 10) || flavor.major;
soup.add(info.vendor.toLowerCase())
.add(info.name.toLowerCase());
dispatch();
});
if ( browser.runtime.getURL('').startsWith('moz-extension://') ) {
soup.add('firefox')
.add('user_stylesheet')
.add('html_filtering');
flavor.major = 91;
}
return;
if ( CSS.supports('selector(a:has(b))') ) {
soup.add('native_css_has');
}
// Synchronous -- order of tests is important
const match = /\bChrom(?:e|ium)\/([\d.]+)/.exec(ua);
if ( match !== null ) {
soup.add('chromium')
.add('user_stylesheet');
flavor.major = parseInt(match[1], 10) || 0;
if ( flavor.major >= 105 ) {
soup.add('native_css_has');
const extensionOrigin = browser.runtime.getURL('');
// Order of tests is important
flavor.isGecko = extensionOrigin.startsWith('moz-extension://');
if ( flavor.isGecko ) {
soup.add('firefox')
.add('user_stylesheet')
.add('html_filtering');
const match = /Firefox\/(\d+)/.exec(ua);
flavor.major = match && parseInt(match[1], 10) || 115;
} else {
const match = /\bChrom(?:e|ium)\/(\d+)/.exec(ua);
if ( match !== null ) {
soup.add('chromium')
.add('user_stylesheet');
}
flavor.major = match && parseInt(match[1], 10) || 120;
}
// Don't starve potential listeners

View File

@@ -1,6 +1,6 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
uBlock Origin - a comprehensive, efficient content blocker
Copyright (C) 2017-present Raymond Hill
This program is free software: you can redistribute it and/or modify
@@ -19,10 +19,6 @@
Home: https://github.com/gorhill/uBlock
*/
'use strict';
/* global HTMLDocument, XMLDocument */
// For background page, auxiliary pages, and content scripts.
/******************************************************************************/

View File

@@ -1,6 +1,6 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
uBlock Origin - a comprehensive, efficient content blocker
Copyright (C) 2014-present Raymond Hill
This program is free software: you can redistribute it and/or modify
@@ -19,22 +19,12 @@
Home: https://github.com/gorhill/uBlock
*/
/* eslint-disable-next-line no-redeclare */
/* globals process */
'use strict';
/******************************************************************************/
import { strict as assert } from 'assert';
import { StaticNetFilteringEngine, enableWASM } from './index.js';
import { mkdir, readFile, writeFile } from 'fs/promises';
import { createRequire } from 'module';
import { readFile, writeFile, mkdir } from 'fs/promises';
import { dirname } from 'path';
import { fileURLToPath } from 'url';
const __dirname = dirname(fileURLToPath(import.meta.url));
import { enableWASM, StaticNetFilteringEngine } from './index.js';
/******************************************************************************/

View File

@@ -17,7 +17,10 @@
"browser_specific_settings": {
"gecko": {
"id": "uBlock0@raymondhill.net",
"strict_min_version": "79.0"
"strict_min_version": "92.0"
},
"gecko_android": {
"strict_min_version": "92.0"
}
},
"commands": {
@@ -40,6 +43,9 @@
},
"toggle-cosmetic-filtering": {
"description": "__MSG_toggleCosmeticFiltering__"
},
"toggle-javascript": {
"description": "__MSG_toggleJavascript__"
}
},
"content_scripts": [
@@ -65,14 +71,25 @@
"https://filterlists.com/*",
"https://forums.lanik.us/*",
"https://github.com/*",
"https://*.github.io/*",
"https://*.letsblock.it/*"
"https://*.github.io/*"
],
"js": [
"/js/scriptlets/subscriber.js"
],
"run_at": "document_idle",
"all_frames": false
},
{
"matches": [
"https://github.com/uBlockOrigin/*",
"https://ublockorigin.github.io/*",
"https://*.reddit.com/r/uBlockOrigin/*"
],
"js": [
"/js/scriptlets/updater.js"
],
"run_at": "document_idle",
"all_frames": false
}
],
"default_locale": "en",
@@ -82,7 +99,8 @@
"32": "img/ublock.svg",
"48": "img/ublock.svg",
"64": "img/ublock.svg",
"96": "img/ublock.svg"
"96": "img/ublock.svg",
"128": "img/ublock.svg"
},
"manifest_version": 2,
"name": "uBlock Origin",
@@ -91,6 +109,7 @@
"open_in_tab": true
},
"permissions": [
"alarms",
"dns",
"menus",
"privacy",

View File

@@ -1,6 +1,6 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
uBlock Origin - a comprehensive, efficient content blocker
Copyright (C) 2017-present Raymond Hill
This program is free software: you can redistribute it and/or modify
@@ -19,12 +19,6 @@
Home: https://github.com/gorhill/uBlock
*/
/* globals browser */
'use strict';
/******************************************************************************/
import {
domainFromHostname,
hostnameFromNetworkURL,
@@ -32,26 +26,20 @@ import {
/******************************************************************************/
// Canonical name-uncloaking feature.
let cnameUncloakEnabled = browser.dns instanceof Object;
let cnameUncloakProxied = false;
// https://github.com/uBlockOrigin/uBlock-issues/issues/911
// We detect here whether network requests are proxied, and if so,
// de-aliasing of hostnames will be disabled to avoid possible
// DNS leaks.
const proxyDetector = function(details) {
if ( details.proxyInfo instanceof Object ) {
cnameUncloakEnabled = false;
proxyDetectorTryCount = 0;
const dnsAPI = browser.dns || {
resolve() {
return Promise.resolve();
}
if ( proxyDetectorTryCount === 0 ) {
browser.webRequest.onHeadersReceived.removeListener(proxyDetector);
return;
}
proxyDetectorTryCount -= 1;
};
let proxyDetectorTryCount = 0;
const isPromise = o => o instanceof Promise;
const isResolvedObject = o => o instanceof Object &&
o instanceof Promise === false;
const reIPv4 = /^\d+\.\d+\.\d+\.\d+$/
const skipDNS = proxyInfo =>
proxyInfo && (proxyInfo.proxyDNS || proxyInfo.type?.charCodeAt(0) === 0x68 /* h */);
/******************************************************************************/
// Related issues:
// - https://github.com/gorhill/uBlock/issues/1327
@@ -64,26 +52,27 @@ vAPI.Net = class extends vAPI.Net {
constructor() {
super();
this.pendingRequests = [];
this.canUncloakCnames = browser.dns instanceof Object;
this.cnames = new Map([ [ '', null ] ]);
this.dnsList = []; // ring buffer
this.dnsWritePtr = 0; // next write pointer in ring buffer
this.dnsMaxCount = 512; // max size of ring buffer
this.dnsDict = new Map(); // hn to index in ring buffer
this.dnsCacheTTL = 600; // TTL in seconds
this.canUncloakCnames = true;
this.cnameUncloakEnabled = true;
this.cnameIgnoreList = null;
this.cnameIgnore1stParty = true;
this.cnameIgnoreExceptions = true;
this.cnameIgnoreRootDocument = true;
this.cnameMaxTTL = 120;
this.cnameReplayFullURL = false;
this.cnameFlushTime = Date.now() + this.cnameMaxTTL * 60000;
this.dnsResolveEnabled = true;
}
setOptions(options) {
super.setOptions(options);
if ( 'cnameUncloakEnabled' in options ) {
cnameUncloakEnabled =
this.canUncloakCnames &&
this.cnameUncloakEnabled =
options.cnameUncloakEnabled !== false;
}
if ( 'cnameUncloakProxied' in options ) {
cnameUncloakProxied = options.cnameUncloakProxied === true;
}
if ( 'cnameIgnoreList' in options ) {
this.cnameIgnoreList =
this.regexFromStrList(options.cnameIgnoreList);
@@ -100,54 +89,41 @@ vAPI.Net = class extends vAPI.Net {
this.cnameIgnoreRootDocument =
options.cnameIgnoreRootDocument !== false;
}
if ( 'cnameMaxTTL' in options ) {
this.cnameMaxTTL = options.cnameMaxTTL || 120;
}
if ( 'cnameReplayFullURL' in options ) {
this.cnameReplayFullURL = options.cnameReplayFullURL === true;
}
this.cnames.clear(); this.cnames.set('', null);
this.cnameFlushTime = Date.now() + this.cnameMaxTTL * 60000;
// https://github.com/uBlockOrigin/uBlock-issues/issues/911
// Install/remove proxy detector.
if ( vAPI.webextFlavor.major < 80 ) {
const wrohr = browser.webRequest.onHeadersReceived;
if ( cnameUncloakEnabled === false || cnameUncloakProxied ) {
if ( wrohr.hasListener(proxyDetector) ) {
wrohr.removeListener(proxyDetector);
}
} else if ( wrohr.hasListener(proxyDetector) === false ) {
wrohr.addListener(
proxyDetector,
{ urls: [ '*://*/*' ] },
[ 'blocking' ]
);
}
proxyDetectorTryCount = 32;
if ( 'dnsCacheTTL' in options ) {
this.dnsCacheTTL = options.dnsCacheTTL;
}
if ( 'dnsResolveEnabled' in options ) {
this.dnsResolveEnabled = options.dnsResolveEnabled === true;
}
this.dnsList.fill(null);
this.dnsDict.clear();
}
normalizeDetails(details) {
const type = details.type;
normalizeDetails(details) {
// https://github.com/uBlockOrigin/uBlock-issues/issues/3379
if ( skipDNS(details.proxyInfo) && details.ip === '0.0.0.0' ) {
details.ip = null;
}
const type = details.type;
if ( type === 'imageset' ) {
details.type = 'image';
return;
}
if ( type !== 'object' ) { return; }
// Try to extract type from response headers if present.
if ( details.responseHeaders === undefined ) { return; }
const ctype = this.headerValue(details.responseHeaders, 'content-type');
// https://github.com/uBlockOrigin/uBlock-issues/issues/345
// Re-categorize an embedded object as a `sub_frame` if its
// content type is that of a HTML document.
if ( type === 'object' && Array.isArray(details.responseHeaders) ) {
for ( const header of details.responseHeaders ) {
if ( header.name.toLowerCase() === 'content-type' ) {
if ( header.value.startsWith('text/html') ) {
details.type = 'sub_frame';
}
break;
}
}
if ( ctype === 'text/html' ) {
details.type = 'sub_frame';
}
}
denormalizeTypes(types) {
if ( types.length === 0 ) {
return Array.from(this.validTypes);
@@ -166,77 +142,21 @@ vAPI.Net = class extends vAPI.Net {
}
return Array.from(out);
}
canonicalNameFromHostname(hn) {
const cnRecord = this.cnames.get(hn);
if ( cnRecord !== undefined && cnRecord !== null ) {
return cnRecord.cname;
}
}
processCanonicalName(hn, cnRecord, details) {
if ( cnRecord === null ) { return; }
if ( cnRecord.isRootDocument ) { return; }
const hnBeg = details.url.indexOf(hn);
if ( hnBeg === -1 ) { return; }
const oldURL = details.url;
let newURL = oldURL.slice(0, hnBeg) + cnRecord.cname;
const hnEnd = hnBeg + hn.length;
if ( this.cnameReplayFullURL ) {
newURL += oldURL.slice(hnEnd);
} else {
const pathBeg = oldURL.indexOf('/', hnEnd);
if ( pathBeg !== -1 ) {
newURL += oldURL.slice(hnEnd, pathBeg + 1);
}
}
details.url = newURL;
details.aliasURL = oldURL;
return super.onBeforeSuspendableRequest(details);
}
recordCanonicalName(hn, record, isRootDocument) {
if ( (this.cnames.size & 0b111111) === 0 ) {
const now = Date.now();
if ( now >= this.cnameFlushTime ) {
this.cnames.clear(); this.cnames.set('', null);
this.cnameFlushTime = now + this.cnameMaxTTL * 60000;
}
}
let cname =
typeof record.canonicalName === 'string' &&
record.canonicalName !== hn
? record.canonicalName
: '';
if (
cname !== '' &&
this.cnameIgnore1stParty &&
domainFromHostname(cname) === domainFromHostname(hn)
) {
cname = '';
}
if (
cname !== '' &&
this.cnameIgnoreList !== null &&
this.cnameIgnoreList.test(cname)
) {
cname = '';
}
const cnRecord = cname !== '' ? { cname, isRootDocument } : null;
this.cnames.set(hn, cnRecord);
return cnRecord;
if ( hn === '' ) { return; }
const dnsEntry = this.dnsFromCache(hn, true);
if ( isResolvedObject(dnsEntry) === false ) { return; }
return dnsEntry.cname;
}
regexFromStrList(list) {
if (
typeof list !== 'string' ||
list.length === 0 ||
list === 'unset' ||
browser.dns instanceof Object === false
) {
if ( typeof list !== 'string' || list.length === 0 || list === 'unset' ) {
return null;
}
if ( list === '*' ) {
return /^./;
}
if ( list === '*' ) { return /^./; }
return new RegExp(
'(?:^|\.)(?:' +
'(?:^|\\.)(?:' +
list.trim()
.split(/\s+/)
.map(a => a.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'))
@@ -244,9 +164,14 @@ vAPI.Net = class extends vAPI.Net {
')$'
);
}
onBeforeSuspendableRequest(details) {
const hn = hostnameFromNetworkURL(details.url);
const dnsEntry = this.dnsFromCache(hn);
if ( isResolvedObject(dnsEntry) && dnsEntry.ip ) {
details.ip = dnsEntry.ip;
}
const r = super.onBeforeSuspendableRequest(details);
if ( cnameUncloakEnabled === false ) { return r; }
if ( r !== undefined ) {
if (
r.cancel === true ||
@@ -256,24 +181,144 @@ vAPI.Net = class extends vAPI.Net {
return r;
}
}
const hn = hostnameFromNetworkURL(details.url);
const cnRecord = this.cnames.get(hn);
if ( cnRecord !== undefined ) {
return this.processCanonicalName(hn, cnRecord, details);
if ( isResolvedObject(dnsEntry) ) {
return this.onAfterDNSResolution(hn, details, dnsEntry);
}
const documentUrl = details.documentUrl || details.url;
const isRootDocument = this.cnameIgnoreRootDocument &&
hn === hostnameFromNetworkURL(documentUrl);
return browser.dns.resolve(hn, [ 'canonical_name' ]).then(
rec => {
const cnRecord = this.recordCanonicalName(hn, rec, isRootDocument);
return this.processCanonicalName(hn, cnRecord, details);
},
( ) => {
this.cnames.set(hn, null);
}
);
if ( skipDNS(details.proxyInfo) ) { return; }
if ( this.dnsShouldResolve(hn) === false ) { return; }
const promise = dnsEntry || this.dnsResolve(hn, details);
return promise.then(( ) => this.onAfterDNSResolution(hn, details));
}
onAfterDNSResolution(hn, details, dnsEntry) {
if ( dnsEntry === undefined ) {
dnsEntry = this.dnsFromCache(hn);
if ( isResolvedObject(dnsEntry) === false ) { return; }
}
let proceed = false;
if ( dnsEntry.cname && this.cnameUncloakEnabled ) {
const newURL = this.uncloakURL(hn, dnsEntry, details);
if ( newURL ) {
details.aliasURL = details.url;
details.url = newURL;
proceed = true;
}
}
if ( dnsEntry.ip && details.ip !== dnsEntry.ip ) {
details.ip = dnsEntry.ip
proceed = true;
}
if ( proceed === false ) { return; }
// Must call method on base class
return super.onBeforeSuspendableRequest(details);
}
dnsToCache(hn, record, details) {
const dnsEntry = { hn, until: Date.now() + this.dnsCacheTTL * 1000 };
if ( record ) {
const cname = this.cnameFromRecord(hn, record, details);
if ( cname ) { dnsEntry.cname = cname; }
const ip = this.ipFromRecord(record);
if ( ip ) { dnsEntry.ip = ip; }
}
this.dnsSetCache(-1, hn, dnsEntry);
return dnsEntry;
}
dnsFromCache(hn, passive = false) {
const i = this.dnsDict.get(hn);
if ( i === undefined ) { return; }
if ( isPromise(i) ) { return i; }
const dnsEntry = this.dnsList[i];
if ( dnsEntry !== null && dnsEntry.hn === hn ) {
if ( passive || dnsEntry.until >= Date.now() ) {
return dnsEntry;
}
}
this.dnsSetCache(i);
}
dnsSetCache(i, hn, after) {
if ( i < 0 ) {
const j = this.dnsDict.get(hn);
if ( typeof j === 'number' ) {
this.dnsList[j] = after;
return;
}
i = this.dnsWritePtr++;
this.dnsWritePtr %= this.dnsMaxCount;
}
const before = this.dnsList[i];
if ( before ) {
this.dnsDict.delete(before.hn);
}
if ( after ) {
this.dnsDict.set(hn, i);
this.dnsList[i] = after;
} else {
if ( hn ) { this.dnsDict.delete(hn); }
this.dnsList[i] = null;
}
}
dnsShouldResolve(hn) {
if ( this.dnsResolveEnabled === false ) { return false; }
if ( hn === '' ) { return false; }
const c0 = hn.charCodeAt(0);
if ( c0 === 0x5B /* [ */ ) { return false; }
if ( c0 > 0x39 /* 9 */ ) { return true; }
return reIPv4.test(hn) === false;
}
dnsResolve(hn, details) {
const promise = dnsAPI.resolve(hn, [ 'canonical_name' ]).then(
rec => this.dnsToCache(hn, rec, details),
( ) => this.dnsToCache(hn)
);
this.dnsDict.set(hn, promise);
return promise;
}
cnameFromRecord(hn, record, details) {
const cn = record.canonicalName;
if ( cn === undefined ) { return; }
if ( cn === hn ) { return; }
if ( this.cnameIgnore1stParty ) {
if ( domainFromHostname(cn) === domainFromHostname(hn) ) { return; }
}
if ( this.cnameIgnoreList !== null ) {
if ( this.cnameIgnoreList.test(cn) ) { return; }
}
if ( this.cnameIgnoreRootDocument ) {
const origin = hostnameFromNetworkURL(details.documentUrl || details.url);
if ( hn === origin ) { return; }
}
return cn;
}
uncloakURL(hn, dnsEntry, details) {
const hnBeg = details.url.indexOf(hn);
if ( hnBeg === -1 ) { return; }
const oldURL = details.url;
const newURL = oldURL.slice(0, hnBeg) + dnsEntry.cname;
const hnEnd = hnBeg + hn.length;
if ( this.cnameReplayFullURL ) {
return newURL + oldURL.slice(hnEnd);
}
const pathBeg = oldURL.indexOf('/', hnEnd);
if ( pathBeg !== -1 ) {
return newURL + oldURL.slice(hnEnd, pathBeg + 1);
}
return newURL;
}
ipFromRecord(record) {
const { addresses } = record;
if ( Array.isArray(addresses) === false ) { return; }
if ( addresses.length === 0 ) { return; }
return addresses.join('\n');
}
suspendOneRequest(details) {
const pending = {
details: Object.assign({}, details),
@@ -286,6 +331,7 @@ vAPI.Net = class extends vAPI.Net {
this.pendingRequests.push(pending);
return pending.promise;
}
unsuspendAllRequests(discard = false) {
const pendingRequests = this.pendingRequests;
this.pendingRequests = [];
@@ -297,6 +343,7 @@ vAPI.Net = class extends vAPI.Net {
);
}
}
static canSuspend() {
return true;
}
@@ -304,25 +351,77 @@ vAPI.Net = class extends vAPI.Net {
/******************************************************************************/
vAPI.scriptletsInjector = ((doc, details) => {
let script, url;
try {
const blob = new self.Blob(
[ details.scriptlets ],
{ type: 'text/javascript; charset=utf-8' }
);
url = self.URL.createObjectURL(blob);
script = doc.createElement('script');
script.async = false;
script.src = url;
(doc.head || doc.documentElement || doc).append(script);
self.uBO_scriptletsInjected = details.filters;
} catch (ex) {
}
if ( url ) {
if ( script ) { script.remove(); }
self.URL.revokeObjectURL(url);
}
}).toString();
vAPI.scriptletsInjector = (( ) => {
const parts = [
'(',
function(details) {
if ( self.uBO_scriptletsInjected !== undefined ) { return; }
const doc = document;
const { location } = doc;
if ( location === null ) { return; }
const { hostname } = location;
if ( hostname !== '' && details.hostname !== hostname ) { return; }
// Use a page world sentinel to verify that execution was
// successful
const { sentinel } = details;
let script;
try {
const code = [
`self['${sentinel}'] = true;`,
details.scriptlets,
].join('\n');
script = doc.createElement('script');
script.appendChild(doc.createTextNode(code));
(doc.head || doc.documentElement).appendChild(script);
} catch {
}
if ( script ) {
script.remove();
script.textContent = '';
script = undefined;
}
if ( self.wrappedJSObject[sentinel] ) {
delete self.wrappedJSObject[sentinel];
self.uBO_scriptletsInjected = details.filters;
return 0;
}
// https://github.com/uBlockOrigin/uBlock-issues/issues/235
// Fall back to blob injection if execution through direct
// injection failed
let url;
try {
const blob = new self.Blob(
[ details.scriptlets ],
{ type: 'text/javascript; charset=utf-8' }
);
url = self.URL.createObjectURL(blob);
script = doc.createElement('script');
script.async = false;
script.src = url;
(doc.head || doc.documentElement || doc).append(script);
self.uBO_scriptletsInjected = details.filters;
} catch {
}
if ( url ) {
if ( script ) { script.remove(); }
self.URL.revokeObjectURL(url);
}
return 0;
}.toString(),
')(',
'json-slot',
');',
];
const jsonSlot = parts.indexOf('json-slot');
return (hostname, details) => {
parts[jsonSlot] = JSON.stringify({
hostname,
scriptlets: details.mainWorld,
filters: details.filters,
sentinel: vAPI.generateSecret(3),
});
return parts.join('');
};
})();
/******************************************************************************/

View File

@@ -1,6 +1,6 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
uBlock Origin - a comprehensive, efficient content blocker
Copyright (C) 2019-present Raymond Hill
This program is free software: you can redistribute it and/or modify
@@ -19,6 +19,4 @@
Home: https://github.com/gorhill/uBlock
*/
'use strict';
export default browser;

View File

@@ -7,17 +7,21 @@ The following assumes a linux environment.
1. Open Bash console
2. `git clone https://github.com/gorhill/uBlock.git`
3. `cd uBlock`
4. `make mv3-[platform]`, where `[platform]` is either `chromium` or `firefox`
5. This will fully build uBO Lite, and during the process filter lists will be downloaded from their respective remote servers
4. `git submodule init`
5. `git submodule update`
6. `make mv3-[platform]`, where `[platform]` is either `chromium`, `edge`, `firefox`, or `safari`
7. This will fully build uBO Lite, and during the process filter lists will be downloaded from their respective remote servers
Upon completion of the script, the resulting extension package will become present in:
- Chromium: `dist/build/uBOLite.chromium`
- Firefox: `dist/build/uBOLite.firefox`
- Edge: `dist/build/uBOLite.edge`
- Firefox: `dist/build/uBOLite.firefox`
- Safari: `dist/build/uBOLite.safari`
The folder `dist/build/mv3-data` will cache data fetched from remote server, so as to avoid fetching repeatedly from remote server with repeated build commands. Remove `dist/build/mv3-data` if you want to build with latest versions of filter lists.
The folder `dist/build/mv3-data` will cache data fetched from remote servers, so as to avoid fetching repeatedly from remote servers with repeated build commands. Use `make cleanassets` to remove all locally cached filter lists if you want to build with latest versions of filter lists.
The file `dist/build/mv3-data/log.txt` will contain information about what happened during the build process.
The file `dist/build/uBOLite.[platform]/log.txt` will contain information about what happened during the build process.
The entry in the `Makefile` which implement the build process is `tools/make-mv3.sh [platform]`.[1] This Bash script copy various files from uBlock Origin branch and MV3-specific branch into a single folder which will be the final extension package.
@@ -27,5 +31,4 @@ All the final rulesets are present in the `dist/build/uBOLite.[platform]/ruleset
---
[1] https://github.com/gorhill/uBlock/blob/c4d324362fdb95ff8ef20f0b18f42f0eec955433/tools/make-mv3.sh
[2] https://github.com/gorhill/uBlock/blob/c4d324362fdb95ff8ef20f0b18f42f0eec955433/tools/make-mv3.sh#L103
[1] https://github.com/gorhill/uBlock/blob/c4d324362fdb95ff8ef20f0b18f42f0eec955433/tools/make-mv3.sh<br>

View File

@@ -12,12 +12,24 @@
"service_worker": "/js/background.js",
"type": "module"
},
"commands": {
"enter-zapper-mode": {
"description": "__MSG_zapperTipEnter__"
},
"enter-picker-mode": {
"description": "__MSG_pickerTipEnter__"
}
},
"declarative_net_request": {
"rule_resources": [
]
},
"default_locale": "en",
"description": "__MSG_extShortDesc__",
"host_permissions": [
"<all_urls>"
],
"incognito": "split",
"icons": {
"16": "img/icon_16.png",
"32": "img/icon_32.png",
@@ -25,12 +37,9 @@
"128": "img/icon_128.png"
},
"manifest_version": 3,
"minimum_chrome_version": "105.0",
"minimum_chrome_version": "122.0",
"name": "__MSG_extName__",
"options_page": "dashboard.html",
"optional_host_permissions": [
"<all_urls>"
],
"permissions": [
"activeTab",
"declarativeNetRequest",
@@ -42,5 +51,42 @@
"managed_schema": "managed_storage.json"
},
"version": "1.0",
"web_accessible_resources": []
"web_accessible_resources": [
{
"resources": [
"/strictblock.html"
],
"matches": [
"<all_urls>"
],
"use_dynamic_url": true
},
{
"resources": [
"/zapper-ui.html"
],
"matches": [
"<all_urls>"
],
"use_dynamic_url": true
},
{
"resources": [
"/picker-ui.html"
],
"matches": [
"<all_urls>"
],
"use_dynamic_url": true
},
{
"resources": [
"/unpicker-ui.html"
],
"matches": [
"<all_urls>"
],
"use_dynamic_url": true
}
]
}

View File

@@ -1,30 +1,9 @@
## Description
**uBO Lite** (uBOL), a **permission-less** [MV3 API-based](https://developer.chrome.com/docs/extensions/mv3/intro/) content blocker.
**uBO Lite** (uBOL), an efficient [MV3 API-based](https://developer.chrome.com/docs/extensions/mv3/intro/) content blocker.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is [performed reliably](https://developer.chrome.com/docs/extensions/reference/scripting/#method-registerContentScripts) by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read/modify data" [permission](https://developer.chrome.com/docs/extensions/mv3/declare_permissions/) at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read/modify data" permissions at install time. <details><summary>**However, [...]**</summary>
uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using declarative cosmetic and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
![uBOL's popup panel: no permission](https://user-images.githubusercontent.com/585534/195468156-d7e63ab9-abfa-443c-a8f6-e646a29b801e.png)
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request:
![uBOL's popup panel: browser warning](https://user-images.githubusercontent.com/585534/195342593-2b82b740-70a3-4507-a0e5-d7aee803b286.png)
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site:
![uBOL's popup panel: permissions to inject content](https://user-images.githubusercontent.com/585534/195342612-85d109d9-9006-4eb5-95a5-fec8a4f233ea.png)
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to modify and read data on all websites:
![uBOL's options: Default filtering mode](https://user-images.githubusercontent.com/585534/195343335-a0aa103e-621e-4137-9bcf-9821dc881be1.png)
</details>
The default ruleset corresponds to at least uBlock Origin's default filterset:
- uBlock Origin's built-in filter lists
@@ -33,9 +12,3 @@ The default ruleset corresponds to at least uBlock Origin's default filterset:
- Peter Lowes Ad and tracking server list
You can add more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) هو مانع محتوى يعتمد على MV3.
تتوافق مجموعة القواعد الافتراضية مع مجموعة عوامل التصفية الافتراضية لـ uBlock Origin:
@@ -7,30 +7,6 @@ uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
- الخصوصية السهلة
- قائمة خادم الإعلانات والتتبع لبيتر لوي
يمكنك إضافة المزيد من القواعد من خلال زيارة صفحة الخيارات ومن ثم أنقر على رمز _Cogs_ في اللوحة المنبثقة.
يمكنك تفعيل المزيد من مجموعات القواعد من خلال زيارة صفحة الخيارات - انقر على أيقونة _الترس_ في لوحة الإشعارات.
uBOL صريح تمامًا، مما يعني أنه لا تحتاج إلى uBOL بشكل دائم لحدوث تصفية المحتوى، يتم إجراء تصفية المحتوى من خلال إضافة CSS/JS بشكل موثوق به بواسطة المتصفح نفسه بدلًا من الإضافة.
هذا يعني أن uBOL نفسه لا يستهلك موارد وحدة المعالجة المركزية/الذاكرة أثناء استمراره في حظر المحتوى. عملية عامل الخدمة في uBOL مطلوبة _فقط_ عند التفاعل مع اللوحة المنبثقة أو صفحة الخيارات.
لا يتطلب uBOL صلاحية واسعة «لقراءة البيانات وتعديلها» في وقت التثبيت، وبالتالي فإن قدراته محدودة مقارنة بـ uBlock Origin أو إضافات حظر الإعلانات الأخرى التي تتطلب صلاحية واسعة «قراءة البيانات وتعديلها» في وقت التثبيت.
ومع ذلك، يسمح لك uBOL "بوضوح" بمنح صلاحيات موسعة على مواقع محددة من اختيارك حتى يتمكن من التصفية بشكل أفضل على تلك المواقع باستخدام التصفية التجميلية وإضافة النص.
لمنح صلاحيات موسعة على موقع معين، افتح اللوحة المنبثقة واختر وضع التصفية إما الأمثل أو الكامل.
سيحذرك المتصفح من مخاطر منح صلاحيات إضافية التي يطلبها الامتداد على الموقع الحالي، وسيتعين عليك إختيار بما إذا كنت تقبل الطلب أو ترفضه.
إذا قبلت طلب uBOL بالحصول على صلاحيات إضافية على الموقع الحالي، فستتمكن من تصفية المحتوى بشكل أفضل للموقع الحالي.
بإمكانك اختيار وضع التصفية الافتراضية من خلال صفحة خيارات uBOL. إذا اخترت الوضع الأمثل أو الكامل باعتباره الوضع الافتراضي، فستحتاج إلى منح uBOL الإذن لقراءة البيانات وتعديلها على جميع مواقع الويب.
ضع في اعتبارك أن هذا لا يزال عملًا قيد التنفيذ، هذه هي الأهداف النهائية:
لا يمكنك تحديد الأذونات المستخدمة لاحقًا في التثبيت، تحديدك للأذونات سيكون خلال زيارتك لكل موقع.
تقريري تمامًا للموثوقية ولكفاءة وحدة المعالجة المركزية/الذاكرة.
uBOL صريح تمامًا، مما يعني أنه لا تحتاج إلى uBOL بشكل دائم لحدوث تصفية المحتوى، يتم إجراء تصفية المحتوى من خلال إضافة CSS/JS بشكل موثوق به بواسطة المتصفح نفسه بدلًا من الإضافة. هذا يعني أن uBOL نفسه لا يستهلك موارد وحدة المعالجة المركزية/الذاكرة أثناء استمراره في حظر المحتوى.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) is an MV3-based content blocker.
Defolt qaydalar dəsti uBlock Origin-in defolt filtr dəstinə uyğundur:
@@ -7,24 +7,6 @@ Defolt qaydalar dəsti uBlock Origin-in defolt filtr dəstinə uyğundur:
- EasyPrivacy
- Peter Lowe-un Reklam və izləyici server siyahısı
You can add more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.

View File

@@ -1,30 +1,12 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) гэта базаваны на MV3 блакавальнік змесціва.
The default ruleset corresponds to uBlock Origin's default filterset:
Прадвызначаны набор правіл адпавядае тыпавому набору фільтраў uBlock Origin:
- uBlock Origin's built-in filter lists
- Убудаваныя спісы фільтраў uBlock Origin
- EasyList
- EasyPrivacy
- Peter Lowes Ad and tracking server list
- Спіс сервераў з рэкламай і адсочвання ад Peter Lowe
You can add more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
Вы можаце ўключыць больш набораў правіл праз старонку налад -- націсніце на значок _Шасцярэнькі_ на ўсплывальнай панэлі.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.
uBOL цалкам дэкларатыўны, то-бок не мае неабходнасці ў сталым uBOL працэсе дзеля фільтрацыі, а фільтрацыя змесціва на аснове інʼекцыі CSS/JS надзейна выконваецца пераважна самім браўзерам замест пашырэння. Гэта значыць, што uBOL не спажывае рэсурсаў працэсара/памяці пры блакаванні зместу -- службовы працэс uBOL патрэбны _толькі_ падчас узаемадзеяння з усплывальнай панэллю або наладамі.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) е блокер за съдържание *без разрешения*, базиран на MV3.
uBO Lite (uBOL) е блокер за съдържание, базиран на MV3.
Наборът от правила по подразбиране съответства на набора от филтри по подразбиране на uBlock Origin:
@@ -7,24 +7,6 @@ uBO Lite (uBOL) е блокер за съдържание *без разреше
- EasyPrivacy
- Списък със сървъри на Peter Lowe за реклами и проследяване
Можете да добавите още набори от правила, като посетите страницата с опции щракнете върху иконата _зъбно колело_ в изскачащия панел.
Можете да включите още набори от правила, като посетите страницата с опции щракнете върху иконата зъбно колело в изскачащия панел.
uBOL е изцяло декларативен, което означава, че няма нужда от постоянен процес на uBOL за филтриране, а филтрирането на съдържание, базирано на инжектиране на CSS/JS, се извършва надеждно от самия браузър, а не от разширението. Това означава, че самият uBOL не консумира ресурси на процесора/паметта, докато тече блокирането на съдържанието работният процес на услугата на uBOL е необходим _само_ когато взаимодействате с изскачащия панел или страниците с опции.
uBOL не изисква широко разрешение за "четене и промяна на данни" по време на инсталиране, поради което възможностите му са ограничени в сравнение с uBlock Origin или други блокери на съдържание, изискващи широко разрешение за "четене и промяна на данни" по време на инсталиране.
Въпреки това uBOL ви позволява да предоставите *изрично* разширени разрешения за определени сайтове по ваш избор, за да може да филтрира по-добре тези сайтове, като използва козметично филтриране и инжектиране на скриптове.
За да предоставите разширени разрешения за даден сайт, отворете изскачащия панел и изберете по-висок режим на филтриране, например Оптимален или Пълен.
След това браузърът ще ви предупреди за последиците от предоставянето на допълнителните разрешения, поискани от разширението, за текущия сайт и ще трябва да кажете на браузъра дали приемате или отхвърляте искането.
Ако приемете искането на uBOL за допълнителни разрешения за текущия сайт, той ще може да филтрира по-добре съдържанието на текущия сайт.
Можете да зададете режима на филтриране по подразбиране от страницата с опции на uBOL. Ако изберете оптимален или пълен режим по подразбиране, ще трябва да предоставите на uBOL разрешение за четене и промяна на данни във всички уебсайтове.
Имайте предвид, че това все още е в процес на разработка с тези крайни цели:
- По време на инсталацията няма широки разрешения за хоста разширените разрешения се предоставят изрично от потребителя за всеки сайт.
- Изцяло декларативен за надеждност и ефективност на процесора/паметта.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) হল একটি *অনুমতি-হীন* MV3-ভিত্তিক কনটেন্ট ব্লকার
uBO Lite (uBOL) হল একটি ম্যানিফেস্ট ভার্সন ৩ ভিত্তিক কনটেন্ট ব্লকার
পূর্ব নির্ধারিত নিয়ম সেট uBlock অরিজিনের ডিফল্ট ফিল্টারসেটের সাথে মিলে যায়:
@@ -7,24 +7,6 @@ uBO Lite (uBOL) হল একটি *অনুমতি-হীন* MV3-ভিত
- সহজ গোপনীয়তা
- পিটার লো এর বিজ্ঞাপন এবং ট্র্যাকিং সার্ভার তালিকা
আপনি অপশন পেজে গিয়ে আরও নিয়ম সেট যোগ করতে পারেন -- পপআপ প্যানেলে _Cogs_ আইকনে ক্লিক করুন
তুমি অপশন পাতায় গিয়ে আরও নিয়ম যোগ করতে পার -- পপআপ প্যানেলে _গিয়ার_ আইকনে ক্লিক কর
uBOL সম্পূর্ণরূপে ঘোষণামূলক, অর্থাৎ ফিল্টারিং করতে একটি স্থায়ী uBOL প্রক্রিয়ার প্রয়োজন নেই, এবং CSS/JS ইনজেকশন-ভিত্তিক বিষয়বস্তু ফিল্টারিং এক্সটেনশনের পরিবর্তে ব্রাউজার নিজেই নির্ভরযোগ্যভাবে এই কাজ করে থাকে। এর মানে হল যে কন্টেন্ট ব্লকিং চলমান থাকা অবস্থায় uBOL নিজেই CPU/মেমরি রিসোর্স ব্যবহার করে না -- uBOL-এর পরিষেবার প্রক্রিয়ার প্রয়োজন শুধুমাত্র_ যখন আপনি পপআপ প্যানেল বা অপশন পেজগুলির সাথে ইন্টারঅ্যাক্ট করেন।
uBOL-এর ইন্সটল করার সময় বিস্তৃত "পড়ার ও ডেটা পরিবর্তন করার" অনুমতির প্রয়োজন হয় না, তাই ইউব্লক অরিজিন বা অন্যান্য কনটেন্ট ব্লকের তুলনায় এটির সীমিত ক্ষমতা বাক্সের বাইরে রয়েছে যার জন্য ইন্সটল করার সময় বিস্তৃত "ডেটা পড়ুন এবং পরিবর্তন করুন" অনুমতি প্রয়োজন।
যাইহোক, uBOL আপনাকে আপনার পছন্দের নির্দিষ্ট সাইটে *স্পষ্টভাবে* বর্ধিত অনুমতি প্রদান করে যাতে এটি কসমেটিক ফিল্টারিং এবং স্ক্রিপ্টলেট ইনজেকশন ব্যবহার করে সেই সাইটগুলিতে আরও ভাল ফিল্টার করতে পারে।
একটি সাইটে বর্ধিত অনুমতি প্রদানের জন্য, পপআপ প্যানেল খুলুন এবং একটি উচ্চতর ফিল্টারিং মোড বাছাই করুন যেমন অপটিমাল বা কমপ্লিট।
ব্রাউজারটি তখন বর্তমান সাইটে এক্সটেনশন দ্বারা অনুরোধ করা অতিরিক্ত অনুমতি প্রদানের প্রভাব সম্পর্কে আপনাকে সতর্ক করবে এবং আপনি অনুরোধটি গ্রহণ করবেন বা প্রত্যাখ্যান করবেন কিনা তা আপনার ব্রাউজারকে বলতে হবে।
আপনি যদি বর্তমান সাইটে অতিরিক্ত অনুমতির জন্য uBOL-এর অনুরোধ গ্রহণ করেন, তাহলে এটি বর্তমান সাইটের জন্য আরও ভালভাবে ফিল্টার করতে সক্ষম হবে।
আপনি uBOL এর বিকল্প পৃষ্ঠা থেকে ডিফল্ট ফিল্টারিং মোড সেট করতে পারেন। আপনি যদি অপটিমাল বা কমপ্লিট মোডটিকে ডিফল্ট হিসেবে বেছে নেন, তাহলে আপনাকে uBOL-কে সমস্ত ওয়েবসাইটের ডেটা পড়তে এবং পরিবর্তন করার অনুমতি দিতে হবে।
মনে রাখবেন এই শেষ লক্ষ্যগুলির ফলাফলের সাথে এখনও সংস্করণ কাজ চলছে:
- ইনস্টল করার সময় কোনও বিস্তৃত অনুমতি নেই -- বর্ধিত অনুমতিগুলি প্রতি-সাইট ভিত্তিতে ব্যবহারকারীর দ্বারা স্পষ্টভাবে প্র্রদান করা হয়।
- নির্ভরযোগ্যতা এবং CPU/মেমরি দক্ষতার জন্য সম্পূর্ণরূপে পূর্বঘোষণামুূলক।

View File

@@ -0,0 +1,12 @@
uBO Lite (uBOL) zo ur stanker noazadurioù diazezet war ar manifesto MV3.
Ar reolennoù dre ziouer a glot gant silañ dre ziouer uBlock Origin:
- Rolloù siloù genidik a uBlock Origin
- EasyList
- EasyPrivacy
- Roll ar servijerioù brudañ ha heuliañ eus Peter Lowe
Tu zo deoc'h ouzhpennañ reolennoù all en arventennoù -- klikit war an ikon _kendentadur_ er banell popup.
Disklêriañ a ra uBOL penn-da-benn, da lavaret eo n'eus ket ezhomm eus un argerzh uBOL padus evit ma c'hoarvezfe ar silañ, ha silañ endalc'hadoù diazezet war enlakaat CSS/JS a vez graet en un doare fizius gant ar merdeer e-unan kentoc'h eget gant an astenn. Kement-se a dalvez ne vez ket gounezet gant uBOL e-unan arc'hwelioù CPU/memor e-pad ma vez stanket an endalc'hadoù -- ezhomm zo eus argerzh al labourer servij uBOL _nemet_ pa vez etregweredet gant ar banell digeriñ pe ar pajennoù dibarzhioù.

View File

@@ -1,30 +1,12 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) je blokator sadržaja baziran na MV3.
The default ruleset corresponds to uBlock Origin's default filterset:
Zadani skup pravila odgovara zadanom skupu filtera uBlock Origin:
- uBlock Origin's built-in filter lists
- UBlock Origin ugrađene liste filtera
- EasyList
- EasyPrivacy
- Peter Lowes Ad and tracking server list
- Peter Lowe-ova lista servera za oglase i praćenje
You can add more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
Možete omogućiti više skupova pravila posjetom stranice s opcijama -- kliknite na ikonu _Cogs_ u skočnom panelu.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.
uBOL je potpuno deklarativno, što znači da nema potrebe za trajnim uBOL procesom da bi se filtriranje dogodilo, a filtriranje sadržaja zasnovano na CSS/JS injekcijama se pouzdano izvodi od strane samog pretraživača, a ne ekstenzije. To znači da sam uBOL ne troši CPU/memorijske resurse dok je blokiranje sadržaja u toku -- proces uBOL-a servisnog radnika je potreban _samo_ kada stupite u interakciju sa iskačućim panelom ili stranicama sa opcijama.

View File

@@ -1,4 +1,4 @@
L'uBO Lite (uBOL) és un blocador de contingut *sense permisos* basat en MV3.
L'uBO Lite (uBOL) és un blocador de contingut basat en MV3.
El conjunt de regles per defecte correspon al conjunt de filtres per defecte d'uBlock Origin:
@@ -7,26 +7,8 @@ El conjunt de regles per defecte correspon al conjunt de filtres per defecte d'u
- EasyPrivacy
- Llista de servidors de seguiment i anuncis de Peter Lowe
Podeu afegir més conjunts de regles si visiteu la pàgina d'opcions: feu clic a la icona _Cogs_ al tauler emergent.
Podeu habilitar més conjunts de regles si visiteu la pàgina d'opcions: feu clic a la icona _Cogs_ al tauler emergent.
L'uBOL és totalment declaratiu, és a dir, no cal un procés uBOL permanent perquè es produeixi el filtratge, i el filtratge de contingut basat en injecció CSS/JS es realitza de manera fiable pel propi navegador més que per l'extensió.
Això vol dir que l'uBOL en si no consumeix recursos de CPU/memòria mentre el bloqueig de contingut està en curs; el procés de treballador de servei d'uBOL només es requereix quan interactueu amb el tauler emergent o les pàgines d'opcions.
L'uBOL no requereix un ampli permís de "lectura i modificació de dades" en el moment de la instal·lació, per tant, les seves capacitats limitades en comparació amb l'uBlock Origin o altres blocadors de contingut que requereixen amplis permisos de "lectura i modificació de dades" en el moment de la instal·lació.
Tanmateix, l'uBOL us permet concedir *explícitament* permisos ampliats en llocs específics que trieu perquè pugui filtrar millor en aquests llocs mitjançant filtres cosmètics i injeccions de scriptlet.
Per concedir permisos ampliats en un lloc determinat, obriu el tauler emergent i seleccioneu un mode de filtrat superior, com ara Òptim o Complet.
Aleshores, el navegador us avisarà sobre els efectes de la concessió dels permisos addicionals sol·licitats per l'extensió al lloc actual, i haureu d'indicar-li al navegador si accepteu o rebutgeu la sol·licitud.
Si accepteu la sol·licitud d'uBOL de permisos addicionals al lloc actual, podrà filtrar millor el contingut del lloc actual.
Podeu establir el mode de filtratge per defecte des de la pàgina d'opcions d'uBOL. Si trieu el mode Òptim o Complet per defecte, haureu de concedir a l'uBOL el permís per llegir i modificar dades a tots els llocs web.
Tingueu en compte que encara és un treball en curs, amb aquests objectius finals:
- No hi ha permisos d'amfitrió amplis en el moment de la instal·lació; els permisos ampliats els concedeix explícitament l'usuari per lloc.
- Totalment declaratiu per a la fiabilitat i l'eficiència de la CPU/memòria.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) je blokovač obsahu vyžadující méně oprávnění, založený na MV3.
uBO Lite (uBOL) je blokovač obsahu založený na MV3.
Výchozí sada pravidel koresponduje k výchozím sadám filtrů uBlock Origin:
@@ -7,24 +7,6 @@ Výchozí sada pravidel koresponduje k výchozím sadám filtrů uBlock Origin:
- EasyPrivacy
- Peter Lowes Ad and tracking server list
Můžete přidat více sad pravidel navštívením stránky nastavení -- klikněte na ikonu ozubených kol ve vyskakovácím panelu.
Další sady pravidel můžete povolit na stránce nastavení - klikněte na ikonu _Ozubeného kolečka_ ve vyskakovacím panelu.
uBOL je zcela deklarativní, což znamená, že pro filtrování není potřeba permanentní proces uBOL a filtrování obsahu založené na vstřikování CSS/JS je spolehlivě prováděno samotným prohlížečem, nikoli rozšířením. To znamená, že samotný uBOL nespotřebovává zdroje CPU/paměti, zatímco probíhá blokování obsahu proces servisního pracovníka uBOL je vyžadován _pouze_ při interakci s vyskakovacím panelem nebo stránkami nastavení.
uBOL nevyžaduje rozsáhlá oprávnění ke "čtení a úpravě dat" v době instalace, a proto má ihned po instalaci omezené možnosti ve srovnání s uBlock Origin nebo jinými blokovači obsahu, které vyžadují rozsáhlá oprávnění ke "čtení a úpravě dat" v době instalace.
Nicméně, uBOL vám umožňuje *explicitně* udělit rozšířená oprávnění na konkrétních webech podle vašeho výběru, aby mohl na těchto webech lépe filtrovat pomocí kosmetického filtrování a vstřikování skriptů.
Chcete-li na daném webu udělit rozšířená oprávnění, otevřete vyskakovací panel a vyberte vyšší režim filtrování, například optimální nebo kompletní.
Prohlížeč vás poté upozorní na důsledky udělení dalších oprávnění požadovaných rozšířením na aktuálním webu a vy budete muset prohlížeči sdělit, zda žádost přijímáte nebo odmítáte.
Pokud přijmete žádost uBOL o další oprávnění na aktuálním webu, bude moci lépe filtrovat obsah aktuálního webu.
Výchozí režim filtrování můžete nastavit na stránce nastavení uBOL. Pokud jako výchozí zvolíte režim optimální nebo kompletní, budete muset uBOL udělit oprávnění ke čtení a úpravě dat na všech webových stránkách.
Mějte na paměti, že toto je stále nedokončená práce s těmito konečnými cíli:
- Žádná rozsáhlá oprávnění hostitele v době instalace -- rozšířená oprávnění uděluje explicitně uživatel na jednotlivých stránkách.
- Zcela deklarativní pro spolehlivost a efektivitu CPU/paměti.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) is an MV3-based content blocker.
The default ruleset corresponds to uBlock Origin's default filterset:
@@ -7,24 +7,6 @@ The default ruleset corresponds to uBlock Origin's default filterset:
- EasyPrivacy
- Peter Lowes Ad and tracking server list
You can add more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.

View File

@@ -0,0 +1,12 @@
uBO Lite (uBOL) is an MV3-based content blocker.
Mae'r set reolau ddiofyn yn cyfateb i set hidlo diofyn uBlock Origin:
- uBlock Origin's built-in filter lists
- EasyList
- EasyPrivacy
- Peter Lowes Ad and tracking server list
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) er en *tilladelsesløs* MV3-baseret indholdsblocker.
uBO Lite (uBOL) er en MV3-baseret indholdsblocker.
Standardregelsættet svarer til uBlock Origins standardfiltersæt:
@@ -7,24 +7,6 @@ Standardregelsættet svarer til uBlock Origins standardfiltersæt:
- EasyPrivacy
- Peter Lowes Ad and tracking server list
Flere regelsæt kan tilføjes ved at gå til indstillingssiden -- klik på ikonet _Cogs_ i pop op-panelet.
Flere regelsæt kan aktiveres ved at gå til indstillingssiden -- klik på ikonet _Tandhjul_ i pop op-panelet.
uBOL er fuldstændig deklarativ, hvilket betyder, at ingen permanent uBOL-proces behøves for at filtreringen kan finde sted, og CSS/JS-injektionsbaseret indholdsfiltrering udføres pålideligt af browseren selv i stedet for af udvidelsen. Dette betyder, at uBOL ikke selv forbruger CPU-/hukommelsesressourcer under indholdsblokeringen -- uBOLs tjenestearbejdsproces er _kun_ nødvendig under interaktion med pop op-panelet eller indstillingssiderne.
uBOL kræver ikke en omfattende "læse og ændre data" tilladelse under installationen, derfor dens begrænsede egenskaber fra start af sammenlignet med uBlock Origin eller andre indholdsblockere, som kræver omfattende "læse/ændre data" tilladelser under installationen.
uBOL giver dog mulighed for *eksplicit* at tildele udvidede tilladelser på bestemte websteder efter eget valg, så den bedre kan filtrere på disse websteder vha. kosmetisk filtrering og scriptlet-injektioner.
For at tildele udvidede tilladelser på et givent websted, åbn pop op-panelet og vælg en højere filtreringstilstand, såsom Optimal eller Komplet.
Browseren advarer derefter om virkningerne af de ekstra tildelte tilladelser, som udvidelsen anmoder om på det aktuelle websted, og man vil skulle fortælle browseren, hvorvidt anmodningen accepteres eller afslås.
Accepteres uBOLs anmodning om ekstra tilladelser på det aktuelle websted, vil den bedre kunne filtrere indhold på webstedet.
Standardfiltreringstilstanden kan angives via uBOLs indstillingsside. Hvis tilstanden Optimal eller Komplet vælges som standardtilstand, skal uBOL tildeles tilladelse til at læse og ændre data på alle websteder.
Husk dog, at dette stadig er et igangværende arbejde med disse slutmål:
- Ingen omfattende værtstilladelser under installationen -- udvidede tilladelser tildeles eksplicit af brugeren på webstedsbasis.
- Fuldstændig deklarativ for pålidelighed og CPU-/hukommelseseffektivitet.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) ist ein Inhaltsblocker, der *ohne Berechtigungen* auskommt und auf MV3 basiert.
uBO Lite (uBOL) ist ein MV3-basierter Inhaltsblocker.
Die Standardregeln entsprechen den Standardfiltern von uBlock Origin:
@@ -7,24 +7,6 @@ Die Standardregeln entsprechen den Standardfiltern von uBlock Origin:
- EasyPrivacy
- Peter Lowes Ad and tracking server list
Sie können weitere Regeln hinzufügen, indem Sie die Optionen aufrufen — klicken Sie dazu im Pop-up-Fenster auf das Symbol mit den _Zahnrädern_.
Sie können weitere Regeln aktivieren, indem Sie die Einstellungen aufrufen — klicken Sie dazu im Pop-up-Fenster auf das Symbol mit den _Zahnrädern_.
uBOL ist vollständig deklarativ, d. h. es ist kein dauerhafter uBOL-Prozess für das Filtern erforderlich, und die auf CSS/JS-Injektion basierende Inhaltsfilterung wird zuverlässig vom Browser selbst und nicht von der Erweiterung durchgeführt. Das bedeutet, dass uBOL selbst keine CPU-/Speicherressourcen verbraucht, während der Inhalt blockiert wird — der uBOL-Service-Worker-Prozess wird _nur_ benötigt, wenn Sie mit dem Pop-up-Fenster oder den Optionen interagieren.
uBOL erfordert bei der Installation keine weitreichende Berechtigung zum Lesen und Ändern von Daten, daher sind die Möglichkeiten im Vergleich zu uBlock Origin oder anderen Inhaltsblockern, die bei der Installation weitreichende Berechtigungen zum Lesen und Ändern von Daten erfordern, von vornherein begrenzt.
Allerdings können Sie mit uBOL *explizit* erweiterte Berechtigungen für bestimmte Websites Ihrer Wahl erteilen, sodass diese Websites durch kosmetisches Filtern und Scriptlet-Injektionen besser gefiltert werden können.
Um erweiterte Berechtigungen für eine bestimmte Website zu erteilen, öffnen Sie das Pop-up-Fenster und wählen Sie einen stärkeren Filtermodus wie »Optimal« oder »Vollständig«.
Der Browser warnt Sie anschließend über die Auswirkungen der zusätzlichen Berechtigungen, die von der Erweiterung für die aktuelle Website angefordert werden, und Sie können entscheiden, ob Sie zustimmen oder ablehnen.
Wenn Sie die Anfrage von uBOL nach zusätzlichen Berechtigungen für die aktuelle Website zustimmen, kann uBOL die Inhalte für die aktuelle Website besser filtern.
Sie können den Standardfiltermodus in den Optionen von uBOL festlegen. Wenn Sie den Modus »Optimal« oder »Vollständig« als Standardmodus wählen, müssen Sie uBOL die Berechtigung erteilen, Daten auf allen Websites lesen und ändern zu dürfen.
Denken Sie daran, dass sich dieses Projekt noch in Entwicklung befindet und folgende Ziele verfolgt:
- Keine weitreichenden Host-Berechtigungen bei der Installation — erweiterte Berechtigungen werden explizit von Ihnen für jede einzelne Website erteilt.
- Vollständig deklarativ für Zuverlässigkeit und CPU-/Speichereffizienz.

View File

@@ -1,4 +1,4 @@
Το uBO Lite (uBOL) είναι ένας blocker περιεχομένου *χωρίς άδειες* που βασίζεται σε MV3.
Το uBO Lite (uBOL) είναι εργαλείο φραγής περιεχομένου, που βασίζεται στο MV3.
Το προεπιλεγμένο σύνολο κανόνων αντιστοιχεί στο προεπιλεγμένο σύνολο φίλτρων του uBlock Origin:
@@ -7,24 +7,6 @@
- EasyPrivacy
- Peter Lowes Ad and tracking server list
Μπορείτε να προσθέσετε περισσότερα σύνολα κανόνων μεταβαίνοντας στη σελίδα επιλογών -- κάντε κλικ στο εικονίδιο _Cogs_ στον αναδυόμενο πίνακα.
Μπορείτε να προσθέσετε περισσότερα σύνολα κανόνων από τη σελίδα επιλογών -- κάντε κλικ στο εικονίδιο _γρανάζι_ στον αναδυόμενο πίνακα.
Το uBOL είναι εξ'ολοκλήρου δηλωτικό, πράγμα που σημαίνει ότι δεν υπάρχει ανάγκη για μόνιμη διαδικασία uBOL για να πραγματοποιηθεί το φιλτράρισμα, και το φιλτράρισμα περιεχομένου που βασίζεται σε έγχυση CSS/JS εκτελείται αξιόπιστα από το ίδιο το πρόγραμμα περιήγησης και όχι από την επέκταση. Αυτό σημαίνει ότι το ίδιο το uBOL δεν καταναλώνει πόρους CPU/μνήμης ενώ ο αποκλεισμός περιεχομένου είναι σε εξέλιξη -- η διαδικασία του service worker του uBOL απαιτείται _μόνο_ όταν αλληλεπιδράτε με τον αναδυόμενο πίνακα ή τις σελίδες επιλογών.
Το uBOL δεν απαιτεί ευρεία άδεια "ανάγνωσης και τροποποίησης δεδομένων" κατά τον χρόνο εγκατάστασης, επομένως έχει εξαρχής περιορισμένες δυνατότητές σε σύγκριση με το uBlock Origin ή άλλα προγράμματα αποκλεισμού περιεχομένου που απαιτούν ευρείες άδειες "ανάγνωσης/τροποποίησης δεδομένων" κατά την εγκατάσταση.
Ωστόσο, το uBOL σάς επιτρέπει *ρητά* να εκχωρείτε εκτεταμένες άδειες σε συγκεκριμένους ιστότοπους της επιλογής σας, ώστε να μπορεί να φιλτράρει καλύτερα σε αυτούς τους ιστότοπους χρησιμοποιώντας κοσμητικό φιλτράρισμα και έγχυση scriptlet.
Για να εκχωρήσετε εκτεταμένα δικαιώματα σε έναν δεδομένο ιστότοπο, ανοίξτε το αναδυόμενο πλαίσιο και επιλέξτε μια υψηλότερη λειτουργία φιλτραρίσματος, όπως Βέλτιστη ή Ολοκληρωμένη.
Στη συνέχεια, το πρόγραμμα περιήγησης θα σας προειδοποιήσει για τα αποτελέσματα της χορήγησης των πρόσθετων δικαιωμάτων που ζητούνται από την επέκταση στον τρέχοντα ιστότοπο και θα πρέπει να ενημερώσετε το πρόγραμμα περιήγησης εάν αποδέχεστε ή απορρίπτετε το αίτημα.
Εάν αποδεχτείτε το αίτημα του uBOL για πρόσθετα δικαιώματα στον τρέχοντα ιστότοπο, θα μπορεί να φιλτράρει καλύτερα το περιεχόμενο για τον τρέχοντα ιστότοπο.
Μπορείτε να ορίσετε την προεπιλεγμένη λειτουργία φιλτραρίσματος από τη σελίδα επιλογών του uBOL. Εάν επιλέξετε τη λειτουργία Βέλτιστη ή Ολοκληρωμένη ως προεπιλεγμένη, θα πρέπει να εκχωρήσετε στην uBOL την άδεια ανάγνωσης και τροποποίησης δεδομένων σε όλους τους ιστότοπους.
Λάβετε υπόψη ότι αυτό είναι ακόμη ένα έργο σε εξέλιξη, με αυτούς τους τελικούς στόχους:
- Να μην υπάρχουν ευρείες άδειες hosts κατά την εγκατάσταση -- οι εκτεταμένες άδειες παραχωρούνται ρητά από τον χρήστη σε βάση ανά τοποθεσία.
- Εντελώς δηλωτικό για αξιοπιστία και απόδοση CPU/μνήμης.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) is an MV3-based content blocker.
The default ruleset corresponds to uBlock Origin's default filterset:
@@ -7,24 +7,6 @@ The default ruleset corresponds to uBlock Origin's default filterset:
- EasyPrivacy
- Peter Lowes Ad and tracking server list
You can add more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) is an MV3-based content blocker.
The default ruleset corresponds to uBlock Origin's default filterset:
@@ -7,24 +7,6 @@ The default ruleset corresponds to uBlock Origin's default filterset:
- EasyPrivacy
- Peter Lowes Ad and tracking server list
You can add more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) es un bloqueador de contenido con *menos permisos* basado en MV3.
uBO Lite (uBOL) es un bloqueador de contenido basado en MV3.
Por defecto ya trae configuradas las siguientes listas de filtros:
@@ -7,24 +7,6 @@ Por defecto ya trae configuradas las siguientes listas de filtros:
- EasyPrivacy
- Peter Lowes Ad and tracking server list
Puedes añadir más conjuntos de reglas visitando la página de opciones, haz clic en el icono de _engranaje_ del panel emergente.
Puedes habilitar más conjuntos de reglas visitando la página de opciones, haz clic en el icono de _engranaje_ del panel emergente.
uBOL es completamente declarativo, lo que significa que no hay necesidad de un proceso uBOL permanente para que se produzca el filtrado, y el filtrado de contenido basado en la inyección de CSS/JS se realiza de forma confiable por el propio navegador en lugar de la extensión. Esto significa que uBOL en sí mismo no consume recursos de CPU/memoria mientras el bloqueo de contenido está en curso, el proceso service worker de uBOL se requiere _solo_ cuando se interactúa con el panel emergente o las páginas de opciones.
uBOL no requiere amplios permisos para "leer y modificar datos" en el momento de la instalación, de ahí sus capacidades limitadas en comparación con uBlock Origin u otros bloqueadores de contenido que requieren amplios permisos para "leer y modificar datos" en el momento de la instalación.
Sin embargo, uBOL te permite otorgar *explícitamente* permisos extendidos en sitios específicos de tu elección para que pueda filtrar mejor en esos sitios usando filtrado cosmético e inyecciones de scriptlet.
Para otorgar permisos extendidos en un sitio determinado, abre el panel emergente y elige un modo de filtrado superior, como óptimo o completo.
Después el navegador te advertirá sobre los efectos de otorgar los permisos adicionales solicitados por la extensión en el sitio actual, y deberás indicar al navegador si aceptas o rechazas la solicitud.
Si aceptas la solicitud de uBOL para permisos adicionales en el sitio actual, será capaz de filtrar mejor el contenido para el sitio actual.
Puedes establecer el modo de filtrado predeterminado desde la página de opciones de uBOL. Si eliges como predeterminado el modo óptimo o completo, tendrás que otorgar a uBOL el permiso para leer y modificar datos en todos los sitios web.
Téngase en cuenta que esto todavía es un trabajo en progreso, con estos objetivos finales:
- Sin amplios permisos de host en el momento de la instalación, los permisos ampliados son otorgados explícitamente por el usuario en cada sitio.
- Completamente declarativo para confiabilidad y eficiencia de la CPU/memoria.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) on MV3-l põhinev *lubadeta* sisutõkestaja.
uBO Lite (uBOL) on MV3-l põhinev sisutõkestaja.
Tavaline reeglitekogum vastab uBlock Origini tavalisele filtritekogumile:
@@ -7,24 +7,6 @@ Tavaline reeglitekogum vastab uBlock Origini tavalisele filtritekogumile:
- EasyPrivacy
Peter Lowe'i reklaamide ja jälitusserverite loend
Reeglitekogumeid saate lisada valikute lehelt ehk avanenud paneelis klõpsake _Cogs_ ikooni.
Rohkem reegleid valikutest ehk toksake _Cogs_ ikooni hüpikpaneelis.
uBOL on läbinisti deklaratiivne ehk filtreerimiseks pole vaja kogu aeg töötavat uBOLi protsessi ja CSS/JS süstipõhist sisu filtreerib tegelikult brauser, mitte laiendus. Teisisõnu, uBOL ei kasuta sisu tõkestamisel protsessori/mälu ressursse. uBOLi teenuse toimimise protsessi on vaja _vaid_ juhul, kui kasutate hüpikpaneeli või valikute lehekülgi.
uBOL ei nõua paigaldamise ajal teadatuntud andmete lugemise ja muutmise luba, seega võrreldes seda nõudva äpiga uBlock Origin või muu sisutõkestiga on uBOL-i piiratus üks selle funktsioonidest.
Kuid uBOL võimaldab *selgesõnaliselt* anda täpsemaid lubasid teie valitud veebilehtedele, et neid saaks paremini filtreerida ilufiltrite ja skriptisüstidega.
Veebilehele täpsustatud lubade andmiseks ava hüpikpaneel ja valige põhjalikum filtreerimisrežiim, nagu Optimaalne või Põhjalik.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. Kui määrate optimaalse või põhjaliku režiimi tavaliseks, peate andma uBOLile loa kõikide veebilehtede andmete lugemiseks ja muutmiseks.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.

View File

@@ -1,30 +1,12 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) is an MV3-based content blocker.
The default ruleset corresponds to uBlock Origin's default filterset:
Lehenespenez, iragazki-zerrenda hauek ditu konfiguratuta:
- uBlock Origin's built-in filter lists
- EasyList
- EasyPrivacy
- Peter Lowes Ad and tracking server list
UblockOrigin-eko filtro lista
ZerrendaErraza
PribazitateaErraza
Peter Lowe-ren Ad and tracker zerrenda
You can add more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
Ruleta gehiago aktibatu ahal duzu aukerak orria --klikatu _Cogs_ ikonoa panelearen lehioan
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.
uBOL guztiz deklaratiboa da, hau da, ez dago uBOL prozesu iraunkor baten beharrik iragazketa gertatzeko, eta CSS/JS injekzioan oinarritutako edukien iragazketa nabigatzaileak berak egiten du fidagarritasunez, luzapenaren arabera beharrean. Horrek esan nahi du uBOLek berak ez duela CPU/memoria baliabiderik kontsumitzen edukien blokeoa martxan dagoen bitartean... uBOLren zerbitzuko langileen prozesua _only_ behar da popup panelarekin edo aukera orriekin elkarreragiten denean.

View File

@@ -1,30 +1,12 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) is an MV3-based content blocker.
The default ruleset corresponds to uBlock Origin's default filterset:
مجموعه قوانین پیش فرض آن مطابق با مجموعه قوانین پیش فرض uBlock Origin است:
- uBlock Origin's built-in filter lists
- EasyList
- EasyPrivacy
- Peter Lowes Ad and tracking server list
You can add more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) on *käyttöoikeudeton* MV3-pohjainen sisällönestotyökalu.
uBO Lite (uBOL) on MV3-pohjainen sisällönestotyökalu.
Oletusarvoiset sääntömääritykset vastaavat uBlock Origin -laajennuksen oletuksia:
@@ -7,24 +7,6 @@ Oletusarvoiset sääntömääritykset vastaavat uBlock Origin -laajennuksen olet
- EasyPrivacy
- Peter Lowes Ad and tracking server list
Voit lisätä sääntömäärityksiä asetussivulta -- paina ponnahduspaneelin _Rataskuvaketta_.
Voit aktivoida lisää sääntömäärityksiä laajennuksen asetuksista paina ponnahduspaneelin _Ratas_-kuvaketta.
uBOL on täysin deklaratiivinen, eli suodatus ei edellytä pysyvää uBOL-prosessia ja CSS-/JS-koodin manipulointiin perustuva sisällönsuodatuksen suorittaa laajennusprosessin sijaan luotettavasti selainsovellus. Tämän ansiosta itse uBOL ei kuormita prosessoria tai keskusmuistia sisällöneston tapahtuessa -- uBOL:n työprosessia tarvitaan _ainoastaan_ ponnahduspaneelia ja asetussivuja käytettäessä.
uBOL ei edellytä laajan tietojen luku- ja muokkausoikeuden myöntämistä asennuksen yhteydessä, jonka vuoksi sen oletusarvoiset valmiudet ovat uBlock Originia ja muita vastaavia sisällönestotyökaluja rajallisemmat.
On kuitenkin mahdollista myöntää *yksinomaisesti* uBOL:lle laajennetut käyttöoikeudet sivustokohtaisesti niiden suodatuksen tehostamiseksi kosmeettisella suodatuksella ja scriplet-injektoinnilla.
Laajemmat oikeudet myönnetään avoimelle sivustolle avaamalla ponnahduspaneeli ja valitsemalla korkeampi suodatustaso, kuten Optimaalinen tai Täysi.
Tällöin selain varoittaa laajennuksen avoimelle sivustolle pyytämien käyttöoikeuksien seurauksista ja pyytää hyväksymään tai hylkäämään pyynnön.
Jos uBOL:n käyttöoikeuspyyntö avoimelle sivustolle hyväksytään, se pystyy suodattamaan sivuston sisältöä tehokkaammin.
Voit asettaa oletusarvoisen suodatustilan uBOL:n asetussivulta. Jos valitset oletustilaksi Optimaalinen tai Täysi, on uBOL:lle myönnettävä oikeus lukea ja muokata tietojasi kaikilla verkkosivustoilla.
Huomioithan, että laajennuksen kehitys vielä kesken, seuraavilla tavoitteilla:
- Laajoja käyttöoikeuksia ei tarvita asennusvaiheesssa, vaan laajennetut oikeudet myönnetään aina sivustokohtaisesti käyttäjän toimesta.
- Täysin deklaratiivinen luotettavuutta ja prosessorin/muistin kuormituksen keventämiseksi.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
Isang content blocker na nakabase sa MV3 ang uBO Lite (uBOL).
Tulad ng uBlock Origin, ito rin ang mga default na listahan ng mga filter:
@@ -7,24 +7,6 @@ Tulad ng uBlock Origin, ito rin ang mga default na listahan ng mga filter:
- EasyPrivacy
- Listahan ni Peter Lowe sa mga ad at tracking server (Peter Lowes Ad and tracking server list)
Makakapagdagdag ka ng higit pang mga patakaran sa pahina ng mga opsyon -- pindutin ang icon ng _gulong_ sa popup panel.
Maaring magpagana ng mas maraming ruleset sa page ng options -- pindutin ang _Cogs_ sa popup na panel.
Deklaratibo lamang ang uBOL, kaya hindi nito kailangan ng permanenteng proseso upang mag-filter, at mainam na ginagawa ng browser mismo imbes na ekstensyon ang pagfi-filter sa content na nakabase sa CSS o JS. Ibig-sabihin, hindi kumokonsyumo ng CPU o memorya ang uBOL habang nanghaharang -- ang proseso ng trabahante ng serbisyo ay kailangan _lang_ kung nasa popup panel o pahina ng opsyon ka.
Hindi kailangan ng uBOL ang malawakang pahintulot para "basahin at baguhin ang data" pagka-install, kaya kung bago pa lang itong install ay limitado ang kakayahan nito kumpara sa uBlock Origin o iba pang mga pangharang ng content na nangangailangan ng malawakang pahintulot para "basahin at baguhin ang data" pagka-install.
Ngunit, pwede mong *pasadyang* pahintulutan ang uBOL na magkaroon ng pinalawak na pahintulot sa mga website na pipiliin mo para mas mapabuti ang pagfi-filter sa mga site na iyon gamit ang kosmetikong pagfi-filter at injeksyon ng scriptlet.
Upang bigyan ito ng pinalawak na pahintulot sa isang site, buksan ang popup panel at pumili ng isang mode sa pagfi-filter tulad ng Pinainam o Kumpleto.
Babalaan ka ng browser tungkol sa mga epekto ng pagbibigay ng karagdagang pahintulot na hinihiling ng ekstensyon sa kasalukuyang site, at kailangan mong tumugon kung pinapahintulutan mo ba ito o hindi.
Kung tatanggapin mo ang hiling ng uBOL para sa karagdagang mga pahintulot sa kasalukuyang site, mas magiging mainam ang pagfi-filter nito sa content para sa kasalukuyang site.
Maitatakda mo ang default na mode sa pagfi-filter sa pahina ng mga opsyon ng uBOL. Kailangan mong pahintulutan ang uBOL na basahin o baguhin ang datos sa lahat ng mga website kung pipiliin mo ang Pinainam o Kumpleto bilang default na mode sa pagfi-filter.
Tandaang kasalukuyan pang binubuo ang ekstensyong ito, at nilalayon nitong:
- Walang kakailanganing malawakang pahintulot pagka-install -- ibibigay lang ng user ang karagdagang pahintulot sa mga piling site.
- Deklaratibo lamang upang maging mapagkakatiwalaan at matipid sa CPU at memorya.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) est un bloqueur de contenu *sans permission* basé sur le manifeste MV3.
uBO Lite (uBOL) est un bloqueur de contenu basé sur le manifeste MV3.
Les règles par défaut correspondent au filtrage par défaut d'uBlock Origin :
@@ -7,24 +7,6 @@ Les règles par défaut correspondent au filtrage par défaut d'uBlock Origin :
- EasyPrivacy
- La liste anti-serveurs pub et pistage de Peter Lowe
Vous pouvez ajouter plus de règles en consultant la page des paramètres -- Cliquez sur l'_Engrenage_ dans le panneau pop-up.
Vous pouvez ajouter plus de règles en consultant la page des paramètres -- Cliquez sur l'icône de l'_Engrenage_ dans le panneau pop-up.
uBOL est entièrement déclarative, c'est-à-dire qu'il n'y a pas besoin d'un processus uBOL permanent pour filtrer, et le filtrage basé sur l'injection CSS/JavaScript se fait en toute fiabilité par le navigateur lui-même. Cela veut dire qu'en soi, uBOL ne consomme pas de ressources processeur/mémoire pendant le blocage de contenu -- l'agent de service d'uBOL n'est sollicité _que_ quand vous interagissez avec le panneau pop-up ou la page des paramètres.
Contrairement à uBlock Origin ou d'autres extensions de blocage, uBOL ne nécessite pas de larges permissions de "lecture/modification des données" au moment de l'installation, ce qui explique ses capacités au départ limitées.
Cependant, uBOL vous permet *explicitement* d'accorder des permissions étendues sur les sites Web de votre choix, pour qu'elle puisse mieux les filtrer en utilisant le filtrage esthétique et des injections de scriptlet.
Pour accorder des permissions étendues sur un site Web donné, ouvrez le panneau pop-up et choisissez un mode de filtrage plus élevé comme le mode Optimal ou le mode Complet.
Le navigateur vous préviendra alors des effets de l'accord de permissions additionnelles requises par l'extension sur le site Web en cours de consultation et vous devrez indiquer votre choix au navigateur (Accepter/Refuser).
Si vous acceptez la requête d'uBOL pour des permissions additionnelles sur le site Web en cours de consultation, le filtrage de son contenu sera renforcé.
Vous pouvez définir le mode de filtrage par défaut depuis la page des paramètres d'uBOL. Si vous choisissez le mode Optimal ou Complet en tant que mode par défaut, vous devrez accorder à uBOL l'autorisation de lire et de modifier des données sur tous les sites Web.
Gardez à l'esprit que c'est en cours de développement, avec comme objectifs :
- De ne pas accorder de permissions globales au moment de l'installation -- les permissions étendues s'accordent explicitement par l'utilisateur site par site.
- De travailler de manière entièrement déclarative pour la fiabilité et l'efficacité processeur/mémoire.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) is in *tastimmingsleaze* MV3-basearre ynhâldsblokkearder.
uBO Lite (uBOL) is in MV3-basearre ynhâldsblokkearder.
De standert regelset komt oerien mei de standert filterset fan uBlock Origin:
@@ -7,24 +7,6 @@ De standert regelset komt oerien mei de standert filterset fan uBlock Origin:
- EasyPrivacy
- Peter Lowes Ad and tracking-serverlist
Jo kinne mear regelsets tafoegje troch de opsjesside te besykjen klik op it _tântsjilpiktogram_ yn it pop-uppaniel.
Jo kinne mear regelsets ynskeakelje troch de opsjesside te besykjen klik op it _tântsjilpiktogram_ yn it pop-uppaniel.
uBOL is folslein deklaratyf, wat betsjut dat in permanint uBOL-proses foar de filtering net nedich is, en ynhâldsfiltering op basis fan CSS/JS-ynjeksje op in betroubere manier troch de browser sels útfierd wurdt yn stee fan de útwreiding. Dit betsjut dat uBOL sels gjin CPU-/ûnthâldboarnen brûkt wylst ynhâldsblokkearring aktyf is it serviceworker-proses fan uBOL is _allinnich_ fereaske as jo mei it pop-uppaniel of de opsjessiden wurkje.
uBOL fereasket gjin brede tastimming foar it lêzen en oanpassen fan gegevens wylst ynstallaasje, fan dêr de beheinde ynboude mooglikheden dêrfan yn fergeliking mei uBlock Origin of oare ynhâldsblokkearders dyt brede tastimmingen foar it lêzen en oanpassen fan gegevens fereaskje wylst de ynstallaasje.
Jo kinne yn uBOL echter *eksplisyt* wiidweidige tastimmingen ferliene op bepaalde websites fan jo kar, sadat it op dy websites better filterje kin fia kosmetyske filtering en scriptlet-ynjeksjes.
Om wiidweidige tastimmingen op in bepaalde website te ferlienen, iepenje jo it pop-uppaniel en kieze jo in hegere filtermodus, lykas Optimaal of Folslein.
De browser warskôget jo dan oer de gefolgen fan it ferlienen fan de troch de útwreiding oanfrege oanfoljende tastimmingen op de aktuele website, en jo moatte de browser witte litte oft jo de oanfraach akseptearje of wegerje.
As jo de oanfraach fan uBOL foar oanfoljende tastimmingen op de aktuele website akseptearje, sil it ynhâld foar de aktuele website better filterje kinne.
Jo kinne de standert filtermodus ynstelle fan de opsjesside fan uBOL ôf. As jo de modus Optimaal of Folslein as de standertmodus kieze, moatte jo uBOL de tastimming foar it lêzen en oanpassen fan gegevens op alle websites te ferlienen.
Unthâld dat dit noch wurk yn útfiering is, mei dizze eindoelen:
- Gjin brede host-tastimmingen wylst ynstallaasje wiidweidige tastimmingen wurde eksplisyt en per website ferliend troch de brûker.
- Folslein deklaratyf omwille fan betrouberheid en CPU-/ûnthâldeffisjinsje.

View File

@@ -1,30 +1,12 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) é un bloqueador de contido baseado en MV3.
The default ruleset corresponds to uBlock Origin's default filterset:
O conxunto de regras predeterminado corresponde ao conxunto de filtros predeterminado de uBlock Origin:
- uBlock Origin's built-in filter lists
- Listas de filtros integradas de uBlock Origin
- EasyList
- EasyPrivacy
- Peter Lowes Ad and tracking server list
Lista de servidores de seguimento e anuncios de Peter Lowe
You can add more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
Podes activar máis grupos de regras indo á páxina de opcións -- preme na roda dentada no panel emerxente.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.
uBOL é totalmente declarativo, o que significa que non é necesario un proceso permanente de uBOL para que se produza o filtrado e o filtrado de contido baseado en inxección de CSS/JS realízao de forma fiable o propio navegador en lugar da extensión. Isto significa que o propio uBOL non consume recursos de CPU/memoria mentres o bloqueo de contido está en curso -- o proceso do traballador do servizo de uBOL é necesario _só_ cando interactúas co panel emerxente ou coas páxinas de opcións.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) is an MV3-based content blocker.
The default ruleset corresponds to uBlock Origin's default filterset:
@@ -7,24 +7,6 @@ The default ruleset corresponds to uBlock Origin's default filterset:
- EasyPrivacy
- Peter Lowes Ad and tracking server list
You can add more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) הוא חוסם תוכן *ללא הרשאות* מבוסס MV3.
uBO Lite (uBOL) הוא חוסם תוכן מבוסס MV3.
ערכת הכללים ברירת מחדל שמתכתבת עם ערכת המסננים של uBlock Origin:
@@ -7,24 +7,6 @@ uBO Lite (uBOL) הוא חוסם תוכן *ללא הרשאות* מבוסס MV3.
- EasyPrivacy
- רשימת שרתי מודעות ומעקב של פיטר לואו
ניתן להוסיף ערכות כללים נוספות מעמוד האפשרויות –על ידי הקשה על סמל _Cogs_ בלוח הצץ.
ניתן לאפשר קבוצות חוקים נוספות בדף האפשרויות - עם לחיצה על סמליל _גלגלי השיניים_ בחלונית הקופצת.
uBOL הוא הכרזתי לחלוטין, כלומר אין צורך בתהליך uBOL קבוע כדי שהסינון יתרחש, וסינון תוכן מבוסס הזרקת CSS/JS מבוצע באופן אמין על ידי הדפדפן עצמו ולא על ידי ההרחבה. המשמעות היא ש־uBOL עצמו לא צורכך משאבי מעבד/זיכרון בזמן שחסימת התוכן מתרחשת תהליך ה־service worker של uBOL נדרש _אך ורק_ בזמן הידוד עם החלון הקופץ או עם עמוד האפשרויות.
uBOL לא דורש הרשאת "קריאה ושינוי נתונים" נרחבות במהלך ההתקנה, לכן היכולות המוגבלות שלה הישר מהקופסה בהשוואה ל־uBlock Origin או חוסמי תוכן אחרים הדורשים הרשאות "קריאה ושינוי נתונים" נרחבות כבר בזמן ההתקנה.
עם זאת, uBOL מאפשר להעניק *באופן מפורש* הרשאות נרחבות לאתרים מסויימים על פי בחירה, למיטוב הסינון באתרים אלה, באמצעות סינון קוסמטי והזרקות סקריפלטים.
כדי להעניק הרשאות נרחבות באתר נתון, נא לפתוח את הלוח הקופץ ולבחור באופן סינון גבוה יותר כגון מיטבי או מלא.
לאחר מכן, תוצג אזהרת דפדפן על השפעות מתן הרשאות נוספות אותן מבקשת ההרחה באתר הנוכחי, הדפדפן ימתין לקבלת תשובה האם לקבל או לדוחות את בקשת ההרשאה.
אם תקבל את הבקשה של uBOL להרשאות נוספות באתר הנוכחי, הוא יוכל לסנן טוב יותר תוכן עבור האתר הנוכחי.
ניתן להגדיר את מצב הסינון המוגדר כברירת מחדל מדף האפשרויות של uBOL. אם הבחירה היתה באופןסינון מיטבי או מלא כברירת המחדל, יידרש להעניק ל־uBOL הרשאת קריאה שנוי נתונים בכל אתרי הרשת.
יש לזכור שזו עדיין 'עבודה בתהליך', עם המטרות הבאות:
- אין הרשאות מארח רחבות בזמן ההתקנה -- הרשאות מורחבות מוענקות במפורש על ידי המשתמש על בסיס לכל אתר.
הכרזתי לחלוטין, אמין ויעיל בצריכת משאבי מעבד/זיכרון.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) एक *अनुमति-रहित* MV3-आधारित कन्टेन्ट ब्लॉकर है।
uBO Lite (uBOL) is an MV3-based content blocker.
डिफ़ॉल्ट रूलसेट uBlock Origin के डिफ़ॉल्ट फ़िल्टर सेट के अनुरूप होता है:
@@ -7,24 +7,6 @@ uBO Lite (uBOL) एक *अनुमति-रहित* MV3-आधारित
- EasyPrivacy
- Peter Lowe की विज्ञापन एवं ट्रैकिंग सर्वर सू‍ची
आप विकल्प पृष्ठ पर जाकर और अधिक रूलसेट जोड़ सकते हैं -- पॉपअप पैनल में _Cogs_ आइकन पर क्लिक करें।
आप विकल्प पृष्ठ पर जाकर और अधिक नियम-सेट सक्षम कर सकते हैं -- पॉपअप पैनल में _Cogs_ आइकन पर क्लिक करें।
uBOL पूरी तरह से वर्णनात्मक है, जिसका यह अर्थ है कि फ़िल्टरिंग के लिए एक स्थायी uBOL प्रक्रिया की कोई आवश्यकता नहीं है, और CSS/JS इंजेक्शन-आधारित कन्टेन्ट फ़िल्टरिंग एक्सटेंशन के बजाय ब्राउज़र द्वारा विश्वसनीय रूप से की जाती है। इसका यह अर्थ है कि कन्टेन्ट ब्लॉक करते समय uBOL द्वारा सीपीयू/मेमोरी संसाधनों का उपभोग स्वयं नहीं किया जाता है -- uBOL की सर्विस प्रोसेस की आवश्यकता _केवल_ तब होती है जब आप पॉपअप पैनल या विकल्प पृष्ठों पर कोई अंत:क्रिया करते हैं।
uBOL को इन्सटॉल करते समय "डेटा को पढ़ने और संशोधित करने" की व्यापक अनुमति की आवश्यकता नहीं होती है, अतः इसकी सीमित क्षमताओं तत्काल उपयोगिता की तुलना में uBlock Origin या अन्य कन्टेन्ट ब्लॉकर को इन्सटॉलेशन के समय "डेटा को पढ़ने और संशोधित करने" की व्यापक अनुमतियों की आवश्यकता होती है।
हालांकि, uBOL आपको अपनी मनपसंद विशिष्ट साइटों पर विस्तारित अनुमतियां देना *स्पष्ट रूप से* अनुमत करता है ताकि यह कॉस्मेटिक फ़िल्टरिंग और स्क्रिप्टलेट इंजेक्शन का उपयोग करके उन साइटों पर अच्छी तरह से फ़िल्टर कर सके।
किसी एक साइट पर विस्तारित अनुमतियां देने के लिए, पॉपअप पैनल खोलें और उच्च फ़िल्टरिंग मोड, जैसे कि 'अनुकूलतम' (ऑप्टिमल) या 'पूर्ण' (कंपलीट) चुनें।
इसके बाद ब्राउज़र द्वारा आपको वर्तमान साइट पर एक्सटेंशन द्वारा अनुरोधित अतिरिक्त अनुमतियों को देने के प्रभावों के बारे में चेतावनी दी जाएगी, और आपको ब्राउज़र को यह बताना होगा कि आप अनुरोध को स्वीकार करते हैं या अस्वीकार करते हैं।
यदि आप वर्तमान साइट पर अतिरिक्त अनुमतियों के लिए uBOL के अनुरोध को स्वीकार करते हैं, तो यह वर्तमान साइट के लिए कन्टेन्ट अच्छी तरह से फ़िल्टर करने में सक्षम होगा।
आप uBOL के विकल्प पृष्ठ से डिफ़ॉल्ट फ़िल्टरिंग मोड को सेट कर सकते हैं। यदि आप 'अनुकूलतम' (ऑप्टिमल) या 'पूर्ण' (कंपलीट) मोड को डिफ़ॉल्ट रूप से चुनते हैं, तो आपको uBOL को सभी वेबसाइटों पर डेटा को पढ़ने और संशोधित करने के लिए अनुमत करना होगा।
ध्यान रखें कि यह कार्य अभी भी प्रगतिधीन है, और इसके न‍िम्नांकित अंतिम लक्ष्यों तय किये गए हैं:
- इन्सटॉल करते समय कोई व्यापक होस्ट अनुमतियां नहीं -- विस्तारित अनुमतियां उपयोगकर्ता द्वारा हर एक साइट के आधार पर स्पष्ट रूप से दी जाती हैं।
- विश्वसनीयता और सीपीयू/मेमोरी दक्षता के लिए पूरी तरह वर्णनात्मक।

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) je bloker sadržaja *bez dopuštenja* baziran na MV3.
uBO Lite (uBOL) je bloker sadržaja baziran na MV3.
Zadana lista pravila odgovara uBlock Origin-ovoj zadanoj listi filtera:
@@ -7,24 +7,6 @@ Zadana lista pravila odgovara uBlock Origin-ovoj zadanoj listi filtera:
- EasyPrivacy
- Peter Lowe-ova lista oglasa i pratećih servera
Možete dodati više skupova pravila tako što ćete posjetiti stranicu s opcijama -- kliknite ikonu _zupčanika_ na skočnoj ploči.
Možete omogućiti više skupova pravila tako što ćete posjetiti stranicu s opcijama -- kliknite ikonu _Cogs_ na skočnoj ploči.
uBOL je u potpunosti deklarativan, što znači da nema potrebe za trajnim uBOL procesom za filtriranje, a filtriranje sadržaja temeljeno na ubacivanju CSS/JS pouzdano izvodi sam preglednik, a ne ekstenzija. To znači da sam uBOL ne troši CPU/memorijske resurse dok je blokiranje sadržaja u tijeku -- uBOL-ov servisni radni proces potreban je _samo_ kada komunicirate s skočnom pločom ili stranicama s opcijama.
uBOL ne zahtijeva široku dozvolu za "čitanje i izmjenu podataka" u vrijeme instalacije, stoga ima zadane ograničene mogućnosti u usporedbi s uBlock Origin ili drugim blokatorima sadržaja koji zahtijevaju veću dozvolu za "čitanje i izmjenu podataka" u vrijeme instalacije.
Međutim, uBOL vam omogućuje da *eksplicitno* dodijelite proširena dopuštenja na određenim web-stranicama po vašem izboru tako da može bolje filtrirati te web-stranice koristeći kozmetičko filtriranje i injekcijske skripte.
Da biste dodijelili proširena dopuštenja na određenoj web stranici, otvorite skočnu ploču i odaberite viši način filtriranja kao što je Optimalno ili Potpuno.
Preglednik će vas tada upozoriti o učincima dodjele dodatnih dopuštenja koje traži ekstenzija na trenutnom mjestu, a vi ćete morati reći pregledniku prihvaćate li ili odbijate zahtjev.
Ako prihvatite uBOL-ov zahtjev za dodatnim dozvolama na trenutnoj stranici, moći će bolje filtrirati sadržaj na njoj.
Zadani način filtriranja možete postaviti na stranici s opcijama uBOL-a. Ako kao zadano odaberete Optimalni ili Potpuni način rada, morati ćete dati uBOL-u dopuštenje za čitanje i izmjenu podataka na svim web stranicama.
Imajte na umu da je ovo još u tijeku, sa sljedećim krajnjim ciljevima:
- Nema širokih dopuštenja hosta u vrijeme instalacije -- proširena dopuštenja izričito dodjeljuje korisnik za svaku pojedinačnu stranicu.
- Potpuno deklarativno za pouzdanost i učinkovitost CPU/memorije.

View File

@@ -1,30 +1,12 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
A uBO Lite (uBOL) egy MV3-alapú tartalomblokkoló.
Az alapértelmezett szabálykészlet megfelel a uBlock Origin alapértelmezett szűrőkészletének:
- uBlock Origin beépített filter listái
- uBlock Origin beépített szűrőlistái
- EasyList
- EasyPrivacy
- Peter Lowe hirdetés és nyomkövető szerver listája
- Peter Lowe hirdetési és nyomkövető-kiszolgálókat tartalmazó listája
További szabályokat adhat hozzá a beállítások oldalon - kattintson a _Cogs_ ikonra a felugró panelen.
További szabályokat engedélyezhet a beállítások oldalon kattintson a _Fogaskerekek_ ikonra a felugró panelen.
Az uBOL teljes mértékben deklaratív, vagyis nincs szükség állandó uBOL folyamatra a szűréshez, és a CSS/JS injekció alapú tartalomszűrést maga a böngésző végzi megbízhatóan, nem pedig a kiterjesztés. Ez azt jelenti, hogy az uBOL maga nem fogyaszt CPU/memória erőforrásokat, amíg a tartalom blokkolása folyamatban van az uBOL szervizmunkás folyamatára _csak_ akkor van szükség, amikor az előugró panellel vagy a beállítási oldalakkal lép kapcsolatba.
Az uBOL nem igényel széles körű „adatok olvasása és módosítása” engedélyt a telepítéskor, ezért korlátozott képességei vannak, mint az uBlock Origin vagy más tartalomblokkolók, amelyek széles körű „adatok olvasása és módosítása” engedélyeket igényelnek a telepítéskor.
Az uBOL azonban lehetővé teszi, hogy *kifejezetten* kiterjesztett engedélyeket adjon az Ön által választott bizonyos webhelyekhez, hogy jobban szűrhessen ezeken a webhelyeken kozmetikai szűréssel és szkriptlet-injekciókkal.
Ha kiterjesztett engedélyeket szeretne adni egy adott webhelyen, nyissa meg az előugró panelt, és válasszon magasabb szűrési módot, például Optimális vagy Teljes.
A böngésző ekkor figyelmezteti Önt a bővítmény által kért további engedélyek megadásának hatásaira az aktuális webhelyen, és közölnie kell a böngészővel, hogy elfogadja-e vagy elutasítja a kérést.
Ha elfogadja az uBOL további engedélyekre vonatkozó kérését az aktuális webhelyen, akkor jobban tudja szűrni az aktuális webhely tartalmát.
Az alapértelmezett szűrési módot az uBOL beállítási oldalán állíthatja be. Ha az Optimális vagy a Teljes módot választja alapértelmezettként, akkor az uBOL-nak engedélyt kell adnia az adatok olvasására és módosítására az összes webhelyen.
Ne feledje, hogy ez még folyamatban van, a következő célokkal:
- Nincsenek széles körű gazdagép-engedélyek a telepítés során a kiterjesztett engedélyeket a felhasználó kifejezetten webhelyenként adja meg.
- Teljesen deklaratív a megbízhatóság és a CPU/memória hatékonysága szempontjából.
A uBOL teljes mértékben deklaratív, vagyis nincs szükség állandó uBOL folyamatra a szűréshez, és a CSS/JS injektálás-alapú tartalomszűrést maga a böngésző végzi megbízhatóan, nem pedig a kiegészítő. Ez azt jelenti, hogy az uBOL maga nem fogyaszt CPU/memória erőforrásokat, amíg a tartalom blokkolása folyamatban van az uBOL service worker folyamatára _csak_ akkor van szükség, amikor az felugró panellel vagy a beállítási oldalakkal érintkezik.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) is an MV3-based content blocker.
Կանոնների լռելյայն փաթեթը համապատասխանում է uBlock Origin-ի լռելյայն զտիչների փաթեթին։
@@ -7,28 +7,6 @@ uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
- EasyPrivacy
- Peter Lowe-ի գովազդային և հետագծող սպասարկիչների ցուցակ
Դուք կարող եք ավելացնել ուրիշ կանոններ՝ այցելելով ընտրանքների էջը. կտտացրեք Ժանանվակի_պատկերակին դուրս լողացող վահանակում։
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL-ն ամբողջությամբ դեկլարատիվ է, այսինքն՝ զտման համար անընդհատ կատարվող uBOL գործընթացի կարիք չկա, իսկ CSS/JS արմատավորման վրա հիմնված բովանդակության զտումը հուսալիորեն իրականացվում է զննիչի կողմից, այլ ոչ թե ընդլայնման միջոցով։ Սա նշանակում է, որ uBOL հավելումը չի սպառում մշակիչի/հիշողության որևէ ռեսուրս, երբ տեղի է ունենում գովազդի արգելափակումը. uBOL աշխատանքային գործընթացն աշխատում է _միայն_ երբ Դուք փոփոխություններ եք կատարում դուրս լողացող վահանակում կամ ընտրանքների էջում։
uBOL-ը տեղադրման ժամանակ «տվյելները լիովին ընթերցելու և փոփոխելու» թույլտվություն չի պահանջում, ուստի այն ունի սահմանափակ հնարավորություններ՝ համեմատած uBlock Origin-ի և բովանդակության այլ արգելափակիչների հետ, որոնք տեղադրման ժամանակ պահանջում են այդպիսի թույլտվություն։
Однако uBOL позволяет *намеренно* давать расширенные разрешения для определенных сайтов - по вашему усмотрению, чтобы эффективнее работать, используя косметическую фильтрацию и scriptlet-внедрения.
Այնուամենայնիվ, uBOL-ը թույլ է տալիս *դիտմամբ* տրամադրել ընդլայնված թույլտվություններ Ձեր ընտրած կայքերի համար, որպեսզի այն կարողանա էլ ավելի լավ զտել այդ կայքերը՝ օգտագործելով կոսմետիկ զտումը և սցենարների արմատավորումները։
Для предоставления расширенных разрешений на текущем сайте - откройте всплывающую панель и выберите повышенный режим фильтрации: Оптимальный или Полный.
Ընթացիկ կայքում ընդլայնված թույլտվություններ տրամադրելու համար բացեք դուրս լողացող վահանակը և ընտրեք ընդլայնված զտման ռեժիմ՝ Գերադասելի կամ Ամբողջական։
Այնուհետև զննիչը կզգուշացնի Ձեզ ընթացիկ կայքում ընդլայնման կողմից պահանջվող լրացուցիչ թույլտվությունների տրամադրման հետևանքների մասին, և Դուք պետք է ընտրեք՝ ընդունում եք, թե մերժում եք հայտը։
Եթե ​​ընդունեք uBOL-ին լրացուցիչ թույլտվություններ տալու հայտը, ապա այն կկարողանա ավելի արդյունավետ կերպով զտել ընթացիկ կայքի բովանդակությունը։
Դուք կարող եք սահմանել զտման լռելյայն ռեժիմը uBOL-ի ընտրանքների էջում։ Եթե ​​որպես լռելյայն ընտրեք «Գերադասելի» կամ «Ամբողջական» ռեժիմը, պետք կլինի uBOL-ին թույլտվություն տրամադրեք կարդալու և փոփոխելու տվյալները բոլոր կայքերում։
Հիշեք, որ այս նախագիծը մշակման ակտիվ փուլում է, որ ունի հետևյալ նպատակները.
- Տեղադրման ընթացքում Սահմանափակ թույլտվություններով աշխատանք տեղադրման ժամանակ. օգտվողը ընդլայնված թույլտվություններ է տալիս իր հայեցողությամբ, յուրաքանչյուր կայքի համար առանձին։
- Ամբողջովին դեկլարատիվ է հուսալիության և մշակիչի/հիշողության արտադրողականության համար։

View File

@@ -1,30 +1,12 @@
uBO Lite (uBOL) adalah pemblokir konten berbasis MV3 yang membutuhkan lebih sedikit perizinan.
uBO Lite (uBOL) adalah pemblokir konten berbasis MV3.
Kumpulan aturan bawaan sesuai dengan kumpulan penyaringan bawaan uBlock Origin:
- Daftar filter asli uBlock Origin
- Daftar filter bawaan uBlock Origin
- EasyList
- EasyPrivacy
- Daftar server iklan dan pelacak Peter Lowe
kamu dapat menambahkan rulesets di halaman opsi -- klik ikon _Cogs_ di panel popup.
Anda dapat mengaktifkan lebih banyak rangkaian aturan dengan mengunjungi halaman opsi -- klik ikon _Cogs_ di panel popup.
uBOL sepenuhnya deklaratif, yang mana tidak membutuhkan proses permanen uBOL untuk penyaringan terjadi, dan penyaringan konten berbasis injeksi CSS/JS dilakukan sepenuhnya oleh perambaan itu sendiri ketimbang oleh ekstensi. Ini berarti uBOL sendiri tidak mengkonsumsi CPU/sumber daya memori selama melakukan pemblokiran konten -- proses pekerja layanan uBOL dibutuhkan _hanya_ ketika anda berinteraksi dengan panel popup atau opsi halaman.
uBOL tidak memerlukan izin "baca dan modifikasi data" yang luas pada waktu penginstalan, oleh karena itu kemampuannya yang terbatas di luar kotak dibandingkan dengan uBlock Origin atau pemblokir konten lain yang memerlukan izin "baca dan modifikasi data" yang luas pada waktu penginstalan.
Namun, uBOL memungkinkan Anda untuk *secara eksplisit* memberikan izin yang tambahan pada situs tertentu pilihan Anda sehingga dapat memfilter situs tersebut dengan lebih baik menggunakan pemfilteran tampilan dan injeksi scriptlet.
Untuk memberikan izin tambahan pada situs tertentu, buka panel popup dan pilih mode pemfilteran yang lebih tinggi seperti Optimal atau Complete.
Perambaan kemudian akan memperingatkan anda tentang efek memberikan izin tambahan yang diminta oleh ekstensi pada situs saat ini, dan Anda harus memberitahu perambaan apakah anda menyetujui atau menolak permintaan.
Jika Anda menyetujui permintaan uBOL untuk izin tambahan pada situs saat ini, itu akan dapat menyaring konten dengan lebih baik pada situs saat ini.
Kamu bisa mengatur Filter default dari halaman pengaturan UBOL's Jika Anda memilih mode Optimal atau Komplit sebagai bawaan, Anda perlu memberikan uBOL izin untuk membaca dan mengubah data pada semua situs web.
Harap diingat bahwa ini masih dalam proses pengerjaan, dengan tujuan akhir ini:
- Tidak ada izin host yang luas saat penginstalan -- izin yang diperpanjang secara eksplisit diberikan pengguna berdasarkan per-situs.
- Sepenuhnya delkaratif untuk reliabilitas dan CPU/efisiensi memori.
uBOL sepenuhnya bersifat deklaratif, artinya tidak diperlukan proses uBOL permanen agar penyaringan dapat terjadi, dan penyaringan konten berbasis injeksi CSS/JS dilakukan secara andal oleh browser itu sendiri dan bukan oleh ekstensi. Artinya uBOL sendiri tidak mengonsumsi sumber daya CPU/memori saat pemblokiran konten sedang berlangsung -- proses pekerja layanan uBOL diperlukan _hanya_ saat Anda berinteraksi dengan panel popup atau halaman opsi.

View File

@@ -1,30 +1,12 @@
uBO Lite (uBOL) è un sistema per bloccare contenuti che *non richiede autorizzazioni* basato su MV3.
uBO Lite (uBOL) è un sistema di blocco dei contenuti basato su MV3.
L'insieme di regole predefinite corrisponde a quello di uBlock Origin:
L'insieme di regole predefinito corrisponde all'insieme di filtri predefinito di uBlock Origin:
- Elenco dei filtri integrati in uBlock Origin
- Liste dei filtri integrati di uBlock Origin
- EasyList
- EasyPrivacy
- Elenco dei server di tracciatura e pubblicità di Peter Lowe
- Elenco dei server pubblicitari e di tracciamento di Peter Lowe
Puoi aggiungere altre regole nella pagina delle opzioni. Clicca sull'icona _Ingranaggi_ nel pannello a comparsa.
Puoi abilitare altri set di regole visitando la pagina delle opzioni: clicca sull'icona _Cogs_ nel pannello a comparsa.
uBOL è interamente dichiarativo ovvero non è necessario un processo uBOL permanente per eseguire il filtraggio e il filtraggio dei contenuti CSS/JS inietattai viene eseguito in modo affidabile dal browser stesso piuttosto che dall'estensione. Ciò significa che lo stesso uBOL non consuma risorse di CPU/memoria mentre il blocco dei contenuti è in corso: il processo di lavoro di servizio di uBOL è richiesto _solo_ quando interagisci con il pannello popup o le pagine delle opzioni.
uBOL non richiede un'ampia autorizzazione di "lettura e modifica dei dati" al momento dell'installazione, da qui le sue capacità limitate rispetto a uBlock Origin o ad altre estensioni che richiedono ampie autorizzazioni di "lettura e modifica dei dati" al momento dell'installazione.
Tuttavia, uBOL consente di concedere *esplicitamente* permessi estesi a siti specifici di vostra scelta, in modo da poter filtrare meglio tali siti utilizzando il filtraggio cosmetico e le iniezioni di scriptlet.
Per concedere autorizzazioni estese su un determinato sito, apri il pannello popup e scegli una modalità di filtraggio più restrittiva come Ottimale o Completa.
Il browser ti avviserà degli effetti della concessione delle autorizzazioni aggiuntive richieste dall'estensione sul sito corrente e dovrai comunicare al browser se accetti o rifiuti la richiesta.
Se accetti la richiesta di uBOL per ulteriori autorizzazioni sul sito corrente, sarà in grado di filtrare meglio i contenuti per il sito corrente.
Puoi impostare la modalità di filtraggio predefinita dalla pagina delle opzioni di uBOL. Se scegli come predefinita la modalità Ottimale o Completa, dovrai concedere a uBOL il permesso di leggere e modificare i dati di tutti i siti web.
Tieni presente che questo è ancora un work in progress, con questi obiettivi finali:
- Nessuna autorizzazione host ampia al momento dell'installazione: le autorizzazioni estese vengono concesse esplicitamente dall'utente in base al sito.
- Interamente dichiarativo per l'affidabilità e l'efficienza della CPU/memoria.
uBOL è interamente dichiarativo, ovvero non è necessario che ci sia un processo di uBOL permanente per poter eseguire il filtraggio; e il filtraggio dei contenuti basato sull'iniezione di elementi CSS/JS viene eseguito in modo affidabile dal browser stesso piuttosto che dall'estensione. Ciò significa che lo stesso uBOL non consuma risorse di CPU o memoria mentre il blocco dei contenuti viene eseguito: il processo che esegue il servizio di uBOL è richiesto _solamente_ quando interagisci con il pannello a comparsa o con le pagine delle opzioni.

View File

@@ -1,30 +1,12 @@
uBO Lite (uBOL) は権限を必要としない MV3 ベースのコンテンツブロッカーです。
uBO Lite (uBOL) は MV3 ベースのコンテンツブロッカーです。
デフォルトのルールセットは以下の通り。uBlock Origin のデフォルトフィルターセットと同じです。
デフォルトのルールセットは以下の通りです。uBlock Origin のデフォルトフィルターセットと同じです。
- uBlock Origin の内フィルターリスト
- uBlock Origin の内フィルターリスト
- EasyList
- EasyPrivacy
- Peter Lowes Ad and tracking server list
オプションページでルールセットを追加できます -- ポップアップ パネルの「歯車」アイコンをクリックします
オプションページでルールセットを有効化できますポップアップパネルの「歯車」アイコンをクリックしてください
uBOL は完全に宣言的です。つまり、フィルタリングを行うための恒久的な uBOL プロセスは必要なく、CSS/JS インジェクション ベースのコンテンツフィルタリングは拡張機能ではなくブラウザによって、確実に実行されます。 これは uBOL がコンテンツブロッキングの際に CPU、メモリを消費しないことを意味します。uBOL のサービス ワーカーは ポップアップ パネルや設定ページでのみ必要とされます。
uBOL はインストール時に広範な「データの読み取りと変更」の権限を要求しません。したがって uBlock Origin やその他の、インストール時に広範な「データの読み取りと変更」の権限を要求するコンテンツ ブロッカーに比べて、行えることが制限されています。
しかし、ユーザーの選んだ特定のサイトに対する拡張権限を「明示的に」付与すれば、そのサイト上で整形フィルターやスクリプトレットの挿入を用いた優れたフィルタリングを行うことができます。
特定のサイトで拡張された権限を付与するには、ポップアップ パネルを開いて、「最適」や「完全」のようなより高いフィルタリングモードを選択します。
ブラウザは、現在のサイトで拡張機能によってリクエストされた追加の権限を付与することによってもたらされる影響について警告します。承認または拒否することができます。
閲覧中のサイトに対するuBOLの追加的な権限要求リクエストを承認すると、そのサイトへのコンテンツフィルタリングの品質をあげることができます。
uBOL の設定ページで既定のフィルタリングモードを設定できます。 「最適」または「完全」を規定のフィルタリング モードに設定した場合、すべてのWebサイトで「データの読み取りと変更」権限を付与する必要があります。
注意として、uBOL はまだ開発途中で、これらの開発目標があります。
- インストール時に広範なホスト権限は不要 -- 拡張された権限はサイトごとにユーザーによって明示的に付与されます。
- 完全に宣言的で、CPU、メモリの効率性が良い

View File

@@ -1,30 +1,12 @@
uBO Lite (uBOL) *ნებართვებისგან თავისუფალი* MV3-ზე დაფუძნებული შიგთავსის შემზღუდავი.
uBO Lite (uBOL) შიგთავის შემზღუდავია MV3-ის მიხედვი.
წესების ნაგულისხმევი კრებული იგივეა, რასაც uBlock Origin იყენებს:
- uBlock Origin ფილტრების ჩაშენებული სიები
- ჩაშენებული ფილტრებით, uBlock Origin რომ იყენებს
- EasyList
- EasyPrivacy
- Peter Lowe სარეკლამო სერვერების სია
შეგიძლიათ სხვა კრებულებიც აამატეთ პარამეტრების გვერდიდან -- დაწკაპეთ _Cogs_ ხატულაზე ამომხტომ არეში.
შეგიძლიათ სხვა კრებულებიც აამოქმედოთ პარამეტრების გვერდიდან -- დაწკაპეთ _Cogs_ ხატულაზე ამომხტომ არეში.
uBOL სრულად დეკლარაციულია, ანუ არაა საჭირო მუდმივად იყოს გაშვებული uBOL-პროცესი გასაფილტრად, CSS/JS ჩანაცვლებით შიგთავსის გაფილტვრას თავად ბრაუზერი უზრუნველყოფს ნაცვლად გაფართოებისა, რაც მეტად საიმედოა. შესაბამისად, uBOL თავად არ დატვირთავს პროცესორს/ოპერატიულს შიგთავსის შეზღუდვის დროს -- uBOL-ის შუამავალ მომსახურე პროცესი საჭიროა _მხოლოდ_ მაშინ, როცა ამომხტომ არესთან ურთიერთქმედებთ ან ცვლით პარამეტრებს.
uBOL არ საჭიროებს „მონაცემთა წაკითხვისა და შეცვლის“ სრულ ნებართვას დაყენებისას, ვინაიდან მოკვეცილი შესაძლებლობებითაა წარმოდგენილი uBlock Origin-თან ან რეკლამის სხვა შემზღუდავებთან შედარებით, რომლებიც ერთბაშად ითხოვს „მონაცემთა წაკითხვისა და შეცვლის“ უფლებას დაყენებისთანავე.
ამასთანავე, uBOL საშუალებას გაძლევთ *მკაფიო* თანხმობით მიუთითოთ გაფართოებული ნებართვები ცალკეულ საიტებზე სურვილისამებრ, რომ უკეთ შეიზღუდოს შიგთავსი ხილული ელემენტების გაფილტვრითა და პროგრამული ჩამატებებით.
გაფართოებული ნებართვების მისაცემად მითითებულ საიტზე, გახსენით ამომხტომი არე და აირჩიეთ ფილტრაციის უფრო მაღალი დონე, როგორიცაა „წონასწორული“ ან „სრული“.
შემდეგ ბრაუზერი გაგაფრთხილებთ გაფართოების მიერ დამატებითი ნებართვების მოთხოვნის შესახებ მოცემულ საიტზე და აირჩევთ, დათანხმდებით თუ უარყოფთ მოთხოვნას.
თუ დათანხმდებით uBOL-ს მოთხოვნას დამატებითი ნებართვებისთვის მიმდინარე საიტზე, უკეთ შეძლებს შიგთავსის შეზღუდვას აღნიშნულ საიტზე.
შეგიძლიათ მიუთითოთ გაფილტვრის ნაგულისხმევი რეჟიმი uBOL-ის პარამეტრების გვერდიდან. თუ აირჩევთ „წონასწორულ“ ან „სრულ“ რეჟიმს ნაგულისხმევად, uBOL-ს უნდა დართოთ ყველა საიტზე მონაცემთა წაკითხვისა და შეცვლის ნება.
დაიხსომეთ, რომ ჯერ კიდევ მუშავდება შემდეგი მიზნებისთვის:
- არანაირი სრული ნებართვების ერთბაშად მოთხოვნა დაყენებისას -- დამატებითი უფლებები შეიძლება მიეცეს მომხმარებლის მკაფიო თანხმობით თითოეულ საიტზე ცალ-ცალკე.
- სრულად დეკლარაციულია პროცესორის/მეხსიერების დასაზოგად.
uBOL მოქმედებს სრულად დადგენილი წესებით, შესაბამისად, არ ესაჭიროება მუდმივად გაშვებული uBOL-პროცესი გასაფილტრად, ხოლო როცა შიგთავსის შეზღუდვა ითხოვს ჩანაცვლდეს CSS/JS, ამას თავად ბრაუზერი უზრუნველყოფს საიმედო გზით, ნაცვლად გაფართოებისა. აქედან გამომდინარე, uBOL თავად არ მოიხმარს პროცესორს/მეხსიერებას შიგთავსის შეზღუდვისს -- uBOL საჭიროებს შუამავალ მომსახურე პროცეს _მხოლოდ_ მაშინ, როცა ამომხტომ არესთან ურთიერთქმედებთ ან ცვლით პარამეტრებს.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) is an MV3-based content blocker.
The default ruleset corresponds to uBlock Origin's default filterset:
@@ -7,24 +7,6 @@ The default ruleset corresponds to uBlock Origin's default filterset:
- EasyPrivacy
- Peter Lowes Ad and tracking server list
You can add more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) is an MV3-based content blocker.
The default ruleset corresponds to uBlock Origin's default filterset:
@@ -7,24 +7,6 @@ The default ruleset corresponds to uBlock Origin's default filterset:
- EasyPrivacy
- Peter Lowes Ad and tracking server list
You can add more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. ಇದರರ್ಥ ವಿಷಯ ನಿರ್ಬಂಧಿಸುವಿಕೆಯು ನಡೆಯುತ್ತಿರುವಾಗ uBOL ಸ್ವತಃ CPU/ಮೆಮೊರಿ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಬಳಸುವುದಿಲ್ಲ -- ನೀವು ಪಾಪ್ಅಪ್ ಪ್ಯಾನೆಲ್ ಅಥವಾ ಆಯ್ಕೆಯ ಪುಟಗಳೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸಿದಾಗ uBOL ನ ಸೇವಾ ವರ್ಕರ್ ಪ್ರಕ್ರಿಯೆಯು _ಮಾತ್ರಾ_ ಅಗತ್ಯವಿದೆ.

View File

@@ -1,4 +1,4 @@
uBO Lite(uBOL)는 *적은 권한을 요구하는* MV3 기반 콘텐츠 차단기입니다.
uBO Lite (uBOL)는 MV3 기반 콘텐츠 차단기입니다.
기본 규칙 목록은 uBlock Origin의 기본 필터 목록과 대응됩니다.
@@ -7,24 +7,6 @@ uBO Lite(uBOL)는 *적은 권한을 요구하는* MV3 기반 콘텐츠 차단기
- EasyPrivacy
- Peter Lowes Ad and tracking server list
설정 페이지에서 규칙 목록을 더욱 추가할 수 있습니다. 팝업 창의 _Cogs_ 아이콘을 누르세요.
설정 페이지에서 규칙 목록을 더 활성화할 수 있습니다. 팝업 창의 _Cogs_ 아이콘을 누르세요.
uBOL은 완전히 선언적이라 필터링 중 영구적으로 실행되는 uBOL 프로세스를 필요로 하지 않으며, CSS/JS 주입 기반 콘텐츠 필터링이 확장 프로그램이 아닌 브라우저 자체에서 더욱 안정적으로 동작합니다. 즉 uBOL 자체는 콘텐츠 차단을 하는 동안 CPU/메모리 리소스를 소비하지 않습니다. uBOL 서비스워커 프로세스는 사용자가 팝업 창이나 설정을 열었을 _때에만_ 동작합니다.
uBOL은 설치 시 광범위한 "읽기 및 수정" 권한을 요구하지 않으므로, 설치 후 즉시 쓸 수 있는 기능들은 uBlock Origin이나 설치 시 광범위한 "읽기 및 수정" 권한을 요구하는 다른 콘텐츠 차단기에 비해 제한됩니다.
하지만 uBOL에서는 원하는 특정 사이트에 대해 확장된 권한을 부여하여, 해당 사이트를 표면 필터링 및 스크립트 주입을 바탕으로 더욱 잘 필터링할 수 있습니다.
주어진 사이트에 확장된 권한을 부여하려면, 팝업 창을 열고 필터링 모드를 '최적'이나 '완전'과 같이 더 높은 수준으로 선택하세요.
브라우저는 확장 프로그램에 현재 사이트에 대한 추가 권한을 부여했을 때 발생할 수 있는 일에 대해 경고할 것이며, 권한 요청을 수락할지 거부할지 선택해야 합니다.
현재 사이트에 대해 uBOL에 추가 권한을 부여하면, 해당 사이트의 콘텐츠를 더욱 잘 필터링할 수 있습니다.
uBOL 설정 페이지에서 기본 필터링 모드를 설정할 수 있습니다. 기본 모드를 '최적' 혹은 '완전'으로 설정하는 경우, uBOL에 모든 웹사이트에서 데이터를 읽고 수정할 수 있는 권한을 부여해야 합니다.
본 확장 프로그램은 여전히 아래 목표를 달성하기 위해 개발 중인 단계입니다.
- 설치 시 광범위한 호스트 권한을 요구하지 않고, 사용자가 사이트마다 명시적으로 확장된 권한을 부여할 수 있도록 합니다.
- 완전히 선언적으로 구현하여 CPU/메모리 효율성과 신뢰성을 확보합니다.

View File

@@ -0,0 +1,30 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
The default ruleset corresponds to uBlock Origin's default filterset:
- uBlock Origin's built-in filter lists
- EasyList
- EasyPrivacy
- Peter Lowes Ad and tracking server list
You can add more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) is an MV3-based content blocker.
The default ruleset corresponds to uBlock Origin's default filterset:
@@ -7,24 +7,6 @@ The default ruleset corresponds to uBlock Origin's default filterset:
- EasyPrivacy
- Peter Lowes Ad and tracking server list
You can add more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.

View File

@@ -1,30 +1,12 @@
uBO Lite (uBOL) ir *bezatļauju* uz MV3 balstīts satura aizturētājs.
uBO Lite (uBOL) uz MV3 balstīts satura aizturētājs.
Noklusējuma nosacījumu kopa atbilst uBokc Origin noklusējuma aizturēšanas kopai:
Noklusējuma nosacījumu kopa atbilst uBock Origin noklusējuma aizturēšanas kopai:
- uBlock Origin iebūvētie aizturēšanas saraksti
- EasyList
- EasyPrivacy
- Pētera Lova (Peter Lowe) reklāmu un izsakošanas serveru saraksts
- Pētera Lova (Peter Lowe) reklāmu un izsekošanas serveru saraksts
Vairāk nosacījumu kopu var pievienot iestatījumu sadaļā -- jāklikšķina _Zobratu_ ikona uznirstošajā logā.
Vairāk nosacījumu kopu var iespējot iestatījumu sadaļā -- jāklikšķina _Zobratu_ ikona uznirstošajā logā.
uBOL ir pilnībā vispārīgs, kas nozīmē, ka nav nepieciešamības pēc pastāvīga uBOL procesa, lai notiktu aizturēšana, un uz CSS/JS ievietošanu balstīta satura aizturēšanu uzticami veic pārlūks, nevis paplašinājums. Tas nozīmē, ka uBOL pats par sevi neizmanto procesoru un atmiņu, kamēr satura aizturēšana ir notiekoša -- uBOL pakalpojuma strādņa process ir nepieciešams _tikai_ tad, kad notiek mijiedarbība ar uznirstošo logu vai iestatījumu sadaļām.
uBOL nav nepieciešamas plašas "lasīt un pārveidot datus" atļaujas uzstādīšanas laikā, tāpēc tam ir ierobežotas spējas pēc noklusējuma, salīdzinājumā ar uBlock Origin vai citiem satura aizturētājiem, kas pieprasa plašas "lasīt un pārveidot datus" atļaujas uzstādīšanas laikā.
Tomēr uBOL ļauj piešķirt paplašinātās atļaujas *tieši* noteiktās vietnēs pēc izvēles, lai tas varētu labāk veikt aizturēšanu tajās, izmantojot kosmētisku aizturēšanu un skriptu ievietošanu.
Lai nodrošinātu paplašinātas piekļuves tiesības noteiktā vietnē, jāatver uznirstošais logs un jāizvēlas striktāks aizturēšanas veids, kā, piemēram, "Labākais" vai "Pilnīgais".
Pārlūks tad brīdinās ietekmi, ko radīs paplašinājuma pieprasīto papildu atļauju nodrošināšana pašreizējā vietnē, un būs jānorāda, vai pieprasījums tiek apstiprināts vai noraidīts.
Ja pašreizējā vietnē tiek apstiprināts uBOL papildu atļauju pieprasījums, paplašinājums varēs labāk veikt satura aizturēšanu.
Noklusējuma aizturēšanas veids ir norādāms uBOL uzstādījumu lapā. Ja tiek izvēlēts "Labākais" vai "Pilnīgais" kā noklusējuma, tad būs nepieciešams nodrošināt uBOL tiesības rakstīt un pārveidot datus visās tīmekļa vietnēs.
Jāpatur prātā, ka šī iespēja joprojām tiek izstrādāta ar šādiem mērķiem:
- Nav plašu saimniekdatora atļauju uzstādīšanas laikā -- paplašinātas atļaujas nodrošina lietotājs atsevišķi katrai vietnei.
- Pilnībā vispārīgs - uzticamībai un procesora/atmiņas lietderīgai izmantošanai.

View File

@@ -1,30 +1,12 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) is an MV3-based content blocker.
The default ruleset corresponds to uBlock Origin's default filterset:
Стандардниот сет на правила одговара на стандардниот филтер сет на uBlock Origin:
- uBlock Origin's built-in filter lists
- Вградени филтер листи на uBlock Origin
- EasyList
- EasyPrivacy
- Peter Lowes Ad and tracking server list
- Листа на реклами и следачи на Peter Lowe
You can add more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
Можете да овозможите повеќе сетови на правила посетувајќи ја страницата со опции - кликнете на иконата _запчаник_ во попап панел.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.
uBOL е целосно декларативен, што значи дека не е потребен траен процес на uBOL за филтрирање да се одвива, а филтрирањето на содржини врз основа на инјекција на CSS/JS се извршува со сигурност од самото браузер, а не од самата екстензија. Ова значи дека самиот uBOL не консумира ресурси на CPU/меморија додека блокирањето на содржини е во тек - процесот на службениот работник на uBOL е потребен _само_ кога ќе е потребен со попап панел или страниците со опции.

View File

@@ -1,30 +1,12 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) is an MV3-based content blocker.
The default ruleset corresponds to uBlock Origin's default filterset:
ഡിഫോൾട്ട് റൂൾസെറ്റ് uBlock Origin-ന്റെ ഡിഫോൾട്ട് ഫിൽട്ടർസെറ്റുമായി യോജിക്കുന്നു:
- uBlock Origin's built-in filter lists
- EasyList
- EasyPrivacy
- Peter Lowes Ad and tracking server list
- uBlock ഒറിജിനിന്റെ ബിൽറ്റ്-ഇൻ ഫിൽട്ടർ ലിസ്റ്റുകൾ
- ഈസി ലിസ്റ്റ്
- ഈസി സ്വകാര്യത
- പീറ്റർ ലോവിന്റെ പരസ്യവും ട്രാക്കിംഗ് സെർവർ ലിസ്റ്റും
You can add more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.
uBOL പൂർണ്ണമായും ഡിക്ലറേറ്റീവ് ആണ്, അതായത് ഫിൽട്ടറിംഗ് സംഭവിക്കുന്നതിന് ഒരു സ്ഥിരമായ uBOL പ്രക്രിയയുടെ ആവശ്യമില്ല, കൂടാതെ CSS/JS ഇഞ്ചക്ഷൻ അടിസ്ഥാനമാക്കിയുള്ള ഉള്ളടക്ക ഫിൽട്ടറിംഗ്, എക്സ്റ്റൻഷനേക്കാൾ വിശ്വസനീയമായി ബ്രൗസർ തന്നെ നിർവഹിക്കുന്നു. ഉള്ളടക്കം തടയൽ നടന്നുകൊണ്ടിരിക്കുമ്പോൾ uBOL തന്നെ CPU/മെമ്മറി ഉറവിടങ്ങൾ ഉപയോഗിക്കില്ല എന്നാണ് ഇതിനർത്ഥം -- നിങ്ങൾ പോപ്പ്അപ്പ് പാനലുമായോ ഓപ്‌ഷൻ പേജുകളുമായോ സംവദിക്കുമ്പോൾ _only_ uBOL-ന്റെ സേവന വർക്കർ പ്രോസസ്സ് ആവശ്യമാണ്.

View File

@@ -1,30 +1,12 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) हे MV3-आधारित कंटेंट ब्लॉकर आहे.
The default ruleset corresponds to uBlock Origin's default filterset:
डीफॉल्ट नियमसंच uBlock Origin च्या डीफॉल्ट फिल्टरसेटशी संबंधित आहे:
- uBlock Origin's built-in filter lists
- uBlock Origin च्या बिल्ट-इन फिल्टर लिस्ट
- EasyList
- EasyPrivacy
- Peter Lowes Ad and tracking server list
- पीटर लोवची जाहिरात आणि ट्रॅकिंग सर्व्हर यादी
You can add more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
तुम्ही पर्याय पृष्ठाला भेट देऊन अधिक नियम संच सक्षम करू शकता -- पॉपअप पॅनेलमधील _Cogs_ चिन्हावर क्लिक करा.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.
uBOL पूर्णपणे घोषणात्मक आहे, म्हणजे फिल्टरिंगसाठी कायमस्वरूपी uBOL प्रक्रियेची गरज नाही, आणि CSS/JS इंजेक्शनवर आधारित सामग्री फिल्टरिंग ब्राउझरच्याच मदतीने विश्वासार्हपणे होते, विस्ताराद्वारे नव्हे. याचा अर्थ असा की सामग्री ब्लॉकिंग चालू असताना uBOL स्वतः CPU/मेमरी संसाधने वापरत नाही — uBOL चा सर्व्हिस वर्कर प्रोसेस फक्त तेव्हाच लागतो जेव्हा तुम्ही पॉपअप पॅनल किंवा पर्याय पृष्ठांशी संवाद साधता.

View File

@@ -1,30 +1,12 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) is an MV3-based content blocker.
The default ruleset corresponds to uBlock Origin's default filterset:
Set peraturan lalai sepadan dengan set penapis lalai uBlock Origin:
- uBlock Origin's built-in filter lists
- Senarai penapis terbina dalam uBlock Origin
- EasyList
- EasyPrivacy
- Peter Lowes Ad and tracking server list
- Senarai pelayan iklan dan penjejakan 'Peter Lowe'
You can add more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.
uBOL adalah deklaratif sepenuhnya, bermakna tidak ada keperluan untuk proses uBOL kekal untuk penapisan berlaku, dan penapisan kandungan berasaskan suntikan CSS/JS dilakukan sepenuhnya oleh penyemak imbas itu sendiri dan bukannya oleh sambungan. Ini bermakna uBOL sendiri tidak menggunakan sumber CPU/memori semasa penyekatan kandungan sedang berjalan -- proses pekerja perkhidmatan uBOL diperlukan _hanya_ apabila anda berinteraksi dengan panel timbul atau halaman pilihan.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) er en *tillatelses-begrenset* MV3-basert innholdsblokkerer.
uBO Lite (uBOL) er en MV3-basert innholdsblokkerer.
Standardregelsettet tilsvarer standardfiltersettet til uBlock Origin:
@@ -10,21 +10,3 @@ Standardregelsettet tilsvarer standardfiltersettet til uBlock Origin:
Du kan legge til flere regelsett ved å gå til innstillingssiden -- klikk _Tannhjul_-ikonet i oppsprettspanelet.
uBOL er fullstendig deklarativ, noe som betyr at det ikke er behov for en permanent uBOL-prosess for at filtreringen skal skje, og CSS/JS-injeksjonsbasert innholdsfiltrering utføres pålitelig av nettleseren selv i stedet for av utvidelsen. Dette betyr at uBOL selv ikke bruker CPU/minneressurser mens innholdsblokkering pågår -- uBOL's service worker-prosess kreves _bare_ når du samhandler med oppsprettspanelet eller innstillingssidene.
uBOL krever ikke bred "lese og endre data"-tillatelse under installasjonen, derav begrensede muligheter i utgangspunktet sammenlignet med uBlock Origin eller andre innholdsblokkerere som krever bred "lese og endre data"-tillatelse under installasjonen.
Men, uBOL lar deg *uttrykkelig* gi utvidede tillatelser på bestemte nettsteder du velger, slik at uBOL bedre kan filtrere på disse nettstedene ved bruk av kosmetisk filtrering og skriptlet-injeksjoner.
For å gi utvidede tillatelser på et gitt nettsted, åpne oppsprettspanelet og velg en høyere filtreringsmodus som Optimal eller Fullstendig.
Nettleseren vil da advare deg om effektene av å gi de ekstra tillatelsene som utvidelsen ber om på det gjeldende nettstedet, og du må fortelle nettleseren om du godtar eller avslår forespørselen.
Hvis du godtar forespørselen fra uBOL om ekstra tillatelser på det gjeldende nettstedet, vil uBOL være i stand til å filtrere innhold bedre for det gjeldende nettstedet.
Du kan angi standard filtreringsmodus fra innstillingssiden i uBOL. Hvis du velger Optimal eller Fullstendig modus som standard, må du gi uBOL tillatelsen til å lese og endre data på alle nettsteder.
Husk at dette fortsatt er et arbeid som pågår, med disse sluttmålene:
- Ingen brede vertstillatelser under installasjonen -- utvidede tillatelser gis uttrykkelig av brukeren på per-side-basis.
- Helt deklarativt for pålitelighet og CPU/minneeffektivitet.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) is een toestemmingsloze* MV3-gebaseerde inhoudsblokkeerder.
uBO Lite (uBOL) is een op MV3 gebaseerde inhoudsblokkeerder.
De standaard regelset komt overeen met de standaard filterset van uBlock Origin:
@@ -7,24 +7,6 @@ De standaard regelset komt overeen met de standaard filterset van uBlock Origin:
- EasyPrivacy
- Peter Lowes Ad and tracking server list
U kunt meer regelsets toevoegen door de optiespagina te bezoeken -- klik op het _tandwielpictogram_ in het pop-uppaneel.
U kunt meer regelsets inschakelen door de optiespagina te bezoeken -- klik hiervoor op het _tandwielpictogram_ in het pop-uppaneel.
uBOL is volledig declaratief, wat betekent dat er geen permanent uBOL-proces voor de filtering nodig is, en inhoudsfiltering op basis van CSS/JS-injectie op een betrouwbare manier door de browser zelf wordt uitgevoerd in plaats van door de extensie. Dit betekent dat uBOL zelf geen CPU-/geheugenbronnen gebruikt terwijl inhoudsblokkering actief is -- het serviceworker-proces van uBOL is _alleen_ vereist als u met het pop-uppaneel of de optiespaginas werkt.
uBOL vereist geen brede toestemming voor het lezen en aanpassen van gegevens tijdens installatie, vandaar de beperkte ingebouwde mogelijkheden ervan in vergelijking met uBlock Origin of andere inhoudsblokkeerders die brede toestemmingen voor het lezen en aanpassen van gegevens vereisen tijdens installatie.
U kunt in uBOL echter *expliciet* uitgebreide toestemmingen verlenen op bepaalde websites van uw keuze, zodat het op die websites beter kan filteren via cosmetische filtering en scriptlet-injecties.
Om uitgebreide toestemmingen op een bepaalde website te verlenen, opent u het pop-uppaneel en kiest u een hogere filtermodus, zoals Optimaal of Volledig.
De browser waarschuwt u dan over de gevolgen van het verlenen van de door de extensie aangevraagde aanvullende toestemmingen op de huidige website, en u dient de browser te laten weten of u de aanvraag accepteert of weigert.
Als u de aanvraag van uBOL voor aanvullende toestemmingen op de huidige website accepteert, zal het inhoud voor de huidige website beter kunnen filteren.
U kunt de standaard filtermodus instellen vanaf de optiespagina van uBOL. Als u de modus Optimaal of Volledig als de standaardmodus kiest, dient u uBOL de toestemming voor het lezen en aanpassen van gegevens op alle websites te verlenen.
Onthoud dat dit nog werk in uitvoering is, met deze einddoelen:
- Geen brede host-toestemmingen tijdens installatie -- uitgebreide toestemmingen worden expliciet en per website verleend door de gebruiker.
- Volledig declaratief omwille van betrouwbaarheid en CPU-/geheugenefficiëntie.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) is an MV3-based content blocker.
The default ruleset corresponds to uBlock Origin's default filterset:
@@ -7,24 +7,6 @@ The default ruleset corresponds to uBlock Origin's default filterset:
- EasyPrivacy
- Peter Lowes Ad and tracking server list
You can add more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.

View File

@@ -0,0 +1,12 @@
uBO Lite (uBOL) is an MV3-based content blocker.
ਮੂਲ ਨਿਯਮ-ਸਮੂਹ uBlock Origin ਦੇ ਮੂਲ ਫਿਲਟਰ-ਸਮੂਹ ਨਾਲ ਸੰਬੰਧਿਤ ਹੈ:
- uBlock Origin ਦੀਆਂ ਬਿਲਟ-ਇਨ ਫਿਲਟਰ ਸੂਚੀਆਂ
-ਸੌਖੀ-ਸੂਚੀ
-ਸੌਖੀ ਪਰਦੇਦਾਰੀ
- Peter Lowe ਦੀ ਇਸ਼ਤਿਹਾਰ ਅਤੇ ਟਰੈਕਿੰਗ ਸਰਵਰ ਸੂਚੀ
ਤੁਸੀਂ ਚੋਣਾਂ ਸਫ਼ੇ ਨੂੰ ਖੋਲ੍ਹ ਕੇ ਹੋਰ ਰੂਲ-ਸੈੱਟ ਸਮਰੱਥ ਕਰ ਕਦੇ ਹੋ -- ਪੌਪ-ਅੱਪ ਪੈਨਲ ਵਿੱਚ _Cogs_ icon ਨੂੰ ਕਲਿੱਕ ਕਰੋ।
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.

View File

@@ -1,30 +1,12 @@
uBO Lite (uBOL) to *niewymagający uprawnień* bloker treści bazujący na MV3.
uBO Lite (uBOL) to bloker treści oparty na MV3.
Domyślny zestaw reguł odpowiada domyślnemu zestawowi filtrów uBlock Origin:
wbudowane listy filtrów uBlock Origin
wbudowane listy filtrów rozszerzenia uBlock Origin
EasyList
EasyPrivacy
lista serwerów śledzących i reklam Petera Lowe'a
Możesz dodać więcej zestawów reguł, odwiedzając stronę opcji kliknij ikonę _Trybika_ w wyskakującym panelu.
Możesz włączyć więcej zestawów reguł, odwiedzając stronę opcji kliknij ikonę _koła zębatego_ w wyskakującym panelu.
uBOL jest całkowicie deklaratywny, co oznacza, że nie jest potrzebny stały proces uBOL w celu filtrowania, a filtrowanie treści oparte na wstrzykiwaniu CSS/JS jest wykonywane niezawodnie przez samą przeglądarkę, a nie przez rozszerzenie. Oznacza to, że sam uBOL nie zużywa zasobów procesora/pamięci, gdy trwa blokowanie treści proces Service Worker uBOL jest wymagany _tylko_ podczas interakcji z panelem wyskakującym lub stronami opcji.
uBOL w trakcie instalacji nie wymaga szerokich uprawnień do „odczytu i modyfikacji danych”, stąd jego ograniczone możliwości w porównaniu z uBlock Origin lub innymi blokerami treści, które w czasie instalacji wymagają szerokich uprawnień do „odczytu i modyfikacji danych”.
Jednakże uBOL umożliwia *jawnie* udzielanie rozszerzonych uprawnień na określonych wybranych witrynach, dzięki czemu może lepiej filtrować te witryny za pomocą filtrowania kosmetycznego i wstrzykiwania skryptletów.
Aby przyznać rozszerzone uprawnienia na danej witrynie, otwórz panel wyskakujący i wybierz wyższy tryb filtrowania, taki jak Optymalny lub Kompletny.
Przeglądarka wyświetli ostrzeżenie o skutkach przyznania dodatkowych uprawnień wymaganych przez rozszerzenie na bieżącej witrynie i będziesz musiał poinformować przeglądarkę, czy akceptujesz, czy odrzucasz żądanie.
Jeśli zaakceptujesz żądanie uBOL o dodatkowe uprawnienia na bieżącej witrynie, będzie on w stanie lepiej filtrować zawartość bieżącej witryny.
Możesz ustawić domyślny tryb filtrowania na stronie opcji uBOL. Jeśli tryb Optymalny lub Pełny zostanie wybrany jako domyślny, trzeba będzie przyznać uBOL uprawnienia do odczytu i modyfikacji danych na wszystkich stronach internetowych.
Należy pamiętać, że nadal trwają prace z następującymi celami końcowymi:
Brak szerokich uprawnień hosta w czasie instalacji rozszerzone uprawnienia są przyznawane jawnie przez użytkownika na podstawie poszczególnych witryn.
Całkowicie deklaratywna niezawodność i wydajność procesora/pamięci.

View File

@@ -1,30 +1,12 @@
O uBO Lite (uBOL) é um bloqueador de conteúdo baseado no MV3 com menor permissão.
O uBO Lite (uBOL) é um bloqueador de conteúdo baseado no MV3.
O conjunto de regras padrão corresponde ao conjunto de filtros padrão do uBlock Origin:
- Listas embutidas dos filtros do uBlock Origin
- EasyList
- EasyPrivacy
- Lista de servidores de anúncios e rastreadores do Peter Lowe
- Lista de servidores de anúncios e rastreamento por Peter Lowe
Você pode adicionar mais conjuntos de regras visitando a página das opções -- clique no ícone _Engrenagens_ no painel do pop-up.
Você pode ativar mais conjuntos de regras visitando a página de opções clique no ícone da _Engranagem_ no painel do pop-up.
O uBOL é totalmente declarativo, significando que não há necessidade de um processo permanente do uBOL para a filtragem ocorrer e a filtragem de conteúdo baseada em injeção do CSS/JS é realizada confiavelmente pelo próprio navegador ao invés da extensão. Isto significa que o próprio uBOL não consome recursos de CPU/memória enquanto o bloqueio de conteúdo está em andamento -- o processo do service worker do uBOL _só_ é necessário quando você interage com o painel do pop-up ou as páginas das opções.
O uBOL não requer permissão ampla pra "ler e modificar dados" na hora da instalação, logo suas capacidades limitadas fora da caixa comparadas com o uBlock Origin ou outros bloqueadores de conteúdo requerem permissões amplas pra "ler e modificar dados" na hora da instalação.
Contudo, o uBOL permite a você garantir *explicitamente* permissões estendidas em sites específicos de sua escolha pra que possa filtrar melhor esses sites usando filtragem cosmética e injeções de scriptlet.
Pra conceder permissões estendidas num site dado, abra o painel do pop-up e escolha um modo de filtragem superior tal como Otimizado ou Completo.
O navegador então avisará você sobre os efeitos de garantir as permissões adicionais requisitadas pela extensão no site atual e você terá que dizer ao navegador se você aceita ou recusa a requisição.
Se você aceitar a requisição do uBOL por permissões adicionais no site atual ele será capaz de filtrar melhor o conteúdo do site atual.
Você pode definir o modo de filtragem padrão na página de opções do uBOL. Se você escolher o Modo Otimizado ou Completo como o modo padrão você precisará garantir ao uBOL a permissão de ler e modificar os dados em todos os sites.
Mantenha em mente que este ainda é um trabalho em progresso com estes objetivos finais:
- Sem permissões amplas do hospedeiro na hora da instalação -- as permissões estendidas são garantidas explicitamente pelo usuário numa base por site.
- Totalmente declarativo para confiabilidade e eficiência de CPU/memória.
O uBOL é totalmente declarativo, significando que não há necessidade de um processo permanente do uBOL para a filtragem ocorrer, e filtragem de conteúdo baseada em injeção de CSS/JS é realizada corretamente pelo próprio navegador ao invés da extensão. Isto significa que o uBOL em si não consome recursos de CPU/memória ao bloquear conteúdo -- o processo do service worker do uBOL _só_ é necessário quando você interage com o painel do pop-up ou as páginas de opções.

View File

@@ -1,30 +1,12 @@
O uBO Lite (uBOL) é um bloqueador de conteúdo baseado no MV3 *sem permissões*.
O uBO Lite (uBOL) é um bloqueador de conteúdo baseado em MV3.
O conjunto de regras padrão corresponde ao conjunto de filtros padrão do uBlock Origin:
O conjunto de regras predefinido corresponde ao conjunto de filtros predefinido do uBlock Origin:
- Listas de filtros integrados do uBlock Origin
- EasyList
- EasyPrivacy
- Peter Lowes Ad and tracking server list
Pode adicionar mais conjuntos de regras visitando a página de opções -- clique no ícone _Cogs_ no painel pop-up.
Pode ativar mais conjuntos de regras visitando a página de opções -- clique no ícone _Cogs_ no painel popup.
O uBOL é totalmente declarativo, o que significa que não necessidade de um processo uBOL permanente para que a filtragem ocorra, e a filtragem de conteúdo baseada em injeção de CSS/JS é realizada de forma confiável pelo próprio navegador e não pela extensão. Isto significa que o próprio uBOL não consome recursos da CPU/memória enquanto o bloqueio de conteúdo está em curso -- o processo de service worker do uBOL é necessário _apenas_ quando interage com o painel pop-up ou as páginas de opções.
uBOL não requer ampla permissão de "ler e modificar dados" no momento da instalação, daí as suas capacidades limitadas de pronto a usar em comparação com uBlock Origin ou outros bloqueadores de conteúdo que requerem amplas permissões de "ler e modificar dados" no momento da instalação.
No entanto, o uBOL permite-lhe que *explicitamente* conceda permissões alargadas em websites específicos de sua escolha, para que possa filtrar melhor esses websites usando filtragem cosmética e injeções de scriptlet.
Para conceder permissões alargadas num determinado website, abra o painel pop-up e escolha um modo de filtragem superior, como Ideal ou Completo.
O navegador irá avisá-lo sobre os efeitos da concessão das permissões adicionais solicitadas pela extensão no website atual, e terá que informar ao navegador se aceita ou recusa o pedido.
Se aceitar o pedido do uBOL para permissões adicionais no website atual, o mesmo poderá filtrar melhor o conteúdo do website atual.
Pode definir o modo de filtragem padrão na página de opções do uBOL. Se escolher o modo Ideal ou Completo como o modo predefinido, terá de conceder ao uBOL a permissão para ler e modificar dados em todos os sítios web.
Tenha em mente que este ainda é um trabalho em curso, com estes objetivos finais:
- Sem permissões amplas de host no momento da instalação -- as permissões alargadas são concedidas explicitamente pelo utilizador por website.
- Totalmente declarativo para fiabilidade e eficiência da CPU/memória.
O uBOL é totalmente declarativo, o que significa que não é necessário um processo permanente do uBOL para que a filtragem ocorra, e a filtragem de conteúdos baseada em injeção de CSS/JS é realizada de forma fiável pelo próprio navegador, e não pela extensão. Isto significa que o próprio uBOL não consome recursos de CPU/memória enquanto o bloqueio de conteúdo está ativo -- o processo do service worker do uBOL é necessário apenas quando interage com o painel popup ou com as páginas de opções.

View File

@@ -1,30 +1,12 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) este un blocker de conținut bazat pe MV3.
Setul de reguli implicit corespunde setului de filtre implicit al uBlock Origin:
Listele de filtre încorporate de uBlock Origin
- EasyList
- EasyPrivacy
- Peter Lowes Ad and tracking server list
- -Lista de servere de anunț și de urmărire a lui Peter Lowe
Puteți adăuga mai multe seturi de reguli vizitând pagina de opțiuni -- făcând clic pe pictograma _Cogs_ din panoul pop-up
Puteți activa mai multe seturi de reguli accesând pagina de opțiuni - faceți clic pe pictograma _Cogs_ din panoul pop-up.
uBOL este în întregime declarativ, ceea ce înseamnă că nu este nevoie de un proces uBOL permanent pentru ca filtrarea să aibă loc, iar filtrarea conținutului pe bază de injecție CSS/JS este realizată în mod fiabil de browser în sine, mai degrabă decât de extensie. Aceasta înseamnă că uBOL în sine nu consumă resurse CPU/memorie în timp ce blocarea conținutului este în desfășurare -- procesul de lucru al serviciului uBOL este necesar _doar_ atunci când interacționați cu panoul pop-up sau cu paginile de opțiuni.
uBOL nu necesită permisiunii extinse de „citire și modificare a datelor” în momentul instalării, prin urmare capacitățile sale limitate din momentul instalării în comparație cu uBlock Origin sau alte blocare de conținut care necesită permisiuni largi de „citire și modificare a datelor” în momentul instalării.
Cu toate acestea, uBOL vă permite să acordați *explicit* permisiuni extinse pe anumite site-uri alese de dvs., astfel încât să poată filtra mai bine pe acele site-uri folosind filtrarea cosmetică și injecțiile de scriptlet.
Pentru a acorda permisiuni extinse pe un anumit site, deschideți panoul pop-up și alegeți un mod de filtrare mai ridicat, cum ar fi Optimal sau Complet.
Browser-ul vă va avertiza apoi cu privire la efectele acordării permisiunilor suplimentare solicitate de extensie pe site-ul curent și va trebui să spuneți browserului dacă acceptați sau refuzați cererea.
Dacă acceptați solicitarea uBOL pentru permisiuni suplimentare pe site-ul curent, acesta va putea filtra mai bine conținutul pentru site-ul curent.
Puteți seta modul implicit de filtrare din pagina de opțiuni a uBOL. Dacă alegeți modul optim sau complet ca implicit, va trebui să acordați lui uBOL permisiunea de a citi și modifica datele de pe toate site-urile web.
Rețineți că aceasta este în curs de desfășurare, cu aceste obiective finale:
- Fără permisiuni de gazdă largi în momentul instalării - permisiunile extinse sunt acordate în mod explicit de către utilizator pe bază de site.
- Complet declarativ pentru fiabilitate și eficiență CPU/memorie.
uBOL este în întregime declarativ, ceea ce înseamnă că nu este nevoie de un proces uBOL permanent pentru ca filtrarea să aibă loc, iar filtrarea conținutului pe bază de injecție CSS/JS este realizată în mod sigur de browser în sine, mai degrabă decât de extensie. Aceasta înseamnă că uBOL în sine nu consumă resurse CPU/memorie în timp ce blocarea conținutului este în desfășurare -- procesul de lucru al serviciului uBOL este necesar _doar_ atunci când interacționați cu panoul pop-up sau cu paginile de opțiuni.

Some files were not shown because too many files have changed in this diff Show More