From b50341089dc0075ea6bb5e46d66822f012f0344f Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Fri, 13 Jun 2025 12:46:05 -0400 Subject: [PATCH] [mv3] Expand "Develop" pane Move "No filtering" section in "Settings" to "Develop" pane. It is now possible to view/edit the list of hostnames for any of the filtering mode. This takes care of these issues: - https://github.com/uBlockOrigin/uBOL-home/issues/270 - https://github.com/uBlockOrigin/uBOL-home/issues/297 Add ability to see all rulesets (read-only), to assist in investigating filtering issues. --- .../mv3/extension/_locales/en/messages.json | 28 +- platform/mv3/extension/css/develop.css | 84 +- .../mv3/extension/css/line-hor-dashed.png | Bin 0 -> 80 bytes platform/mv3/extension/dashboard.html | 41 +- platform/mv3/extension/js/admin.js | 15 +- platform/mv3/extension/js/background.js | 56 +- platform/mv3/extension/js/dashboard.js | 6 +- platform/mv3/extension/js/develop.js | 1385 +++++++---------- platform/mv3/extension/js/dnr-editor.js | 180 +++ platform/mv3/extension/js/dnr-parser.js | 40 +- platform/mv3/extension/js/mode-editor.js | 76 + platform/mv3/extension/js/mode-manager.js | 59 +- platform/mv3/extension/js/mode-parser.js | 211 +++ platform/mv3/extension/js/ro-dnr-editor.js | 95 ++ platform/mv3/extension/js/ruleset-manager.js | 58 +- platform/mv3/extension/js/rw-dnr-editor.js | 401 +++++ platform/mv3/extension/js/settings.js | 71 - .../extension/lib/codemirror/codemirror-ubol | 2 +- src/js/i18n.js | 5 + 19 files changed, 1765 insertions(+), 1048 deletions(-) create mode 100644 platform/mv3/extension/css/line-hor-dashed.png create mode 100644 platform/mv3/extension/js/dnr-editor.js create mode 100644 platform/mv3/extension/js/mode-editor.js create mode 100644 platform/mv3/extension/js/mode-parser.js create mode 100644 platform/mv3/extension/js/ro-dnr-editor.js create mode 100644 platform/mv3/extension/js/rw-dnr-editor.js diff --git a/platform/mv3/extension/_locales/en/messages.json b/platform/mv3/extension/_locales/en/messages.json index e0c2038f2..f248475c1 100644 --- a/platform/mv3/extension/_locales/en/messages.json +++ b/platform/mv3/extension/_locales/en/messages.json @@ -295,6 +295,30 @@ "message": "Exit element zapper mode", "description": "Tooltip for the button used to exit zapper mode" }, + "developDropdownLabel": { + "message": "View:", + "description": "A label of a dropdown list" + }, + "developOptionFilteringModeDetails": { + "message": "Filtering mode details", + "description": "An option in a dropdown list" + }, + "developOptionCustomDnrRules": { + "message": "Custom DNR rules", + "description": "An option in a dropdown list" + }, + "developOptionDnrRulesOf": { + "message": "DNR rules of …", + "description": "A section header in a dropdown list" + }, + "developOptionDynamicRuleset": { + "message": "Dynamic ruleset", + "description": "An option in a dropdown list" + }, + "developOptionSessionRuleset": { + "message": "Session ruleset", + "description": "An option in a dropdown list" + }, "saveButton": { "message": "Save", "description": "Text for buttons used to save changes" @@ -311,8 +335,8 @@ "message": "Export…", "description": "Text for buttons used to export content" }, - "dnrRulesSummary": { - "message": "Enter your own DNR rules below. Do not add content from untrusted sources.", + "dnrRulesWarning": { + "message": "Do not add content from untrusted sources", "description": "Short description of the DNR rules editor pane" }, "dnrRulesCountInfo": { diff --git a/platform/mv3/extension/css/develop.css b/platform/mv3/extension/css/develop.css index 1ecc3ffd3..665206d00 100644 --- a/platform/mv3/extension/css/develop.css +++ b/platform/mv3/extension/css/develop.css @@ -19,38 +19,35 @@ section[data-pane="develop"] > div > * { margin-top: 1em; } -#cm-dnrRules { +#cm-container { flex-grow: 1; font-size: var(--monospace-size); overflow: hidden; } /* https://discuss.codemirror.net/t/how-to-set-max-height-of-the-editor/2882/2 */ -#cm-dnrRules .cm-editor { +#cm-container .cm-editor { background-color: var(--surface-0); height: 100%; } -#cm-dnrRules .cm-editor .cm-line { - border-bottom: 1px dotted transparent; - border-top: 1px dotted transparent; +#cm-container .cm-editor .cm-line:has(.ͼ5), +#cm-container .cm-editor .cm-line:has(.ͼw) { + background-image: url('line-hor-dashed.png'), url('line-hor-dashed.png'); + background-position: left 3px, left calc(100% - 3px); + background-repeat: repeat-x; } -#cm-dnrRules .cm-editor .cm-line:has(.ͼc) { - border-bottom: 1px dotted var(--border-1); - border-top: 1px dotted var(--border-1); - } - -#cm-dnrRules .cm-editor .cm-line.badline:not(.cm-activeLine) { +#cm-container .cm-editor .cm-line.badline:not(.cm-activeLine) { background-color: color-mix(in srgb, var(--info3-ink) 15%, transparent 85%); } -#cm-dnrRules .cm-editor .cm-line .badmark { +#cm-container .cm-editor .cm-line .badmark { text-decoration: underline var(--cm-negative) wavy; text-decoration-skip-ink: none; } -#cm-dnrRules .cm-editor .cm-panel.cm-search { +#cm-container .cm-editor .cm-panel.cm-search { display: flex; flex-wrap: wrap; font-family: sans-serif; @@ -59,13 +56,13 @@ section[data-pane="develop"] > div > * { padding: 0.5em 1.5em 0.5em 0.5em; } -#cm-dnrRules .cm-editor .cm-panel.cm-search > * { +#cm-container .cm-editor .cm-panel.cm-search > * { margin: 0; } -#cm-dnrRules .cm-editor .cm-panel.cm-search .cm-textfield, -#cm-dnrRules .cm-editor .cm-panel.cm-search .cm-button, -#cm-dnrRules .cm-editor .cm-panel.cm-search label { +#cm-container .cm-editor .cm-panel.cm-search .cm-textfield, +#cm-container .cm-editor .cm-panel.cm-search .cm-button, +#cm-container .cm-editor .cm-panel.cm-search label { background-image: inherit; border: inherit; flex-grow: 0; @@ -73,40 +70,77 @@ section[data-pane="develop"] > div > * { min-height: calc(var(--button-font-size) * 1.8); } -#cm-dnrRules .cm-editor .cm-panel.info-panel { +#cm-container .cm-editor .cm-panel .warning { + color: var(--info3-ink); + } + +#cm-container .cm-editor .cm-panel.io-panel { + background-color: var(--surface-1); + box-sizing: border-box; + display: inline-flex; + gap: 0.25em; + padding: 0.25em; + padding-inline-start: 0; + width: 100%; + } +#cm-container .cm-editor .cm-panel.io-panel button { + min-height: 30px; + } +#cm-container .cm-editor .cm-panel.io-panel button#revert { + margin-inline-end: 1em; + } +#cm-container .cm-editor .cm-panel.io-panel:not([data-io~="apply"]) button#apply { + display: none; + } +#cm-container .cm-editor .cm-panel.io-panel:not([data-io~="revert"]) button#revert { + display: none; + } +#cm-container .cm-editor .cm-panel.io-panel:not([data-io~="import"]) button#import { + display: none; + } +#cm-container .cm-editor .cm-panel.io-panel:not([data-io~="export"]) button#export { + display: none; + } + +#cm-container .cm-editor .cm-panel.info-panel { display: flex; flex-wrap: nowrap; font-size: var(--font-size); padding: var(--default-gap-xxsmall) var(--default-gap-xsmall); } -#cm-dnrRules .cm-editor .cm-panel.info-panel .info { +#cm-container .cm-editor .cm-panel.info-panel .info { flex-grow: 1; overflow: auto; } -#cm-dnrRules .cm-editor .cm-panel.info-panel .close { +#cm-container .cm-editor .cm-panel.info-panel .close { cursor: default; flex-shrink: 0; padding-inline-start: 1em; } -#cm-dnrRules .cm-editor .cm-panel.info-panel .close::after { +#cm-container .cm-editor .cm-panel.info-panel .close::after { content: '\2715'; } -#cm-dnrRules .cm-editor .cm-panel.summary-panel { + +#cm-container .cm-editor .cm-panel.summary-panel { background-color: color-mix(in srgb, var(--info1-ink) 15%, transparent 85%); + gap: 1em; + } +#cm-container .cm-editor .cm-panel.summary-panel .info { + flex-shrink: 0; } -#cm-dnrRules .cm-editor .cm-panel.feedback-panel { +#cm-container .cm-editor .cm-panel.feedback-panel { background-color: color-mix(in srgb, var(--info3-ink) 15%, transparent 85%); white-space: pre; max-height: 10cqh; } -#cm-dnrRules .cm-editor .cm-gutterElement { +#cm-container .cm-editor .cm-gutterElement { cursor: default; user-select: none; } -#cm-dnrRules .cm-editor .cm-tooltip .badmark-tooltip { +#cm-container .cm-editor .cm-tooltip .badmark-tooltip { background-color: color-mix(in srgb, var(--info3-ink) 15%, transparent 85%); padding: var(--default-gap-xxsmall) var(--default-gap-xsmall); } \ No newline at end of file diff --git a/platform/mv3/extension/css/line-hor-dashed.png b/platform/mv3/extension/css/line-hor-dashed.png new file mode 100644 index 0000000000000000000000000000000000000000..cb124a2b5426cd775e45ce56e395c48040ad7317 GIT binary patch literal 80 zcmeAS@N?(olHy`uVBq!ia0vp^3P8-r!3HGvcdbbWQsSO2jv*Y^lXdj<^AjAH=FXj~ dQ4@8VnIWl8fXRAptPxNNgQu&X%Q~loCIEY65^Vqg literal 0 HcmV?d00001 diff --git a/platform/mv3/extension/dashboard.html b/platform/mv3/extension/dashboard.html index 91306b845..ee64de6bf 100644 --- a/platform/mv3/extension/dashboard.html +++ b/platform/mv3/extension/dashboard.html @@ -89,12 +89,6 @@

- -

-

-

_

-
-
@@ -108,14 +102,17 @@

- - -   - - +  

-

-
+
@@ -165,16 +162,24 @@ + +