Compare commits

..

No commits in common. "master" and "1.69.1b1" have entirely different histories.

34 changed files with 132 additions and 159 deletions

View file

@ -12,7 +12,7 @@ jobs:
permissions:
contents: write # for creating release
name: Build packages
runs-on: ubuntu-slim
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
steps:
- name: Clone repository

View file

@ -1,8 +1,3 @@
- [Improve `json-edit`-related scriptlets](https://github.com/gorhill/uBlock/commit/98d3e9500a)
- [Improve `trusted-create-html` scriptlet](https://github.com/gorhill/uBlock/commit/baffd32dab)
- [Improve `prevent-fetch` scriptlet](https://github.com/gorhill/uBlock/commit/2ce376cf1d)
- [Fix handling of `extraMatch` parameter in `trusted-click-element` scriptlet](https://github.com/gorhill/uBlock/commit/a8ad95394d)
- [Improve `generateContentFn` helper scriptlet](https://github.com/gorhill/uBlock/commit/7d95c58408)
- [Improve `prevent-xhr` scriptlet](https://github.com/gorhill/uBlock/commit/168394440c)
- [Improve `proxyApplyFn` helper scriptlet](https://github.com/gorhill/uBlock/commit/18a8fc7675)

View file

@ -3,13 +3,13 @@
"uBlock0@raymondhill.net": {
"updates": [
{
"version": "1.69.1.4",
"version": "1.68.1.102",
"browser_specific_settings": {
"gecko": {
"strict_min_version": "115.0"
}
},
"update_link": "https://github.com/gorhill/uBlock/releases/download/1.69.1b4/uBlock0_1.69.1b4.firefox.signed.xpi"
"update_link": "https://github.com/gorhill/uBlock/releases/download/1.68.1rc2/uBlock0_1.68.1rc2.firefox.signed.xpi"
}
]
}

2
dist/version vendored
View file

@ -1 +1 @@
1.70.0
1.69.1.1

View file

@ -384,11 +384,11 @@
"description": "Text for buttons used to restore content"
},
"resetToDefaultButton": {
"message": "إعادة تعيين إلى الإعدادات الافتراضية…",
"message": "Reset to default settings…",
"description": "Text for buttons used to reset configurations to default"
},
"resetToDefaultConfirm": {
"message": "سيتم حذف جميع إعداداتك المخصصة. هل تريد حقاً إعادة ضبط الإعدادات إلى الوضع الافتراضي؟",
"message": "All your custom settings will be removed. Do you really want to reset to default settings?",
"description": "Message asking user to confirm reset to default settings"
},
"dnrRulesWarning": {

View file

@ -136,7 +136,7 @@
"description": "Label of 'Troubleshooting information' section in 'Report a filter issue' page"
},
"supportS6P1S1": {
"message": "Um die Freiwilligen nicht mit doppelten Meldungen zu überlasten, vergewissern Sie sich bitte, dass das Problem noch nicht gemeldet wurde. <b>Hinweis:</b> Das Anklicken der Schaltfläche übermittelt die Internetadresse an GitHub.",
"message": "Um die Freiwilligen nicht mit doppelten Meldungen zu überlasten, vergewissern Sie sich bitte, dass das Problem noch nicht gemeldet wurde. <b>Hinweis:</b> Das Anklicken der Schaltfläche übermittelt den Ursprung der Seite an GitHub.",
"description": "A paragraph in the filter issue reporter section"
},
"supportFindSpecificButton": {
@ -156,11 +156,11 @@
"description": "An entry in the widget used to select the type of issue"
},
"supportS6Select1Option1": {
"message": "Zeigt Werbung oder deren Überreste",
"message": "Zeigt Werbung oder Werbereste",
"description": "An entry in the widget used to select the type of issue"
},
"supportS6Select1Option2": {
"message": "Enthält überdeckende oder belästigende Elemente",
"message": "Hat Überdeckungen oder andere Belästigungen",
"description": "An entry in the widget used to select the type of issue"
},
"supportS6Select1Option3": {
@ -168,7 +168,7 @@
"description": "An entry in the widget used to select the type of issue"
},
"supportS6Select1Option4": {
"message": "Weist Datenschutzprobleme auf",
"message": "Hat Datenschutzprobleme",
"description": "An entry in the widget used to select the type of issue"
},
"supportS6Select1Option5": {
@ -196,7 +196,7 @@
"description": "The header text for the default filtering mode section"
},
"defaultFilteringModeDescription": {
"message": "Der Standardfiltermodus wird durch den eingestellten Filtermodus der jeweiligen Website überschrieben. Er kann auf jeder beliebigen Website individuell angepasst werden. Jeder Modus hat seine Vor- und Nachteile.",
"message": "Der Standardfiltermodus wird durch individuelle Filtermodi für die jeweiligen Websites überschrieben. Sie können den Filtermodus auf jeder beliebigen Website entsprechend dem Modus anpassen, der auf dieser Website am besten funktioniert. Jeder Modus hat seine Vor- und Nachteile.",
"description": "This describes the default filtering mode setting"
},
"filteringMode0Name": {
@ -216,15 +216,15 @@
"description": "Name of blocking mode 3"
},
"basicFilteringModeDescription": {
"message": "Einfaches Netzwerkfiltern durch ausgewählte Filterlisten.\n\nErfordert keine Berechtigung zum Lesen und Ändern von Daten auf Websites.",
"message": "Einfaches Netzwerkfiltern aus gewählten Filterlisten.\n\nErfordert keine Berechtigung zum Lesen und Ändern von Daten auf Websites.",
"description": "This describes the 'basic' filtering mode"
},
"optimalFilteringModeDescription": {
"message": "Erweitertes Netzwerkfiltern plus umfassendes Filtern durch ausgewählte Filterlisten.\n\nErfordert eine weitreichende Berechtigung zum Lesen und Ändern von Daten auf allen Websites.",
"message": "Erweitertes Netzwerkfiltern plus spezifisches erweitertes Filtern aus ausgewählten Filterlisten.\n\nErfordert eine weitreichende Berechtigung zum Lesen und Ändern von Daten auf allen Websites.",
"description": "This describes the 'optimal' filtering mode"
},
"completeFilteringModeDescription": {
"message": "Erweitertes Netzwerkfiltern plus umfassendes und allgemeines Filtern durch ausgewählte Filterlisten.\n\nErfordert eine weitreichende Berechtigung zum Lesen und Ändern von Daten auf allen Websites.\n\nDas allgemeine Filtern kann zu einem höheren Ressourcenverbrauch der Webseite führen.",
"message": "Erweitertes Netzwerkfiltern plus spezifisches und allgemeines erweitertes Filtern aus gewählten Filterlisten.\n\nErfordert eine weitreichende Berechtigung zum Lesen und Ändern von Daten auf allen Websites.\n\nDas allgemeine erweiterte Filtern kann zu einem höheren Ressourcenverbrauch der Webseite führen.",
"description": "This describes the 'complete' filtering mode"
},
"noFilteringModeDescription": {
@ -264,7 +264,7 @@
"description": "Short description for a checkbox in the options page"
},
"settingsBackupRestoreLabel": {
"message": "Backup",
"message": "Sicherung",
"description": "The header text for the back up/restore section"
},
"settingsBackupRestoreSummary": {

View file

@ -384,11 +384,11 @@
"description": "Text for buttons used to restore content"
},
"resetToDefaultButton": {
"message": "ჩამოყრა ნაგულისხმევ პარამეტრებზე…",
"message": "Reset to default settings…",
"description": "Text for buttons used to reset configurations to default"
},
"resetToDefaultConfirm": {
"message": "ყველა მორგებული პარამეტრი მოცილდება. ნამდვილად გსურთ დაბრუნება ნაგულისხმევ პარამეტრებზე?",
"message": "All your custom settings will be removed. Do you really want to reset to default settings?",
"description": "Message asking user to confirm reset to default settings"
},
"dnrRulesWarning": {

View file

@ -52,7 +52,7 @@
"description": "English: Click to open the dashboard"
},
"popupMoreButton": {
"message": "더 보기",
"message": "자세히",
"description": "Label to be used to show popup panel sections"
},
"popupLessButton": {
@ -72,7 +72,7 @@
"description": "Header for a ruleset section in 'Filter lists pane'"
},
"3pGroupMalware": {
"message": "멀웨어 및 보안",
"message": "멀웨어 도메인",
"description": "Header for a ruleset section in 'Filter lists pane'"
},
"3pGroupAnnoyances": {
@ -168,7 +168,7 @@
"description": "An entry in the widget used to select the type of issue"
},
"supportS6Select1Option4": {
"message": "개인정보 보호 관련 문제가 있습니다",
"message": "개인정보 보호 관련 이슈가 있습니다",
"description": "An entry in the widget used to select the type of issue"
},
"supportS6Select1Option5": {
@ -184,7 +184,7 @@
"description": "An entry in the widget used to select the type of issue"
},
"supportS6Checkbox1": {
"message": "웹페이지를 \"NSFW\" (<a href=\"https://ko.wikipedia.org/wiki/NSFW\">“Not Safe For Work”</a>)로 분류",
"message": "웹페이지를 \"NSFW\" (<a href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”</a>)로 분류",
"description": "A checkbox to use for NSFW sites"
},
"supportReportSpecificButton": {
@ -252,7 +252,7 @@
"description": "Label for a checkbox in the options page"
},
"enableStrictBlockLegend": {
"message": "잠재적으로 유해할 수 있는 사이트로의 접속이 차단되며, 계속 진행할지 여부를 선택할 수 있는 옵션이 제공됩니다.",
"message": "잠재적으로 좋지 않은 사이트로의 접속을 차단하고, 사용자가 진행할지 선택하도록 합니다.",
"description": "Short description for a checkbox in the options page"
},
"developerModeLabel": {

View file

@ -384,11 +384,11 @@
"description": "Text for buttons used to restore content"
},
"resetToDefaultButton": {
"message": "Đặt lại về cài đặt mặc định…",
"message": "Reset to default settings…",
"description": "Text for buttons used to reset configurations to default"
},
"resetToDefaultConfirm": {
"message": "Tất cả cài đặt tùy chỉnh của bạn sẽ bị xóa. Bạn có thực sự muốn đặt lại về cài đặt mặc định không?",
"message": "All your custom settings will be removed. Do you really want to reset to default settings?",
"description": "Message asking user to confirm reset to default settings"
},
"dnrRulesWarning": {

View file

@ -680,7 +680,7 @@ async function startSession() {
const shouldInject = isNewVersion || permissionsUpdated ||
isSideloaded && rulesetConfig.developerMode;
if ( shouldInject ) {
await registerInjectables();
registerInjectables();
}
// Cosmetic filtering-related content scripts cache fitlering data in
@ -730,11 +730,6 @@ async function start() {
scrmgr.onWakeupRun();
}
const scripts = await scrmgr.getRegisteredContentScripts();
if ( scripts.length === 0 ) {
registerInjectables();
}
toggleDeveloperMode(rulesetConfig.developerMode);
}

View file

@ -50,7 +50,7 @@ const reportedPage = (( ) => {
}
return {
hostname: parsedURL.hostname.replace(/^(m|mobile|www)\./, ''),
siteMode: parseInt(url.searchParams.get('mode'), 10),
mode: url.searchParams.get('mode'),
tabId: parseInt(url.searchParams.get('tabid'), 10) || 0,
};
} catch {

View file

@ -191,6 +191,16 @@
],
"homeURL": "https://github.com/uBlockOrigin/uAssets"
},
{
"id": "stevenblack-hosts",
"name": "Steven Blacks Unified Hosts (adware + malware)",
"enabled": false,
"excludedPlatforms": [ "safari" ],
"urls": [
"https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts"
],
"homeURL": "https://github.com/StevenBlack/hosts#readme"
},
{
"id": "ubol-tests",
"name": "uBO Lite Test Filters",

View file

@ -45,11 +45,10 @@ function patchRule(rule, out) {
if ( copy.action.type === 'modifyHeaders' ) { return; }
if ( Array.isArray(copy.condition.responseHeaders) ) { return; }
// https://github.com/uBlockOrigin/uBOL-home/issues/476#issuecomment-3299309478
// https://github.com/uBlockOrigin/uBOL-home/issues/608
if ( copy.action.redirect?.transform?.queryTransform?.removeParams ) {
const resourceTypes = condition.resourceTypes;
if ( resourceTypes?.includes('main_frame') ) {
condition.resourceTypes = resourceTypes.filter(a => a !== 'main_frame' && a !== 'image');
condition.resourceTypes = resourceTypes.filter(a => a !== 'main_frame');
if ( condition.resourceTypes.length === 0 ) { return; }
}
}

View file

@ -220,7 +220,7 @@
"description": "Tooltip when hovering the top-most cell of the global-rules column."
},
"popupTipLocalRules": {
"message": "الشروط المؤقتة: هذا العمود يتعلق بالقواعد التي تنطبق فقط على الموقع المزار حاليا.\nالشروط المؤقتة تحل محل الشروط العامة.",
"message": "القواعد الموضعية: هذا العمود يتعلق بالقواعد التي تنطبق فقط على الموقع المزار حاليا.\nالقواعد الموضعية تحل محل القواعد العامة.",
"description": "Tooltip when hovering the top-most cell of the local-rules column."
},
"popupTipSaveRules": {

View file

@ -220,7 +220,7 @@
"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.",
"message": "Local rules: this column is for rules which apply to the current site only.\nLocal rules override global rules.",
"description": "Tooltip when hovering the top-most cell of the local-rules column."
},
"popupTipSaveRules": {

View file

@ -220,7 +220,7 @@
"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.",
"message": "Local rules: this column is for rules which apply to the current site only.\nLocal rules override global rules.",
"description": "Tooltip when hovering the top-most cell of the local-rules column."
},
"popupTipSaveRules": {

View file

@ -220,7 +220,7 @@
"description": "Tooltip when hovering the top-most cell of the global-rules column."
},
"popupTipLocalRules": {
"message": "Lokale regler: denne søjle viser de regler der gælder kun på denne side.\nLokale regler overskriver globale regler.",
"message": "Lokale regler: Denne kolonne er til regler kun gældene dette websted.\nLokale regler tilsidesætter globale regler.",
"description": "Tooltip when hovering the top-most cell of the local-rules column."
},
"popupTipSaveRules": {

View file

@ -216,11 +216,11 @@
"description": "Label to be used to hide popup panel sections"
},
"popupTipGlobalRules": {
"message": "Globale Regeln: Die Regeln in dieser Spalte gelten für alle Websites.",
"message": "Globale Regeln: Diese Spalte ist für Regeln, die für alle Websites gelten.",
"description": "Tooltip when hovering the top-most cell of the global-rules column."
},
"popupTipLocalRules": {
"message": "Lokale Regeln: Die Regeln in dieser Spalte gelten nur für diese Website.",
"message": "Lokale Regeln: Diese Spalte ist für Regeln, die nur für die aktuelle Website gelten.\nLokale Regeln überschreiben globale Regeln.",
"description": "Tooltip when hovering the top-most cell of the local-rules column."
},
"popupTipSaveRules": {
@ -416,7 +416,7 @@
"description": "English: Last restore:"
},
"settingsLastBackupPrompt": {
"message": "Letztes Backup:",
"message": "Letzte Sicherung:",
"description": "English: Last backup:"
},
"3pListsOfBlockedHostsPrompt": {
@ -960,7 +960,7 @@
"description": "Header of 'Report a filter issue' section in Support pane"
},
"supportS6P1S1": {
"message": "Um die Freiwilligen nicht mit doppelten Meldungen zu überlasten, vergewissern Sie sich bitte, dass das Problem noch nicht gemeldet wurde. <b>Hinweis:</b> Das Anklicken der Schaltfläche übermittelt die Internetadresse an GitHub.",
"message": "Um die Freiwilligen nicht mit doppelten Meldungen zu überlasten, vergewissern Sie sich bitte, dass das Problem noch nicht gemeldet wurde. <b>Hinweis:</b> Das Anklicken der Schaltfläche übermittelt den Ursprung der Seite an GitHub.",
"description": "A paragraph in the filter issue reporter section"
},
"supportS6P2S1": {
@ -984,11 +984,11 @@
"description": "An entry in the widget used to select the type of issue"
},
"supportS6Select1Option1": {
"message": "Zeigt Werbung oder deren Überreste",
"message": "Zeigt Werbung oder Werbereste",
"description": "An entry in the widget used to select the type of issue"
},
"supportS6Select1Option2": {
"message": "Enthält überdeckende oder belästigende Elemente",
"message": "Hat Überdeckungen oder andere Belästigungen",
"description": "An entry in the widget used to select the type of issue"
},
"supportS6Select1Option3": {
@ -996,7 +996,7 @@
"description": "An entry in the widget used to select the type of issue"
},
"supportS6Select1Option4": {
"message": "Weist Datenschutzprobleme auf",
"message": "Hat Datenschutzprobleme",
"description": "An entry in the widget used to select the type of issue"
},
"supportS6Select1Option5": {
@ -1060,7 +1060,7 @@
"description": "Text for button to create a backup of all settings"
},
"aboutBackupFilename": {
"message": "ublock-backup_{{datetime}}.txt",
"message": "ublock-sicherung_{{datetime}}.txt",
"description": "English: my-ublock-backup_{{datetime}}.txt"
},
"aboutRestoreDataButton": {
@ -1072,7 +1072,7 @@
"description": "English: Reset to default settings..."
},
"aboutRestoreDataConfirm": {
"message": "Alle Einstellungen werden überschrieben und auf den Stand vom {{time}} gebracht. Anschließend wird uBlock₀ neu gestartet.\n\nSollen die aktuellen Einstellungen durch das Backup ersetzt werden?",
"message": "Alle Einstellungen werden überschrieben und auf den Stand vom {{time}} gebracht. Anschließend wird uBlock₀ neu gestartet.\n\nSollen die aktuellen Einstellungen durch die Sicherung ersetzt werden?",
"description": "Message asking user to confirm restore"
},
"aboutRestoreDataError": {

View file

@ -220,7 +220,7 @@
"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.",
"message": "Local rules: this column is for rules which apply to the current site only.\nLocal rules override global rules.",
"description": "Tooltip when hovering the top-most cell of the local-rules column."
},
"popupTipSaveRules": {

View file

@ -220,7 +220,7 @@
"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.",
"message": "Local rules: this column is for rules which apply to the current site only.\nLocal rules override global rules.",
"description": "Tooltip when hovering the top-most cell of the local-rules column."
},
"popupTipSaveRules": {

View file

@ -220,7 +220,7 @@
"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.",
"message": "Local rules: this column is for rules which apply to the current site only.\nLocal rules override global rules.",
"description": "Tooltip when hovering the top-most cell of the local-rules column."
},
"popupTipSaveRules": {

View file

@ -220,7 +220,7 @@
"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.",
"message": "Local rules: this column is for rules which apply to the current site only.\nLocal rules override global rules.",
"description": "Tooltip when hovering the top-most cell of the local-rules column."
},
"popupTipSaveRules": {

View file

@ -12,7 +12,7 @@
"description": "English: uBlock₀ — Dashboard"
},
"dashboardUnsavedWarning": {
"message": "경고: 저장되지 않은 변경 사항이 있습니다!",
"message": "경고! 저장되지 않은 변경 사항이 있습니다",
"description": "A warning in the dashboard when navigating away from unsaved changes"
},
"dashboardUnsavedWarningStay": {
@ -72,7 +72,7 @@
"description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page."
},
"popupPowerSwitchInfo1": {
"message": "클릭: 이 사이트에서 uBlock₀을 비활성화합니다.\nCtrl+클릭: 이 페이지에서만 uBlock₀을 비활성화합니다.",
"message": "클릭: 이 사이트에서 uBlock₀을 끕니다.\n\nCtrl+클릭: 이 페이지에서만 uBlock₀을 끕니다.",
"description": "Message to be read by screen readers"
},
"popupPowerSwitchInfo2": {
@ -96,7 +96,7 @@
"description": "English: since install"
},
"popupOr": {
"message": "또는",
"message": "/",
"description": "English: or"
},
"popupBlockedOnThisPage_v2": {
@ -128,7 +128,7 @@
"description": "Tooltip used for the logger icon in the panel"
},
"popupTipReport": {
"message": "이 사이트의 문제 신고",
"message": "이 사이트의 이슈 신고",
"description": "Tooltip used for the 'chat' icon in the panel"
},
"popupTipNoPopups": {
@ -136,27 +136,27 @@
"description": "Tooltip for the no-popups per-site switch"
},
"popupTipNoPopups1": {
"message": "클릭하여 이 사이트에서 모든 팝업을 차단합니다",
"message": "클릭하여 이 사이트에서 모든 팝업을 차단합니다.",
"description": "Tooltip for the no-popups per-site switch"
},
"popupTipNoPopups2": {
"message": "클릭하여 이 사이트에서 팝업 차단을 해제합니다",
"message": "클릭하여 이 사이트에서 모든 팝업 차단을 해제합니다.",
"description": "Tooltip for the no-popups per-site switch"
},
"popupTipNoLargeMedia": {
"message": "이 사이트에서만 적용되는 대용량 미디어 요소 차단 기능을 켜고 끕니다",
"message": "이 사이트에서만 적용되는 대형 미디어 구성요소 차단 기능을 켜고 끕니다.",
"description": "Tooltip for the no-large-media per-site switch"
},
"popupTipNoLargeMedia1": {
"message": "클릭하여 이 사이트에서 대용량 미디어를 차단합니다",
"message": "클릭하여 이 사이트에서 대용량 미디어를 차단합니다.",
"description": "Tooltip for the no-large-media per-site switch"
},
"popupTipNoLargeMedia2": {
"message": "클릭하여 이 사이트에서 대용량 미디어 차단을 해제합니다",
"message": "클릭하여 이 사이트에서 대용량 미디어 차단을 해제합니다.",
"description": "Tooltip for the no-large-media per-site switch"
},
"popupTipNoCosmeticFiltering": {
"message": "이 사이트에서 요소 숨김 필터링 토글",
"message": "이 사이트에서 시각적 필터링 토글",
"description": "Tooltip for the no-cosmetic-filtering per-site switch"
},
"popupTipNoCosmeticFiltering1": {
@ -168,23 +168,23 @@
"description": "Tooltip for the no-cosmetic-filtering per-site switch"
},
"popupTipNoRemoteFonts": {
"message": "이 사이트에서 외부 폰트 차단 토글",
"message": "이 사이트에서 글꼴조정 차단 토글",
"description": "Tooltip for the no-remote-fonts per-site switch"
},
"popupTipNoRemoteFonts1": {
"message": "클릭하여 이 사이트에서 외부 폰트를 차단합니다",
"message": "클릭하여 이 사이트에서 외부 폰트를 차단합니다.",
"description": "Tooltip for the no-remote-fonts per-site switch"
},
"popupTipNoRemoteFonts2": {
"message": "클릭하여 이 사이트에서 외부 폰트 차단을 해제합니다",
"message": "클릭하여 이 사이트에서 더 이상 외부 폰트를 차단하지 않습니다.",
"description": "Tooltip for the no-remote-fonts per-site switch"
},
"popupTipNoScripting1": {
"message": "클릭하여 이 사이트에서 JavaScript 비활성화합니다",
"message": "클릭하여 이 사이트에서 JavaScript 비활성화",
"description": "Tooltip for the no-scripting per-site switch"
},
"popupTipNoScripting2": {
"message": "클릭하여 이 사이트에서 JavaScript 활성화합니다",
"message": "클릭하여 이 사이트에서 JavaScript 활성화",
"description": "Tooltip for the no-scripting per-site switch"
},
"popupNoPopups_v2": {
@ -192,7 +192,7 @@
"description": "Caption for the no-popups per-site switch"
},
"popupNoLargeMedia_v2": {
"message": "대용량 미디어 요소",
"message": " 미디어 요소",
"description": "Caption for the no-large-media per-site switch"
},
"popupNoCosmeticFiltering_v2": {
@ -204,11 +204,11 @@
"description": "Caption for the no-remote-fonts per-site switch"
},
"popupNoScripting_v2": {
"message": "JavaScript",
"message": "자바스크립트",
"description": "Caption for the no-scripting per-site switch"
},
"popupMoreButton_v2": {
"message": "더 보기",
"message": "더보기",
"description": "Label to be used to show popup panel sections"
},
"popupLessButton_v2": {
@ -240,11 +240,11 @@
"description": ""
},
"popup3pAnyRulePrompt": {
"message": "서드 파티 필터",
"message": "보조 필터",
"description": ""
},
"popup3pPassiveRulePrompt": {
"message": "서드 파티 CSS/이미지",
"message": "보조 CSS/이미지",
"description": ""
},
"popupInlineScriptRulePrompt": {
@ -252,15 +252,15 @@
"description": ""
},
"popup1pScriptRulePrompt": {
"message": "스크립트",
"message": "스크립트",
"description": ""
},
"popup3pScriptRulePrompt": {
"message": "서드 파티 스크립트",
"message": "보조 스크립트",
"description": ""
},
"popup3pFrameRulePrompt": {
"message": "서드 파티 프레임",
"message": "보조 프레임",
"description": ""
},
"popupHitDomainCountPrompt": {
@ -300,11 +300,11 @@
"description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page"
},
"pickerNetFilters": {
"message": "네트워크 필터",
"message": " 필터",
"description": "English: header for a type of filter in the element picker dialog"
},
"pickerCosmeticFilters": {
"message": "요소 숨김 필터",
"message": "표면 필터",
"description": "English: Cosmetic filters"
},
"pickerCosmeticFiltersHint": {
@ -316,7 +316,7 @@
"description": "An entry in the browser's contextual menu"
},
"settingsCollapseBlockedPrompt": {
"message": "차단된 요소의 자리 감추기",
"message": "차단된 구성 요소의 자리 감추기",
"description": "English: Hide placeholders of blocked elements"
},
"settingsIconBadgePrompt": {
@ -332,7 +332,7 @@
"description": "English: Make use of context menu where appropriate"
},
"settingsColorBlindPrompt": {
"message": "색맹 접근성 향상",
"message": "색맹 최적화",
"description": "English: Color-blind friendly"
},
"settingsAppearance": {
@ -376,7 +376,7 @@
"description": ""
},
"settingsNoCosmeticFilteringPrompt": {
"message": "요소 숨김 필터 비활성화",
"message": "표면 필터 비활성화",
"description": ""
},
"settingsNoLargeMediaPrompt": {
@ -384,7 +384,7 @@
"description": ""
},
"settingsNoRemoteFontsPrompt": {
"message": "외부 폰트 차단",
"message": "글꼴 조종 차단",
"description": ""
},
"settingsNoScriptingPrompt": {
@ -420,7 +420,7 @@
"description": "English: Last backup:"
},
"3pListsOfBlockedHostsPrompt": {
"message": "{{netFilterCount}} 네트워크 필터 {{cosmeticFilterCount}} 요소 숨김 필터:",
"message": "{{netFilterCount}} 네트워크 필터 {{cosmeticFilterCount}} 표면 필터:",
"description": "Appears at the top of the _3rd-party filters_ pane"
},
"3pListsOfBlockedHostsPerListStats": {
@ -440,7 +440,7 @@
"description": "A button in the in the _3rd-party filters_ pane"
},
"3pParseAllABPHideFiltersPrompt1": {
"message": "요소 숨김 필터 분석 및 적용",
"message": "표면 필터 분석 및 적용",
"description": "English: Parse and enforce Adblock+ element hiding filters."
},
"3pParseAllABPHideFiltersInfo": {
@ -448,7 +448,7 @@
"description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature."
},
"3pIgnoreGenericCosmeticFilters": {
"message": "범용 요소 숨김 필터 무시",
"message": "전체적 표면 필터 무시",
"description": "This will cause uBO to ignore all generic cosmetic filters."
},
"3pIgnoreGenericCosmeticFiltersInfo": {
@ -468,7 +468,7 @@
"description": "English: Apply changes"
},
"3pGroupDefault": {
"message": "기본 내장",
"message": "Ublock₀ 제공",
"description": "Filter lists section name"
},
"3pGroupAds": {
@ -476,11 +476,11 @@
"description": "Filter lists section name"
},
"3pGroupPrivacy": {
"message": "개인정보 보호",
"message": "개인정보",
"description": "Filter lists section name"
},
"3pGroupMalware": {
"message": "멀웨어 및 보안",
"message": "멀웨어 도메인",
"description": "Filter lists section name"
},
"3pGroupSocial": {
@ -488,11 +488,11 @@
"description": "Filter lists section name"
},
"3pGroupCookies": {
"message": "쿠키 공지",
"message": "쿠키 알림",
"description": "Filter lists section name"
},
"3pGroupAnnoyances": {
"message": "방해 요소",
"message": "골칫거리",
"description": "Filter lists section name"
},
"3pGroupMultipurpose": {
@ -500,7 +500,7 @@
"description": "Filter lists section name"
},
"3pGroupRegions": {
"message": "지역 언어",
"message": "지역, 언어",
"description": "Filter lists section name"
},
"3pGroupCustom": {
@ -740,7 +740,7 @@
"description": "A keyword in the built-in row filtering expression"
},
"loggerRowFiltererBuiltin3p": {
"message": "서드 파티",
"message": "보조",
"description": "A keyword in the built-in row filtering expression"
},
"loggerEntryDetailsHeader": {
@ -796,7 +796,7 @@
"description": "Small header to identify the static filtering section"
},
"loggerStaticFilteringSentence": {
"message": "네트워크 요청이 {{type}} 일 경우,{{br}}URL 주소가 {{url}} 와 일치하고{{br}}{{origin}} 에서 비롯되었을 경우 {{action}} 한다.{{br}}그리고 다음 예외 필터와 일치할 경우 {{importance}} 한다.",
"message": "네트워크 요청이 {{type}} 일 경우,{{br}}URL 주소가 {{url}} 와 일치하고{{br}}{{origin}} 에서 비롯 되었을 경우 {{action}} 한다.{{br}}그리고 다음 예외 필터와 일치할 경우 {{importance}} 한다.",
"description": "Used in the static filtering wizard"
},
"loggerStaticFilteringSentencePartBlock": {
@ -836,7 +836,7 @@
"description": "Below this sentence, the filter list(s) in which the filter was found"
},
"loggerStaticFilteringFinderSentence2": {
"message": "현재 활성화된 필터 목록에서 정적 필터를 찾을 수 없습니다",
"message": "활성화된 정적 필터 목록에서 <code>{{filter}}</code>를 찾지 못했습니다",
"description": "Message to show when a filter cannot be found in any filter lists"
},
"loggerSettingDiscardPrompt": {
@ -928,11 +928,11 @@
"description": "Header of 'Filter issues' section in Support pane"
},
"supportS3P1": {
"message": "특정 웹사이트에서 발생하는 필터 문제는 <span data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\"><code>uBlockOrigin/uAssets</code> 이슈 트래커</span>에 보고해주세요. GitHub 계정이 필요합니다",
"message": "특정 웹사이트에서 발생하는 필터 이슈는 <span data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\"><code>uBlockOrigin/uAssets</code> 이슈 트래커</span>에 보고해주세요. GitHub 계정이 필요합니다.",
"description": "First paragraph of 'Filter issues' section in Support pane"
},
"supportS3P2": {
"message": "<b>중요:</b> uBlock Origin과 유사한 목적의 다른 차단기를 함께 사용하지 마세요. 일부 웹사이트에서 필터 문제가 발생할 수 있습니다.",
"message": "<b>중요:</b> uBlock Origin과 유사한 목적의 다른 차단기를 함께 사용하지 마세요. 특정 웹사이트에서 필터 문제가 발생할 수 있습니다.",
"description": "Second paragraph of 'Filter issues' section in Support pane"
},
"supportS3P3": {
@ -952,23 +952,23 @@
"description": "Header of 'Troubleshooting Information' section in Support pane"
},
"supportS5P1": {
"message": "다음은 자원봉사자들이 문제를 해결을 돕는 데 유용할 수 있는 기술적인 정보입니다.",
"message": "다음은 자원 봉사자들이 문제를 해결하는 데에 도움을 줄 때 유용할 수 있는 기술적인 정보입니다.",
"description": "First paragraph of 'Troubleshooting Information' section in Support pane"
},
"supportS6H": {
"message": "필터 문제 신고",
"message": "필터 이슈 신고",
"description": "Header of 'Report a filter issue' section in Support pane"
},
"supportS6P1S1": {
"message": "자원봉사자들이 중복 신고로 인해 부담을 겪지 않도록, 해당 문제가 이미 신고되지는 않았는지 확인해주시기 바랍니다. <b>중요:</b> 버튼을 클릭하면 페이지의 출처가 GitHub로 전송됩니다.",
"message": "봉사자들이 중복 신고로 인해 부담을 겪지 않도록, 해당 이슈가 이미 신고되지는 않았는지 확인해주시기 바랍니다.",
"description": "A paragraph in the filter issue reporter section"
},
"supportS6P2S1": {
"message": "필터 목록은 매일 업데이트됩니다. 최신 필터 목록에서 문제가 이미 해결되었는지 확인해 주세요.",
"message": "필터 목록은 매일 갱신됩니다. 최신 필터 목록에서 문제가 이미 해결되진 않았는지 확인하세요.",
"description": "A paragraph in the filter issue reporter section"
},
"supportS6P2S2": {
"message": "문제가 있는 웹페이지를 새로고침한 후에도 문제가 여전히 발생하는지 확인해 주세요.",
"message": "문제가 생긴 웹페이지를 새로고침해도 문제가 여전히 남아 있는지 확인하세요.",
"description": "A paragraph in the filter issue reporter section"
},
"supportS6URL": {
@ -1012,11 +1012,11 @@
"description": "An entry in the widget used to select the type of issue"
},
"supportS6Checkbox1": {
"message": "웹 페이지를 “NSFW” (<a href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”</a>)로 분류",
"message": "웹페이지를 \"NSFW\" (<a href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”</a>)로 분류",
"description": "A checkbox to use for NSFW sites"
},
"aboutPrivacyPolicy": {
"message": "개인정보 처리방침",
"message": "개인정보취급방침",
"description": "Link to privacy policy on GitHub (English)"
},
"aboutChangelog": {
@ -1092,31 +1092,31 @@
"description": "For the button used to subscribe to a filter list"
},
"elapsedOneMinuteAgo": {
"message": "1분 전",
"message": "1 분 전",
"description": "English: a minute ago"
},
"elapsedManyMinutesAgo": {
"message": "{{value}}분 전",
"message": "{{value}} 분 전",
"description": "English: {{value}} minutes ago"
},
"elapsedOneHourAgo": {
"message": "1시간 전",
"message": "1 시간 전",
"description": "English: an hour ago"
},
"elapsedManyHoursAgo": {
"message": "{{value}}시간 전",
"message": "{{value}} 시간 전",
"description": "English: {{value}} hours ago"
},
"elapsedOneDayAgo": {
"message": "1일 전",
"message": "1 일 전",
"description": "English: a day ago"
},
"elapsedManyDaysAgo": {
"message": "{{value}}일 전",
"message": "{{value}} 일 전",
"description": "English: {{value}} days ago"
},
"showDashboardButton": {
"message": "대보드 보기",
"message": "대보드 보기",
"description": "Firefox/Fennec-specific: Show Dashboard"
},
"showNetworkLogButton": {
@ -1164,7 +1164,7 @@
"description": "English: Disable strict blocking for {{hostname}} ..."
},
"docblockedDisableTemporary": {
"message": "일시적으로",
"message": "이번만",
"description": "English: Temporarily"
},
"docblockedDisablePermanent": {
@ -1244,7 +1244,7 @@
"description": "An entry in the browser's contextual menu"
},
"contextMenuTemporarilyAllowLargeMediaElements": {
"message": "일시적으로 대용량 미디어 요소 허용",
"message": "이번만 대형 미디어 구성요소 허용",
"description": "A context menu entry, present when large media elements have been blocked on the current site"
},
"contextMenuViewSource": {

View file

@ -220,7 +220,7 @@
"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.",
"message": "Local rules: this column is for rules which apply to the current site only.\nLocal rules override global rules.",
"description": "Tooltip when hovering the top-most cell of the local-rules column."
},
"popupTipSaveRules": {

View file

@ -220,7 +220,7 @@
"description": "Tooltip when hovering the top-most cell of the global-rules column."
},
"popupTipLocalRules": {
"message": "Lokale regels: deze kolom is voor regels die alleen op de huidige website van toepassing zijn.",
"message": "Lokale regels: deze kolom is voor regels die alleen op de huidige website van toepassing zijn.\nLokale regels hebben voorrang op algemene regels.",
"description": "Tooltip when hovering the top-most cell of the local-rules column."
},
"popupTipSaveRules": {

View file

@ -220,7 +220,7 @@
"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.",
"message": "Local rules: this column is for rules which apply to the current site only.\nLocal rules override global rules.",
"description": "Tooltip when hovering the top-most cell of the local-rules column."
},
"popupTipSaveRules": {

View file

@ -220,7 +220,7 @@
"description": "Tooltip when hovering the top-most cell of the global-rules column."
},
"popupTipLocalRules": {
"message": "Lokala regler: denna kolumn avser endast regler som gäller för den aktuella webbplatsen.\nLokala regler åsidosätter globala regler.",
"message": "Lokala regler: den här kolumnen avser endast regler som gäller för den aktuella webbplatsen.\nLokala regler åsidosätter globala regler.",
"description": "Tooltip when hovering the top-most cell of the local-rules column."
},
"popupTipSaveRules": {

View file

@ -220,7 +220,7 @@
"description": "Tooltip when hovering the top-most cell of the global-rules column."
},
"popupTipLocalRules": {
"message": "Локальні правила: цей стовпчик для правил, що застосовуються лише цього сайту.\nЛокальні правила замінюють глобальні.",
"message": "Локальні правила: цей стовпчик для правил, що застосовуються лише для цього сайту.\nЛокальні правила замінюють глобальні.",
"description": "Tooltip when hovering the top-most cell of the local-rules column."
},
"popupTipSaveRules": {

View file

@ -486,10 +486,7 @@ export class JSONPath {
if ( outcome ) { return k; }
}
#modifyVal(obj, key) {
let { modify, rval } = this.#compiled;
if ( typeof rval === 'string' ) {
rval = rval.replace('${now}', `${Date.now()}`);
}
const { modify, rval } = this.#compiled;
switch ( modify ) {
case undefined:
obj[key] = rval;

View file

@ -71,12 +71,15 @@ function trustedCreateHTML(
const duration = parseInt(durationStr, 10);
const domParser = new DOMParser();
const externalDoc = domParser.parseFromString(htmlStr, 'text/html');
const toAppend = [];
while ( externalDoc.body.firstChild !== null ) {
toAppend.push(document.adoptNode(externalDoc.body.firstChild));
}
if ( toAppend.length === 0 ) { return; }
const docFragment = new DocumentFragment();
const toRemove = [];
while ( externalDoc.body.firstChild !== null ) {
const imported = document.adoptNode(externalDoc.body.firstChild);
docFragment.appendChild(imported);
if ( isNaN(duration) ) { continue; }
toRemove.push(imported);
}
if ( docFragment.firstChild === null ) { return; }
const remove = ( ) => {
for ( const node of toRemove ) {
if ( node.parentNode === null ) { continue; }
@ -84,21 +87,10 @@ function trustedCreateHTML(
}
safe.uboLog(logPrefix, 'Node(s) removed');
};
const appendOne = (target, nodes) => {
for ( const node of nodes ) {
target.append(node);
if ( isNaN(duration) ) { continue; }
toRemove.push(node);
}
};
const append = ( ) => {
const targets = document.querySelectorAll(parentSelector);
if ( targets.length === 0 ) { return false; }
const limit = Math.min(targets.length, extraArgs.limit || 1) - 1;
for ( let i = 0; i < limit; i++ ) {
appendOne(targets[i], toAppend.map(a => a.cloneNode(true)));
}
appendOne(targets[limit], toAppend);
const parent = document.querySelector(parentSelector);
if ( parent === null ) { return false; }
parent.append(docFragment);
safe.uboLog(logPrefix, 'Node(s) appended');
if ( toRemove.length === 0 ) { return true; }
setTimeout(remove, duration);

View file

@ -51,7 +51,6 @@ function preventFetchFn(
const propNeedles = parsePropertiesToMatchFn(propsToMatch, 'url');
const validResponseProps = {
ok: [ false, true ],
status: [ 403 ],
statusText: [ '', 'Not Found' ],
type: [ 'basic', 'cors', 'default', 'error', 'opaque' ],
};

View file

@ -1828,7 +1828,7 @@ function trustedClickElement(
const pos2 = s2.indexOf('=');
const key = pos2 !== -1 ? s2.slice(0, pos2).trim() : s2;
const value = pos2 !== -1 ? s2.slice(pos2+1).trim() : '';
out.re = new RegExp(`^${safe.escapeRegexChars(key)}=${safe.escapeRegexChars(value)}`);
out.re = new RegExp(`^${this.escapeRegexChars(key)}=${this.escapeRegexChars(value)}`);
return out;
}).filter(details => details !== undefined);
const allCookies = assertions.some(o => o.type === 'cookie')

View file

@ -220,14 +220,6 @@ export function generateContentFn(trusted, directive) {
warXHR.send();
}).catch(( ) => '');
}
if ( directive.startsWith('join:') ) {
const parts = directive.slice(7)
.split(directive.slice(5, 7))
.map(a => generateContentFn(trusted, a));
return parts.some(a => a instanceof Promise)
? Promise.all(parts).then(parts => parts.join(''))
: parts.join('');
}
if ( trusted ) {
return directive;
}

View file

@ -4758,7 +4758,6 @@ StaticNetFilteringEngine.prototype.dnrFromCompiled = function(op, context, ...ar
if ( rule.condition.resourceTypes === undefined ) {
if ( rule.condition.excludedResourceTypes === undefined ) {
rule.condition.resourceTypes = [
'image',
'main_frame',
'sub_frame',
'xmlhttprequest',
@ -4766,17 +4765,12 @@ StaticNetFilteringEngine.prototype.dnrFromCompiled = function(op, context, ...ar
}
}
// https://github.com/uBlockOrigin/uBOL-home/discussions/575
const { urlFilter } = rule.condition;
if ( urlFilter === undefined ) {
if ( rule.condition.urlFilter === undefined ) {
if ( rule.condition.regexFilter === undefined ) {
if ( paramName !== '' ) {
rule.condition.urlFilter = `^${paramName}=`;
}
}
} else if ( urlFilter.startsWith('||') ) {
if ( urlFilter.toLowerCase().includes(paramName.toLowerCase()) === false ) {
rule.condition.urlFilter = `${rule.condition.urlFilter}*^${paramName}=`;
}
}
if ( rule.__modifierAction === ALLOW_REALM ) {
dnrAddRuleError(rule, `Unsupported removeparam exception: ${rule.__modifierValue}`);