From 9a6feb34d546873f7113fff23720cd7f1728b320 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Mon, 27 Apr 2020 19:01:16 -0400 Subject: [PATCH 01/76] Re-order sections in the new popup panel The blocking-stuff button icons have been brought closer to the power button. The go-somewhere button icons have been moved at the bottom. The hostname of the current site is now shown below the power button. The base domain is bolded. This re-ordering is for a few reasons: - The blocking-stuff button icons are now closer to the revert/persist/reload transient buttons which show up when modifying the blocking behavior of uBO. - The makes it easier to potentially bring in a very basic view where only the power button and the statistics are shown and all the button icons are hidden from view. --- src/css/popup-fenix.css | 29 +++++++++++++---------- src/css/popup.css | 2 +- src/css/themes/default.css | 3 ++- src/js/popup-fenix.js | 47 ++++++++++++++++++++++++++------------ src/popup-fenix.html | 17 +++++++------- 5 files changed, 61 insertions(+), 37 deletions(-) diff --git a/src/css/popup-fenix.css b/src/css/popup-fenix.css index d99c8eb8df2..f35032f0bc6 100644 --- a/src/css/popup-fenix.css +++ b/src/css/popup-fenix.css @@ -10,6 +10,7 @@ /* Internal CSS values */ :root body, :root.mobile body { + --popup-default-gap: 1em; font-size: 14px; line-height: 20px; transition-duration: 0.2s; @@ -51,16 +52,16 @@ hr { top: 0; z-index: 100; } -#sticky > div { +#basicTools { align-items: stretch; display: flex; justify-content: space-between; + margin: var(--popup-default-gap) 0.5em; } #switch { display: flex; flex-grow: 2; justify-content: center; - margin: 0.5em 0; } #switch .fa-icon { color: var(--popup-power-ink); @@ -86,7 +87,6 @@ body.off #switch .fa-icon { flex-direction: column; flex-grow: 1; justify-content: space-evenly; - padding: 0.5em; } .rulesetTools [id] { background-color: var(--bg-transient-notice); @@ -107,22 +107,25 @@ body.needSave #saveRules, body.needSave #revertRules { visibility: visible; } +#hostname { + margin: var(--popup-default-gap) 0.2em; + text-align: center; + } +#hostname > span + span { + font-weight: 600; + } .itemRibbon { display: grid; - gap: 0.8em 1em; + gap: var(--popup-default-gap); grid-template: auto / auto auto; - padding: 1em 1em; + margin: var(--popup-default-gap); } .itemRibbon > [data-i18n] + span { justify-self: end; text-align: end; white-space: nowrap; } -.itemRibbon > .h-gutter { - display: inline-block; - height: 1em; - } .toolRibbon { align-items: start; @@ -131,7 +134,7 @@ body.needSave #revertRules { grid-auto-flow: column; grid-template: auto / repeat(4, 1fr); justify-items: center; - margin: 1em 0; + margin: var(--popup-default-gap) 0; white-space: normal; } .toolRibbon .tool { @@ -161,13 +164,14 @@ body.mobile.no-tooltips .toolRibbon .tool { position: relative; } #extraTools .fa-icon > .nope { + height: 1.1em; left: 50%; position: absolute; - stroke: var(--fg-popup-icon-x); + stroke: var(--popup-icon-x-ink); stroke-width: 2; transform: translateX(-50%); visibility: hidden; - width: 1em; + width: 1.1em; } #extraTools > span.on .fa-icon >.nope { visibility: visible; @@ -490,6 +494,7 @@ body.advancedUser #firewall > div > span.noopRule.ownRule, overflow: hidden; } :root.desktop body { + --popup-default-gap: 0.8em; max-width: max(100vw, 800px); } :root.desktop #panes { diff --git a/src/css/popup.css b/src/css/popup.css index 39848977ec4..a8edd006862 100644 --- a/src/css/popup.css +++ b/src/css/popup.css @@ -165,7 +165,7 @@ body.responsive #extraTools { #extraTools > span > .nope { left: 50%; position: absolute; - stroke: var(--fg-popup-icon-x); + stroke: var(--popup-icon-x-ink); stroke-width: 2; transform: translateX(-50%); visibility: hidden; diff --git a/src/css/themes/default.css b/src/css/themes/default.css index a81afe82ef1..67542c030a8 100644 --- a/src/css/themes/default.css +++ b/src/css/themes/default.css @@ -23,6 +23,7 @@ --light-gray-30: #e0e0e6; --light-gray-40: #cfcfd8; --light-gray-90: #80808f; + --red-70-a80: #c50042cc; --violet-70: #592acb; --violet-80: #45278d; --yellow-30: #ffd567; @@ -133,7 +134,7 @@ --bg-popup-cell-block: hsla(0, 50%, 80%, 1); --bg-popup-cell-block-own: hsla(0, 100%, 40%, 1); --bg-popup-cell-label-mixed: hsla(45, 100%, 38%, 1); - --fg-popup-icon-x: hsla(0, 100%, 50%, 1); + --popup-icon-x-ink: var(--red-70-a80); } /** diff --git a/src/js/popup-fenix.js b/src/js/popup-fenix.js index 2841c333e5e..018c62d890f 100644 --- a/src/js/popup-fenix.js +++ b/src/js/popup-fenix.js @@ -162,6 +162,17 @@ const formatNumber = function(count) { /******************************************************************************/ +const safePunycodeToUnicode = function(hn) { + const pretty = punycode.toUnicode(hn); + return pretty === hn || + reCyrillicAmbiguous.test(pretty) === false || + reCyrillicNonAmbiguous.test(pretty) + ? pretty + : hn; +}; + +/******************************************************************************/ + const rulekeyCompare = function(a, b) { let ha = a.slice(2, a.indexOf(' ', 2)); if ( !reIP.test(ha) ) { @@ -413,18 +424,27 @@ const renderPopup = function() { document.title = popupData.appName + ' - ' + popupData.tabTitle; } - let elem = document.body; - elem.classList.toggle( - 'advancedUser', - popupData.advancedUserEnabled === true - ); - elem.classList.toggle( - 'off', - popupData.pageURL === '' || popupData.netFilteringSwitch !== true - ); + const isFiltering = popupData.netFilteringSwitch; + + const body = document.body; + body.classList.toggle('advancedUser', popupData.advancedUserEnabled === true); + body.classList.toggle('off', popupData.pageURL === '' || isFiltering !== true); - const canElementPicker = popupData.canElementPicker === true && - popupData.netFilteringSwitch === true; + // The hostname information below the power switch + { + const [ elemHn, elemDn ] = uDom.nodeFromId('hostname').children; + const { pageDomain, pageHostname } = popupData; + if ( pageDomain !== '' ) { + elemDn.textContent = safePunycodeToUnicode(pageDomain); + elemHn.textContent = pageHostname !== pageDomain + ? safePunycodeToUnicode(pageHostname.slice(0, -pageDomain.length - 1)) + '.' + : ''; + } else { + elemHn.textContent = elemDn.textContent = ''; + } + } + + const canElementPicker = popupData.canElementPicker === true && isFiltering; uDom.nodeFromId('gotoPick').classList.toggle('enabled', canElementPicker); uDom.nodeFromId('gotoZap').classList.toggle('enabled', canElementPicker); @@ -478,10 +498,7 @@ const renderPopup = function() { vAPI.localStorage.setItem('popupFirewallPane', dfPaneVisibleStored); } - document.body.classList.toggle( - 'dfEnabled', - dfPaneVisible === true - ); + body.classList.toggle('dfEnabled', dfPaneVisible === true); document.documentElement.classList.toggle( 'colorBlind', diff --git a/src/popup-fenix.html b/src/popup-fenix.html index 094c4d6743e..2c6634025a9 100644 --- a/src/popup-fenix.html +++ b/src/popup-fenix.html @@ -14,7 +14,7 @@
-
+
lock eraser @@ -26,16 +26,10 @@ refresh
+
ephemeralnewyork.­wordpress.com

-
- bolt - eye-dropper - list-alt - sliders -
-
@@ -50,6 +44,13 @@ code

+
+ bolt + eye-dropper + list-alt + sliders +
+
angle-up
From b0f6df8f8756d61f9aeabcec2be65c9c5da6166e Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Mon, 27 Apr 2020 19:10:15 -0400 Subject: [PATCH 02/76] New revision for dev build --- dist/version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/version b/dist/version index 971a1569499..a829c15efd4 100644 --- a/dist/version +++ b/dist/version @@ -1 +1 @@ -1.26.3.11 +1.26.3.12 From 96343ecf1a10a24675ae8620c18d8e0742cd0b7f Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Mon, 27 Apr 2020 19:15:28 -0400 Subject: [PATCH 03/76] Make Firefox dev build auto-update --- dist/firefox/updates.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dist/firefox/updates.json b/dist/firefox/updates.json index 7680a455dbf..5d8d1c8bbbf 100644 --- a/dist/firefox/updates.json +++ b/dist/firefox/updates.json @@ -3,10 +3,10 @@ "uBlock0@raymondhill.net": { "updates": [ { - "version": "1.26.3.11", + "version": "1.26.3.12", "browser_specific_settings": { "gecko": { "strict_min_version": "55" } }, - "update_info_url": "https://github.com/gorhill/uBlock/releases/tag/1.26.3b11", - "update_link": "https://github.com/gorhill/uBlock/releases/download/1.26.3b11/uBlock0_1.26.3b11.firefox.signed.xpi" + "update_info_url": "https://github.com/gorhill/uBlock/releases/tag/1.26.3b12", + "update_link": "https://github.com/gorhill/uBlock/releases/download/1.26.3b12/uBlock0_1.26.3b12.firefox.signed.xpi" } ] } From 578594bbd7c545b62f18267d640a605f8e07a53a Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Tue, 28 Apr 2020 09:47:03 -0400 Subject: [PATCH 04/76] Improve logging capabilities of json-prune scriptlet Specifically: - Log entries as received by client code - Prettier and more readable console output - Ability to only log entries matching a specific needle As per internal discussion at ; limited logging capabilities of json-prune originally raised by . --- assets/resources/scriptlets.js | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/assets/resources/scriptlets.js b/assets/resources/scriptlets.js index 29973d8e885..87e44ea6702 100644 --- a/assets/resources/scriptlets.js +++ b/assets/resources/scriptlets.js @@ -249,16 +249,35 @@ /// json-prune.js +// +// When no "prune paths" argument is provided, the scriptlet is +// used for logging purpose and the "needle paths" argument is +// used to filter logging output. (function() { - const log = console.log.bind(console); const rawPrunePaths = '{{1}}'; const rawNeedlePaths = '{{2}}'; const prunePaths = rawPrunePaths !== '{{1}}' && rawPrunePaths !== '' ? rawPrunePaths.split(/ +/) : []; - const needlePaths = rawNeedlePaths !== '{{2}}' && rawNeedlePaths !== '' - ? rawNeedlePaths.split(/ +/) - : []; + let needlePaths; + let log, reLogNeedle; + if ( prunePaths.length !== 0 ) { + needlePaths = prunePaths.length !== 0 && + rawNeedlePaths !== '{{2}}' && rawNeedlePaths !== '' + ? rawNeedlePaths.split(/ +/) + : []; + } else { + log = console.log.bind(console); + let needle; + if ( rawNeedlePaths === '' || rawNeedlePaths === '{{2}}' ) { + needle = '.?'; + } else if ( rawNeedlePaths.charAt(0) === '/' && rawNeedlePaths.slice(-1) === '/' ) { + needle = rawNeedlePaths.slice(1, -1); + } else { + needle = rawNeedlePaths.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + } + reLogNeedle = new RegExp(needle); + } const findOwner = function(root, path) { let owner = root; let chain = path; @@ -286,8 +305,11 @@ JSON.parse = new Proxy(JSON.parse, { apply: function() { const r = Reflect.apply(...arguments); - if ( prunePaths.length === 0 ) { - log(location.hostname, r); + if ( log !== undefined ) { + const json = JSON.stringify(r, null, 2); + if ( reLogNeedle.test(json) ) { + log(location.hostname, json); + } return r; } if ( mustProcess(r) === false ) { return r; } From d462b50cec2884c8565a52c5fdc1d377cf691dcf Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Tue, 28 Apr 2020 11:07:00 -0400 Subject: [PATCH 05/76] Improve presentation of advanced settings page Specifically: - Fix exception being thrown when createing an empty line - Syntax-color invalid setting names - Syntax-color non-default values --- src/advanced-settings.html | 2 - src/js/advanced-settings.js | 98 +++++++++++++++++++++----- src/js/codemirror/mode/raw-settings.js | 37 ---------- src/js/messaging.js | 5 +- 4 files changed, 86 insertions(+), 56 deletions(-) delete mode 100644 src/js/codemirror/mode/raw-settings.js diff --git a/src/advanced-settings.html b/src/advanced-settings.html index 564ae99dc41..5afb9a0d93d 100644 --- a/src/advanced-settings.html +++ b/src/advanced-settings.html @@ -27,8 +27,6 @@ - - diff --git a/src/js/advanced-settings.js b/src/js/advanced-settings.js index 6d993e1edc2..2b41f80b646 100644 --- a/src/js/advanced-settings.js +++ b/src/js/advanced-settings.js @@ -25,15 +25,49 @@ /******************************************************************************/ -(( ) => { +{ // >>>> Start of private namespace /******************************************************************************/ -const noopFunc = function(){}; - +let defaultSettings = new Map(); let beforeHash = ''; +/******************************************************************************/ + +CodeMirror.defineMode('raw-settings', function() { + let lastSetting = ''; + + return { + token: function(stream) { + if ( stream.sol() ) { + const match = stream.match(/\s*\S+/); + if ( match !== null ) { + lastSetting = match[0].trim(); + if ( defaultSettings.has(lastSetting) ) { + return 'keyword'; + } + } + lastSetting = ''; + stream.skipToEnd(); + return 'error'; + } + if ( lastSetting !== '' ) { + stream.eatSpace(); + const match = stream.match(/\S+.*$/); + if ( match !== null ) { + if ( match[0] !== defaultSettings.get(lastSetting) ) { + return 'strong'; + } + } + lastSetting = ''; + } + stream.skipToEnd(); + return null; + } + }; +}); + const cmEditor = new CodeMirror( document.getElementById('advancedSettings'), { @@ -49,7 +83,41 @@ uBlockDashboard.patchCodeMirrorEditor(cmEditor); /******************************************************************************/ const hashFromAdvancedSettings = function(raw) { - return raw.trim().replace(/\s*[\n\r]+\s*/g, '\n').replace(/[ \t]+/g, ' '); + const aa = typeof raw === 'string' + ? arrayFromString(raw) + : arrayFromObject(raw); + aa.sort((a, b) => a[0].localeCompare(b[0])); + return JSON.stringify(aa); +}; + +/******************************************************************************/ + +const arrayFromObject = function(o) { + const out = []; + for ( const k in o ) { + if ( o.hasOwnProperty(k) === false ) { continue; } + out.push([ k, `${o[k]}` ]); + } + return out; +}; + +const arrayFromString = function(s) { + const out = []; + for ( let line of s.split(/[\n\r]+/) ) { + line = line.trim(); + if ( line === '' ) { continue; } + const pos = line.indexOf(' '); + let k, v; + if ( pos !== -1 ) { + k = line.slice(0, pos); + v = line.slice(pos + 1); + } else { + k = line; + v = ''; + } + out.push([ k.trim(), v.trim() ]); + } + return out; }; /******************************************************************************/ @@ -64,7 +132,7 @@ const advancedSettingsChanged = (( ) => { const changed = hashFromAdvancedSettings(cmEditor.getValue()) !== beforeHash; uDom.nodeFromId('advancedSettingsApply').disabled = !changed; - CodeMirror.commands.save = changed ? applyChanges : noopFunc; + CodeMirror.commands.save = changed ? applyChanges : function(){}; }; return function() { @@ -78,21 +146,19 @@ cmEditor.on('changes', advancedSettingsChanged); /******************************************************************************/ const renderAdvancedSettings = async function(first) { - const raw = await vAPI.messaging.send('dashboard', { + const details = await vAPI.messaging.send('dashboard', { what: 'readHiddenSettings', }); - - beforeHash = hashFromAdvancedSettings(raw); + defaultSettings = new Map(arrayFromObject(details.default)); + beforeHash = hashFromAdvancedSettings(details.current); const pretty = []; - const lines = raw.split('\n'); + const entries = arrayFromObject(details.current); let max = 0; - for ( const line of lines ) { - const pos = line.indexOf(' '); - if ( pos > max ) { max = pos; } + for ( const [ k ] of entries ) { + if ( k.length > max ) { max = k.length; } } - for ( const line of lines ) { - const pos = line.indexOf(' '); - pretty.push(' '.repeat(max - pos) + line); + for ( const [ k, v ] of entries ) { + pretty.push(' '.repeat(max - k.length) + `${k} ${v}`); } pretty.push(''); cmEditor.setValue(pretty.join('\n')); @@ -128,4 +194,4 @@ renderAdvancedSettings(true); /******************************************************************************/ // <<<< End of private namespace -})(); +} diff --git a/src/js/codemirror/mode/raw-settings.js b/src/js/codemirror/mode/raw-settings.js deleted file mode 100644 index 34585d99c53..00000000000 --- a/src/js/codemirror/mode/raw-settings.js +++ /dev/null @@ -1,37 +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 -*/ - -/* global CodeMirror */ - -'use strict'; - -CodeMirror.defineMode("raw-settings", function() { - return { - token: function(stream) { - if ( stream.sol() ) { - stream.match(/\s*\S+/); - return 'keyword'; - } - stream.skipToEnd(); - return null; - } - }; -}); diff --git a/src/js/messaging.js b/src/js/messaging.js index 92c8979178c..1561346bdca 100644 --- a/src/js/messaging.js +++ b/src/js/messaging.js @@ -1163,7 +1163,10 @@ const onMessage = function(request, sender, callback) { break; case 'readHiddenSettings': - response = µb.stringFromHiddenSettings(); + response = { + current: µb.hiddenSettings, + default: µb.hiddenSettingsDefault, + }; break; case 'restoreUserData': From 5227013a8e11496c875ccf2295c422e7ae230ece Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Tue, 28 Apr 2020 11:19:26 -0400 Subject: [PATCH 06/76] Add `uBO:` prefix to logged output in some scriptlets As per request. --- assets/resources/scriptlets.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/assets/resources/scriptlets.js b/assets/resources/scriptlets.js index 87e44ea6702..d2c0bdb6754 100644 --- a/assets/resources/scriptlets.js +++ b/assets/resources/scriptlets.js @@ -240,7 +240,7 @@ apply: function(target, thisArg, args) { const type = args[0].toString(); const handler = String(args[1]); - log('addEventListener("%s", %s)', type, handler); + log('uBO: addEventListener("%s", %s)', type, handler); return target.apply(thisArg, args); } } @@ -308,7 +308,7 @@ if ( log !== undefined ) { const json = JSON.stringify(r, null, 2); if ( reLogNeedle.test(json) ) { - log(location.hostname, json); + log('uBO:', location.hostname, json); } return r; } @@ -851,7 +851,7 @@ new Proxy(peerConnectionProto.createDataChannel, { apply: function(target, thisArg, args) { if ( isGoodConfig(target, args[1]) === false ) { - log(args[1]); + log('uBO:', args[1]); return Reflect.apply(target, thisArg, args.slice(0, 1)); } return Reflect.apply(target, thisArg, args); @@ -861,7 +861,7 @@ new Proxy(peerConnectionCtor, { construct: function(target, args) { if ( isGoodConfig(target, args[0]) === false ) { - log(args[0]); + log('uBO:', args[0]); return Reflect.construct(target); } return Reflect.construct(target, args); From 848edbbdf6d3a14a194abc8c523642e3b7c2ada5 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Tue, 28 Apr 2020 11:24:42 -0400 Subject: [PATCH 07/76] Import translation work from https://crowdin.com/project/ublock --- src/_locales/ka/messages.json | 16 ++++++++-------- src/_locales/sl/messages.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/_locales/ka/messages.json b/src/_locales/ka/messages.json index 66e36642835..4c411328c69 100644 --- a/src/_locales/ka/messages.json +++ b/src/_locales/ka/messages.json @@ -180,7 +180,7 @@ "description": "Tooltip for the no-scripting per-site switch" }, "popupNoPopups_v2": { - "message": "Pop-up windows", + "message": "ამომხტომი ფანჯრები", "description": "Caption for the no-popups per-site switch" }, "popupNoLargeMedia_v2": { @@ -832,15 +832,15 @@ "description": "English: Contributors" }, "aboutSourceCode": { - "message": "Source code", + "message": "პირველწყარო კოდი", "description": "Link text to source code repo" }, "aboutTranslations": { - "message": "Translations", + "message": "თარგმანები", "description": "Link text to translations repo" }, "aboutFilterLists": { - "message": "Filter lists", + "message": "ფილტრების სიები", "description": "Link text to uBO's own filter lists repo" }, "aboutDependencies": { @@ -1020,19 +1020,19 @@ "description": "Label for keyboard shortcut used to relax blocking mode (meant to replace 'Toggle blocking profile')" }, "storageUsed": { - "message": "Storage used: {{value}} {{unit}}", + "message": "გამოყენებული მოცულობა: {{value}} {{unit}}", "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" }, "KB": { - "message": "KB", + "message": "კბ", "description": "short for 'kilobytes'" }, "MB": { - "message": "MB", + "message": "მბ", "description": "short for 'megabytes'" }, "GB": { - "message": "GB", + "message": "გბ", "description": "short for 'gigabytes'" }, "dummy": { diff --git a/src/_locales/sl/messages.json b/src/_locales/sl/messages.json index 2f518587e07..691dbf982ce 100644 --- a/src/_locales/sl/messages.json +++ b/src/_locales/sl/messages.json @@ -180,7 +180,7 @@ "description": "Tooltip for the no-scripting per-site switch" }, "popupNoPopups_v2": { - "message": "Pop-up windows", + "message": "Pojavna okna", "description": "Caption for the no-popups per-site switch" }, "popupNoLargeMedia_v2": { From 06063373a86c8081c79176440130d87b504e3a62 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Tue, 28 Apr 2020 11:25:20 -0400 Subject: [PATCH 08/76] new revision for dev build --- dist/version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/version b/dist/version index a829c15efd4..1652c536c60 100644 --- a/dist/version +++ b/dist/version @@ -1 +1 @@ -1.26.3.12 +1.26.3.13 From 90be78d7a288da4385f4f9541c90e86603490e22 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Tue, 28 Apr 2020 11:36:08 -0400 Subject: [PATCH 09/76] Make Firefox dev build auto-update --- dist/firefox/updates.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dist/firefox/updates.json b/dist/firefox/updates.json index 5d8d1c8bbbf..864e9c0e38a 100644 --- a/dist/firefox/updates.json +++ b/dist/firefox/updates.json @@ -3,10 +3,10 @@ "uBlock0@raymondhill.net": { "updates": [ { - "version": "1.26.3.12", + "version": "1.26.3.13", "browser_specific_settings": { "gecko": { "strict_min_version": "55" } }, - "update_info_url": "https://github.com/gorhill/uBlock/releases/tag/1.26.3b12", - "update_link": "https://github.com/gorhill/uBlock/releases/download/1.26.3b12/uBlock0_1.26.3b12.firefox.signed.xpi" + "update_info_url": "https://github.com/gorhill/uBlock/releases/tag/1.26.3b13", + "update_link": "https://github.com/gorhill/uBlock/releases/download/1.26.3b13/uBlock0_1.26.3b13.firefox.signed.xpi" } ] } From d364eb96682666febb711202dbee6b1e875b1a38 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Tue, 28 Apr 2020 18:39:31 -0400 Subject: [PATCH 10/76] Minor code review --- src/css/popup-fenix.css | 2 +- src/js/advanced-settings.js | 30 +++++++++++++----------------- src/popup-fenix.html | 4 ++-- 3 files changed, 16 insertions(+), 20 deletions(-) diff --git a/src/css/popup-fenix.css b/src/css/popup-fenix.css index f35032f0bc6..9c7b5f0716f 100644 --- a/src/css/popup-fenix.css +++ b/src/css/popup-fenix.css @@ -52,7 +52,7 @@ hr { top: 0; z-index: 100; } -#basicTools { +#stickyTools { align-items: stretch; display: flex; justify-content: space-between; diff --git a/src/js/advanced-settings.js b/src/js/advanced-settings.js index 2b41f80b646..57f53763c4e 100644 --- a/src/js/advanced-settings.js +++ b/src/js/advanced-settings.js @@ -41,26 +41,22 @@ CodeMirror.defineMode('raw-settings', function() { return { token: function(stream) { if ( stream.sol() ) { - const match = stream.match(/\s*\S+/); - if ( match !== null ) { - lastSetting = match[0].trim(); - if ( defaultSettings.has(lastSetting) ) { - return 'keyword'; - } + stream.eatSpace(); + const match = stream.match(/\S+/); + if ( match !== null && defaultSettings.has(match[0]) ) { + lastSetting = match[0]; + return 'keyword'; } - lastSetting = ''; stream.skipToEnd(); - return 'error'; + return 'line-cm-error'; } - if ( lastSetting !== '' ) { - stream.eatSpace(); - const match = stream.match(/\S+.*$/); - if ( match !== null ) { - if ( match[0] !== defaultSettings.get(lastSetting) ) { - return 'strong'; - } - } - lastSetting = ''; + stream.eatSpace(); + const match = stream.match(/.*$/); + if ( + match !== null && + match[0].trim() !== defaultSettings.get(lastSetting) + ) { + return 'line-cm-strong'; } stream.skipToEnd(); return null; diff --git a/src/popup-fenix.html b/src/popup-fenix.html index 2c6634025a9..0c080b4bfb8 100644 --- a/src/popup-fenix.html +++ b/src/popup-fenix.html @@ -14,7 +14,7 @@
-
+
lock eraser @@ -44,7 +44,7 @@ code

-
+
bolt eye-dropper list-alt From 3efee017cfa1b5a3921f829b4287c40d9414a4ce Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Wed, 29 Apr 2020 06:16:59 -0400 Subject: [PATCH 11/76] Fix own-rule text color Related fedback: - https://github.com/gorhill/uBlock/commit/db9c32185538#commitcomment-38818960 --- src/css/popup.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/css/popup.css b/src/css/popup.css index a8edd006862..49f94b6f99f 100644 --- a/src/css/popup.css +++ b/src/css/popup.css @@ -433,7 +433,7 @@ body.advancedUser #firewallContainer > div > span.noopRule, } body.advancedUser #firewallContainer > div > span.ownRule, #firewallContainer > div > span.ownRule { - color: var(--bg-popup-cell-block-own); + color: var(--default-surface); } body.advancedUser #firewallContainer > div > span.allowRule.ownRule, #actionSelector > #dynaAllow:hover { From 23633b388d39908f5d4367a2f25a3d8f6580dbc1 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Wed, 29 Apr 2020 10:00:58 -0400 Subject: [PATCH 12/76] Fix reported "Storage used:" when info is not available --- src/js/settings.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/js/settings.js b/src/js/settings.js index b5a0cc0850d..a9fa555dde6 100644 --- a/src/js/settings.js +++ b/src/js/settings.js @@ -117,10 +117,9 @@ const exportToFile = async function() { /******************************************************************************/ const onLocalDataReceived = function(details) { - let storageUsed; + let v, unit; if ( typeof details.storageUsed === 'number' ) { - let v = details.storageUsed; - let unit; + v = details.storageUsed; if ( v < 1e3 ) { unit = 'genericBytes'; } else if ( v < 1e6 ) { @@ -133,13 +132,14 @@ const onLocalDataReceived = function(details) { v /= 1e9; unit = 'GB'; } - storageUsed = vAPI.i18n('storageUsed') - .replace('{{value}}', v.toLocaleString(undefined, { maximumSignificantDigits: 3 })) - .replace('{{unit}}', vAPI.i18n(unit)); } else { - storageUsed = '?'; + v = '?'; + unit = ''; } - uDom.nodeFromId('storageUsed').textContent = storageUsed; + uDom.nodeFromId('storageUsed').textContent = + vAPI.i18n('storageUsed') + .replace('{{value}}', v.toLocaleString(undefined, { maximumSignificantDigits: 3 })) + .replace('{{unit}}', unit && vAPI.i18n(unit) || ''); const timeOptions = { weekday: 'long', From 018265272d16385689b940d595894698ad2a1677 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Wed, 29 Apr 2020 10:03:41 -0400 Subject: [PATCH 13/76] Import translation work from https://crowdin.com/project/ublock --- src/_locales/nb/messages.json | 2 +- src/_locales/sq/messages.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/_locales/nb/messages.json b/src/_locales/nb/messages.json index 46ece4a20d7..dc3202d0f1b 100644 --- a/src/_locales/nb/messages.json +++ b/src/_locales/nb/messages.json @@ -180,7 +180,7 @@ "description": "Tooltip for the no-scripting per-site switch" }, "popupNoPopups_v2": { - "message": "Pop-up windows", + "message": "Oppspretts-vinduer", "description": "Caption for the no-popups per-site switch" }, "popupNoLargeMedia_v2": { diff --git a/src/_locales/sq/messages.json b/src/_locales/sq/messages.json index 88c3cae5bc0..9a918e72fdd 100644 --- a/src/_locales/sq/messages.json +++ b/src/_locales/sq/messages.json @@ -180,7 +180,7 @@ "description": "Tooltip for the no-scripting per-site switch" }, "popupNoPopups_v2": { - "message": "Pop-up windows", + "message": "Dritaret automatike", "description": "Caption for the no-popups per-site switch" }, "popupNoLargeMedia_v2": { From 647c248f154ff4185be432d88d74a75262f97300 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Wed, 29 Apr 2020 10:04:25 -0400 Subject: [PATCH 14/76] new revision for dev build --- dist/version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/version b/dist/version index 1652c536c60..d6f2fe66615 100644 --- a/dist/version +++ b/dist/version @@ -1 +1 @@ -1.26.3.13 +1.26.3.14 From 557e06f454a316f4ecb7c181bb93b1df43c93a20 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Wed, 29 Apr 2020 10:10:24 -0400 Subject: [PATCH 15/76] Make Firefox dev build auto-update --- dist/firefox/updates.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dist/firefox/updates.json b/dist/firefox/updates.json index 864e9c0e38a..68f51df16a9 100644 --- a/dist/firefox/updates.json +++ b/dist/firefox/updates.json @@ -3,10 +3,10 @@ "uBlock0@raymondhill.net": { "updates": [ { - "version": "1.26.3.13", + "version": "1.26.3.14", "browser_specific_settings": { "gecko": { "strict_min_version": "55" } }, - "update_info_url": "https://github.com/gorhill/uBlock/releases/tag/1.26.3b13", - "update_link": "https://github.com/gorhill/uBlock/releases/download/1.26.3b13/uBlock0_1.26.3b13.firefox.signed.xpi" + "update_info_url": "https://github.com/gorhill/uBlock/releases/tag/1.26.3b14", + "update_link": "https://github.com/gorhill/uBlock/releases/download/1.26.3b14/uBlock0_1.26.3b14.firefox.signed.xpi" } ] } From b295d4a0d0d25848211c43cc2e7068859c2cb9ea Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Thu, 30 Apr 2020 06:54:51 -0400 Subject: [PATCH 16/76] Make the new "fenix" popup panel the default one The old "classic" popup panel will still be used when at least one of the following is true: - advanced setting `uiFlavor` is set to `classic`; or - the browser is Chromium 65 or older; or - the browser is Firefox 67 or older The default configuration of the new popup panel at installation time is to show the power button, statistics and the basic tool icons, i.e. access to dashboard, logger, pickers. For existing installations, the new popup panel will be configured by respecting the existing configuration of the classic one. The new popup panel is currently already in use on Firefox for Android, and the visual redesign was made according to suggestions and feedback from to be optimal for Firefox for Android. The new popup panel will allow closing the following pending issues: - https://github.com/uBlockOrigin/uBlock-issues/issues/255 - https://github.com/uBlockOrigin/uBlock-issues/issues/178 --- platform/chromium/manifest.json | 2 +- platform/firefox/manifest.json | 2 +- platform/opera/manifest.json | 2 +- src/_locales/en/messages.json | 10 ++- src/css/popup-fenix.css | 72 ++++++++++++++------- src/css/themes/default.css | 2 + src/js/background.js | 2 + src/js/messaging.js | 12 ++-- src/js/popup-fenix.js | 109 +++++++++++++++++++++----------- src/js/popup.js | 21 +++--- src/js/start.js | 27 +++++--- src/js/ublock.js | 2 +- src/popup-fenix.html | 37 +++++++---- 13 files changed, 196 insertions(+), 104 deletions(-) diff --git a/platform/chromium/manifest.json b/platform/chromium/manifest.json index d9559c9ce03..0b624c1d349 100644 --- a/platform/chromium/manifest.json +++ b/platform/chromium/manifest.json @@ -9,7 +9,7 @@ "32": "img/icon_32.png" }, "default_title": "uBlock Origin", - "default_popup": "popup.html" + "default_popup": "popup-fenix.html" }, "commands": { "launch-element-zapper": { diff --git a/platform/firefox/manifest.json b/platform/firefox/manifest.json index e47fbebe5c0..0ebc4a5efaf 100644 --- a/platform/firefox/manifest.json +++ b/platform/firefox/manifest.json @@ -10,7 +10,7 @@ "32": "img/icon_32.png" }, "default_title": "uBlock Origin", - "default_popup": "popup.html" + "default_popup": "popup-fenix.html" }, "browser_specific_settings": { "gecko": { diff --git a/platform/opera/manifest.json b/platform/opera/manifest.json index 91400fcb81d..649acd81031 100644 --- a/platform/opera/manifest.json +++ b/platform/opera/manifest.json @@ -8,7 +8,7 @@ "16": "img/icon_16.png", "32": "img/icon_32.png" }, - "default_popup": "popup.html", + "default_popup": "popup-fenix.html", "default_title": "uBlock Origin" }, "commands": { diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index 9bcd6c43e95..648a6714d10 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2":{ "message":"More", - "description":"Label to be used to toggle overview panel" + "description":"Label to be used to show popup panel sections" + }, + "popupLessButton_v2":{ + "message":"Less", + "description":"Label to be used to hide popup panel sections" }, "popupTipGlobalRules":{ "message":"Global rules: this column is for rules which apply to all sites.", @@ -259,6 +263,10 @@ "message":"{{count}} out of {{total}}", "description":"appears in popup" }, + "popupVersion":{ + "message":"Version", + "description":"Example of use: Version 1.26.4" + }, "pickerCreate":{ "message":"Create", "description":"English: Create" diff --git a/src/css/popup-fenix.css b/src/css/popup-fenix.css index 9c7b5f0716f..fe490ace92d 100644 --- a/src/css/popup-fenix.css +++ b/src/css/popup-fenix.css @@ -56,11 +56,11 @@ hr { align-items: stretch; display: flex; justify-content: space-between; - margin: var(--popup-default-gap) 0.5em; + margin: 0.5em 0.5em var(--popup-default-gap) 0.5em; } #switch { display: flex; - flex-grow: 2; + flex-grow: 3; justify-content: center; } #switch .fa-icon { @@ -71,10 +71,6 @@ hr { margin: 0; padding: 0; } -#switch .fa-icon:hover { - color: var(--popup-power-ink-hover); - fill: var(--popup-power-ink-hover); - } body.off #switch .fa-icon { color: var(--fg-0-20); fill: var(--fg-0-20); @@ -85,7 +81,7 @@ body.off #switch .fa-icon { box-sizing: border-box; display: flex; flex-direction: column; - flex-grow: 1; + flex-grow: 2; justify-content: space-evenly; } .rulesetTools [id] { @@ -93,7 +89,7 @@ body.off #switch .fa-icon { border: 1px solid #ddc; border-radius: 4px; cursor: pointer; - fill: #888; + fill: var(--default-ink-a50); flex-grow: 1; font-size: 2.2em; padding: 0; @@ -177,9 +173,23 @@ body.mobile.no-tooltips .toolRibbon .tool { visibility: visible; } -body:not(.dfEnabled) #moreButton .fa-icon { +.moreOrLess > span { + cursor: pointer; + } +#moreButton .fa-icon { transform: rotate(180deg); } +#lessButton { + text-align: right; + } +body[data-more="a b c d e"] #moreButton { + pointer-events: none; + visibility: hidden; + } +body[data-more=""] #lessButton { + pointer-events: none; + visibility: hidden; + } #tooltip { background-color: var(--bg-tooltip); @@ -224,9 +234,6 @@ body[dir="rtl"] #tooltip { text-align: right; --rule-cell-width: 5em; } -body:not(.dfEnabled) #firewall { - display: none; - } #firewall > div { border: 0; direction: ltr; @@ -246,11 +253,11 @@ body:not(.dfEnabled) #firewall { #firewall.expanded > div.isSubDomain.expandException:not(.isRootContext) { display: none; } -#firewall > div > span { +#firewall > div > span, +#actionSelector > #dynaCounts { background-color: var(--bg-popup-cell-2); border: none; box-sizing: border-box; - -moz-box-sizing: border-box; display: inline-flex; padding: 0.4em 0; position: relative; @@ -313,7 +320,8 @@ body:not(.dfEnabled) #firewall { #firewall.expanded > div:not(.expandException) > span:nth-of-type(3), #firewall:not(.expanded) > div.expandException > span:nth-of-type(3), #firewall:not(.expanded) > div.isDomain:not(.expandException) > span:nth-of-type(4), -#firewall.expanded > div.isDomain.expandException > span:nth-of-type(4) { +#firewall.expanded > div.isDomain.expandException > span:nth-of-type(4), +#actionSelector > #dynaCounts { display: inline-flex; justify-content: space-between; } @@ -423,15 +431,15 @@ body.advancedUser #firewall > div > span.ownRule, color: var(--default-surface); } body.advancedUser #firewall > div > span.allowRule.ownRule, -#actionSelector > #dynaAllow:hover { +:root.desktop #actionSelector > #dynaAllow:hover { background-color: var(--bg-popup-cell-allow-own); } body.advancedUser #firewall > div > span.blockRule.ownRule, -#actionSelector > #dynaBlock:hover { +:root.desktop #actionSelector > #dynaBlock:hover { background-color: var(--bg-popup-cell-block-own); } body.advancedUser #firewall > div > span.noopRule.ownRule, -#actionSelector > #dynaNoop:hover { +:root.desktop #actionSelector > #dynaNoop:hover { background-color: var(--bg-popup-cell-noop-own); } @@ -458,11 +466,8 @@ body.advancedUser #firewall > div > span.noopRule.ownRule, width: 33.5%; } #actionSelector > #dynaCounts { - align-items: center; background-color: transparent; - display: inline-flex; height: 100%; - justify-content: space-between; left: 0; pointer-events: none; position: absolute; @@ -488,6 +493,19 @@ body.advancedUser #firewall > div > span.noopRule.ownRule, :root body[data-ui~="+no-popups"] #no-popups { display: flex; } +body:not([data-more~="a"]) [data-more="a"], +body:not([data-more~="b"]) [data-more="b"], +body:not([data-more~="c"]) [data-more="c"], +body:not([data-more~="e"]) [data-more="e"] { + height: 0; + margin-bottom: 0; + margin-top: 0; + overflow-y: hidden; + visibility: hidden; + } +body:not([data-more~="d"]) [data-more="d"] { + display: none; + } /* mouse-driven devices */ :root.desktop { @@ -505,6 +523,13 @@ body.advancedUser #firewall > div > span.noopRule.ownRule, max-width: 300px; width: max-content; } +:root.desktop #switch .fa-icon:hover { + color: var(--popup-power-ink-hover); + fill: var(--popup-power-ink-hover); + } +:root.desktop .rulesetTools [id]:hover { + fill: var(--default-ink); + } :root.desktop #firewall { direction: rtl; flex-grow: 1; @@ -513,7 +538,7 @@ body.advancedUser #firewall > div > span.noopRule.ownRule, max-height: max(100vh, 600px); min-width: 360px; overflow-y: auto; - width: max-content; + width: min-content; } :root.desktop .tool { padding: 0.5em; @@ -521,3 +546,6 @@ body.advancedUser #firewall > div > span.noopRule.ownRule, :root.desktop .tool:hover { background-color: var(--button-surface); } +:root.desktop .moreOrLess > span:hover { + background-color: var(--button-surface); + } diff --git a/src/css/themes/default.css b/src/css/themes/default.css index 67542c030a8..44caba02520 100644 --- a/src/css/themes/default.css +++ b/src/css/themes/default.css @@ -18,6 +18,7 @@ --ink-50: #291d4f; --ink-80: #20123a; --ink-80-a4: #20123a0a; + --ink-80-a50: #20123a88; --ink-90: #1d1133; --light-gray-10: #f9f9fb; --light-gray-30: #e0e0e6; @@ -53,6 +54,7 @@ --default-ink: var(--ink-80); --default-ink-a4: var(--ink-80-a4); + --default-ink-a50: var(--ink-80-a50); --default-surface: var(--light-gray-10); --bg-1: hsla(240, 20%, 98%, 1); diff --git a/src/js/background.js b/src/js/background.js index febc58d3360..1ab8ff0a066 100644 --- a/src/js/background.js +++ b/src/js/background.js @@ -92,6 +92,8 @@ const µBlock = (( ) => { // jshint ignore:line ignoreGenericCosmeticFilters: vAPI.webextFlavor.soup.has('mobile'), largeMediaSize: 50, parseAllABPHideFilters: true, + popupPanelSections: 0b111, + popupPanelDisabledSections: 0, prefetchingDisabled: true, requestLogMaxEntries: 1000, showIconBadge: true, diff --git a/src/js/messaging.js b/src/js/messaging.js index 1561346bdca..cb7e580f119 100644 --- a/src/js/messaging.js +++ b/src/js/messaging.js @@ -264,14 +264,14 @@ const getFirewallRules = function(srcHostname, desHostnames) { const popupDataFromTabId = function(tabId, tabTitle) { const tabContext = µb.tabContextManager.mustLookup(tabId); const rootHostname = tabContext.rootHostname; + const µbus = µb.userSettings; const r = { - advancedUserEnabled: µb.userSettings.advancedUserEnabled, + advancedUserEnabled: µbus.advancedUserEnabled, appName: vAPI.app.name, appVersion: vAPI.app.version, - colorBlindFriendly: µb.userSettings.colorBlindFriendly, + colorBlindFriendly: µbus.colorBlindFriendly, cosmeticFilteringSwitch: false, - dfEnabled: µb.userSettings.dynamicFilteringEnabled, - firewallPaneMinimized: µb.userSettings.firewallPaneMinimized, + firewallPaneMinimized: µbus.firewallPaneMinimized, globalAllowedRequestCount: µb.localSettings.allowedRequestCount, globalBlockedRequestCount: µb.localSettings.blockedRequestCount, fontSize: µb.hiddenSettings.popupFontSize, @@ -283,9 +283,11 @@ const popupDataFromTabId = function(tabId, tabTitle) { pageAllowedRequestCount: 0, pageBlockedRequestCount: 0, popupBlockedCount: 0, + popupPanelSections: µbus.popupPanelSections, + popupPanelDisabledSections: µbus.popupPanelDisabledSections, tabId: tabId, tabTitle: tabTitle, - tooltipsDisabled: µb.userSettings.tooltipsDisabled + tooltipsDisabled: µbus.tooltipsDisabled }; if ( µb.hiddenSettings.uiPopupConfig !== 'undocumented' ) { diff --git a/src/js/popup-fenix.js b/src/js/popup-fenix.js index 018c62d890f..55774be0c97 100644 --- a/src/js/popup-fenix.js +++ b/src/js/popup-fenix.js @@ -30,22 +30,21 @@ /******************************************************************************/ +/* let popupFontSize; vAPI.localStorage.getItemAsync('popupFontSize').then(value => { if ( typeof value !== 'string' || value === 'unset' ) { return; } document.body.style.setProperty('font-size', value); popupFontSize = value; }); +*/ // https://github.com/chrisaljoudi/uBlock/issues/996 // Experimental: mitigate glitchy popup UI: immediately set the firewall // pane visibility to its last known state. By default the pane is hidden. -let dfPaneVisibleStored; -vAPI.localStorage.getItemAsync('popupFirewallPane').then(value => { - dfPaneVisibleStored = value === true || value === 'true'; - if ( dfPaneVisibleStored ) { - document.body.classList.add('dfEnabled'); - } +vAPI.localStorage.getItemAsync('popupPanelSections').then(bits => { + if ( typeof bits !== 'number' ) { return; } + sectionBitsToAttribute(bits); }); /******************************************************************************/ @@ -485,21 +484,6 @@ const renderPopup = function() { uDom.nodeFromSelector('#no-remote-fonts .fa-icon-badge') .textContent = total ? Math.min(total, 99).toLocaleString() : ''; - // https://github.com/chrisaljoudi/uBlock/issues/470 - // This must be done here, to be sure the popup is resized properly - const dfPaneVisible = popupData.dfEnabled; - - // https://github.com/chrisaljoudi/uBlock/issues/1068 - // Remember the last state of the firewall pane. This allows to - // configure the popup size early next time it is opened, which means a - // less glitchy popup at open time. - if ( dfPaneVisible !== dfPaneVisibleStored ) { - dfPaneVisibleStored = dfPaneVisible; - vAPI.localStorage.setItem('popupFirewallPane', dfPaneVisibleStored); - } - - body.classList.toggle('dfEnabled', dfPaneVisible === true); - document.documentElement.classList.toggle( 'colorBlind', popupData.colorBlindFriendly === true @@ -508,7 +492,7 @@ const renderPopup = function() { setGlobalExpand(popupData.firewallPaneMinimized === false, true); // Build dynamic filtering pane only if in use - if ( dfPaneVisible ) { + if ( (popupData.popupPanelSections & ~popupData.popupPanelDisabledSections & 0b1000) !== 0 ) { buildAllFirewallRows(); } @@ -588,6 +572,7 @@ let renderOnce = function() { const body = document.body; +/* if ( popupData.fontSize !== popupFontSize ) { popupFontSize = popupData.fontSize; if ( popupFontSize !== 'unset' ) { @@ -598,11 +583,13 @@ let renderOnce = function() { vAPI.localStorage.removeItem('popupFontSize'); } } +*/ - // https://github.com/uBlockOrigin/uBlock-issues/issues/22 - if ( popupData.advancedUserEnabled !== true ) { - uDom('#firewall [title][data-src]').removeAttr('title'); - } + uDom.nodeFromId('version').textContent = popupData.appVersion; + + sectionBitsToAttribute( + popupData.popupPanelSections & ~popupData.popupPanelDisabledSections + ); if ( popupData.uiPopupConfig !== undefined ) { document.body.setAttribute('data-ui', popupData.uiPopupConfig); @@ -612,6 +599,11 @@ let renderOnce = function() { if ( popupData.tooltipsDisabled === true ) { uDom('[title]').removeAttr('title'); } + + // https://github.com/uBlockOrigin/uBlock-issues/issues/22 + if ( popupData.advancedUserEnabled !== true ) { + uDom('#firewall [title][data-src]').removeAttr('title'); + } }; /******************************************************************************/ @@ -733,29 +725,71 @@ const gotoURL = function(ev) { /******************************************************************************/ -const toggleFirewallPane = function() { - popupData.dfEnabled = !popupData.dfEnabled; +// The popup panel is made of sections. Visiblity of sections can +// be toggle on/off. + +const maxNumberOfSections = 5; + +const sectionBitsFromAttribute = function() { + const attr = document.body.dataset.more; + if ( attr === '' ) { return 0; } + let bits = 0; + for ( const c of attr.split(' ') ) { + bits |= 1 << (c.charCodeAt(0) - 97); + } + return bits; +}; +const sectionBitsToAttribute = function(bits) { + const attr = []; + for ( let i = 0; i < maxNumberOfSections; i++ ) { + const bit = 1 << i; + if ( (bits & bit) === 0 ) { continue; } + attr.push(String.fromCharCode(97 + i)); + } + document.body.dataset.more = attr.join(' '); +}; + +const toggleSections = function(more) { + const mask = ~popupData.popupPanelDisabledSections; + let currentBits = sectionBitsFromAttribute(); + let newBits = currentBits; + for ( let i = 0; i < maxNumberOfSections; i++ ) { + const bit = 1 << (more ? i : maxNumberOfSections - i - 1); + if ( (mask & bit) === 0 ) { continue; } + if ( more ) { + newBits |= bit; + } else { + newBits &= ~bit; + } + if ( newBits !== currentBits ) { break; } + } + if ( newBits === currentBits ) { return; } + + sectionBitsToAttribute(newBits); + + popupData.popupPanelSections = newBits; messaging.send('popupPanel', { what: 'userSettings', - name: 'dynamicFilteringEnabled', - value: popupData.dfEnabled, + name: 'popupPanelSections', + value: newBits, }); // https://github.com/chrisaljoudi/uBlock/issues/996 - // Remember the last state of the firewall pane. This allows to - // configure the popup size early next time it is opened, which means a - // less glitchy popup at open time. - dfPaneVisibleStored = popupData.dfEnabled; - vAPI.localStorage.setItem('popupFirewallPane', dfPaneVisibleStored); + // Remember the last state of the firewall pane. This allows to + // configure the popup size early next time it is opened, which means a + // less glitchy popup at open time. + vAPI.localStorage.setItem('popupPanelSections', newBits); // Dynamic filtering pane may not have been built yet - document.body.classList.toggle('dfEnabled', popupData.dfEnabled); - if ( popupData.dfEnabled && dfPaneBuilt === false ) { + if ( (newBits & 0b1000) !== 0 && dfPaneBuilt === false ) { buildAllFirewallRows(); } }; +uDom('#moreButton').on('click', ( ) => { toggleSections(true); }); +uDom('#lessButton').on('click', ( ) => { toggleSections(false); }); + /******************************************************************************/ const mouseenterCellHandler = function() { @@ -1138,7 +1172,6 @@ const getPopupData = async function(tabId) { uDom('#switch').on('click', toggleNetFilteringSwitch); uDom('#gotoZap').on('click', gotoZap); uDom('#gotoPick').on('click', gotoPick); -uDom('#moreButton').on('click', toggleFirewallPane); uDom('.hnSwitch').on('click', ev => { toggleHostnameSwitch(ev); }); uDom('#saveRules').on('click', saveFirewallRules); uDom('#revertRules').on('click', ( ) => { revertFirewallRules(); }); diff --git a/src/js/popup.js b/src/js/popup.js index 266036a4d5f..3be9676c0d0 100644 --- a/src/js/popup.js +++ b/src/js/popup.js @@ -506,7 +506,7 @@ const renderPopup = function() { // https://github.com/chrisaljoudi/uBlock/issues/470 // This must be done here, to be sure the popup is resized properly - const dfPaneVisible = popupData.dfEnabled; + const dfPaneVisible = (popupData.popupPanelSections & 0b1000) !== 0; // https://github.com/chrisaljoudi/uBlock/issues/1068 // Remember the last state of the firewall pane. This allows to @@ -517,10 +517,7 @@ const renderPopup = function() { vAPI.localStorage.setItem('popupFirewallPane', dfPaneVisibleStored); } - uDom.nodeFromId('panes').classList.toggle( - 'dfEnabled', - dfPaneVisible === true - ); + uDom.nodeFromId('panes').classList.toggle('dfEnabled', dfPaneVisible === true); document.documentElement.classList.toggle( 'colorBlind', @@ -795,24 +792,24 @@ const gotoURL = function(ev) { /******************************************************************************/ const toggleFirewallPane = function() { - popupData.dfEnabled = !popupData.dfEnabled; + popupData.popupPanelSections = popupData.popupPanelSections ^ 0b1000; messaging.send('popupPanel', { what: 'userSettings', - name: 'dynamicFilteringEnabled', - value: popupData.dfEnabled, + name: 'popupPanelSections', + value: popupData.popupPanelSections | 0b0111, }); // https://github.com/chrisaljoudi/uBlock/issues/996 // Remember the last state of the firewall pane. This allows to // configure the popup size early next time it is opened, which means a // less glitchy popup at open time. - dfPaneVisibleStored = popupData.dfEnabled; + dfPaneVisibleStored = (popupData.popupPanelSections & 0b1000) !== 0; vAPI.localStorage.setItem('popupFirewallPane', dfPaneVisibleStored); // Dynamic filtering pane may not have been built yet - uDom.nodeFromId('panes').classList.toggle('dfEnabled', popupData.dfEnabled); - if ( popupData.dfEnabled && dfPaneBuilt === false ) { + uDom.nodeFromId('panes').classList.toggle('dfEnabled', dfPaneVisibleStored); + if ( dfPaneVisibleStored && dfPaneBuilt === false ) { buildAllFirewallRows(); } }; @@ -1076,7 +1073,7 @@ const toggleHostnameSwitch = async function(ev) { hostname: popupData.pageHostname, state: target.classList.contains('on'), tabId: popupData.tabId, - persist: popupData.dfEnabled === false || ev.ctrlKey || ev.metaKey, + persist: (popupData.popupPanelSections & 0b1000) === 0 || ev.ctrlKey || ev.metaKey, }); cachePopupData(response); diff --git a/src/js/start.js b/src/js/start.js index 79f8b3f96ff..7e2b3f74a29 100644 --- a/src/js/start.js +++ b/src/js/start.js @@ -114,6 +114,15 @@ const onVersionReady = function(lastVersion) { µb.saveHostnameSwitches(); } + // Configure new popup panel according to classic popup panel + // configuration. + if ( lastVersionInt !== 0 && lastVersionInt <= 1026003014 ) { + µb.userSettings.popupPanelSections = + µb.userSettings.dynamicFilteringEnabled === true ? 0b1111 : 0b0111; + µb.userSettings.dynamicFilteringEnabled = undefined; + µb.saveUserSettings(); + } + vAPI.storage.set({ version: vAPI.app.version }); }; @@ -356,14 +365,16 @@ if ( browser.browserAction instanceof Object && browser.browserAction.setPopup instanceof Function ) { - let uiFlavor = µb.hiddenSettings.uiFlavor; - if ( uiFlavor === 'unset' && vAPI.webextFlavor.soup.has('mobile') ) { - uiFlavor = 'fenix'; - } - if ( uiFlavor !== 'unset' && /\w+/.test(uiFlavor) ) { - browser.browserAction.setPopup({ - popup: vAPI.getURL(`popup-${uiFlavor}.html`) - }); + const env = vAPI.webextFlavor; + if ( + µb.hiddenSettings.uiFlavor === 'classic' || ( + µb.hiddenSettings.uiFlavor === 'unset' && ( + env.soup.has('chromium') && env.major < 66 || + env.soup.has('firefox') && env.major < 68 + ) + ) + ) { + browser.browserAction.setPopup({ popup: vAPI.getURL('popup.html') }); } } diff --git a/src/js/ublock.js b/src/js/ublock.js index 6dd2a792c70..79dc7fd52ab 100644 --- a/src/js/ublock.js +++ b/src/js/ublock.js @@ -331,7 +331,7 @@ const matchBucket = function(url, hostname, bucket, start) { switch ( name ) { case 'advancedUserEnabled': if ( value === true ) { - us.dynamicFilteringEnabled = true; + us.popupPanelSections = 0b1111; } break; case 'autoUpdate': diff --git a/src/popup-fenix.html b/src/popup-fenix.html index 0c080b4bfb8..6fd77438b07 100644 --- a/src/popup-fenix.html +++ b/src/popup-fenix.html @@ -11,7 +11,7 @@ - +
@@ -27,35 +27,44 @@
ephemeralnewyork.­wordpress.com
-
-
- - - -
-
-
+
+
ph-popups film eye-slash ph-readermode-text-size code
-
-
+
+
+ + + +
+
+
bolt eye-dropper list-alt sliders
+
+
+ +

-
- angle-up +
+ + angle-up + + + angle-up +
-
+
From 2f912773b5d9d33772ab544cb158675c2d9bdba3 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Thu, 30 Apr 2020 07:35:47 -0400 Subject: [PATCH 17/76] Import translation work from https://crowdin.com/project/ublock --- src/_locales/ar/messages.json | 10 +++++++++- src/_locales/az/messages.json | 10 +++++++++- src/_locales/bg/messages.json | 10 +++++++++- src/_locales/bn/messages.json | 30 +++++++++++++++++++----------- src/_locales/bs/messages.json | 10 +++++++++- src/_locales/ca/messages.json | 10 +++++++++- src/_locales/cs/messages.json | 10 +++++++++- src/_locales/cv/messages.json | 10 +++++++++- src/_locales/da/messages.json | 10 +++++++++- src/_locales/de/messages.json | 10 +++++++++- src/_locales/el/messages.json | 10 +++++++++- src/_locales/en_GB/messages.json | 10 +++++++++- src/_locales/eo/messages.json | 10 +++++++++- src/_locales/es/messages.json | 10 +++++++++- src/_locales/et/messages.json | 10 +++++++++- src/_locales/eu/messages.json | 10 +++++++++- src/_locales/fa/messages.json | 10 +++++++++- src/_locales/fi/messages.json | 10 +++++++++- src/_locales/fil/messages.json | 10 +++++++++- src/_locales/fr/messages.json | 10 +++++++++- src/_locales/fy/messages.json | 10 +++++++++- src/_locales/gl/messages.json | 10 +++++++++- src/_locales/he/messages.json | 10 +++++++++- src/_locales/hi/messages.json | 10 +++++++++- src/_locales/hr/messages.json | 10 +++++++++- src/_locales/hu/messages.json | 10 +++++++++- src/_locales/id/messages.json | 10 +++++++++- src/_locales/it/messages.json | 10 +++++++++- src/_locales/ja/messages.json | 24 ++++++++++++++++-------- src/_locales/ka/messages.json | 10 +++++++++- src/_locales/kk/messages.json | 10 +++++++++- src/_locales/kn/messages.json | 10 +++++++++- src/_locales/ko/messages.json | 10 +++++++++- src/_locales/lt/messages.json | 10 +++++++++- src/_locales/lv/messages.json | 10 +++++++++- src/_locales/ml/messages.json | 10 +++++++++- src/_locales/mr/messages.json | 10 +++++++++- src/_locales/ms/messages.json | 10 +++++++++- src/_locales/nb/messages.json | 10 +++++++++- src/_locales/nl/messages.json | 10 +++++++++- src/_locales/oc/messages.json | 10 +++++++++- src/_locales/pl/messages.json | 10 +++++++++- src/_locales/pt_BR/messages.json | 10 +++++++++- src/_locales/pt_PT/messages.json | 10 +++++++++- src/_locales/ro/messages.json | 16 ++++++++++++---- src/_locales/ru/messages.json | 10 +++++++++- src/_locales/sk/messages.json | 10 +++++++++- src/_locales/sl/messages.json | 10 +++++++++- src/_locales/sq/messages.json | 10 +++++++++- src/_locales/sr/messages.json | 10 +++++++++- src/_locales/sv/messages.json | 10 +++++++++- src/_locales/ta/messages.json | 10 +++++++++- src/_locales/te/messages.json | 10 +++++++++- src/_locales/th/messages.json | 10 +++++++++- src/_locales/tr/messages.json | 10 +++++++++- src/_locales/uk/messages.json | 10 +++++++++- src/_locales/ur/messages.json | 10 +++++++++- src/_locales/vi/messages.json | 10 +++++++++- src/_locales/zh_CN/messages.json | 10 +++++++++- src/_locales/zh_TW/messages.json | 10 +++++++++- 60 files changed, 560 insertions(+), 80 deletions(-) diff --git a/src/_locales/ar/messages.json b/src/_locales/ar/messages.json index 036b3c6a30c..ae6052d25d0 100644 --- a/src/_locales/ar/messages.json +++ b/src/_locales/ar/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "المزيد", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "القواعد العامة: هذا العمود يتعلق بالقواعد التي تنطبق على جميع الموقع.", @@ -259,6 +263,10 @@ "message": "{{count}} من {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "إنشاء", "description": "English: Create" diff --git a/src/_locales/az/messages.json b/src/_locales/az/messages.json index c707d213524..9dab503fbca 100644 --- a/src/_locales/az/messages.json +++ b/src/_locales/az/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "More", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Global rules: this column is for rules which apply to all sites.", @@ -259,6 +263,10 @@ "message": "{{count}} / {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Yarat", "description": "English: Create" diff --git a/src/_locales/bg/messages.json b/src/_locales/bg/messages.json index b0c381eca50..2e5ec4ef389 100644 --- a/src/_locales/bg/messages.json +++ b/src/_locales/bg/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Още", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "По-малко", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Глобални правила: колона с правила, приложими към всички сайтове.", @@ -259,6 +263,10 @@ "message": "{{count}} от {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Версия", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Създаване", "description": "English: Create" diff --git a/src/_locales/bn/messages.json b/src/_locales/bn/messages.json index 6936eb04318..939a4e8fe69 100644 --- a/src/_locales/bn/messages.json +++ b/src/_locales/bn/messages.json @@ -148,15 +148,15 @@ "description": "Tooltip for the no-large-media per-site switch" }, "popupTipNoCosmeticFiltering": { - "message": "এই সাইটের জন্য বাহ্যিক ছাকন চালু/বন্ধ করুন", + "message": "এই সাইটের জন্য কসমেটিক ছাঁকন চালু/বন্ধ করুন", "description": "Tooltip for the no-cosmetic-filtering per-site switch" }, "popupTipNoCosmeticFiltering1": { - "message": "এই সাইটে প্রসাধনী ছাকন নিষ্ক্রিয় করতে ক্লিক করুন", + "message": "এই সাইটে কসমেটিক ফিল্টার নিষ্ক্রিয় করতে ক্লিক করুন", "description": "Tooltip for the no-cosmetic-filtering per-site switch" }, "popupTipNoCosmeticFiltering2": { - "message": "এই সাইটে প্রসাধনী ছাকন সক্রিয় করতে ক্লিক করুন", + "message": "এই সাইটে কসমেটিক ফিল্টার সক্রিয় করতে ক্লিক করুন", "description": "Tooltip for the no-cosmetic-filtering per-site switch" }, "popupTipNoRemoteFonts": { @@ -172,7 +172,7 @@ "description": "Tooltip for the no-remote-fonts per-site switch" }, "popupTipNoScripting1": { - "message": "এই সাইটের জাভাস্ক্রিপ্ট চালু করতে ক্লিক করুণ", + "message": "এই সাইটের জাভাস্ক্রিপ্ট বন্ধ করতে ক্লিক করুণ", "description": "Tooltip for the no-scripting per-site switch" }, "popupTipNoScripting2": { @@ -180,7 +180,7 @@ "description": "Tooltip for the no-scripting per-site switch" }, "popupNoPopups_v2": { - "message": "Pop-up windows", + "message": "পপ-আপ উইন্ডো", "description": "Caption for the no-popups per-site switch" }, "popupNoLargeMedia_v2": { @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "আরো", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "কম", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "সার্বজনীন নিয়ম: এই স্তম্ভ সেইসব নিয়মের জন্য যা সকল সাইটের উপর প্রযোজ্য।", @@ -259,6 +263,10 @@ "message": "{{total}}টির মধ্যে {{count}}টি", "description": "appears in popup" }, + "popupVersion": { + "message": "সংস্করণ", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "তৈরি করুন", "description": "English: Create" @@ -680,7 +688,7 @@ "description": "Label to identify a root context field (typically a hostname)" }, "loggerEntryDetailsPartyness": { - "message": "দল", + "message": "দলমত", "description": "Label to identify a field providing partyness information" }, "loggerEntryDetailsType": { @@ -872,7 +880,7 @@ "description": "Message to display when an error occurred during restore" }, "aboutResetDataConfirm": { - "message": "আপনার সব সেটিংস বাতিল করা হবে, এবং uBlock₀ পুনরায় চালু হবে।\n\nuBlock₀ সেটিংস পুনঃস্থাপন করবেন?", + "message": "আপনার সব সেটিংস বাতিল করা হবে, এবং uBlock₀ পুনরায় চালু হবে।\n\nইউব্লক₀ সেটিংস পুনঃস্থাপন করবেন?", "description": "Message asking user to confirm reset" }, "errorCantConnectTo": { @@ -1024,15 +1032,15 @@ "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" }, "KB": { - "message": "KB", + "message": "কিলোবাইট", "description": "short for 'kilobytes'" }, "MB": { - "message": "MB", + "message": "মেগাবাইট", "description": "short for 'megabytes'" }, "GB": { - "message": "GB", + "message": "গিগাবাইট", "description": "short for 'gigabytes'" }, "dummy": { diff --git a/src/_locales/bs/messages.json b/src/_locales/bs/messages.json index 6cd613ca50f..cc83e85ad47 100644 --- a/src/_locales/bs/messages.json +++ b/src/_locales/bs/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Više", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Global rules: this column is for rules which apply to all sites.", @@ -259,6 +263,10 @@ "message": "{{count}} od {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Kreiraj", "description": "English: Create" diff --git a/src/_locales/ca/messages.json b/src/_locales/ca/messages.json index c5e0b2da631..497d41e084a 100644 --- a/src/_locales/ca/messages.json +++ b/src/_locales/ca/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Més", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Menys", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Regles globals: les regles d'aquesta columna s'apliquen a tots els llocs.", @@ -259,6 +263,10 @@ "message": "{{count}} de {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Versió", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Crear", "description": "English: Create" diff --git a/src/_locales/cs/messages.json b/src/_locales/cs/messages.json index 6bedf14cc8d..5eb434eb30d 100644 --- a/src/_locales/cs/messages.json +++ b/src/_locales/cs/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Více", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Globální pravidla: tento sloupec slouží pro pravidla, která platí pro všechny weby.", @@ -259,6 +263,10 @@ "message": "{{count}} z {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Vytvořit", "description": "English: Create" diff --git a/src/_locales/cv/messages.json b/src/_locales/cv/messages.json index 70d8fbf34ae..fe7ab03ab36 100644 --- a/src/_locales/cv/messages.json +++ b/src/_locales/cv/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "More", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Global rules: this column is for rules which apply to all sites.", @@ -259,6 +263,10 @@ "message": "{{count}} out of {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Create", "description": "English: Create" diff --git a/src/_locales/da/messages.json b/src/_locales/da/messages.json index 67fd9cdc9cd..c948b6cca67 100644 --- a/src/_locales/da/messages.json +++ b/src/_locales/da/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Mere", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Skjul", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Globale regler: Denne kolonne er til regler gældende alle websteder.", @@ -259,6 +263,10 @@ "message": "{{count}} af {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Opret", "description": "English: Create" diff --git a/src/_locales/de/messages.json b/src/_locales/de/messages.json index d74d569c20f..58025c2a810 100644 --- a/src/_locales/de/messages.json +++ b/src/_locales/de/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Mehr", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Weniger", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Globale Regeln: Diese Spalte ist für Regeln, die bei allen Seiten angewendet werden.", @@ -259,6 +263,10 @@ "message": "{{count}} von insgesamt {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Erzeugen", "description": "English: Create" diff --git a/src/_locales/el/messages.json b/src/_locales/el/messages.json index 3c931f4c8de..c5a8f63d51c 100644 --- a/src/_locales/el/messages.json +++ b/src/_locales/el/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "More", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Καθολικοί κανόνες: αυτή η στήλη είναι για κανόνες με εφαρμογή σε όλες τις τοποθεσίες.", @@ -259,6 +263,10 @@ "message": "{{count}} από {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Δημιουργία", "description": "English: Create" diff --git a/src/_locales/en_GB/messages.json b/src/_locales/en_GB/messages.json index ff87ee075fb..78f36640980 100644 --- a/src/_locales/en_GB/messages.json +++ b/src/_locales/en_GB/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "More", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Global rules: this column is for rules which apply to all sites.", @@ -259,6 +263,10 @@ "message": "{{count}} out of {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Create", "description": "English: Create" diff --git a/src/_locales/eo/messages.json b/src/_locales/eo/messages.json index 8e320dc2b5f..a5ad06ff365 100644 --- a/src/_locales/eo/messages.json +++ b/src/_locales/eo/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Pli", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Ĝeneralaj reguloj: ĉi tiu kolumno estas por reguloj, kiuj aplikas al ĉiuj retejoj.", @@ -259,6 +263,10 @@ "message": "{{count}} de {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Krei", "description": "English: Create" diff --git a/src/_locales/es/messages.json b/src/_locales/es/messages.json index 57863e9be00..aa95df23938 100644 --- a/src/_locales/es/messages.json +++ b/src/_locales/es/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Más", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Menos", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Reglas globales: las reglas en esta columna se aplican a todos los sitios.", @@ -259,6 +263,10 @@ "message": "{{count}} de {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Versión", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Crear", "description": "English: Create" diff --git a/src/_locales/et/messages.json b/src/_locales/et/messages.json index c6968b98d81..7edd289560f 100644 --- a/src/_locales/et/messages.json +++ b/src/_locales/et/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Rohkem", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Vähem", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Üldised reeglid: selle veeru reeglid kehtivad kõikidele saitidele.", @@ -259,6 +263,10 @@ "message": "{{count}}/{{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Versioon", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Loo", "description": "English: Create" diff --git a/src/_locales/eu/messages.json b/src/_locales/eu/messages.json index f1ace008e88..aa6a9b2fdff 100644 --- a/src/_locales/eu/messages.json +++ b/src/_locales/eu/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Gehiago", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Arau orokorrak: Zutabe hau gune guztietan aplikatzen diren arauentzat da.", @@ -259,6 +263,10 @@ "message": "{{count}} / {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Sortu", "description": "English: Create" diff --git a/src/_locales/fa/messages.json b/src/_locales/fa/messages.json index 2ab3c2dd887..df2807c5991 100644 --- a/src/_locales/fa/messages.json +++ b/src/_locales/fa/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "More", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "قوانین همگانی: این ستون برای قوانینی است که برای همۀ سایت ها اعمال می شوند.", @@ -259,6 +263,10 @@ "message": "تعداد {{count}} از {{total}} تا", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "ایجاد", "description": "English: Create" diff --git a/src/_locales/fi/messages.json b/src/_locales/fi/messages.json index 57ca65362c1..d160dff58f5 100644 --- a/src/_locales/fi/messages.json +++ b/src/_locales/fi/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Lisää", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Yleiset säännöt: tämä sarake on säännöille, joita käytetään kaikille sivustoille.", @@ -259,6 +263,10 @@ "message": "{{count}}/{{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Luo", "description": "English: Create" diff --git a/src/_locales/fil/messages.json b/src/_locales/fil/messages.json index 5be8f556f56..3d358777a9c 100644 --- a/src/_locales/fil/messages.json +++ b/src/_locales/fil/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "More", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Global rules: this column is for rules which apply to all sites.", @@ -259,6 +263,10 @@ "message": "{{count}} na domain sa {{total}} na domain", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Idagdag ang rule", "description": "English: Create" diff --git a/src/_locales/fr/messages.json b/src/_locales/fr/messages.json index f985fb66c59..a61b1168286 100644 --- a/src/_locales/fr/messages.json +++ b/src/_locales/fr/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Plus", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Voir moins", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Règles globales : Cette colonne concerne des règles qui s'appliquent partout.", @@ -259,6 +263,10 @@ "message": "{{count}} sur un total de {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Créer", "description": "English: Create" diff --git a/src/_locales/fy/messages.json b/src/_locales/fy/messages.json index f33eeab6231..197f52c8e3d 100644 --- a/src/_locales/fy/messages.json +++ b/src/_locales/fy/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Mear", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Minder", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Globale rigels: dizze kolom is foar rigels dy't op alle websites fan tapassing binne.", @@ -259,6 +263,10 @@ "message": "{{count}} fan de {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Ferzje", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Meitsje", "description": "English: Create" diff --git a/src/_locales/gl/messages.json b/src/_locales/gl/messages.json index 345d42469aa..51ab0415a66 100644 --- a/src/_locales/gl/messages.json +++ b/src/_locales/gl/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "More", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Reglas globais: esta columna é para as reglas que afectan a todos os sitios.", @@ -259,6 +263,10 @@ "message": "{{count}} de {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Crear", "description": "English: Create" diff --git a/src/_locales/he/messages.json b/src/_locales/he/messages.json index 7e0177de21b..020c683b0bb 100644 --- a/src/_locales/he/messages.json +++ b/src/_locales/he/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "עוד", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "פחות", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "חוקים גלובליים: עמודה זו היא עבור חוקים אשר תקפים לכל האתרים.", @@ -259,6 +263,10 @@ "message": "{{count}} מתוך {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "גרסה", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "צור", "description": "English: Create" diff --git a/src/_locales/hi/messages.json b/src/_locales/hi/messages.json index 11259c92593..d3a18f3580a 100644 --- a/src/_locales/hi/messages.json +++ b/src/_locales/hi/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "और", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "सार्वत्रिक नियम: इस क़तार के नियम सारे साइट्स पर लागु करने के लिए हैं ", @@ -259,6 +263,10 @@ "message": "{{total}} मे से {{count}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "बनाएँ", "description": "English: Create" diff --git a/src/_locales/hr/messages.json b/src/_locales/hr/messages.json index 006086ff082..0a511efb423 100644 --- a/src/_locales/hr/messages.json +++ b/src/_locales/hr/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Više", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Manje", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Globalna pravila: ovaj stupac je za pravila koja vrijede za sve stranice.", @@ -259,6 +263,10 @@ "message": "{{count}} od {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Verzija", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Stvaranje", "description": "English: Create" diff --git a/src/_locales/hu/messages.json b/src/_locales/hu/messages.json index d3dee32cdb5..487e92c45d7 100644 --- a/src/_locales/hu/messages.json +++ b/src/_locales/hu/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Több", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Kevesebb", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Globális szabályok: ebben az oszlopban azok a szabályok vannak, amelyek minden weboldalra vonatkoznak.", @@ -259,6 +263,10 @@ "message": "{{count}}, összesen: {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Verzió", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Létrehoz", "description": "English: Create" diff --git a/src/_locales/id/messages.json b/src/_locales/id/messages.json index 893fe0cdde3..127fad376b7 100644 --- a/src/_locales/id/messages.json +++ b/src/_locales/id/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Lainnya", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Aturan global: kolom ini untuk aturan yang diterapkan ke semua situs.", @@ -259,6 +263,10 @@ "message": "{{count}} dari {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Versi", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Buat", "description": "English: Create" diff --git a/src/_locales/it/messages.json b/src/_locales/it/messages.json index 6dec4399d2c..4766e8b1699 100644 --- a/src/_locales/it/messages.json +++ b/src/_locales/it/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Altro", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Meno", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Regole globali: questa colonna è per le regole che si applicano a tutti i siti.", @@ -259,6 +263,10 @@ "message": "{{count}} di {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Versione", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Crea", "description": "English: Create" diff --git a/src/_locales/ja/messages.json b/src/_locales/ja/messages.json index 093602991ea..213dd1fc775 100644 --- a/src/_locales/ja/messages.json +++ b/src/_locales/ja/messages.json @@ -12,7 +12,7 @@ "description": "English: uBlock₀ — Dashboard" }, "dashboardUnsavedWarning": { - "message": "注意!保存していない変更があります", + "message": "注意! 保存していない変更があります", "description": "A warning in the dashboard when navigating away from unsaved changes" }, "dashboardUnsavedWarningStay": { @@ -200,8 +200,12 @@ "description": "Caption for the no-scripting per-site switch" }, "popupMoreButton_v2": { - "message": "詳細", - "description": "Label to be used to toggle overview panel" + "message": "詳細を表示", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "詳細を非表示", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "グローバルルール: この列にあるルールは、すべてのサイトに適用されます。", @@ -259,6 +263,10 @@ "message": "{{count}} / {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "バージョン", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "作成", "description": "English: Create" @@ -672,11 +680,11 @@ "description": "Label to identify a rule field" }, "loggerEntryDetailsContext": { - "message": "配信元", + "message": "リクエストが発生した場所", "description": "Label to identify a context field (typically a hostname)" }, "loggerEntryDetailsRootContext": { - "message": "大本の配信元", + "message": "最初にリクエストが発生した場所", "description": "Label to identify a root context field (typically a hostname)" }, "loggerEntryDetailsPartyness": { @@ -696,7 +704,7 @@ "description": "Small header to identify the dynamic URL filtering section" }, "loggerURLFilteringContextLabel": { - "message": "対象:", + "message": "リクエストが発生した場所: ", "description": "Label for the context selector" }, "loggerURLFilteringTypeLabel": { @@ -784,11 +792,11 @@ "description": "A label for the filter or rule column" }, "loggerSettingHideColumnContext": { - "message": "{{input}} 配信元", + "message": "{{input}} リクエストが発生した場所", "description": "A label for the context column" }, "loggerSettingHideColumnPartyness": { - "message": "{{input}} パーティー種別", + "message": "{{input}} ファースト/サードパーティー種別", "description": "A label for the partyness column" }, "loggerExportFormatList": { diff --git a/src/_locales/ka/messages.json b/src/_locales/ka/messages.json index 4c411328c69..c5bc5b56c40 100644 --- a/src/_locales/ka/messages.json +++ b/src/_locales/ka/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "სხვა", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "გლობალური წესები: ეს სვეტი არის წესებისთვის, რომლებიც მოქმედებს ყველა საიტზე.", @@ -259,6 +263,10 @@ "message": "{{total}}-დან {{count}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "შექმნა", "description": "English: Create" diff --git a/src/_locales/kk/messages.json b/src/_locales/kk/messages.json index 218dc669a5a..8fcda63d243 100644 --- a/src/_locales/kk/messages.json +++ b/src/_locales/kk/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "More", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Global rules: this column is for rules which apply to all sites.", @@ -259,6 +263,10 @@ "message": "{{count}} out of {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Жасау", "description": "English: Create" diff --git a/src/_locales/kn/messages.json b/src/_locales/kn/messages.json index 7d841e5e19c..568689ff623 100644 --- a/src/_locales/kn/messages.json +++ b/src/_locales/kn/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "More", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Global rules: this column is for rules which apply to all sites.", @@ -259,6 +263,10 @@ "message": "{{total}} ರಲ್ಲಿ {{count}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "ರಚಿಸಿ", "description": "English: Create" diff --git a/src/_locales/ko/messages.json b/src/_locales/ko/messages.json index e1d8ec1ff6d..a94136acf55 100644 --- a/src/_locales/ko/messages.json +++ b/src/_locales/ko/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "더보기", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "공용 규칙: 이 열은 모든 사이트에 적용되는 규칙 열 입니다.", @@ -259,6 +263,10 @@ "message": "{{total}}개 중 {{count}}개", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "생성", "description": "English: Create" diff --git a/src/_locales/lt/messages.json b/src/_locales/lt/messages.json index 47ae9e7a473..25e567caf9a 100644 --- a/src/_locales/lt/messages.json +++ b/src/_locales/lt/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "More", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Globalios taisyklės: ši skiltis skirta visiems puslapiams taikomoms taisyklėms.", @@ -259,6 +263,10 @@ "message": "{{count}} iš {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Sukurti", "description": "English: Create" diff --git a/src/_locales/lv/messages.json b/src/_locales/lv/messages.json index 0b2c0cc8e8c..8cd1586d634 100644 --- a/src/_locales/lv/messages.json +++ b/src/_locales/lv/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "More", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Globālie ierobežojumi: šī kolonna paredzēta ierobežojumiem, kas attieksies uz visām mājaslapām.", @@ -259,6 +263,10 @@ "message": "{{count}} no {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Izveidot", "description": "English: Create" diff --git a/src/_locales/ml/messages.json b/src/_locales/ml/messages.json index 80417fbc232..476071255c5 100644 --- a/src/_locales/ml/messages.json +++ b/src/_locales/ml/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "More", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "ആഗോള നിയമങ്ങൾ: ഈ കോളത്തിലെ നിയമങ്ങൾ എല്ലാ സൈറ്റുകളിലും പ്രയോഗിക്കുന്ന നിയമങ്ങള് ആണ്.", @@ -259,6 +263,10 @@ "message": "{{total}} ല്‍ നിന്നും {{count}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "ക്രിയേറ്റ് ചെയ്യുക", "description": "English: Create" diff --git a/src/_locales/mr/messages.json b/src/_locales/mr/messages.json index 59172bf954f..d85b8d701ce 100644 --- a/src/_locales/mr/messages.json +++ b/src/_locales/mr/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "More", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Global rules: this column is for rules which apply to all sites.", @@ -259,6 +263,10 @@ "message": "{{count}} पैकी {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "निर्माण करा", "description": "English: Create" diff --git a/src/_locales/ms/messages.json b/src/_locales/ms/messages.json index abf2f721120..a26bf79d8ae 100644 --- a/src/_locales/ms/messages.json +++ b/src/_locales/ms/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "More", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Peraturan global: kolumn ini adalah untuk peraturan yang dikuatkuasakan untuk semua laman.", @@ -259,6 +263,10 @@ "message": "{{count}} daripada {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Cipta", "description": "English: Create" diff --git a/src/_locales/nb/messages.json b/src/_locales/nb/messages.json index dc3202d0f1b..b9db967e483 100644 --- a/src/_locales/nb/messages.json +++ b/src/_locales/nb/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Mer", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Mindre", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Globale regler: Denne kolonnen er for regler som gjelder alle nettsteder.", @@ -259,6 +263,10 @@ "message": "{{count}} av {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Versjon", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Opprett", "description": "English: Create" diff --git a/src/_locales/nl/messages.json b/src/_locales/nl/messages.json index efe93d5cb8d..ea03897f992 100644 --- a/src/_locales/nl/messages.json +++ b/src/_locales/nl/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Meer", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Minder", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Algemene regels: deze kolom is voor regels die op alle websites van toepassing zijn.", @@ -259,6 +263,10 @@ "message": "{{count}} van {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Versie", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Aanmaken", "description": "English: Create" diff --git a/src/_locales/oc/messages.json b/src/_locales/oc/messages.json index e3769d89d76..ed3f5b9493f 100644 --- a/src/_locales/oc/messages.json +++ b/src/_locales/oc/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Mai", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Global rules: this column is for rules which apply to all sites.", @@ -259,6 +263,10 @@ "message": "{{count}} out of {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Crear", "description": "English: Create" diff --git a/src/_locales/pl/messages.json b/src/_locales/pl/messages.json index 0028f2eb5f1..4a499354876 100644 --- a/src/_locales/pl/messages.json +++ b/src/_locales/pl/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Więcej", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Mniej", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Reguły globalne. W tej kolumnie znajdują się reguły stosowane na wszystkich witrynach.", @@ -259,6 +263,10 @@ "message": "{{count}} z {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Wersja", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Utwórz", "description": "English: Create" diff --git a/src/_locales/pt_BR/messages.json b/src/_locales/pt_BR/messages.json index b09c435725d..c29214f3b99 100644 --- a/src/_locales/pt_BR/messages.json +++ b/src/_locales/pt_BR/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Mais", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Menos", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Regras globais: esta coluna é para as regras que se aplicam a todos os sites.", @@ -259,6 +263,10 @@ "message": "{{count}} de {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Versão", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Criar", "description": "English: Create" diff --git a/src/_locales/pt_PT/messages.json b/src/_locales/pt_PT/messages.json index 411054275ab..81a88dd5ccf 100644 --- a/src/_locales/pt_PT/messages.json +++ b/src/_locales/pt_PT/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Mais", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Menos", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Regras globais: esta coluna é para as regras que se aplicam a todos os sites.", @@ -259,6 +263,10 @@ "message": "{{count}} de {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Versão", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Criar", "description": "English: Create" diff --git a/src/_locales/ro/messages.json b/src/_locales/ro/messages.json index e96c4abdd3e..b189187d2c3 100644 --- a/src/_locales/ro/messages.json +++ b/src/_locales/ro/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Mai multe", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Mai puțin", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Reguli globale: această coloană este pentru regulile care se aplică tuturor site-urilor.", @@ -259,6 +263,10 @@ "message": "{{count}} din {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Versiune", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Creează", "description": "English: Create" @@ -832,15 +840,15 @@ "description": "English: Contributors" }, "aboutSourceCode": { - "message": "Source code", + "message": "Cod sursă", "description": "Link text to source code repo" }, "aboutTranslations": { - "message": "Translations", + "message": "Traduceri:", "description": "Link text to translations repo" }, "aboutFilterLists": { - "message": "Filter lists", + "message": "Liste de filtre", "description": "Link text to uBO's own filter lists repo" }, "aboutDependencies": { diff --git a/src/_locales/ru/messages.json b/src/_locales/ru/messages.json index 60670fc86a0..cb379c66799 100644 --- a/src/_locales/ru/messages.json +++ b/src/_locales/ru/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Еще", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Меньше", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Глобальные правила: этот столбец предназначен для правил, применяемых ко всем сайтам.", @@ -259,6 +263,10 @@ "message": "{{count}} из {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Версия", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Создать", "description": "English: Create" diff --git a/src/_locales/sk/messages.json b/src/_locales/sk/messages.json index 710877e1643..6b1d2731753 100644 --- a/src/_locales/sk/messages.json +++ b/src/_locales/sk/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Viac", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Menej", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Globálne pravidlá: tento stĺpec slúži pre pravidlá, ktoré platia pre všetky weby.", @@ -259,6 +263,10 @@ "message": "{{count}} z {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Verzia", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Vytvoriť", "description": "English: Create" diff --git a/src/_locales/sl/messages.json b/src/_locales/sl/messages.json index 691dbf982ce..ef2b06d2282 100644 --- a/src/_locales/sl/messages.json +++ b/src/_locales/sl/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "More", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Globalna pravila: ta stolpec je za pravila, ki se uveljavljajo za vse strani.", @@ -259,6 +263,10 @@ "message": "{{count}} od {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Ustvari", "description": "English: Create" diff --git a/src/_locales/sq/messages.json b/src/_locales/sq/messages.json index 9a918e72fdd..1d792ab5ba0 100644 --- a/src/_locales/sq/messages.json +++ b/src/_locales/sq/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Të tjera", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Më pak", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Rregullat globale: rregullat në këtë shtyllë aplikohen për të gjitha uebsajtet.", @@ -259,6 +263,10 @@ "message": "{{count}} nga {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Versioni", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Krijoj", "description": "English: Create" diff --git a/src/_locales/sr/messages.json b/src/_locales/sr/messages.json index a16937827e8..3028ce2a5a9 100644 --- a/src/_locales/sr/messages.json +++ b/src/_locales/sr/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Више", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Мање", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Општа правила: ова колона је за правила која се примењују на свим сајтовима.", @@ -259,6 +263,10 @@ "message": "{{count}} од {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Верзија", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Креирај", "description": "English: Create" diff --git a/src/_locales/sv/messages.json b/src/_locales/sv/messages.json index e1c14d7f1e4..f1673b23ae5 100644 --- a/src/_locales/sv/messages.json +++ b/src/_locales/sv/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Mer", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Mindre", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Globala regler: den här kolumnen avser regler som gäller för alla webbplatser.", @@ -259,6 +263,10 @@ "message": "{{count}} av {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Skapa", "description": "English: Create" diff --git a/src/_locales/ta/messages.json b/src/_locales/ta/messages.json index eca48b83f29..5204598aef4 100644 --- a/src/_locales/ta/messages.json +++ b/src/_locales/ta/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "More", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Global rules: this column is for rules which apply to all sites.", @@ -259,6 +263,10 @@ "message": "மொத்தம் {{total}} இல் {{count}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "உருவாக்கு", "description": "English: Create" diff --git a/src/_locales/te/messages.json b/src/_locales/te/messages.json index d82e3e47a30..e739ddb15ca 100644 --- a/src/_locales/te/messages.json +++ b/src/_locales/te/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "More", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "సామాన్య నియమాలు: ఈ నిలువరుసలో వున్న నియమాలు అన్ని సైట్లకు వర్తిస్తాయి.", @@ -259,6 +263,10 @@ "message": "{{total}} లో {{count}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "సృష్టించు", "description": "English: Create" diff --git a/src/_locales/th/messages.json b/src/_locales/th/messages.json index 38989c25852..61f6c1340ca 100644 --- a/src/_locales/th/messages.json +++ b/src/_locales/th/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "More", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Global rules: this column is for rules which apply to all sites.", @@ -259,6 +263,10 @@ "message": "{{count}} out of {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "สร้าง", "description": "English: Create" diff --git a/src/_locales/tr/messages.json b/src/_locales/tr/messages.json index 5b2494b00af..77cc6767216 100644 --- a/src/_locales/tr/messages.json +++ b/src/_locales/tr/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Daha fazla", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Daha az", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Genel kurallar: bu sütun tüm sitelere uygulanan kurallar içindir.", @@ -259,6 +263,10 @@ "message": "{{total}} taneden {{count}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Sürüm", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Oluştur", "description": "English: Create" diff --git a/src/_locales/uk/messages.json b/src/_locales/uk/messages.json index 4bb3bcbe548..af89fdcb591 100644 --- a/src/_locales/uk/messages.json +++ b/src/_locales/uk/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Більше", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Менше", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Глобальні правила: цей стовпчик для правил, що застосовуються для всіх сайтів.", @@ -259,6 +263,10 @@ "message": "{{count}} з {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Версія", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Створити", "description": "English: Create" diff --git a/src/_locales/ur/messages.json b/src/_locales/ur/messages.json index 8d112af5267..552e9f3c010 100644 --- a/src/_locales/ur/messages.json +++ b/src/_locales/ur/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "More", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "گلوبل اصول: اس کالم میں وہ اصول ہیں جو تمام ویب سائٹوں پر لاگو ہوں گے.", @@ -259,6 +263,10 @@ "message": "{{count}} out of {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "بنائیں", "description": "English: Create" diff --git a/src/_locales/vi/messages.json b/src/_locales/vi/messages.json index a6b40d8b44e..3ab31c99472 100644 --- a/src/_locales/vi/messages.json +++ b/src/_locales/vi/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "Khác", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Ít hơn", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "Quy tắc chung: cột này dành cho quy tắc áp dụng cho mọi trang.", @@ -259,6 +263,10 @@ "message": "{{count}} trên tổng {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "Phiên bản", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "Tạo", "description": "English: Create" diff --git a/src/_locales/zh_CN/messages.json b/src/_locales/zh_CN/messages.json index d3e74733886..d82ac2670f5 100644 --- a/src/_locales/zh_CN/messages.json +++ b/src/_locales/zh_CN/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "更多", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "更少", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "全局规则:此列的规则作用于所有网站。", @@ -259,6 +263,10 @@ "message": "{{count}} / {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "版本", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "创建", "description": "English: Create" diff --git a/src/_locales/zh_TW/messages.json b/src/_locales/zh_TW/messages.json index ec3e855ef3f..9f1d60ef46e 100644 --- a/src/_locales/zh_TW/messages.json +++ b/src/_locales/zh_TW/messages.json @@ -201,7 +201,11 @@ }, "popupMoreButton_v2": { "message": "更多", - "description": "Label to be used to toggle overview panel" + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "更少", + "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { "message": "全域規則:此欄位的規則會套用至所有網站。", @@ -259,6 +263,10 @@ "message": "{{count}} / {{total}}", "description": "appears in popup" }, + "popupVersion": { + "message": "版本", + "description": "Example of use: Version 1.26.4" + }, "pickerCreate": { "message": "建立", "description": "English: Create" From 0538d8ba763c2152597182257c0c26bca05b2c8b Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Thu, 30 Apr 2020 08:06:59 -0400 Subject: [PATCH 18/76] New revision for dev build --- dist/version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/version b/dist/version index d6f2fe66615..004e2196803 100644 --- a/dist/version +++ b/dist/version @@ -1 +1 @@ -1.26.3.14 +1.26.3.15 From 8f01f71addeeeb60f516fa57c0c08e79d65f4e51 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Thu, 30 Apr 2020 08:20:43 -0400 Subject: [PATCH 19/76] Make Firefox dev build auto-update --- dist/firefox/updates.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dist/firefox/updates.json b/dist/firefox/updates.json index 68f51df16a9..0426002da9f 100644 --- a/dist/firefox/updates.json +++ b/dist/firefox/updates.json @@ -3,10 +3,10 @@ "uBlock0@raymondhill.net": { "updates": [ { - "version": "1.26.3.14", + "version": "1.26.3.15", "browser_specific_settings": { "gecko": { "strict_min_version": "55" } }, - "update_info_url": "https://github.com/gorhill/uBlock/releases/tag/1.26.3b14", - "update_link": "https://github.com/gorhill/uBlock/releases/download/1.26.3b14/uBlock0_1.26.3b14.firefox.signed.xpi" + "update_info_url": "https://github.com/gorhill/uBlock/releases/tag/1.26.3b15", + "update_link": "https://github.com/gorhill/uBlock/releases/download/1.26.3b15/uBlock0_1.26.3b15.firefox.signed.xpi" } ] } From 1a0cded43f6b229c2db57725ae803a354b451d67 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Thu, 30 Apr 2020 09:32:32 -0400 Subject: [PATCH 20/76] Make popup panel more/less buttons easier to click --- src/css/popup-fenix.css | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/css/popup-fenix.css b/src/css/popup-fenix.css index fe490ace92d..07450fb3d20 100644 --- a/src/css/popup-fenix.css +++ b/src/css/popup-fenix.css @@ -173,8 +173,12 @@ body.mobile.no-tooltips .toolRibbon .tool { visibility: visible; } +.moreOrLess { + margin: 0; + } .moreOrLess > span { cursor: pointer; + padding: var(--popup-default-gap); } #moreButton .fa-icon { transform: rotate(180deg); @@ -534,7 +538,6 @@ body:not([data-more~="d"]) [data-more="d"] { direction: rtl; flex-grow: 1; line-height: 1.4; - max-height: 540px; max-height: max(100vh, 600px); min-width: 360px; overflow-y: auto; From eeae4b2cabdca00ae100b08331ea7e3730a4b645 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Thu, 30 Apr 2020 10:31:23 -0400 Subject: [PATCH 21/76] Add ability to open the dashboard with a keyboard shortcut Related feedback: - https://github.com/gorhill/uBlock/commit/9a6feb34d546#commitcomment-38852663 --- platform/chromium/manifest.json | 3 +++ platform/firefox/manifest.json | 3 +++ platform/opera/manifest.json | 3 +++ src/js/commands.js | 10 +++++++++- 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/platform/chromium/manifest.json b/platform/chromium/manifest.json index 0b624c1d349..0f620cf9ef5 100644 --- a/platform/chromium/manifest.json +++ b/platform/chromium/manifest.json @@ -21,6 +21,9 @@ "launch-logger": { "description": "__MSG_popupTipLog__" }, + "open-dashboard": { + "description": "__MSG_popupTipDashboard__" + }, "relax-blocking-mode": { "description": "__MSG_relaxBlockingMode__" } diff --git a/platform/firefox/manifest.json b/platform/firefox/manifest.json index 0ebc4a5efaf..517c67c3ac2 100644 --- a/platform/firefox/manifest.json +++ b/platform/firefox/manifest.json @@ -30,6 +30,9 @@ "launch-logger": { "description": "__MSG_popupTipLog__" }, + "open-dashboard": { + "description": "__MSG_popupTipDashboard__" + }, "relax-blocking-mode": { "description": "__MSG_relaxBlockingMode__" } diff --git a/platform/opera/manifest.json b/platform/opera/manifest.json index 649acd81031..e512bbe1131 100644 --- a/platform/opera/manifest.json +++ b/platform/opera/manifest.json @@ -21,6 +21,9 @@ "launch-logger": { "description": "__MSG_popupTipLog__" }, + "open-dashboard": { + "description": "__MSG_popupTipDashboard__" + }, "relax-blocking-mode": { "description": "__MSG_relaxBlockingMode__" } diff --git a/src/js/commands.js b/src/js/commands.js index 8994e84c8e4..f99c0bf8cb6 100644 --- a/src/js/commands.js +++ b/src/js/commands.js @@ -179,7 +179,15 @@ vAPI.commands.onCommand.addListener(async command => { µb.openNewTab({ url: `logger-ui.html${hash}`, select: true, - index: -1 + index: -1, + }); + break; + } + case 'open-dashboard': { + µb.openNewTab({ + url: 'dashboard.html', + select: true, + index: -1, }); break; } From 2a5dfc20e153f7a23bafe63fe6944cc82f82ff67 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Fri, 1 May 2020 07:30:22 -0400 Subject: [PATCH 22/76] Fine tune CSS of new popup panel --- src/css/popup-fenix.css | 96 ++++++++++++++------------------------ src/css/themes/default.css | 7 +++ 2 files changed, 42 insertions(+), 61 deletions(-) diff --git a/src/css/popup-fenix.css b/src/css/popup-fenix.css index 07450fb3d20..8aebcf66d08 100644 --- a/src/css/popup-fenix.css +++ b/src/css/popup-fenix.css @@ -10,8 +10,11 @@ /* Internal CSS values */ :root body, :root.mobile body { - --popup-default-gap: 1em; - font-size: 14px; + --font-size: 14px; + --popup-gap: var(--font-size); + --popup-gap-thin: calc(0.5 * var(--popup-gap)); + --popup-gap-extra-thin: calc(0.25 * var(--font-size)); + font-size: var(--font-size); line-height: 20px; transition-duration: 0.2s; transition-property: opacity; @@ -56,24 +59,25 @@ hr { align-items: stretch; display: flex; justify-content: space-between; - margin: 0.5em 0.5em var(--popup-default-gap) 0.5em; + margin: var(--popup-gap-thin) + var(--popup-gap-thin) + var(--popup-gap) + var(--popup-gap-thin); } #switch { - display: flex; - flex-grow: 3; - justify-content: center; - } -#switch .fa-icon { color: var(--popup-power-ink); - fill: var(--popup-power-ink); cursor: pointer; + display: flex; + fill: var(--popup-power-ink); + flex-grow: 3; font-size: 700%; + justify-content: center; margin: 0; padding: 0; } -body.off #switch .fa-icon { - color: var(--fg-0-20); - fill: var(--fg-0-20); +body.off #switch { + color: var(--popup-power-disabled-ink); + fill: var(--popup-power-disabled-ink); } .rulesetTools { background-color: transparent; @@ -104,7 +108,7 @@ body.needSave #revertRules { visibility: visible; } #hostname { - margin: var(--popup-default-gap) 0.2em; + margin: var(--popup-gap) var(--popup-gap-extra-thin); text-align: center; } #hostname > span + span { @@ -113,9 +117,9 @@ body.needSave #revertRules { .itemRibbon { display: grid; - gap: var(--popup-default-gap); + gap: var(--popup-gap); grid-template: auto / auto auto; - margin: var(--popup-default-gap); + margin: var(--popup-gap); } .itemRibbon > [data-i18n] + span { justify-self: end; @@ -130,7 +134,7 @@ body.needSave #revertRules { grid-auto-flow: column; grid-template: auto / repeat(4, 1fr); justify-items: center; - margin: var(--popup-default-gap) 0; + margin: 0; white-space: normal; } .toolRibbon .tool { @@ -139,7 +143,8 @@ body.needSave #revertRules { flex-direction: column; font-size: 1.4em; min-width: 32px; - padding: 0 0.5em; + padding: var(--popup-gap) + var(--popup-gap-thin); unicode-bidi: embed; visibility: hidden; } @@ -148,7 +153,7 @@ body.needSave #revertRules { } .toolRibbon .tool .caption { font: 10px/12px sans-serif; - margin-top: 0.5em; + margin-top: 6px; text-align: center; } body.mobile.no-tooltips .toolRibbon .tool { @@ -178,7 +183,7 @@ body.mobile.no-tooltips .toolRibbon .tool { } .moreOrLess > span { cursor: pointer; - padding: var(--popup-default-gap); + padding: var(--popup-gap); } #moreButton .fa-icon { transform: rotate(180deg); @@ -195,39 +200,6 @@ body[data-more=""] #lessButton { visibility: hidden; } -#tooltip { - background-color: var(--bg-tooltip); - border: 1px solid gray; - border-radius: 3px; - box-shadow: 1px 1px 3px gray; - box-sizing: border-box; - color: var(--fg-tooltip); - cursor: pointer; - direction: ltr; - font: 12px sans-serif; - left: 5%; - line-height: 130%; - margin: 0.5em 0; - opacity: 0; - padding: 4px 6px; - pointer-events: none; - position: absolute; - text-align: center; - visibility: hidden; - white-space: pre-line; - width: 90%; - z-index: 100; - } -body[dir="rtl"] #tooltip { - direction: rtl; - } -#tooltip.show { - transition: opacity 0.15s 0.5s; - -webkit-transition: opacity 0.15s 0.5s; - visibility: visible; - opacity: 1; - } - #firewall { border: 0; flex-shrink: 0; @@ -489,6 +461,12 @@ body.advancedUser #firewall > div > span.noopRule.ownRule, :root.desktop body[data-ui~="+captions"] .toolRibbon .caption { display: inherit; } +:root.desktop .toolRibbon .tool, +:root.mobile body.no-tooltips .toolRibbon .tool, +:root.mobile body[data-ui~="-captions"] .toolRibbon .tool { + padding: calc(var(--popup-gap) + var(--popup-gap-thin)) + var(--popup-gap-thin); + } :root.mobile #no-popups, :root body[data-ui~="-no-popups"] #no-popups { display: none; @@ -516,7 +494,7 @@ body:not([data-more~="d"]) [data-more="d"] { overflow: hidden; } :root.desktop body { - --popup-default-gap: 0.8em; + --popup-gap: 12px; max-width: max(100vw, 800px); } :root.desktop #panes { @@ -527,9 +505,8 @@ body:not([data-more~="d"]) [data-more="d"] { max-width: 300px; width: max-content; } -:root.desktop #switch .fa-icon:hover { - color: var(--popup-power-ink-hover); - fill: var(--popup-power-ink-hover); +:root.desktop #switch:hover { + background-color: var(--default-surface-hover); } :root.desktop .rulesetTools [id]:hover { fill: var(--default-ink); @@ -543,12 +520,9 @@ body:not([data-more~="d"]) [data-more="d"] { overflow-y: auto; width: min-content; } -:root.desktop .tool { - padding: 0.5em; - } :root.desktop .tool:hover { - background-color: var(--button-surface); + background-color: var(--default-surface-hover); } :root.desktop .moreOrLess > span:hover { - background-color: var(--button-surface); + background-color: var(--default-surface-hover); } diff --git a/src/css/themes/default.css b/src/css/themes/default.css index 44caba02520..ac39af3fa88 100644 --- a/src/css/themes/default.css +++ b/src/css/themes/default.css @@ -21,8 +21,13 @@ --ink-80-a50: #20123a88; --ink-90: #1d1133; --light-gray-10: #f9f9fb; + --light-gray-20: #f0f0f4; --light-gray-30: #e0e0e6; + --light-gray-30-a75: #e0e0e6bf; --light-gray-40: #cfcfd8; + --light-gray-50: #bfbfc9; + --light-gray-60: #afafba; + --light-gray-70: #9f9fad; --light-gray-90: #80808f; --red-70-a80: #c50042cc; --violet-70: #592acb; @@ -56,6 +61,7 @@ --default-ink-a4: var(--ink-80-a4); --default-ink-a50: var(--ink-80-a50); --default-surface: var(--light-gray-10); + --default-surface-hover: var(--light-gray-30-a75); --bg-1: hsla(240, 20%, 98%, 1); --bg-1-border: hsla(240, 20%, 90%, 1); @@ -124,6 +130,7 @@ /* popup panel */ --popup-power-ink: var(--blue-50); + --popup-power-disabled-ink: var(--light-gray-70); --popup-power-ink-hover: var(--blue-60); --bg-popup-cell-1: hsla(261, 0%, 93%, 1); --bg-popup-cell-2: rgb(224, 224, 230); From 435c888c675ba8b670172655168fffb4f2f1d7f8 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Fri, 1 May 2020 07:43:11 -0400 Subject: [PATCH 23/76] Add gap between power and ruleset buttons --- src/css/popup-fenix.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/css/popup-fenix.css b/src/css/popup-fenix.css index 8aebcf66d08..47a7c24d1c6 100644 --- a/src/css/popup-fenix.css +++ b/src/css/popup-fenix.css @@ -72,7 +72,7 @@ hr { flex-grow: 3; font-size: 700%; justify-content: center; - margin: 0; + margin: 0 var(--popup-gap-thin); padding: 0; } body.off #switch { From fd08531b271f97e9a46e7e9080ed391c2d71b2ff Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Fri, 1 May 2020 07:45:46 -0400 Subject: [PATCH 24/76] Import translation work from https://crowdin.com/project/ublock --- src/_locales/ka/messages.json | 4 +- src/_locales/ms/messages.json | 116 +++++++++++++++++----------------- src/_locales/sl/messages.json | 4 +- src/_locales/th/messages.json | 2 +- src/_locales/uk/messages.json | 8 +-- 5 files changed, 67 insertions(+), 67 deletions(-) diff --git a/src/_locales/ka/messages.json b/src/_locales/ka/messages.json index c5bc5b56c40..6335409e0ef 100644 --- a/src/_locales/ka/messages.json +++ b/src/_locales/ka/messages.json @@ -204,7 +204,7 @@ "description": "Label to be used to show popup panel sections" }, "popupLessButton_v2": { - "message": "Less", + "message": "მოკლედ", "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { @@ -264,7 +264,7 @@ "description": "appears in popup" }, "popupVersion": { - "message": "Version", + "message": "ვერსია", "description": "Example of use: Version 1.26.4" }, "pickerCreate": { diff --git a/src/_locales/ms/messages.json b/src/_locales/ms/messages.json index a26bf79d8ae..0c0a8bcade2 100644 --- a/src/_locales/ms/messages.json +++ b/src/_locales/ms/messages.json @@ -12,15 +12,15 @@ "description": "English: uBlock₀ — Dashboard" }, "dashboardUnsavedWarning": { - "message": "Warning! You have unsaved changes", + "message": "Amaran! Anda mempunya perubahan yang tidak disimpan", "description": "A warning in the dashboard when navigating away from unsaved changes" }, "dashboardUnsavedWarningStay": { - "message": "Stay", + "message": "Kekal", "description": "Label for button to prevent navigating away from unsaved changes" }, "dashboardUnsavedWarningIgnore": { - "message": "Ignore", + "message": "Abaikan", "description": "Label for button to ignore unsaved changes" }, "settingsPageName": { @@ -44,7 +44,7 @@ "description": "appears as tab name in dashboard" }, "shortcutsPageName": { - "message": "Shortcuts", + "message": "Pintasan", "description": "appears as tab name in dashboard" }, "statsPageName": { @@ -56,7 +56,7 @@ "description": "appears as tab name in dashboard" }, "assetViewerPageName": { - "message": "uBlock₀ — Asset viewer", + "message": "uBlock₀ — Pertonton aset", "description": "Title for the asset viewer page" }, "advancedSettingsPageName": { @@ -96,15 +96,15 @@ "description": "English: or" }, "popupBlockedOnThisPage_v2": { - "message": "Blocked on this page", + "message": "Disekat di halaman ini", "description": "For the new mobile-friendly popup design" }, "popupBlockedSinceInstall_v2": { - "message": "Blocked since install", + "message": "Disekat sejak dipasang", "description": "For the new mobile-friendly popup design" }, "popupDomainsConnected_v2": { - "message": "Domains connected", + "message": "Domain telah dihubungkan", "description": "For the new mobile-friendly popup design" }, "popupTipDashboard": { @@ -164,35 +164,35 @@ "description": "Tooltip for the no-remote-fonts per-site switch" }, "popupTipNoRemoteFonts1": { - "message": "Click to block remote fonts on this site", + "message": "Klik untuk menyekat semua popup di laman ini", "description": "Tooltip for the no-remote-fonts per-site switch" }, "popupTipNoRemoteFonts2": { - "message": "Click to no longer block remote fonts on this site", + "message": "Klik untuk berhenti menyekat semua popup di laman ini", "description": "Tooltip for the no-remote-fonts per-site switch" }, "popupTipNoScripting1": { - "message": "Click to disable JavaScript on this site", + "message": "Klik untuk hilangkan keupayaan JavaScript di halaman ini", "description": "Tooltip for the no-scripting per-site switch" }, "popupTipNoScripting2": { - "message": "Click to no longer disable JavaScript on this site", + "message": "Klik untuk berhenti hilangkan keupayaan JavaScript di halaman ini", "description": "Tooltip for the no-scripting per-site switch" }, "popupNoPopups_v2": { - "message": "Pop-up windows", + "message": "Tetingkap popup", "description": "Caption for the no-popups per-site switch" }, "popupNoLargeMedia_v2": { - "message": "Large media elements", + "message": "Unsur-unsur media besar", "description": "Caption for the no-large-media per-site switch" }, "popupNoCosmeticFiltering_v2": { - "message": "Cosmetic filtering", + "message": "Tapisan kosmetik", "description": "Caption for the no-cosmetic-filtering per-site switch" }, "popupNoRemoteFonts_v2": { - "message": "Remote fonts", + "message": "Fon terpencil", "description": "Caption for the no-remote-fonts per-site switch" }, "popupNoScripting_v2": { @@ -200,11 +200,11 @@ "description": "Caption for the no-scripting per-site switch" }, "popupMoreButton_v2": { - "message": "More", + "message": "Lagi", "description": "Label to be used to show popup panel sections" }, "popupLessButton_v2": { - "message": "Less", + "message": "Kurangkan", "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { @@ -240,23 +240,23 @@ "description": "" }, "popupInlineScriptRulePrompt": { - "message": "inline scripts", + "message": "Skrip dalam ayat", "description": "" }, "popup1pScriptRulePrompt": { - "message": "1st-party scripts", + "message": "Skrip parti pertama", "description": "" }, "popup3pScriptRulePrompt": { - "message": "3rd-party scripts", + "message": "Skrip parti ke-3", "description": "" }, "popup3pFrameRulePrompt": { - "message": "3rd-party frames", + "message": "Kerangka parti ke-3", "description": "" }, "popupHitDomainCountPrompt": { - "message": "domains connected", + "message": "Domain telah dihubungkan", "description": "appears in popup" }, "popupHitDomainCount": { @@ -264,7 +264,7 @@ "description": "appears in popup" }, "popupVersion": { - "message": "Version", + "message": "Versi", "description": "Example of use: Version 1.26.4" }, "pickerCreate": { @@ -300,11 +300,11 @@ "description": "An entry in the browser's contextual menu" }, "settingsCollapseBlockedPrompt": { - "message": "Hide placeholders of blocked elements", + "message": "Sembunyikan simbol unsur-unsur yang disekat", "description": "English: Hide placeholders of blocked elements" }, "settingsIconBadgePrompt": { - "message": "Show the number of blocked requests on the icon", + "message": "Tunjukkan nombor permintaan yang disekat di atas ikon", "description": "English: Show the number of blocked requests on the icon" }, "settingsTooltipsPrompt": { @@ -312,83 +312,83 @@ "description": "A checkbox in the Settings pane" }, "settingsContextMenuPrompt": { - "message": "Make use of context menu where appropriate", + "message": "Gunakan menu konteks yang sesuai", "description": "English: Make use of context menu where appropriate" }, "settingsColorBlindPrompt": { - "message": "Color-blind friendly", + "message": "Mesra buta warna", "description": "English: Color-blind friendly" }, "settingsCloudStorageEnabledPrompt": { - "message": "Enable cloud storage support", + "message": "Membolehkan sokongan storan awangan", "description": "" }, "settingsAdvancedUserPrompt": { - "message": "I am an advanced user (required reading)", + "message": "Saya adalah pengguna mahir (memerlukan pembacaan)", "description": "" }, "settingsAdvancedUserSettings": { - "message": "advanced settings", + "message": "Tetapan lanjutan", "description": "For the tooltip of a link which gives access to advanced settings" }, "settingsPrefetchingDisabledPrompt": { - "message": "Disable pre-fetching (to prevent any connection for blocked network requests)", + "message": "Nyahaktifkan pra-ambilan (untuk mengelakkan apa-apa sambungan untuk permintaan rangkaian yang disekat)", "description": "English: " }, "settingsHyperlinkAuditingDisabledPrompt": { - "message": "Disable hyperlink auditing", + "message": "Nyahaktifkan pengauditan hiperpautan", "description": "English: " }, "settingsWebRTCIPAddressHiddenPrompt": { - "message": "Prevent WebRTC from leaking local IP addresses", + "message": "Mencegah WebRTC dari membocorkan alamat IP tempatan", "description": "English: " }, "settingPerSiteSwitchGroup": { - "message": "Default behavior", + "message": "Kelakuan lalai", "description": "" }, "settingPerSiteSwitchGroupSynopsis": { - "message": "These default behaviors can be overridden on a per-site basis", + "message": "Tingkah laku lalai ini boleh diatasi secara per-halaman", "description": "" }, "settingsNoCosmeticFilteringPrompt": { - "message": "Disable cosmetic filtering", + "message": "Nyahaktifkan tapisan kosmetik", "description": "" }, "settingsNoLargeMediaPrompt": { - "message": "Block media elements larger than {{input}} KB", + "message": "Sekat unsur-unsur media yang lebih besar dari {{input}} KB", "description": "" }, "settingsNoRemoteFontsPrompt": { - "message": "Block remote fonts", + "message": "Sekat fon terpencil", "description": "" }, "settingsNoScriptingPrompt": { - "message": "Disable JavaScript", + "message": "Sekat JavaScript", "description": "The default state for the per-site no-scripting switch" }, "settingsNoCSPReportsPrompt": { - "message": "Block CSP reports", + "message": "Sekat laporan CSP", "description": "background information: https://github.com/gorhill/uBlock/issues/3150" }, "settingsLastRestorePrompt": { - "message": "Last restore:", + "message": "Pemulihan lalu:", "description": "English: Last restore:" }, "settingsLastBackupPrompt": { - "message": "Last backup:", + "message": "Sandaran lalu:", "description": "English: Last backup:" }, "3pListsOfBlockedHostsPrompt": { - "message": "{{netFilterCount}} network filters + {{cosmeticFilterCount}} cosmetic filters from:", + "message": "{{netFilterCount}} penapis rangkaian + {{cosmeticFilterCount}} penapis kosmetik dari:", "description": "Appears at the top of the _3rd-party filters_ pane" }, "3pListsOfBlockedHostsPerListStats": { - "message": "{{used}} used out of {{total}}", + "message": "terguna dari", "description": "Appears aside each filter list in the _3rd-party filters_ pane" }, "3pAutoUpdatePrompt1": { - "message": "Auto-update filter lists", + "message": "Kemas kini auto senarai tapisan", "description": "A checkbox in the _3rd-party filters_ pane" }, "3pUpdateNow": { @@ -396,15 +396,15 @@ "description": "A button in the in the _3rd-party filters_ pane" }, "3pPurgeAll": { - "message": "Purge all caches", + "message": "Bersihkan semua cache", "description": "A button in the in the _3rd-party filters_ pane" }, "3pParseAllABPHideFiltersPrompt1": { - "message": "Parse and enforce cosmetic filters", + "message": "Hurai dan kuatkuasakan tapisan kosmetik", "description": "English: Parse and enforce Adblock+ element hiding filters." }, "3pParseAllABPHideFiltersInfo": { - "message": "Cosmetic filters serve to hide elements in a web page which are deemed to be a visual nuisance, and which can't be blocked by the network request-based filtering engines.", + "message": "Penapis kosmetik berkhidmat untuk menyembunyikan unsur-unsur dalam laman web yang disifatkan sebagai suatu gangguan visual, dan yang tidak mampu disekat oleh enjin tapisan berasaskan permintaan rangkaian.", "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." }, "3pIgnoreGenericCosmeticFilters": { @@ -664,27 +664,27 @@ "description": "A keyword in the built-in row filtering expression" }, "loggerEntryDetailsHeader": { - "message": "Details", + "message": "Butiran", "description": "Small header to identify the 'Details' pane for a specific logger entry" }, "loggerEntryDetailsFilter": { - "message": "Filter", + "message": "Penapis", "description": "Label to identify a filter field" }, "loggerEntryDetailsFilterList": { - "message": "Filter list", + "message": "Senarai tapisan", "description": "Label to identify a filter list field" }, "loggerEntryDetailsRule": { - "message": "Rule", + "message": "Peraturan", "description": "Label to identify a rule field" }, "loggerEntryDetailsContext": { - "message": "Context", + "message": "Konteks", "description": "Label to identify a context field (typically a hostname)" }, "loggerEntryDetailsRootContext": { - "message": "Root context", + "message": "Konteks akar", "description": "Label to identify a root context field (typically a hostname)" }, "loggerEntryDetailsPartyness": { @@ -692,7 +692,7 @@ "description": "Label to identify a field providing partyness information" }, "loggerEntryDetailsType": { - "message": "Type", + "message": "Jenis", "description": "Label to identify the type of an entry" }, "loggerEntryDetailsURL": { @@ -700,11 +700,11 @@ "description": "Label to identify the URL of an entry" }, "loggerURLFilteringHeader": { - "message": "URL rule", + "message": "Aturan URL", "description": "Small header to identify the dynamic URL filtering section" }, "loggerURLFilteringContextLabel": { - "message": "Context:", + "message": "Konteks:", "description": "Label for the context selector" }, "loggerURLFilteringTypeLabel": { diff --git a/src/_locales/sl/messages.json b/src/_locales/sl/messages.json index ef2b06d2282..f4466d00407 100644 --- a/src/_locales/sl/messages.json +++ b/src/_locales/sl/messages.json @@ -204,7 +204,7 @@ "description": "Label to be used to show popup panel sections" }, "popupLessButton_v2": { - "message": "Less", + "message": "Manj", "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { @@ -264,7 +264,7 @@ "description": "appears in popup" }, "popupVersion": { - "message": "Version", + "message": "Različica", "description": "Example of use: Version 1.26.4" }, "pickerCreate": { diff --git a/src/_locales/th/messages.json b/src/_locales/th/messages.json index 61f6c1340ca..8a62b738e24 100644 --- a/src/_locales/th/messages.json +++ b/src/_locales/th/messages.json @@ -264,7 +264,7 @@ "description": "appears in popup" }, "popupVersion": { - "message": "Version", + "message": "เวอร์ชัน", "description": "Example of use: Version 1.26.4" }, "pickerCreate": { diff --git a/src/_locales/uk/messages.json b/src/_locales/uk/messages.json index af89fdcb591..a24aba9c70b 100644 --- a/src/_locales/uk/messages.json +++ b/src/_locales/uk/messages.json @@ -180,7 +180,7 @@ "description": "Tooltip for the no-scripting per-site switch" }, "popupNoPopups_v2": { - "message": "Pop-up windows", + "message": "Спливаючі вікна", "description": "Caption for the no-popups per-site switch" }, "popupNoLargeMedia_v2": { @@ -840,15 +840,15 @@ "description": "English: Contributors" }, "aboutSourceCode": { - "message": "Source code", + "message": "Джерельний код", "description": "Link text to source code repo" }, "aboutTranslations": { - "message": "Translations", + "message": "Переклади", "description": "Link text to translations repo" }, "aboutFilterLists": { - "message": "Filter lists", + "message": "Списки фільтрів", "description": "Link text to uBO's own filter lists repo" }, "aboutDependencies": { From 49dea5028679e4cf8060fc73bb96030a3dd1d373 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Fri, 1 May 2020 07:46:36 -0400 Subject: [PATCH 25/76] new revision for dev build --- dist/version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/version b/dist/version index 004e2196803..bb3dca81570 100644 --- a/dist/version +++ b/dist/version @@ -1 +1 @@ -1.26.3.15 +1.26.3.16 From 206d217e147d5d53a5fa1394f4330e28f998286c Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Fri, 1 May 2020 07:51:45 -0400 Subject: [PATCH 26/76] Fix persist/revert tools not being shown after changes Related feedback: - https://github.com/uBlockOrigin/uBlock-issues/issues/733#issuecomment-621933750 --- src/js/popup-fenix.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/js/popup-fenix.js b/src/js/popup-fenix.js index 55774be0c97..b508ddd791e 100644 --- a/src/js/popup-fenix.js +++ b/src/js/popup-fenix.js @@ -428,6 +428,7 @@ const renderPopup = function() { const body = document.body; body.classList.toggle('advancedUser', popupData.advancedUserEnabled === true); body.classList.toggle('off', popupData.pageURL === '' || isFiltering !== true); + body.classList.toggle('needSave', popupData.matrixIsDirty === true); // The hostname information below the power switch { From 040253d5862c2ffd201a836cf3ad80955beef362 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Fri, 1 May 2020 08:06:04 -0400 Subject: [PATCH 27/76] Make Firefox dev build auto-update --- dist/firefox/updates.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dist/firefox/updates.json b/dist/firefox/updates.json index 0426002da9f..f7fac8af7ec 100644 --- a/dist/firefox/updates.json +++ b/dist/firefox/updates.json @@ -3,10 +3,10 @@ "uBlock0@raymondhill.net": { "updates": [ { - "version": "1.26.3.15", + "version": "1.26.3.16", "browser_specific_settings": { "gecko": { "strict_min_version": "55" } }, - "update_info_url": "https://github.com/gorhill/uBlock/releases/tag/1.26.3b15", - "update_link": "https://github.com/gorhill/uBlock/releases/download/1.26.3b15/uBlock0_1.26.3b15.firefox.signed.xpi" + "update_info_url": "https://github.com/gorhill/uBlock/releases/tag/1.26.3b16", + "update_link": "https://github.com/gorhill/uBlock/releases/download/1.26.3b16/uBlock0_1.26.3b16.firefox.signed.xpi" } ] } From 38cdb423480cc69e441f2210dfb038d846e68ede Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Fri, 1 May 2020 19:47:01 -0400 Subject: [PATCH 28/76] Allow hiding blocked count since install in popup panel Also, more fine tuning of visuals. Two new advanced settings, to be left undocumented as "purposefully undocumented setting". --- src/css/popup-fenix.css | 24 +++++++++++++++++------- src/css/themes/default.css | 6 +++--- src/img/fontawesome/fontawesome-defs.svg | 2 +- src/js/background.js | 5 +++-- src/js/messaging.js | 3 ++- src/js/popup-fenix.js | 20 ++++++++++++-------- src/js/popup.js | 10 +++++----- src/js/start.js | 19 ++++++++++++++----- src/popup-fenix.html | 18 +++++++++--------- 9 files changed, 66 insertions(+), 41 deletions(-) diff --git a/src/css/popup-fenix.css b/src/css/popup-fenix.css index 47a7c24d1c6..53ab2fcf510 100644 --- a/src/css/popup-fenix.css +++ b/src/css/popup-fenix.css @@ -74,10 +74,11 @@ hr { justify-content: center; margin: 0 var(--popup-gap-thin); padding: 0; + stroke: none; } body.off #switch { - color: var(--popup-power-disabled-ink); - fill: var(--popup-power-disabled-ink); + fill: var(--default-surface); + stroke: var(--checkbox-ink); } .rulesetTools { background-color: transparent; @@ -116,10 +117,16 @@ body.needSave #revertRules { } .itemRibbon { + column-gap: var(--popup-gap); display: grid; - gap: var(--popup-gap); grid-template: auto / auto auto; - margin: var(--popup-gap); + margin: var(--popup-gap) var(--popup-gap) 0 var(--popup-gap); + } +.itemRibbon > span { + margin-bottom: var(--popup-gap); + } +.itemRibbon > [data-i18n] { + min-width: 10em; } .itemRibbon > [data-i18n] + span { justify-self: end; @@ -183,7 +190,9 @@ body.mobile.no-tooltips .toolRibbon .tool { } .moreOrLess > span { cursor: pointer; + margin: 0; padding: var(--popup-gap); + user-select: none; } #moreButton .fa-icon { transform: rotate(180deg); @@ -191,7 +200,7 @@ body.mobile.no-tooltips .toolRibbon .tool { #lessButton { text-align: right; } -body[data-more="a b c d e"] #moreButton { +body[data-more="a b c d e f"] #moreButton { pointer-events: none; visibility: hidden; } @@ -478,14 +487,15 @@ body.advancedUser #firewall > div > span.noopRule.ownRule, body:not([data-more~="a"]) [data-more="a"], body:not([data-more~="b"]) [data-more="b"], body:not([data-more~="c"]) [data-more="c"], -body:not([data-more~="e"]) [data-more="e"] { +body:not([data-more~="d"]) [data-more="d"], +body:not([data-more~="f"]) [data-more="f"] { height: 0; margin-bottom: 0; margin-top: 0; overflow-y: hidden; visibility: hidden; } -body:not([data-more~="d"]) [data-more="d"] { +body:not([data-more~="e"]) [data-more="e"] { display: none; } diff --git a/src/css/themes/default.css b/src/css/themes/default.css index ac39af3fa88..31921a31561 100644 --- a/src/css/themes/default.css +++ b/src/css/themes/default.css @@ -23,7 +23,7 @@ --light-gray-10: #f9f9fb; --light-gray-20: #f0f0f4; --light-gray-30: #e0e0e6; - --light-gray-30-a75: #e0e0e6bf; + --light-gray-30-a50: #e0e0e680; --light-gray-40: #cfcfd8; --light-gray-50: #bfbfc9; --light-gray-60: #afafba; @@ -61,7 +61,7 @@ --default-ink-a4: var(--ink-80-a4); --default-ink-a50: var(--ink-80-a50); --default-surface: var(--light-gray-10); - --default-surface-hover: var(--light-gray-30-a75); + --default-surface-hover: var(--light-gray-30-a50); --bg-1: hsla(240, 20%, 98%, 1); --bg-1-border: hsla(240, 20%, 90%, 1); @@ -110,7 +110,7 @@ 0px 1px 6px 0px rgba(14, 13, 26, 0.12); --dashboard-tab-ink: var(--ink-80); --dashboard-tab-active-ink: var(--violet-70); - --dashboard-tab-surface-hover: var(--default-ink-a4); + --dashboard-tab-surface-hover: var(--default-surface-hover); --fg-icon-info-lvl-0-dimmed: #888; --fg-icon-info-lvl-0: inherit; diff --git a/src/img/fontawesome/fontawesome-defs.svg b/src/img/fontawesome/fontawesome-defs.svg index 3c633784b65..7e347c4390f 100644 --- a/src/img/fontawesome/fontawesome-defs.svg +++ b/src/img/fontawesome/fontawesome-defs.svg @@ -57,7 +57,7 @@ License - https://github.com/FortAwesome/Font-Awesome/tree/a8386aae19e200ddb0f68 - + diff --git a/src/js/background.js b/src/js/background.js index 1ab8ff0a066..ba6da17cc9e 100644 --- a/src/js/background.js +++ b/src/js/background.js @@ -66,6 +66,8 @@ const µBlock = (( ) => { // jshint ignore:line loggerPopupType: 'popup', manualUpdateAssetFetchPeriod: 500, popupFontSize: 'unset', + popupPanelDisabledSections: 0, + popupPanelLockedSections: 0, requestJournalProcessPeriod: 1000, selfieAfter: 3, strictBlockingBypassDuration: 120, @@ -92,8 +94,7 @@ const µBlock = (( ) => { // jshint ignore:line ignoreGenericCosmeticFilters: vAPI.webextFlavor.soup.has('mobile'), largeMediaSize: 50, parseAllABPHideFilters: true, - popupPanelSections: 0b111, - popupPanelDisabledSections: 0, + popupPanelSections: 0b1111, prefetchingDisabled: true, requestLogMaxEntries: 1000, showIconBadge: true, diff --git a/src/js/messaging.js b/src/js/messaging.js index cb7e580f119..457c38b2d4f 100644 --- a/src/js/messaging.js +++ b/src/js/messaging.js @@ -284,7 +284,8 @@ const popupDataFromTabId = function(tabId, tabTitle) { pageBlockedRequestCount: 0, popupBlockedCount: 0, popupPanelSections: µbus.popupPanelSections, - popupPanelDisabledSections: µbus.popupPanelDisabledSections, + popupPanelDisabledSections: µb.hiddenSettings.popupPanelDisabledSections, + popupPanelLockedSections: µb.hiddenSettings.popupPanelLockedSections, tabId: tabId, tabTitle: tabTitle, tooltipsDisabled: µbus.tooltipsDisabled diff --git a/src/js/popup-fenix.js b/src/js/popup-fenix.js index b508ddd791e..cd1af906669 100644 --- a/src/js/popup-fenix.js +++ b/src/js/popup-fenix.js @@ -493,7 +493,7 @@ const renderPopup = function() { setGlobalExpand(popupData.firewallPaneMinimized === false, true); // Build dynamic filtering pane only if in use - if ( (popupData.popupPanelSections & ~popupData.popupPanelDisabledSections & 0b1000) !== 0 ) { + if ( (computedSections() & 0b10000) !== 0 ) { buildAllFirewallRows(); } @@ -588,9 +588,7 @@ let renderOnce = function() { uDom.nodeFromId('version').textContent = popupData.appVersion; - sectionBitsToAttribute( - popupData.popupPanelSections & ~popupData.popupPanelDisabledSections - ); + sectionBitsToAttribute(computedSections()); if ( popupData.uiPopupConfig !== undefined ) { document.body.setAttribute('data-ui', popupData.uiPopupConfig); @@ -729,7 +727,12 @@ const gotoURL = function(ev) { // The popup panel is made of sections. Visiblity of sections can // be toggle on/off. -const maxNumberOfSections = 5; +const maxNumberOfSections = 6; + +const computedSections = ( ) => + popupData.popupPanelSections & + ~popupData.popupPanelDisabledSections | + popupData.popupPanelLockedSections; const sectionBitsFromAttribute = function() { const attr = document.body.dataset.more; @@ -752,17 +755,18 @@ const sectionBitsToAttribute = function(bits) { }; const toggleSections = function(more) { - const mask = ~popupData.popupPanelDisabledSections; + const offbits = ~popupData.popupPanelDisabledSections; + const onbits = popupData.popupPanelLockedSections; let currentBits = sectionBitsFromAttribute(); let newBits = currentBits; for ( let i = 0; i < maxNumberOfSections; i++ ) { const bit = 1 << (more ? i : maxNumberOfSections - i - 1); - if ( (mask & bit) === 0 ) { continue; } if ( more ) { newBits |= bit; } else { newBits &= ~bit; } + newBits = newBits & offbits | onbits; if ( newBits !== currentBits ) { break; } } if ( newBits === currentBits ) { return; } @@ -783,7 +787,7 @@ const toggleSections = function(more) { vAPI.localStorage.setItem('popupPanelSections', newBits); // Dynamic filtering pane may not have been built yet - if ( (newBits & 0b1000) !== 0 && dfPaneBuilt === false ) { + if ( (newBits & 0b10000) !== 0 && dfPaneBuilt === false ) { buildAllFirewallRows(); } }; diff --git a/src/js/popup.js b/src/js/popup.js index 3be9676c0d0..5442dbb24e8 100644 --- a/src/js/popup.js +++ b/src/js/popup.js @@ -506,7 +506,7 @@ const renderPopup = function() { // https://github.com/chrisaljoudi/uBlock/issues/470 // This must be done here, to be sure the popup is resized properly - const dfPaneVisible = (popupData.popupPanelSections & 0b1000) !== 0; + const dfPaneVisible = (popupData.popupPanelSections & 0b10000) !== 0; // https://github.com/chrisaljoudi/uBlock/issues/1068 // Remember the last state of the firewall pane. This allows to @@ -792,19 +792,19 @@ const gotoURL = function(ev) { /******************************************************************************/ const toggleFirewallPane = function() { - popupData.popupPanelSections = popupData.popupPanelSections ^ 0b1000; + popupData.popupPanelSections = popupData.popupPanelSections ^ 0b10000; messaging.send('popupPanel', { what: 'userSettings', name: 'popupPanelSections', - value: popupData.popupPanelSections | 0b0111, + value: popupData.popupPanelSections | 0b01111, }); // https://github.com/chrisaljoudi/uBlock/issues/996 // Remember the last state of the firewall pane. This allows to // configure the popup size early next time it is opened, which means a // less glitchy popup at open time. - dfPaneVisibleStored = (popupData.popupPanelSections & 0b1000) !== 0; + dfPaneVisibleStored = (popupData.popupPanelSections & 0b10000) !== 0; vAPI.localStorage.setItem('popupFirewallPane', dfPaneVisibleStored); // Dynamic filtering pane may not have been built yet @@ -1073,7 +1073,7 @@ const toggleHostnameSwitch = async function(ev) { hostname: popupData.pageHostname, state: target.classList.contains('on'), tabId: popupData.tabId, - persist: (popupData.popupPanelSections & 0b1000) === 0 || ev.ctrlKey || ev.metaKey, + persist: (popupData.popupPanelSections & 0b10000) === 0 || ev.ctrlKey || ev.metaKey, }); cachePopupData(response); diff --git a/src/js/start.js b/src/js/start.js index 7e2b3f74a29..5d767f0f875 100644 --- a/src/js/start.js +++ b/src/js/start.js @@ -116,11 +116,20 @@ const onVersionReady = function(lastVersion) { // Configure new popup panel according to classic popup panel // configuration. - if ( lastVersionInt !== 0 && lastVersionInt <= 1026003014 ) { - µb.userSettings.popupPanelSections = - µb.userSettings.dynamicFilteringEnabled === true ? 0b1111 : 0b0111; - µb.userSettings.dynamicFilteringEnabled = undefined; - µb.saveUserSettings(); + if ( lastVersionInt !== 0 ) { + if ( lastVersionInt <= 1026003014 ) { + µb.userSettings.popupPanelSections = + µb.userSettings.dynamicFilteringEnabled === true ? 0b11111 : 0b01111; + µb.userSettings.dynamicFilteringEnabled = undefined; + µb.saveUserSettings(); + } else if ( + lastVersionInt <= 1026003016 && + (µb.userSettings.popupPanelSections & 1) !== 0 + ) { + µb.userSettings.popupPanelSections = + (µb.userSettings.popupPanelSections << 1 | 1) & 0b111111; + µb.saveUserSettings(); + } } vAPI.storage.set({ version: vAPI.app.version }); diff --git a/src/popup-fenix.html b/src/popup-fenix.html index 6fd77438b07..845d33339d3 100644 --- a/src/popup-fenix.html +++ b/src/popup-fenix.html @@ -11,7 +11,7 @@ - +
@@ -29,8 +29,8 @@
ephemeralnewyork.­wordpress.com
-
-
+
+
ph-popups film eye-slash @@ -40,18 +40,18 @@
- +
-
-
+
+
bolt eye-dropper list-alt sliders
-
-
+
+

@@ -64,7 +64,7 @@
-
+
From 0270c50b8bbbdd0bbe8b54538f1bf1e3a386fe8e Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Fri, 1 May 2020 19:50:20 -0400 Subject: [PATCH 29/76] New revision for dev build --- dist/version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/version b/dist/version index bb3dca81570..066c097e56c 100644 --- a/dist/version +++ b/dist/version @@ -1 +1 @@ -1.26.3.16 +1.26.3.17 From fb85bb20c883d8ffff3b98a4c43258e15d75ff90 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Fri, 1 May 2020 19:55:46 -0400 Subject: [PATCH 30/76] Make Firefox dev build auto-update --- dist/firefox/updates.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dist/firefox/updates.json b/dist/firefox/updates.json index f7fac8af7ec..850dc23da6a 100644 --- a/dist/firefox/updates.json +++ b/dist/firefox/updates.json @@ -3,10 +3,10 @@ "uBlock0@raymondhill.net": { "updates": [ { - "version": "1.26.3.16", + "version": "1.26.3.17", "browser_specific_settings": { "gecko": { "strict_min_version": "55" } }, - "update_info_url": "https://github.com/gorhill/uBlock/releases/tag/1.26.3b16", - "update_link": "https://github.com/gorhill/uBlock/releases/download/1.26.3b16/uBlock0_1.26.3b16.firefox.signed.xpi" + "update_info_url": "https://github.com/gorhill/uBlock/releases/tag/1.26.3b17", + "update_link": "https://github.com/gorhill/uBlock/releases/download/1.26.3b17/uBlock0_1.26.3b17.firefox.signed.xpi" } ] } From c56607fe270aae0f047823de4e015f16b86a706b Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Sat, 2 May 2020 07:20:17 -0400 Subject: [PATCH 31/76] Use encodeURIComponent() instead of encodeURI() Related issue: - https://github.com/NanoAdblocker/NanoCore/issues/325 --- src/js/3p-filters.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/3p-filters.js b/src/js/3p-filters.js index a4437d5beef..99bbe9b682d 100644 --- a/src/js/3p-filters.js +++ b/src/js/3p-filters.js @@ -95,7 +95,7 @@ const renderFilterLists = function(soft) { elem = li.querySelector('.listname'); elem.textContent = listNameFromListKey(listKey); elem = li.querySelector('a.content'); - elem.setAttribute('href', 'asset-viewer.html?url=' + encodeURI(listKey)); + elem.setAttribute('href', 'asset-viewer.html?url=' + encodeURIComponent(listKey)); elem.setAttribute('type', 'text/html'); li.classList.remove('toRemove'); if ( entry.supportName ) { From 42dedfbd908b7994f30901378bbf96dfa1a8c3f4 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Sat, 2 May 2020 18:27:53 -0400 Subject: [PATCH 32/76] Fine tune power button; fix no-popups switch visual regression --- src/css/popup-fenix.css | 1 + src/css/themes/default.css | 4 ++-- src/img/fontawesome/fontawesome-defs.svg | 4 ++-- src/js/fa-icons.js | 3 ++- src/js/popup-fenix.js | 8 ++++++++ src/popup-fenix.html | 14 +++++++++++++- 6 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/css/popup-fenix.css b/src/css/popup-fenix.css index 53ab2fcf510..70e1b758628 100644 --- a/src/css/popup-fenix.css +++ b/src/css/popup-fenix.css @@ -75,6 +75,7 @@ hr { margin: 0 var(--popup-gap-thin); padding: 0; stroke: none; + stroke-width: 64; } body.off #switch { fill: var(--default-surface); diff --git a/src/css/themes/default.css b/src/css/themes/default.css index 31921a31561..c9524b22a00 100644 --- a/src/css/themes/default.css +++ b/src/css/themes/default.css @@ -29,7 +29,7 @@ --light-gray-60: #afafba; --light-gray-70: #9f9fad; --light-gray-90: #80808f; - --red-70-a80: #c50042cc; + --red-60: #e22850; --violet-70: #592acb; --violet-80: #45278d; --yellow-30: #ffd567; @@ -143,7 +143,7 @@ --bg-popup-cell-block: hsla(0, 50%, 80%, 1); --bg-popup-cell-block-own: hsla(0, 100%, 40%, 1); --bg-popup-cell-label-mixed: hsla(45, 100%, 38%, 1); - --popup-icon-x-ink: var(--red-70-a80); + --popup-icon-x-ink: var(--red-60); } /** diff --git a/src/img/fontawesome/fontawesome-defs.svg b/src/img/fontawesome/fontawesome-defs.svg index 7e347c4390f..9ceadfa008d 100644 --- a/src/img/fontawesome/fontawesome-defs.svg +++ b/src/img/fontawesome/fontawesome-defs.svg @@ -24,7 +24,7 @@ License - https://github.com/FortAwesome/Font-Awesome/tree/a8386aae19e200ddb0f68 --> - + @@ -57,7 +57,7 @@ License - https://github.com/FortAwesome/Font-Awesome/tree/a8386aae19e200ddb0f68 - + diff --git a/src/js/fa-icons.js b/src/js/fa-icons.js index 0d930b98bdc..18988a97acc 100644 --- a/src/js/fa-icons.js +++ b/src/js/fa-icons.js @@ -29,9 +29,10 @@ const faIconsInit = function(root) { if ( icon.firstChild === null || icon.firstChild.nodeType !== 3 ) { continue; } + const name = icon.firstChild.nodeValue.trim(); + if ( name === '' ) { continue; } const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); const use = document.createElementNS('http://www.w3.org/2000/svg', 'use'); - const name = icon.firstChild.nodeValue; let file; if ( name.startsWith('ph-') ) { file = 'photon'; diff --git a/src/js/popup-fenix.js b/src/js/popup-fenix.js index cd1af906669..d4b1f27c444 100644 --- a/src/js/popup-fenix.js +++ b/src/js/popup-fenix.js @@ -397,6 +397,9 @@ const renderPrivacyExposure = function() { /******************************************************************************/ const updateHnSwitches = function() { + uDom.nodeFromId('no-popups').classList.toggle( + 'on', popupData.noPopups === true + ); uDom.nodeFromId('no-large-media').classList.toggle( 'on', popupData.noLargeMedia === true ); @@ -475,6 +478,11 @@ const renderPopup = function() { // Extra tools updateHnSwitches(); + // Report popup count on badge + total = popupData.popupBlockedCount; + uDom.nodeFromSelector('#no-popups .fa-icon-badge') + .textContent = total ? Math.min(total, 99).toLocaleString() : ''; + // Report large media count on badge total = popupData.largeMediaCount; uDom.nodeFromSelector('#no-large-media .fa-icon-badge') diff --git a/src/popup-fenix.html b/src/popup-fenix.html index 845d33339d3..9110cfd0e39 100644 --- a/src/popup-fenix.html +++ b/src/popup-fenix.html @@ -20,7 +20,19 @@ eraser
- power-off + + + + + + +
refresh From 4689e47ae8734f83f393ee010ddcc7b2bde58424 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Sat, 2 May 2020 18:29:27 -0400 Subject: [PATCH 33/76] New revision for dev build --- dist/version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/version b/dist/version index 066c097e56c..bf373d88df1 100644 --- a/dist/version +++ b/dist/version @@ -1 +1 @@ -1.26.3.17 +1.26.3.18 From f2ab319c50b226dc518ec950b85e449a18363bed Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Sat, 2 May 2020 18:31:37 -0400 Subject: [PATCH 34/76] Import translation work from https://crowdin.com/project/ublock --- src/_locales/az/messages.json | 170 +++++++++++++++++----------------- src/_locales/hi/messages.json | 48 +++++----- src/_locales/vi/messages.json | 6 +- 3 files changed, 112 insertions(+), 112 deletions(-) diff --git a/src/_locales/az/messages.json b/src/_locales/az/messages.json index 9dab503fbca..f68f7190a0c 100644 --- a/src/_locales/az/messages.json +++ b/src/_locales/az/messages.json @@ -4,11 +4,11 @@ "description": "extension name." }, "extShortDesc": { - "message": "Axır ki, işlək bloker. CPU və yaddaş yönümlü.", + "message": "Axır ki, prosessor yükünü azaldan və yaddaşa qənaət edən səmərəli reklam bloklayıcısı var.", "description": "this will be in the Chrome web store: must be 132 characters or less" }, "dashboardName": { - "message": "uBlock₀ — Dashboard", + "message": "uBlock₀ — İdarəetmə paneli", "description": "English: uBlock₀ — Dashboard" }, "dashboardUnsavedWarning": { @@ -24,7 +24,7 @@ "description": "Label for button to ignore unsaved changes" }, "settingsPageName": { - "message": "Tənzimləmələr", + "message": "Parametrlər", "description": "appears as tab name in dashboard" }, "3pPageName": { @@ -32,7 +32,7 @@ "description": "appears as tab name in dashboard" }, "1pPageName": { - "message": "Filtirlərim", + "message": "Filtrlərim", "description": "appears as tab name in dashboard" }, "rulesPageName": { @@ -40,7 +40,7 @@ "description": "appears as tab name in dashboard" }, "whitelistPageName": { - "message": "İcazəli siyahı (Whitelist)", + "message": "İstisnalar", "description": "appears as tab name in dashboard" }, "shortcutsPageName": { @@ -96,7 +96,7 @@ "description": "English: or" }, "popupBlockedOnThisPage_v2": { - "message": "Blocked on this page", + "message": "Bu səhifədə bloklanmışdır", "description": "For the new mobile-friendly popup design" }, "popupBlockedSinceInstall_v2": { @@ -104,11 +104,11 @@ "description": "For the new mobile-friendly popup design" }, "popupDomainsConnected_v2": { - "message": "Domains connected", + "message": "Qoşulmuş domenlər", "description": "For the new mobile-friendly popup design" }, "popupTipDashboard": { - "message": "Dashboard aç", + "message": "İdarəetmə panelini aç", "description": "English: Click to open the dashboard" }, "popupTipZapper": { @@ -184,15 +184,15 @@ "description": "Caption for the no-popups per-site switch" }, "popupNoLargeMedia_v2": { - "message": "Large media elements", + "message": "Böyük ölçülü media elementləri", "description": "Caption for the no-large-media per-site switch" }, "popupNoCosmeticFiltering_v2": { - "message": "Cosmetic filtering", + "message": "Kosmetik filtrləmə", "description": "Caption for the no-cosmetic-filtering per-site switch" }, "popupNoRemoteFonts_v2": { - "message": "Remote fonts", + "message": "Kənar şriftlər", "description": "Caption for the no-remote-fonts per-site switch" }, "popupNoScripting_v2": { @@ -200,23 +200,23 @@ "description": "Caption for the no-scripting per-site switch" }, "popupMoreButton_v2": { - "message": "More", + "message": "Daha çox", "description": "Label to be used to show popup panel sections" }, "popupLessButton_v2": { - "message": "Less", + "message": "Daha az", "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { - "message": "Global rules: this column is for rules which apply to all sites.", + "message": "Qlobal qaydalar: bu sütun bütün saytlarda tətbiq olunan qaydalar üçündür.", "description": "Tooltip when hovering the top-most cell of the global-rules column." }, "popupTipLocalRules": { - "message": "Local rules: this column is for rules which apply to the current site only.\nLocal rules override global rules.", + "message": "Lokal qaydalar: bu sütun yalnız bu saytda tətbiq olunan qaydalar üçündür.\nLokal qaydalar qlobal qaydalardan üstün tutulur.", "description": "Tooltip when hovering the top-most cell of the local-rules column." }, "popupTipSaveRules": { - "message": "Click to make your changes permanent.", + "message": "Dəyişiklikləri daimi etmək üçün düyməyə basın.", "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." }, "popupTipRevertRules": { @@ -264,7 +264,7 @@ "description": "appears in popup" }, "popupVersion": { - "message": "Version", + "message": "Versiya", "description": "Example of use: Version 1.26.4" }, "pickerCreate": { @@ -280,15 +280,15 @@ "description": "English: Quit" }, "pickerPreview": { - "message": "Preview", + "message": "İlkin baxış", "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" }, "pickerNetFilters": { - "message": "Network filters", + "message": "Şəbəkə filtrləri", "description": "English: header for a type of filter in the element picker dialog" }, "pickerCosmeticFilters": { - "message": "Cosmetic filters", + "message": "Kosmetik filtrlər", "description": "English: Cosmetic filters" }, "pickerCosmeticFiltersHint": { @@ -296,7 +296,7 @@ "description": "English: Click, Ctrl-click" }, "pickerContextMenuEntry": { - "message": "Block element...", + "message": "Elementi blokla...", "description": "An entry in the browser's contextual menu" }, "settingsCollapseBlockedPrompt": { @@ -324,11 +324,11 @@ "description": "" }, "settingsAdvancedUserPrompt": { - "message": "I am an advanced user (required reading)", + "message": "Mən təcrübəli istifadəçiyəm (mütləq oxuyun)", "description": "" }, "settingsAdvancedUserSettings": { - "message": "advanced settings", + "message": "xüsusi parametrlər", "description": "For the tooltip of a link which gives access to advanced settings" }, "settingsPrefetchingDisabledPrompt": { @@ -344,7 +344,7 @@ "description": "English: " }, "settingPerSiteSwitchGroup": { - "message": "Default behavior", + "message": "Standart davranış", "description": "" }, "settingPerSiteSwitchGroupSynopsis": { @@ -388,15 +388,15 @@ "description": "Appears aside each filter list in the _3rd-party filters_ pane" }, "3pAutoUpdatePrompt1": { - "message": "Auto-update filter lists", + "message": "Filtr siyahılarını avtomatik yenilə", "description": "A checkbox in the _3rd-party filters_ pane" }, "3pUpdateNow": { - "message": "Update now", + "message": "Yenilə", "description": "A button in the in the _3rd-party filters_ pane" }, "3pPurgeAll": { - "message": "Purge all caches", + "message": "Bütün keşləri sil", "description": "A button in the in the _3rd-party filters_ pane" }, "3pParseAllABPHideFiltersPrompt1": { @@ -420,7 +420,7 @@ "description": "English: Lists of blocked hosts" }, "3pApplyChanges": { - "message": "Apply changes", + "message": "Dəyişiklikləri tətbiq et", "description": "English: Apply changes" }, "3pGroupDefault": { @@ -428,11 +428,11 @@ "description": "Header for the uBlock filters section in 'Filter lists pane'" }, "3pGroupAds": { - "message": "Ads", + "message": "Reklam", "description": "English: Ads" }, "3pGroupPrivacy": { - "message": "Privacy", + "message": "Məxfilik", "description": "English: Privacy" }, "3pGroupMalware": { @@ -444,15 +444,15 @@ "description": "The header identifying the filter lists in the category 'annoyances'" }, "3pGroupMultipurpose": { - "message": "Multipurpose", + "message": "Çoxməqsədlilər", "description": "English: Multipurpose" }, "3pGroupRegions": { - "message": "Regions, languages", + "message": "Bölgələr, dillər", "description": "English: Regions, languages" }, "3pGroupCustom": { - "message": "Custom", + "message": "Fərdi", "description": "English: Custom" }, "3pImport": { @@ -460,7 +460,7 @@ "description": "The label for the checkbox used to import external filter lists" }, "3pExternalListsHint": { - "message": "One URL per line. Invalid URLs will be silently ignored.", + "message": "Hər sətrdə yalnız bir URL. Yanlış URL-lər xəbərdarlıq edilmədən nəzərə alınmayacaq.", "description": "Short information about how to use the textarea to import external filter lists by URL" }, "3pExternalListObsolete": { @@ -472,15 +472,15 @@ "description": "used as a tooltip for eye icon beside a list" }, "3pLastUpdate": { - "message": "Last update: {{ago}}.\nClick to force an update.", + "message": "Sonuncu yeniləmə: {{ago}}.\nYeniləmək üçün düyməyə basın.", "description": "used as a tooltip for the clock icon beside a list" }, "3pUpdating": { - "message": "Updating...", + "message": "Yenilənir...", "description": "used as a tooltip for the spinner icon beside a list" }, "3pNetworkError": { - "message": "A network error prevented the resource from being updated.", + "message": "Şəbəkə xətası üzündən yeniləmə mümkün olmadı.", "description": "used as a tooltip for error icon beside a list" }, "1pFormatHint": { @@ -500,19 +500,19 @@ "description": "English: my-ublock-static-filters_{{datetime}}.txt" }, "1pApplyChanges": { - "message": "Apply changes", + "message": "Dəyişiklikləri tətbiq et", "description": "English: Apply changes" }, "rulesPermanentHeader": { - "message": "Permanent rules", + "message": "Daimi qaydalar", "description": "header" }, "rulesTemporaryHeader": { - "message": "Temporary rules", + "message": "Müvəqqəti qaydalar", "description": "header" }, "rulesRevert": { - "message": "Revert", + "message": "Geri qaytar", "description": "This will remove all temporary rules" }, "rulesCommit": { @@ -520,11 +520,11 @@ "description": "This will persist temporary rules" }, "rulesEdit": { - "message": "Edit", + "message": "Redaktə", "description": "Will enable manual-edit mode (textarea)" }, "rulesEditSave": { - "message": "Save", + "message": "Yadda saxla", "description": "Will save manually-edited content and exit manual-edit mode" }, "rulesEditDiscard": { @@ -532,11 +532,11 @@ "description": "Will discard manually-edited content and exit manual-edit mode" }, "rulesImport": { - "message": "Import from file...", + "message": "Fayldan götür...", "description": "" }, "rulesExport": { - "message": "Export to file", + "message": "Fayla yaz", "description": "" }, "rulesDefaultFileName": { @@ -544,7 +544,7 @@ "description": "default file name to use" }, "rulesHint": { - "message": "List of your dynamic filtering rules.", + "message": "Dinamik filtr qaydalarınızın siyahısı.", "description": "English: List of your dynamic filtering rules." }, "rulesFormatHint": { @@ -568,7 +568,7 @@ "description": "English: my-ublock-whitelist_{{datetime}}.txt" }, "whitelistApply": { - "message": "Apply changes", + "message": "Dəyişiklikləri tətbiq et", "description": "English: Apply changes" }, "logRequestsHeaderType": { @@ -576,7 +576,7 @@ "description": "English: Type" }, "logRequestsHeaderDomain": { - "message": "Domain", + "message": "Domen", "description": "English: Domain" }, "logRequestsHeaderURL": { @@ -584,19 +584,19 @@ "description": "English: URL" }, "logRequestsHeaderFilter": { - "message": "Filter", + "message": "Filtr", "description": "English: Filter" }, "logAll": { - "message": "All", + "message": "Hamısı", "description": "Appears in the logger's tab selector" }, "logBehindTheScene": { - "message": "Tabless", + "message": "Tabsız", "description": "Pretty name for behind-the-scene network requests" }, "loggerCurrentTab": { - "message": "Current tab", + "message": "Cari tab", "description": "Appears in the logger's tab selector" }, "loggerReloadTip": { @@ -616,7 +616,7 @@ "description": "Tooltip for the top-right info label in the logger page" }, "loggerClearTip": { - "message": "Clear logger", + "message": "Qeydiyyat jurnalını təmizlə", "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" }, "loggerPauseTip": { @@ -648,11 +648,11 @@ "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" }, "loggerRowFiltererBuiltinBlocked": { - "message": "blocked", + "message": "bloklanmış", "description": "A keyword in the built-in row filtering expression" }, "loggerRowFiltererBuiltinAllowed": { - "message": "allowed", + "message": "icazə verilmiş", "description": "A keyword in the built-in row filtering expression" }, "loggerRowFiltererBuiltin1p": { @@ -668,19 +668,19 @@ "description": "Small header to identify the 'Details' pane for a specific logger entry" }, "loggerEntryDetailsFilter": { - "message": "Filter", + "message": "Filtr", "description": "Label to identify a filter field" }, "loggerEntryDetailsFilterList": { - "message": "Filter list", + "message": "Filtr siyahısı", "description": "Label to identify a filter list field" }, "loggerEntryDetailsRule": { - "message": "Rule", + "message": "Qayda", "description": "Label to identify a rule field" }, "loggerEntryDetailsContext": { - "message": "Context", + "message": "Məzmun", "description": "Label to identify a context field (typically a hostname)" }, "loggerEntryDetailsRootContext": { @@ -700,19 +700,19 @@ "description": "Label to identify the URL of an entry" }, "loggerURLFilteringHeader": { - "message": "URL rule", + "message": "URL qaydası", "description": "Small header to identify the dynamic URL filtering section" }, "loggerURLFilteringContextLabel": { - "message": "Context:", + "message": "Məzmun:", "description": "Label for the context selector" }, "loggerURLFilteringTypeLabel": { - "message": "Type:", + "message": "Növ:", "description": "Label for the type selector" }, "loggerStaticFilteringHeader": { - "message": "Static filter", + "message": "Statik filtr", "description": "Small header to identify the static filtering section" }, "loggerStaticFilteringSentence": { @@ -724,7 +724,7 @@ "description": "Used in the static filtering wizard" }, "loggerStaticFilteringSentencePartAllow": { - "message": "Allow", + "message": "İcazə ver", "description": "Used in the static filtering wizard" }, "loggerStaticFilteringSentencePartType": { @@ -780,19 +780,19 @@ "description": "A logger setting" }, "loggerSettingHideColumnsPrompt": { - "message": "Hide columns:", + "message": "Sütunları gizlət:", "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" }, "loggerSettingHideColumnTime": { - "message": "{{input}} Time", + "message": "{{input}} Vaxt", "description": "A label for the time column" }, "loggerSettingHideColumnFilter": { - "message": "{{input}} Filter/rule", + "message": "{{input}} Filtr/Qayda", "description": "A label for the filter or rule column" }, "loggerSettingHideColumnContext": { - "message": "{{input}} Context", + "message": "{{input}} Məzmun", "description": "A label for the context column" }, "loggerSettingHideColumnPartyness": { @@ -800,11 +800,11 @@ "description": "A label for the partyness column" }, "loggerExportFormatList": { - "message": "List", + "message": "Siyahı", "description": "Label for radio-button to pick export format" }, "loggerExportFormatTable": { - "message": "Table", + "message": "Cədvəl", "description": "Label for radio-button to pick export format" }, "loggerExportEncodePlain": { @@ -816,7 +816,7 @@ "description": "Label for radio-button to pick export text format" }, "aboutChangelog": { - "message": "Changelog", + "message": "Dəyişikliklər siyahısı", "description": "" }, "aboutWiki": { @@ -824,7 +824,7 @@ "description": "English: project' wiki on GitHub" }, "aboutSupport": { - "message": "Support", + "message": "Dəstək", "description": "A link for where to get support" }, "aboutIssues": { @@ -844,11 +844,11 @@ "description": "Link text to source code repo" }, "aboutTranslations": { - "message": "Translations", + "message": "Tərcümələr", "description": "Link text to translations repo" }, "aboutFilterLists": { - "message": "Filter lists", + "message": "Filtr siyahıları", "description": "Link text to uBO's own filter lists repo" }, "aboutDependencies": { @@ -856,7 +856,7 @@ "description": "Shown in the About pane" }, "aboutBackupDataButton": { - "message": "Back up to file", + "message": "Fayla yaz", "description": "Text for button to create a backup of all settings" }, "aboutBackupFilename": { @@ -864,11 +864,11 @@ "description": "English: my-ublock-backup_{{datetime}}.txt" }, "aboutRestoreDataButton": { - "message": "Restore from file...", + "message": "Fayldan götür...", "description": "English: Restore from file..." }, "aboutResetDataButton": { - "message": "Reset to default settings...", + "message": "Standart parametrləri yüklə...", "description": "English: Reset to default settings..." }, "aboutRestoreDataConfirm": { @@ -884,7 +884,7 @@ "description": "Message asking user to confirm reset" }, "errorCantConnectTo": { - "message": "Network error: {{msg}}", + "message": "Şəbəkə xətası: {{msg}}", "description": "English: Network error: {{msg}}" }, "subscriberConfirm": { @@ -892,15 +892,15 @@ "description": "English: The message seen by the user to confirm subscription to a ABP filter list" }, "elapsedOneMinuteAgo": { - "message": "a minute ago", + "message": "bir dəqiqə əvvəl", "description": "English: a minute ago" }, "elapsedManyMinutesAgo": { - "message": "{{value}} minutes ago", + "message": "{{value}} dəqiqə əvvəl", "description": "English: {{value}} minutes ago" }, "elapsedOneHourAgo": { - "message": "an hour ago", + "message": "bir saat əvvəl", "description": "English: an hour ago" }, "elapsedManyHoursAgo": { @@ -916,7 +916,7 @@ "description": "English: {{value}} days ago" }, "showDashboardButton": { - "message": "Show Dashboard", + "message": "İdarəetmə panelini göstər", "description": "Firefox/Fennec-specific: Show Dashboard" }, "showNetworkLogButton": { @@ -1000,7 +1000,7 @@ "description": "for generic 'Revert' buttons" }, "genericBytes": { - "message": "bytes", + "message": "bayt", "description": "" }, "contextMenuTemporarilyAllowLargeMediaElements": { @@ -1008,7 +1008,7 @@ "description": "A context menu entry, present when large media elements have been blocked on the current site" }, "shortcutCapturePlaceholder": { - "message": "Type a shortcut", + "message": "Qısayol yaz", "description": "Placeholder string for input field used to capture a keyboard shortcut" }, "genericMergeViewScrollLock": { @@ -1028,7 +1028,7 @@ "description": "Label for keyboard shortcut used to relax blocking mode (meant to replace 'Toggle blocking profile')" }, "storageUsed": { - "message": "Storage used: {{value}} {{unit}}", + "message": "İstifadə olunan həcm: {{value}} {{unit}}", "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" }, "KB": { diff --git a/src/_locales/hi/messages.json b/src/_locales/hi/messages.json index d3a18f3580a..0b481814034 100644 --- a/src/_locales/hi/messages.json +++ b/src/_locales/hi/messages.json @@ -204,7 +204,7 @@ "description": "Label to be used to show popup panel sections" }, "popupLessButton_v2": { - "message": "Less", + "message": "कम", "description": "Label to be used to hide popup panel sections" }, "popupTipGlobalRules": { @@ -264,7 +264,7 @@ "description": "appears in popup" }, "popupVersion": { - "message": "Version", + "message": "वर्जन", "description": "Example of use: Version 1.26.4" }, "pickerCreate": { @@ -780,23 +780,23 @@ "description": "A logger setting" }, "loggerSettingHideColumnsPrompt": { - "message": "Hide columns:", + "message": "कॉलम्स को छिपाएं:", "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" }, "loggerSettingHideColumnTime": { - "message": "{{input}} Time", + "message": "{{input}} समय", "description": "A label for the time column" }, "loggerSettingHideColumnFilter": { - "message": "{{input}} Filter/rule", + "message": "{{input}} फिल्टर/रूल", "description": "A label for the filter or rule column" }, "loggerSettingHideColumnContext": { - "message": "{{input}} Context", + "message": "{{input}} संदर्भ", "description": "A label for the context column" }, "loggerSettingHideColumnPartyness": { - "message": "{{input}} Partyness", + "message": "पर्टीनेस", "description": "A label for the partyness column" }, "loggerExportFormatList": { @@ -812,7 +812,7 @@ "description": "Label for radio-button to pick export text format" }, "loggerExportEncodeMarkdown": { - "message": "Markdown", + "message": "मार्कडाउन", "description": "Label for radio-button to pick export text format" }, "aboutChangelog": { @@ -852,7 +852,7 @@ "description": "Link text to uBO's own filter lists repo" }, "aboutDependencies": { - "message": "External dependencies (GPLv3-compatible):", + "message": "बाहरी डिपेंडेंसीज (GPLv3-compatible):", "description": "Shown in the About pane" }, "aboutBackupDataButton": { @@ -872,23 +872,23 @@ "description": "English: Reset to default settings..." }, "aboutRestoreDataConfirm": { - "message": "All your settings will be overwritten using data backed up on {{time}}, and uBlock₀ will restart.\n\nOverwrite all existing settings using backed up data?", + "message": "{{समय}} पर बैकअप किए गए डेटा इस्तेमाल करके आपकी सभी सेटिंग्स को ओवरराइट कर दिया जाएगा, और uBlock₀ फिर से चालू किया जाएगा।\n\nबैकअप डेटा का इस्तेमाल करके सभी मौजूदा सेटिंग्स को ओवरराइट करें?", "description": "Message asking user to confirm restore" }, "aboutRestoreDataError": { - "message": "The data could not be read or is invalid", + "message": "डेटा पढ़ा नहीं जा सका या अमान्य है", "description": "Message to display when an error occurred during restore" }, "aboutResetDataConfirm": { - "message": "All your settings will be removed, and uBlock₀ will restart.\n\nReset uBlock₀ to factory settings?", + "message": "आपकी सारी सेटिंग्स मिटा दी जाएंगी, और uBlock₀ को फिर से चालू किया जाएगा।\n\nuBlock₀ को फ़ैक्टरी सेटिंग्स पर रीसेट करें?", "description": "Message asking user to confirm reset" }, "errorCantConnectTo": { - "message": "Network error: {{msg}}", + "message": "नेटवर्क त्रुटि : {{msg}}", "description": "English: Network error: {{msg}}" }, "subscriberConfirm": { - "message": "uBlock₀: Add the following URL to your custom filter lists?\n\nTitle: \"{{title}}\"\nURL: {{url}}", + "message": "uBlock₀: इस यूआरएल को अपने कस्टम लिस्ट में डालें?\n\nTitle: \"{{title}}\"\nURL: {{url}}", "description": "English: The message seen by the user to confirm subscription to a ABP filter list" }, "elapsedOneMinuteAgo": { @@ -916,7 +916,7 @@ "description": "English: {{value}} days ago" }, "showDashboardButton": { - "message": "Show Dashboard", + "message": "डैशबोर्ड दिखाओ", "description": "Firefox/Fennec-specific: Show Dashboard" }, "showNetworkLogButton": { @@ -936,7 +936,7 @@ "description": "English: Because of the following filter" }, "docblockedNoParamsPrompt": { - "message": "without parameters", + "message": "पैरामीटर के बिना", "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" }, "docblockedFoundIn": { @@ -952,7 +952,7 @@ "description": "English: Close this window" }, "docblockedProceed": { - "message": "Disable strict blocking for {{hostname}}", + "message": "स्ट्रिक्ट ब्लॉकिंग को बंद करें इस साइट पर {{hostname}}", "description": "English: Disable strict blocking for {{hostname}} ..." }, "docblockedDisableTemporary": { @@ -972,7 +972,7 @@ "description": "tooltip" }, "cloudPullAndMerge": { - "message": "Import from cloud storage and merge with current settings", + "message": "क्लाउड स्टोरेज से डाउनलोड करें और मौजूदा सेटिंग्स के साथ मिलाएं ", "description": "tooltip" }, "cloudNoData": { @@ -984,7 +984,7 @@ "description": "used as a prompt for the user to provide a custom device name" }, "advancedSettingsWarning": { - "message": "Warning! Change these advanced settings at your own risk.", + "message": "चेतावनी! इन एडवांस सेटिंग्स को अपने जोखिम पर बदलें", "description": "A warning to users at the top of 'Advanced settings' page" }, "genericSubmit": { @@ -1024,23 +1024,23 @@ "description": "Label for keyboard shortcut used to toggle blocking profile" }, "relaxBlockingMode": { - "message": "Relax blocking mode", + "message": "ब्लैकिंग मोड को ढील दें", "description": "Label for keyboard shortcut used to relax blocking mode (meant to replace 'Toggle blocking profile')" }, "storageUsed": { - "message": "Storage used: {{value}} {{unit}}", + "message": "इस्तेमाल हुई स्टोरेज:{{value}} {{unit}}", "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" }, "KB": { - "message": "KB", + "message": "केबी", "description": "short for 'kilobytes'" }, "MB": { - "message": "MB", + "message": "एमबी", "description": "short for 'megabytes'" }, "GB": { - "message": "GB", + "message": "जीबी", "description": "short for 'gigabytes'" }, "dummy": { diff --git a/src/_locales/vi/messages.json b/src/_locales/vi/messages.json index 3ab31c99472..77db6ad3a69 100644 --- a/src/_locales/vi/messages.json +++ b/src/_locales/vi/messages.json @@ -184,15 +184,15 @@ "description": "Caption for the no-popups per-site switch" }, "popupNoLargeMedia_v2": { - "message": "Phần tử đa phương tiện kích thước lớn", + "message": "Thành phần đa phương tiện kích thước lớn", "description": "Caption for the no-large-media per-site switch" }, "popupNoCosmeticFiltering_v2": { - "message": "Lọc phần tử trang điểm", + "message": "Lọc phần tử ẩn", "description": "Caption for the no-cosmetic-filtering per-site switch" }, "popupNoRemoteFonts_v2": { - "message": "Phông điều khiển từ xa", + "message": "Phông từ xa", "description": "Caption for the no-remote-fonts per-site switch" }, "popupNoScripting_v2": { From 30c7c15108a3126a74f7d1bc1206e9bdebbd8aad Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Sat, 2 May 2020 18:41:01 -0400 Subject: [PATCH 35/76] Make Firefox dev build auto-update --- dist/firefox/updates.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dist/firefox/updates.json b/dist/firefox/updates.json index 850dc23da6a..d86f30fdc21 100644 --- a/dist/firefox/updates.json +++ b/dist/firefox/updates.json @@ -3,10 +3,10 @@ "uBlock0@raymondhill.net": { "updates": [ { - "version": "1.26.3.17", + "version": "1.26.3.18", "browser_specific_settings": { "gecko": { "strict_min_version": "55" } }, - "update_info_url": "https://github.com/gorhill/uBlock/releases/tag/1.26.3b17", - "update_link": "https://github.com/gorhill/uBlock/releases/download/1.26.3b17/uBlock0_1.26.3b17.firefox.signed.xpi" + "update_info_url": "https://github.com/gorhill/uBlock/releases/tag/1.26.3b18", + "update_link": "https://github.com/gorhill/uBlock/releases/download/1.26.3b18/uBlock0_1.26.3b18.firefox.signed.xpi" } ] } From 1f91e527464baefb8bfb6d4a16f0125440934130 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Sat, 2 May 2020 19:00:44 -0400 Subject: [PATCH 36/76] Simplify HTML a bit --- src/popup-fenix.html | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/popup-fenix.html b/src/popup-fenix.html index 9110cfd0e39..c43f8f3e53b 100644 --- a/src/popup-fenix.html +++ b/src/popup-fenix.html @@ -26,11 +26,8 @@ that we can use a clip-path in order to ensure that the stroke does not "bleed" outside the fill area. --> - - - - +
From a54718862c9e9a4c5cfe3b6c2e6539a1c562f477 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Sun, 3 May 2020 09:18:53 -0400 Subject: [PATCH 37/76] Maybe fix rare spurious viewport width test in popup panel In rare instances -- though it definitely happens eventually -- the popup panel viewport width is seen as insufficiently wide enough and as a result the popup panel is toggled into vertical-layout mode. The added code uses animation frames to delay the code testing the viewport width. Hopefully this will work. --- src/js/popup-fenix.js | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/js/popup-fenix.js b/src/js/popup-fenix.js index d4b1f27c444..85b56cab137 100644 --- a/src/js/popup-fenix.js +++ b/src/js/popup-fenix.js @@ -1150,10 +1150,21 @@ const getPopupData = async function(tabId) { tabId = parseInt(matches[1], 10) || 0; } + const nextFrame = ( ) => { + return new Promise(resolve => { + self.requestAnimationFrame(( ) => { resolve(); }); + }); + }; + // The purpose of the following code is to reset to a vertical layout - // should the viewport be not enough wide to accomodate the horizontal + // should the viewport not be enough wide to accomodate the horizontal // layout. - const checkViewport = function() { + // To avoid querying a spurious viewport width -- it happens sometimes, + // somehow -- we delay layout-changing operations to the next paint + // frames. + const checkViewport = async function() { + await nextFrame(); + const root = document.querySelector(':root'); if ( root.classList.contains('desktop') ) { const main = document.getElementById('main'); @@ -1168,14 +1179,15 @@ const getPopupData = async function(tabId) { } } } - self.requestAnimationFrame(( ) => { - document.body.classList.remove('loading'); - }); + + await nextFrame(); + + document.body.classList.remove('loading'); }; getPopupData(tabId).then(( ) => { if ( document.readyState !== 'complete' ) { - self.addEventListener('load', checkViewport, { once: true }); + self.addEventListener('load', ( ) => { checkViewport(); }, { once: true }); } else { checkViewport(); } From 002a825891bd490b49961609a97ff7f9bd8cca29 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Sun, 3 May 2020 09:26:19 -0400 Subject: [PATCH 38/76] Add tolerance to popup panel when checking viewport width I meant to add this to last commit: - https://github.com/gorhill/uBlock/commit/a54718862c9e9a4c5cfe3b6c2e6539a1c562f477 --- src/js/popup-fenix.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/popup-fenix.js b/src/js/popup-fenix.js index 85b56cab137..e6507a46cff 100644 --- a/src/js/popup-fenix.js +++ b/src/js/popup-fenix.js @@ -1169,7 +1169,7 @@ const getPopupData = async function(tabId) { if ( root.classList.contains('desktop') ) { const main = document.getElementById('main'); const firewall = document.getElementById('firewall'); - const minWidth = Math.floor(main.offsetWidth + firewall.offsetWidth); + const minWidth = Math.floor(main.offsetWidth + firewall.offsetWidth) - 4; if ( document.body.offsetWidth < minWidth ) { root.classList.remove('desktop'); } else { From 5be0be7881f51e7cb00e54b8eace74d47c3f8ccf Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Sun, 3 May 2020 12:53:13 -0400 Subject: [PATCH 39/76] Report popup/popunder when using 'other' filter in logger Related issue: - https://github.com/uBlockOrigin/uBlock-issues/issues/1007 --- src/logger-ui.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/logger-ui.html b/src/logger-ui.html index 26f77347b88..fb576eb2aba 100644 --- a/src/logger-ui.html +++ b/src/logger-ui.html @@ -62,7 +62,7 @@
css/fontimagemediascript
-
xhrframeotherdom
+
xhrframedomother
@@ -154,7 +154,7 @@ From e2e1558d5771cb58a462441318d3a6771162d458 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Sun, 3 May 2020 12:57:42 -0400 Subject: [PATCH 40/76] Import translation work from https://crowdin.com/project/ublock --- dist/description/description-hi.txt | 40 +++++++++++++------------- src/_locales/hi/messages.json | 44 ++++++++++++++--------------- src/_locales/kn/messages.json | 14 ++++----- 3 files changed, 49 insertions(+), 49 deletions(-) diff --git a/dist/description/description-hi.txt b/dist/description/description-hi.txt index 33caf12a383..d770c2e84f4 100644 --- a/dist/description/description-hi.txt +++ b/dist/description/description-hi.txt @@ -1,41 +1,41 @@ -एक कुशल अवरोधक: स्मृति और सीपीयू पदचिह्न पर आसान है, और अभी तक लोड और हजारों लागू वहाँ से बाहर अन्य लोकप्रिय ब्लॉकर्स और अधिक से अधिक फिल्टर कर सकते हैं। +एक बेहतर ब्लॉकर : एक बेहतर ब्लॉक कर जो मेमोरी और सीपीयू पर ज्यादा जोर नहीं देता, और जो हजारों फिल्टरों को आसानी से लोड करके और लागू कर सकता है दूसरे लोकप्रिय ब्लॉकरों से। -अपनी क्षमता का सचित्र अवलोकन: https://github.com/gorhill/uBlock/wiki/uBlock-vs.-ABP:-efficiency-compared +अपनी काबिलियत का ओवरव्यू: https://github.com/gorhill/uBlock/wiki/uBlock-vs.-ABP:-efficiency-compared -उपयोग: पॉपअप में बड़ी शक्ति बटन स्थायी रूप से अक्षम / वर्तमान वेब साइट uBlock लिए सक्षम है। यह केवल मौजूदा वेब साइट पर लागू होता है, यह एक वैश्विक शक्ति बटन नहीं है। +इस्तेमाल: बड़ा पावर बटन पॉपअप uBlock को मौजूदा वेबसाइट में बंद या चालू करने के लिए है। यह सिर्फ मौजूदा वेब साइट पर लागू होता है, यह एक ग्लोबल पावर बटन नहीं है। *** -लचीले, यह एक केवल "विज्ञापन अवरोधक" की तुलना से अधिक है: यह भी पढ़ सकता हैं और मेजबान फाइलों से फिल्टर बना सकते हैं। +लचीला, यह एक "एडब्लॉकर" से ज्यादा है: यह होस्ट फाइलों को और फिल्टरों को पढ़ और बना सकता है। -Out of the box, these lists of filters are loaded and enforced: +इंस्टॉल करते ही इन फिल्टरों को लोड और लागू किया जाएगा: -- आसान सूची -- Peter Lowe's विज्ञापन सर्वर सूची -- आसान गुप्तता -- मैलवेयर डोमेन +- EasyList +- Peter Lowe's एड सर्वर सूची +- EasyPrivacy +- Malware domains -यदि आप चाहें तो आप का चयन करने के लिए और अधिक सूची उपलब्ध हैं +अगर आप चाहें तो चुनने के लिए और भी सूचियाँ उपलब्ध हैं: -- Fanboy's बढ़ी ट्रैकिंग सूची -- Dan Pollock's मेजबान फ़ाइल -- hpHosts's विज्ञापन और ट्रैकिंग सर्वर -- MVPS मेज़बान --स्पैम404 +- Fanboy कि बढ़ी ट्रैकिंग सूची +- Dan Pollock कि होस्ट फाइल +- hpHosts कि एड और ट्रैकिंग सर्वरस +- MVPS हॉस्ट्स +- Spam404 - और बहुत सारे -Of course, the more filters enabled, the higher the memory footprint. Yet, even after adding Fanboy's two extra lists, hpHosts’s Ad and tracking servers, uBlock still has a lower memory footprint than other very popular blockers out there. +बेशक, ज्यादा फिल्टर्स मतलब ज्यादा मेमोरी फुटप्रिंट। फिर भी, Fanboy की दो और सूचियों, hpHosts के विज्ञापन और ट्रैकिंग सर्वरों को जोड़ने के बाद, uBlock में अभी भी दूसरे लोकप्रिय ब्लॉकर्स की तुलना में कम मेमोरी फ़ुटप्रिंट है। -Also, be aware that selecting some of these extra lists may lead to higher likelihood of web site breakage -- especially those lists which are normally used as hosts file. +इसके अलावा, ध्यान रखें कि इनमें से कुछ अतिरिक्त सूचियों को चुनने से वेब साइट के टूटने की संभावना ज्यादा हो सकती है -- विशेष रूप से उन सूचियों को जो आमतौर पर होस्ट फ़ाइल के रूप में इस्तेमाल की जाती हैं। *** -Without the preset lists of filters, this extension is nothing. So if ever you really do want to contribute something, think about the people working hard to maintain the filter lists you are using, which were made available to use by all for free. +बिना प्रीसेट फिल्टर सूचियों के, यह एक्सटेंशन कुछ भी नहीं है। इसलिए अगर आप कभी सचमुच में कुछ योगदान करना चाहते हैं, तो उन लोगों के बारे में सोचें जो आपके द्वारा इस्तेमाल की जा रही फ़िल्टर सूचियों को बनाए रखने के लिए कड़ी मेहनत कर रहे हैं, जिन्हें मुफ्त में सभी को इस्तेमाल करने के लिए उपलब्ध कराया गया है। *** नि: शुल्क। -Open source with public license (GPLv3) +ओपन-सोर्स पब्लिक लाइसेंस के साथ (GPLv3) उपयोगकर्ताओं द्वारा उपयोगकर्ताओं के लिए। योगदानकर्ताओं @ Github: https://github.com/gorhill/uBlock/graphs/contributors @@ -45,5 +45,5 @@ Open source with public license (GPLv3) It's quite an early version, keep this in mind when you review. -Project change log: +प्रोजेक्ट परिवर्तन लॉग: https://github.com/gorhill/uBlock/releases diff --git a/src/_locales/hi/messages.json b/src/_locales/hi/messages.json index 0b481814034..1d8462f6c86 100644 --- a/src/_locales/hi/messages.json +++ b/src/_locales/hi/messages.json @@ -48,7 +48,7 @@ "description": "appears as tab name in dashboard" }, "statsPageName": { - "message": "यूब्लॉक — नेटवर्क रिक्वेस्ट लॉग", + "message": "uBlock₀ — लॉगर", "description": "Title for the logger window" }, "aboutPageName": { @@ -116,11 +116,11 @@ "description": "Tooltip for the element-zapper icon in the popup panel" }, "popupTipPicker": { - "message": "अन्श चाटने वाले साधन में प्रवेश करे", + "message": "एलिमेंट पिकर मोड में जाएं ", "description": "English: Enter element picker mode" }, "popupTipLog": { - "message": "अनुरोध दैनिकी में जाए", + "message": "लॉगर खोलें", "description": "Tooltip used for the logger icon in the panel" }, "popupTipNoPopups": { @@ -216,7 +216,7 @@ "description": "Tooltip when hovering the top-most cell of the local-rules column." }, "popupTipSaveRules": { - "message": "अपने परिवर्तनों को स्थायी बनाने के लिए क्लिक करें।", + "message": "अपने परिवर्तनों को पक्का बनाने के लिए क्लिक करें।", "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." }, "popupTipRevertRules": { @@ -496,7 +496,7 @@ "description": "English: Export" }, "1pExportFilename": { - "message": "मेरे-युब्लॉक-स्‍थिर-फिल्टेरें_{{datetime}}.txt", + "message": "मेरे-ublock-स्‍थिर-फिल्टेरें_{{datetime}}.txt", "description": "English: my-ublock-static-filters_{{datetime}}.txt" }, "1pApplyChanges": { @@ -540,7 +540,7 @@ "description": "" }, "rulesDefaultFileName": { - "message": "मेरे-युब्लॉक-सक्रिय-नियम_{{datetime}}.txt", + "message": "मेरे-ublock-डायनामिक-नियम_{{datetime}}.txt", "description": "default file name to use" }, "rulesHint": { @@ -548,11 +548,11 @@ "description": "English: List of your dynamic filtering rules." }, "rulesFormatHint": { - "message": "Rule syntax: source destination type action (full documentation).", + "message": "सिंटेक्स नियम: सोर्स डेस्टिनेशन टाइप एक्शन ( पूरी डॉक्यूमेंटेशन).", "description": "English: dynamic rule syntax and full documentation." }, "whitelistPrompt": { - "message": "The whitelist directives dictate on which web pages uBlock Origin should be disabled. One entry per line. Invalid directives will be silently ignored and commented out.", + "message": "वाइटलिस्ट के नियम यह बताते हैं कि uBlock Origin को किस वेब पेज पर बंद करना चाहिए। एक एंट्री हर लाइन में। अमान्य नियमों को सीधे-सीधे नजरअंदाज कर दिया जाएगा।", "description": "English: An overview of the content of the dashboard's Whitelist pane." }, "whitelistImport": { @@ -564,7 +564,7 @@ "description": "English: Export" }, "whitelistExportFilename": { - "message": "मेरे-युब्लॉक-व्हाइटलिस्ट_{{datetime}}.txt", + "message": "मेरे-उबलॉक-व्हाइटलिस्ट_{{datetime}}.txt", "description": "English: my-ublock-whitelist_{{datetime}}.txt" }, "whitelistApply": { @@ -616,7 +616,7 @@ "description": "Tooltip for the top-right info label in the logger page" }, "loggerClearTip": { - "message": "लॉग्गर क्लियर करें ", + "message": "लॉगर क्लियर करें ", "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" }, "loggerPauseTip": { @@ -712,19 +712,19 @@ "description": "Label for the type selector" }, "loggerStaticFilteringHeader": { - "message": "स्थायी छनाना", + "message": "स्थिर फ़िल्टर", "description": "Small header to identify the static filtering section" }, "loggerStaticFilteringSentence": { - "message": "{{action}} network requests of {{type}} {{br}}which URL address matches {{url}} {{br}}and which originates {{origin}},{{br}}{{importance}} there is a matching exception filter.", + "message": "{{type}}{{br}} कि नेटवर्क रिक्वेस्ट्स {{action}} जो मिलती है इस URL पते से {{url}}{{br}} और जो आती है यहां से {{origin}},{{br}}{{importance}} मैचिंग एक्सेप्शन फिल्टर मौजूद है।", "description": "Used in the static filtering wizard" }, "loggerStaticFilteringSentencePartBlock": { - "message": "रोको", + "message": "ब्लॉक", "description": "Used in the static filtering wizard" }, "loggerStaticFilteringSentencePartAllow": { - "message": "छोडो", + "message": "अनुमति दें", "description": "Used in the static filtering wizard" }, "loggerStaticFilteringSentencePartType": { @@ -732,11 +732,11 @@ "description": "Used in the static filtering wizard" }, "loggerStaticFilteringSentencePartAnyType": { - "message": "हर टइप", + "message": "कोई भी प्रकार का", "description": "Used in the static filtering wizard" }, "loggerStaticFilteringSentencePartOrigin": { - "message": "से \"{{origin}}\"", + "message": "\"{{origin}}\" से", "description": "Used in the static filtering wizard" }, "loggerStaticFilteringSentencePartAnyOrigin": { @@ -752,11 +752,11 @@ "description": "Used in the static filtering wizard" }, "loggerStaticFilteringFinderSentence1": { - "message": "{{filter}} में पाया गया स्टैटिक फ़िल्टर ", + "message": "{{filter}} में पाया गया स्थिर फ़िल्टर", "description": "Below this sentence, the filter list(s) in which the filter was found" }, "loggerStaticFilteringFinderSentence2": { - "message": "फिलहाल चालू की गई हुई कोई भी फिल्टर्स सूची में स्टैटिक फिल्टर नहीं पाया गया", + "message": "फिलहाल चालू की गई हुई कोई भी फिल्टर्स सूची में स्थिर फिल्टर नहीं मिल पाया", "description": "Message to show when a filter cannot be found in any filter lists" }, "loggerSettingDiscardPrompt": { @@ -772,11 +772,11 @@ "description": "A logger setting" }, "loggerSettingPerTabMaxEntries": { - "message": "Preserve at most {{input}} entries per tab", + "message": "ज्यादा से ज्यादा {{input}} एंट्रीज को रखें", "description": "A logger setting" }, "loggerSettingPerEntryLineCount": { - "message": "Use {{input}} lines per entry in vertically expanded mode", + "message": "{{input}} लाइनों को इस्तेमाल करें पर एंट्री में जो खड़ी स्थिति में हैं", "description": "A logger setting" }, "loggerSettingHideColumnsPrompt": { @@ -860,7 +860,7 @@ "description": "Text for button to create a backup of all settings" }, "aboutBackupFilename": { - "message": "मेरे-युब्लॉक- बैकअप_{{datetime}}.txt", + "message": "मेरे-ublock-बैकअप_{{datetime}}.txt", "description": "English: my-ublock-backup_{{datetime}}.txt" }, "aboutRestoreDataButton": { @@ -928,7 +928,7 @@ "description": "Firefox-specific: appears as 'uBlock₀ (off)'" }, "docblockedPrompt1": { - "message": "uBlock Origin ने इस पेज को चालु होने से रोका हैं:", + "message": "uBlock Origin ने इस पेज को लोड होने से रोक दिया हैं:", "description": "English: uBlock₀ has prevented the following page from loading:" }, "docblockedPrompt2": { diff --git a/src/_locales/kn/messages.json b/src/_locales/kn/messages.json index 568689ff623..8c31856c249 100644 --- a/src/_locales/kn/messages.json +++ b/src/_locales/kn/messages.json @@ -8,7 +8,7 @@ "description": "this will be in the Chrome web store: must be 132 characters or less" }, "dashboardName": { - "message": "uBlock₀ - ಡ್ಯಾಶ್ಬೋರ್ಡು", + "message": "uBlock₀ - ಡ್ಯಾಶ್ಬೋರ್ಡ", "description": "English: uBlock₀ — Dashboard" }, "dashboardUnsavedWarning": { @@ -24,7 +24,7 @@ "description": "Label for button to ignore unsaved changes" }, "settingsPageName": { - "message": "ಬದಲಾವಣೆ", + "message": "ಸೆಟ್ಟಿಂಗ್ಸ್", "description": "appears as tab name in dashboard" }, "3pPageName": { @@ -40,7 +40,7 @@ "description": "appears as tab name in dashboard" }, "whitelistPageName": { - "message": "ಬಿಳಿಪಟ್ಟಿ", + "message": "ವೈಟ್ ಲಿಸ್ಟ್", "description": "appears as tab name in dashboard" }, "shortcutsPageName": { @@ -48,7 +48,7 @@ "description": "appears as tab name in dashboard" }, "statsPageName": { - "message": "uBlock₀ — ಜಾಲ ವಿನಂತಿಗಳ ದಾಖಲೆ", + "message": "uBlock₀ — ಲಾಗರ್", "description": "Title for the logger window" }, "aboutPageName": { @@ -108,7 +108,7 @@ "description": "For the new mobile-friendly popup design" }, "popupTipDashboard": { - "message": "ಡ್ಯಾಶ್ಬೋರ್ಡು ತೆರೆಯಲು ಕ್ಲಿಕಿಸಿ", + "message": "ಡ್ಯಾಶ್ಬೋರ್ಡ ತೆರೆಯಲು ಕ್ಲಿಕಿಸಿ", "description": "English: Click to open the dashboard" }, "popupTipZapper": { @@ -120,7 +120,7 @@ "description": "English: Enter element picker mode" }, "popupTipLog": { - "message": "ಜಾಲ ವಿನಂತಿಗಳ ದಾಖಲೆಗೆ ಹೋಗಿ", + "message": "ಲಾಗರ್ ತೆರೆಯಿರಿ", "description": "Tooltip used for the logger icon in the panel" }, "popupTipNoPopups": { @@ -464,7 +464,7 @@ "description": "Short information about how to use the textarea to import external filter lists by URL" }, "3pExternalListObsolete": { - "message": "ಹಳೆಯದು", + "message": "ಹಳೆಯದಾಗಿದೆ", "description": "used as a tooltip for the out-of-date icon beside a list" }, "3pViewContent": { From f9cb23d3dff60f13d93e32564fa49d535533056e Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Sun, 3 May 2020 12:58:34 -0400 Subject: [PATCH 41/76] New revision for dev build --- dist/version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/version b/dist/version index bf373d88df1..06b345a9d4a 100644 --- a/dist/version +++ b/dist/version @@ -1 +1 @@ -1.26.3.18 +1.26.3.19 From 6497d37ead2196e387f971bfb2f1d25897bfe899 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Sun, 3 May 2020 13:05:58 -0400 Subject: [PATCH 42/76] Make Firefox dev build auto-update --- dist/firefox/updates.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dist/firefox/updates.json b/dist/firefox/updates.json index d86f30fdc21..e0bef16545d 100644 --- a/dist/firefox/updates.json +++ b/dist/firefox/updates.json @@ -3,10 +3,10 @@ "uBlock0@raymondhill.net": { "updates": [ { - "version": "1.26.3.18", + "version": "1.26.3.19", "browser_specific_settings": { "gecko": { "strict_min_version": "55" } }, - "update_info_url": "https://github.com/gorhill/uBlock/releases/tag/1.26.3b18", - "update_link": "https://github.com/gorhill/uBlock/releases/download/1.26.3b18/uBlock0_1.26.3b18.firefox.signed.xpi" + "update_info_url": "https://github.com/gorhill/uBlock/releases/tag/1.26.3b19", + "update_link": "https://github.com/gorhill/uBlock/releases/download/1.26.3b19/uBlock0_1.26.3b19.firefox.signed.xpi" } ] } From a1ef8b3ec8ec194e1ddb51a94929774a5d94ca6c Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Mon, 4 May 2020 11:34:21 -0400 Subject: [PATCH 43/76] Fix power button not rendering on Firefox 68 ESR Related feedback: - https://github.com/gorhill/uBlock/commit/1f91e527464b#commitcomment-38930600 Looking through MDN documentation, I am unable to understand why this was broken on Firefox 68 ESR while this worked fine on Firefox 75. --- src/popup-fenix.html | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/popup-fenix.html b/src/popup-fenix.html index c43f8f3e53b..9110cfd0e39 100644 --- a/src/popup-fenix.html +++ b/src/popup-fenix.html @@ -26,8 +26,11 @@ that we can use a clip-path in order to ensure that the stroke does not "bleed" outside the fill area. --> + + - + +
From c7d196d4725c3d2891e27fb56e900164c4102fbe Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Mon, 4 May 2020 12:41:10 -0400 Subject: [PATCH 44/76] Re-design document-blocked page as per feedback Related issue: - https://github.com/uBlockOrigin/uBlock-issues/issues/1005 There is probably more work to do regarding the shown URL -- it might be better to truncate it on small screen display since it can be quite long sometimes. --- src/css/common.css | 41 ++++++++++++++++++++---- src/css/document-blocked.css | 60 ++++++++++++++++++------------------ src/css/themes/default.css | 6 +++- src/document-blocked.html | 31 +++++++++---------- src/js/document-blocked.js | 13 +++----- 5 files changed, 90 insertions(+), 61 deletions(-) diff --git a/src/css/common.css b/src/css/common.css index f0e7c853f30..ca125afc4f7 100644 --- a/src/css/common.css +++ b/src/css/common.css @@ -34,6 +34,19 @@ src: url('fonts/fontawesome-webfont.ttf') format('truetype'); } +/** + Common uBO spacing. + Ref: https://github.com/uBlockOrigin/uBlock-issues/issues/1005 +*/ +:root { + --default-gap-xlarge: 32px; + --default-gap-large: 24px; + --default-gap: 16px; + --default-gap-small: 12px; + --default-gap-xsmall: 8px; + --default-gap-xxsmall: 4px; + } + /* Common uBO styles */ body { background-color: var(--default-surface); @@ -60,9 +73,10 @@ body { a { color: var(--link-ink); } -code { - background-color: var(--bg-code); - padding: 0 0.25em; +code, .code { + background-color: var(--button-surface); + font-family: monospace; + padding: 4px; } hr { border: 0; @@ -75,8 +89,10 @@ textarea { button { align-items: center; appearance: none; + -moz-appearance: none; + -webkit-appearance: none; border: 1px solid transparent; - border-radius: 4px; + border-radius: 5px; background-color: var(--button-surface); color: var(--button-ink); display: inline-flex; @@ -86,8 +102,7 @@ button { letter-spacing: 0.5px; min-height: 36px; padding: 0 var(--font-size); - -moz-appearance: none; - -webkit-appearance: none; + vertical-align: middle; } button.vflex { height: 100%; @@ -117,6 +132,10 @@ button.important[disabled] { filter: var(--button-disabled-filter); pointer-events: none; } +button.preferred { + background-color: var(--button-preferred-surface); + color: var(--button-preferred-ink); + } button.iconifiable > .fa, button.iconifiable > .fa-icon { padding-left: 0; @@ -183,6 +202,16 @@ label { stroke: var(--default-surface); } +select { + padding: 2px; + } +:root.desktop select { + appearance: none; + --webkit-appearance: none; + background-color: var(--select-surface); + font: inherit; + } + .hidden { display: none; height: 0; diff --git a/src/css/document-blocked.css b/src/css/document-blocked.css index 0b6fdbd04ca..fc2d7658357 100644 --- a/src/css/document-blocked.css +++ b/src/css/document-blocked.css @@ -19,46 +19,32 @@ */ body { - padding: 0.5em; + display: flex; + flex-direction: column; + font-size: 14px; + line-height: 20px; + padding: 40px; text-align: center; } - -@media (max-height: 640px) { - body { - font-size: small; - } -} body > div { - margin: 0 0 1em 0; - } -body > div > p, -body > div > div { - margin: 4px 0; + margin: 0 0 var(--default-gap-large) 0; } -body > div > p:first-child { - margin: 1em 0 0 0; +body > div > * { + margin: 0 0 var(--default-gap-xsmall) 0; } a { text-decoration: none; } -select { - font: inherit; - padding: 2px; - } .code { - background-color: var(--bg-code); - font-family: monospace; - line-height: 1; - padding: 4px; + font-size: 13px; word-break: break-all; } #warningSign { width: 100%; } #warningSign > a { - fill: var(--large-icon-info-lvl-2); - font-size: 10em; - padding: 0; + fill: var(--yellow-50); + font-size: 96px; } #theURL { padding: 0; @@ -77,7 +63,7 @@ select { color: var(--fg-0-60); cursor: pointer; fill: var(--fg-0-60); - padding: 0.2em; + padding: var(--default-gap-xxsmall); position: absolute; transform: translate(0, -50%); } @@ -103,8 +89,8 @@ body[dir="rtl"] #theURL > p > span { border-top: none; color: var(--fg-0-80); font-size: small; - overflow-x: hidden; - padding: 4px; + overflow-x: auto; + padding: var(--default-gap-xxsmall); text-align: initial; text-overflow: ellipsis; } @@ -126,8 +112,17 @@ body[dir="rtl"] #theURL > p > span { #whyex a { white-space: nowrap; } -.proceedChoice { - text-align: left; +#proceed { + margin-bottom: var(--default-gap); + } +:root.mobile .proceedButtons { + justify-content: center; + display: flex; + flex-direction: column; + } +.proceedButtons > button { + margin-inline-end: var(--default-gap); + margin-block-end: var(--default-gap-xsmall); } .filterList:first-child .filterListSeparator { @@ -136,3 +131,8 @@ body[dir="rtl"] #theURL > p > span { .filterList .filterListSupport[href=""] { display: none; } + +/* Small-screen devices */ +:root.mobile button { + width: 100%; + } diff --git a/src/css/themes/default.css b/src/css/themes/default.css index c9524b22a00..d270ae85c3f 100644 --- a/src/css/themes/default.css +++ b/src/css/themes/default.css @@ -14,7 +14,7 @@ --blue-10: #80ebff; --blue-50: #0060df; --blue-60: #0250bb; - --ink-20: #312a64; + --ink-20: #312a65; --ink-50: #291d4f; --ink-80: #20123a; --ink-80-a4: #20123a0a; @@ -96,11 +96,15 @@ --button-disabled-filter: opacity(38%); --button-disabled-surface: var(--light-gray-30); --button-disabled-ink: var(--ink-20); + --button-preferred-surface: var(--ink-20); + --button-preferred-ink: white; --checkbox-size: calc(var(--font-size) + 2px); --checkbox-ink: var(--light-gray-90); --checkbox-checked-ink: var(--ink-20); + --select-surface: white; + --bg-transient-notice: hsla(60, 100%, 95%, 1); --dashboard-bar-shadow: diff --git a/src/document-blocked.html b/src/document-blocked.html index f5434746383..fc3db9eab19 100644 --- a/src/document-blocked.html +++ b/src/document-blocked.html @@ -17,36 +17,35 @@
+

-

+

+
-

-

-
+ + +

-

-

-
+

+ + +

+