Conversation
|
👋 Don't forget to add an individual reviewer (in addition to those auto-added), as this will create a task for them in Asana.
👉 Please mark this as DRAFT unless there's an intention to merge this immediately. |
Generated file outputs:Time updated: Tue, 07 Jul 2026 14:09:32 GMT legacy21 files identical
2 files changed
--- v4/android-config.json (and 1 other files)
+++ v4/android-config.json
@@ -32696,8 +32696,16 @@
},
{
"domain": "www.audible.com",
"brand": "CHROME"
+ },
+ {
+ "domain": "marvel.com",
+ "brand": "CHROME"
+ },
+ {
+ "domain": "noaprints.com",
+ "brand": "CHROME"
}
]
},
"state": "enabled",
v3/ios-config.json--- v3/ios-config.json
+++ v3/ios-config.json
@@ -32036,8 +32036,16 @@
},
{
"domain": "hulu.com",
"reason": "https://github.com/duckduckgo/privacy-configuration/pull/5327"
+ },
+ {
+ "domain": "marvel.com",
+ "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194"
+ },
+ {
+ "domain": "noaprints.com",
+ "reason": "https://github.com/duckduckgo/privacy-configuration/pull/2143"
}
],
"ddgDefaultSites": [
{
@@ -32263,8 +32271,16 @@
},
{
"domain": "hulu.com",
"reason": "https://github.com/duckduckgo/privacy-configuration/pull/5327"
+ },
+ {
+ "domain": "marvel.com",
+ "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194"
+ },
+ {
+ "domain": "noaprints.com",
+ "reason": "https://github.com/duckduckgo/privacy-configuration/pull/2143"
}
],
"omitVersionSites": []
},
2 files changed
--- v4/macos-config.json (and 1 other files)
+++ v4/macos-config.json
@@ -31234,8 +31234,16 @@
},
{
"domain": "hulu.com",
"reason": "https://github.com/duckduckgo/privacy-configuration/pull/5327"
+ },
+ {
+ "domain": "marvel.com",
+ "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194"
+ },
+ {
+ "domain": "noaprints.com",
+ "reason": "https://github.com/duckduckgo/privacy-configuration/pull/2143"
}
],
"webViewDefault": [
{
v3/windows-config.json--- v3/windows-config.json
+++ v3/windows-config.json
@@ -32545,8 +32545,16 @@
},
{
"domain": "www.smythstoys.com",
"brand": "Google Chrome"
+ },
+ {
+ "domain": "marvel.com",
+ "brand": "Google Chrome"
+ },
+ {
+ "domain": "noaprints.com",
+ "brand": "Google Chrome"
}
]
},
"state": "enabled"
@@ -46208,18 +46216,9 @@
"state": "disabled"
},
"uaChBrands": {
"state": "enabled",
- "exceptions": [
- {
- "domain": "marvel.com",
- "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194"
- },
- {
- "domain": "noaprints.com",
- "reason": "https://github.com/duckduckgo/privacy-configuration/pull/2143"
- }
- ],
+ "exceptions": [],
"settings": {
"conditionalChanges": [
{
"condition": {
@@ -46267,8 +46266,32 @@
"path": "/brandName",
"value": "Google Chrome"
}
]
+ },
+ {
+ "condition": {
+ "domain": "marvel.com"
+ },
+ "patchSettings": [
+ {
+ "op": "add",
+ "path": "/brandName",
+ "value": "Google Chrome"
+ }
+ ]
+ },
+ {
+ "condition": {
+ "domain": "noaprints.com"
+ },
+ "patchSettings": [
+ {
+ "op": "add",
+ "path": "/brandName",
+ "value": "Google Chrome"
+ }
+ ]
}
]
}
},
v4/ios-config.json--- v4/ios-config.json
+++ v4/ios-config.json
@@ -31557,8 +31557,16 @@
},
{
"domain": "hulu.com",
"reason": "https://github.com/duckduckgo/privacy-configuration/pull/5327"
+ },
+ {
+ "domain": "marvel.com",
+ "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194"
+ },
+ {
+ "domain": "noaprints.com",
+ "reason": "https://github.com/duckduckgo/privacy-configuration/pull/2143"
}
],
"ddgDefaultSites": [
{
@@ -31730,8 +31738,14 @@
"domain": "xvideos.com"
},
{
"domain": "hulu.com"
+ },
+ {
+ "domain": "marvel.com"
+ },
+ {
+ "domain": "noaprints.com"
}
],
"omitVersionSites": []
},
v4/windows-config.json--- v4/windows-config.json
+++ v4/windows-config.json
@@ -32080,8 +32080,16 @@
},
{
"domain": "www.smythstoys.com",
"brand": "Google Chrome"
+ },
+ {
+ "domain": "marvel.com",
+ "brand": "Google Chrome"
+ },
+ {
+ "domain": "noaprints.com",
+ "brand": "Google Chrome"
}
]
},
"state": "enabled"
@@ -45150,16 +45158,9 @@
"state": "disabled"
},
"uaChBrands": {
"state": "enabled",
- "exceptions": [
- {
- "domain": "marvel.com"
- },
- {
- "domain": "noaprints.com"
- }
- ],
+ "exceptions": [],
"settings": {
"conditionalChanges": [
{
"condition": {
@@ -45207,8 +45208,32 @@
"path": "/brandName",
"value": "Google Chrome"
}
]
+ },
+ {
+ "condition": {
+ "domain": "marvel.com"
+ },
+ "patchSettings": [
+ {
+ "op": "add",
+ "path": "/brandName",
+ "value": "Google Chrome"
+ }
+ ]
+ },
+ {
+ "condition": {
+ "domain": "noaprints.com"
+ },
+ "patchSettings": [
+ {
+ "op": "add",
+ "path": "/brandName",
+ "value": "Google Chrome"
+ }
+ ]
}
]
}
},
latestv5/android-config.json--- v5/android-config.json
+++ v5/android-config.json
@@ -32696,8 +32696,16 @@
},
{
"domain": "www.audible.com",
"brand": "CHROME"
+ },
+ {
+ "domain": "marvel.com",
+ "brand": "CHROME"
+ },
+ {
+ "domain": "noaprints.com",
+ "brand": "CHROME"
}
]
},
"state": "enabled",
10 files identical
v5/ios-config.json--- v5/ios-config.json
+++ v5/ios-config.json
@@ -31557,8 +31557,16 @@
},
{
"domain": "hulu.com",
"reason": "https://github.com/duckduckgo/privacy-configuration/pull/5327"
+ },
+ {
+ "domain": "marvel.com",
+ "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194"
+ },
+ {
+ "domain": "noaprints.com",
+ "reason": "https://github.com/duckduckgo/privacy-configuration/pull/2143"
}
],
"ddgDefaultSites": [
{
@@ -31730,8 +31738,14 @@
"domain": "xvideos.com"
},
{
"domain": "hulu.com"
+ },
+ {
+ "domain": "marvel.com"
+ },
+ {
+ "domain": "noaprints.com"
}
],
"omitVersionSites": []
},
v5/macos-config.json--- v5/macos-config.json
+++ v5/macos-config.json
@@ -31234,8 +31234,16 @@
},
{
"domain": "hulu.com",
"reason": "https://github.com/duckduckgo/privacy-configuration/pull/5327"
+ },
+ {
+ "domain": "marvel.com",
+ "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194"
+ },
+ {
+ "domain": "noaprints.com",
+ "reason": "https://github.com/duckduckgo/privacy-configuration/pull/2143"
}
],
"webViewDefault": [
{
v5/windows-config.json--- v5/windows-config.json
+++ v5/windows-config.json
@@ -32080,8 +32080,16 @@
},
{
"domain": "www.smythstoys.com",
"brand": "Google Chrome"
+ },
+ {
+ "domain": "marvel.com",
+ "brand": "Google Chrome"
+ },
+ {
+ "domain": "noaprints.com",
+ "brand": "Google Chrome"
}
]
},
"state": "enabled"
@@ -45150,16 +45158,9 @@
"state": "disabled"
},
"uaChBrands": {
"state": "enabled",
- "exceptions": [
- {
- "domain": "marvel.com"
- },
- {
- "domain": "noaprints.com"
- }
- ],
+ "exceptions": [],
"settings": {
"conditionalChanges": [
{
"condition": {
@@ -45207,8 +45208,32 @@
"path": "/brandName",
"value": "Google Chrome"
}
]
+ },
+ {
+ "condition": {
+ "domain": "marvel.com"
+ },
+ "patchSettings": [
+ {
+ "op": "add",
+ "path": "/brandName",
+ "value": "Google Chrome"
+ }
+ ]
+ },
+ {
+ "condition": {
+ "domain": "noaprints.com"
+ },
+ "patchSettings": [
+ {
+ "op": "add",
+ "path": "/brandName",
+ "value": "Google Chrome"
+ }
+ ]
}
]
}
},
|
JSON approval analysis:Time updated: Tue, 07 Jul 2026 14:09:38 GMT legacy✅ Auto-Approved Files
❌ Manual Review Required
latest✅ Auto-Approved Files
❌ Manual Review Required
🎯 OVERALL APPROVAL STATUS❌ MANUAL REVIEW REQUIRED |
| } | ||
| } | ||
|
|
||
| addUnprotectedTemporaryUserAgentMitigations(platform, platformConfig, [ |
There was a problem hiding this comment.
Should this be part of the same if statement above?
if (platformOverride.unprotectedTemporary) {| const customUserAgentSettings = config.features.customUserAgent?.settings; | ||
| if (platform === 'ios') { | ||
| appendMissingDomainEntries(customUserAgentSettings?.ddgFixedSites, exceptions, (entry) => ({ ...entry })); | ||
| appendMissingDomainEntries(customUserAgentSettings?.omitApplicationSites, exceptions, (entry) => ({ ...entry })); | ||
| } else if (platform === 'macos') { | ||
| appendMissingDomainEntries(customUserAgentSettings?.defaultSites, exceptions, (entry) => ({ ...entry })); | ||
| } else if (platform === 'android') { | ||
| addClientBrandHintDomains(config, exceptions, 'CHROME'); | ||
| } else if (platform === 'windows') { | ||
| addClientBrandHintDomains(config, exceptions, 'Google Chrome'); | ||
| addWindowsUaChBrands(config, exceptions); | ||
| } |
There was a problem hiding this comment.
This does seem correct.
Are you able to add an unprotected, temporary demo your domain to a follow-up PR that's based off this one, and create a draft PR, and then validate the output? (perhaps even in the client too)


Asana Task/Github Issue: https://app.asana.com/1/137249556945/project/72649045549333/task/1215329534182321?focus=true
Description
In order to make unprotected-temporary more useful as a first-aid option, even beyond normal breakage rotations, I've added a mechanism to bundle user agent and client hints mitigations on the affected domain for whatever platform (or all, in the case of global) as well.
Feature change process:
in all supported browsersby building locally and inspecting the files.