NTP: Restyle Customize drawer behind rebrand flag - #2890
Conversation
Update long/short variants to match Desktop Components, with Mac/Windows control-fill states. Co-authored-by: Cursor <cursoragent@cursor.com>
Align shell spacing, Theme/Background/Sections, Windows switches, and footer gap with Desktop Components while keeping FF-off unchanged. Co-authored-by: Cursor <cursoragent@cursor.com>
Build Branch
Static preview entry points
QR codes (mobile preview)
Integration commandsnpm (Android / Extension): Swift Package Manager (Apple): .package(url: "https://github.com/duckduckgo/content-scope-scripts.git", branch: "pr-releases/matteo/rebrand/ntp-settings-sidebar")git submodule (Windows): git -C submodules/content-scope-scripts fetch origin pr-releases/matteo/rebrand/ntp-settings-sidebar
git -C submodules/content-scope-scripts checkout origin/pr-releases/matteo/rebrand/ntp-settings-sidebarPin to exact commitnpm (Android / Extension): Swift Package Manager (Apple): .package(url: "https://github.com/duckduckgo/content-scope-scripts.git", revision: "98c2cc74e9c475bfc842d8166c34cb514625b969")git submodule (Windows): git -C submodules/content-scope-scripts fetch origin pr-releases/matteo/rebrand/ntp-settings-sidebar
git -C submodules/content-scope-scripts checkout 98c2cc74e9c475bfc842d8166c34cb514625b969 |
There was a problem hiding this comment.
Stale comment
Injected PR Evaluation: Web Compatibility & Security
PR: NTP: Restyle Customize drawer behind rebrand flag (
c5b51e53)
Scope: 6 CSS files (+191 lines) inspecial-pages/only. Noinjected/,messaging/, or runtime JavaScript changes.
Web Compatibility Assessment
File Lines Severity Finding All changed files — info Changes are CSS-only in the embedded NTP special-page, not injected into third-party pages. Standard injected web-compat categories (API fidelity, prototype chain, DOM timing, platform API shims) do not apply. Customizer.module.css,CustomizerDrawerInner.module.css,ThemeSection.module.css,VisibilityMenu.module.css46–338 info All visual overrides are gated behind [data-rebrand="true"], driven bynewTabPageRebranding(default disabled) →body[data-rebrand]inindex.js. Legacy layout preserved when flag is off.ntp-theme.css44–47 info Rebrand-only drawer width bump ( 256px→264pxfor theme-variant drawers). Layout change is scoped to rebrand; no viewport<meta>manipulation.Customizer.module.css47 info backdrop-filter: noneon the customize button removes blur in rebrand mode — visual-only; no functional regression expected.ThemeSection.module.css121–131 info macOS-only inset box-shadowon selected segmented-control segment — platform-scoped, rebrand-only.Switch.module.css(shared)100–110, 233–235 info Windows medium switch sizing recolored under :global([data-rebrand="true"]). Only activates when an ancestor setsdata-rebrand(currently NTP-only viainstallGlobalSideEffects). Onboarding/omnibar switches unaffected unless those pages adopt the same flag.Customizer integration tests — info Existing customizer.spec.jssuite runs with rebrand off by default. No rebrand-on visual/integration coverage for drawer restyle.No warnings or errors identified.
Security Assessment
File Lines Severity Finding All changed files — info No changes to captured-globals.js, message bridge, messaging transports,postMessage, config parsing, orload()-time code.All changed files — info CSS uses static design-token variables only — no page-derived values interpolated into styles, no url()with user data, no dynamic code execution.All changed files — info Feature is remotely disableable via existing newTabPageRebrandingsetting; no new un-gated functionality.No warnings, errors, or critical findings identified.
Risk Level
Low Risk — CSS-only NTP customizer restyle behind an existing remote-config feature flag; no injected runtime, API overrides, or messaging surface changes.
Recommendations
- (info) Manually QA the Customize drawer with
newTabPageRebrandingenabled on Windows, macOS, iOS, and Android — especially drawer width, background-panel selection ring (::afterpseudo-element), and Windows medium switches in VisibilityMenu.- (info) Consider a lightweight integration test opening the customizer with
rebrand: 'enabled'mock param (pattern fromnew-tab.spec.js) to guard against accidental selector regressions.- (info) If other special-pages adopt
data-rebrandin future, the sharedSwitch.module.cssWindows-medium overrides will apply there too — document or scope further if that becomes a concern.Sent by Cursor Automation: Web compat and sec
[Beta] Generated file diffTime updated: Tue, 28 Jul 2026 00:44:05 GMT Apple
File has changed Integration
File has changed Windows
File has changed |
|
This PR requires a manual review and approval from a member of one of the following teams:
|
…e rebrand Co-authored-by: Cursor <cursoragent@cursor.com>
There was a problem hiding this comment.
Stale comment
Injected PR Evaluation: Web Compatibility & Security
PR: NTP: Restyle Customize drawer behind rebrand flag (
c103d9f4)
Scope: 6 CSS files + design-tokens bump (v0.30.0→v0.33.0) inspecial-pages/only. Noinjected/,messaging/, or runtime JavaScript changes.Re-assessed after synchronize; latest commit adds design-tokens bump and space-token refactors.
Web Compatibility Assessment
File Lines Severity Finding All changed files — info CSS-only changes in the embedded NTP special-page, not injected into third-party pages. Standard injected web-compat categories (API fidelity, prototype chain, DOM timing, platform API shims) do not apply. Customizer.module.css,CustomizerDrawerInner.module.css,ThemeSection.module.css,VisibilityMenu.module.css46–338 info Visual overrides gated behind [data-rebrand="true"], driven bynewTabPageRebranding(default disabled) →body[data-rebrand]inindex.js. Legacy layout preserved when flag is off.ntp-theme.css44–47 info Rebrand-only drawer width bump ( 256px→264pxfor theme-variant drawers). Layout change scoped to rebrand; no viewport<meta>manipulation.Customizer.module.css47 info backdrop-filter: noneon the customize button removes blur in rebrand mode — visual-only.ThemeSection.module.css121–131 info macOS-only inset box-shadowon selected segmented-control segment — platform-scoped, rebrand-only.ThemeSection.module.css141–142 info .variantButtonselection-ring vars moved from hard-coded2pxtovar(--ds-space-x-5)outside the rebrand block, so legacy UI is affected too. Value is equivalent (--ds-space-x-5: 2pxin v0.33.0) — refactor only, not a visual regression.Switch.module.css(shared)100–110, 233–235 info Windows medium switch sizing recolored under :global([data-rebrand="true"]). Only activates when an ancestor setsdata-rebrand(currently NTP-only). Onboarding/omnibar switches unaffected unless those pages adopt the flag.package.json/package-lock.json31 warning design-tokens v0.30.0→v0.33.0removes--ds-color-palette-*tokens.onboarding/.../ComparisonTable.module.css:119still references--ds-color-palette-red-50— unrelated to this PR's CSS but now unresolved at build time (CSS silently drops). Consider fixing in a companion PR or rebasing onto a palette-token migration.Customizer integration tests — info Existing customizer.spec.jssuite runs with rebrand off by default. No rebrand-on visual/integration coverage for drawer restyle.No errors identified.
Security Assessment
File Lines Severity Finding All changed files — info No changes to captured-globals.js, message bridge, messaging transports,postMessage, config parsing, orload()-time code.All changed files — info CSS uses static design-token variables only — no page-derived values interpolated into styles, no url()with user data, no dynamic code execution.All changed files — info Feature is remotely disableable via existing newTabPageRebrandingsetting; no new un-gated functionality.package.json31 info design-tokens is a devDependency used at build time for CSS token resolution — no runtime injection surface. No warnings, errors, or critical findings identified.
Risk Level
Low Risk — CSS-only NTP customizer restyle behind an existing remote-config feature flag, plus a devDependency token bump; no injected runtime, API overrides, or messaging surface changes.
Recommendations
- (warning) Address the removed
--ds-color-palette-red-50reference inComparisonTable.module.cssbefore or alongside the design-tokens v0.33.0 bump (migrate to a theme token or local variable).- (info) Manually QA the Customize drawer with
newTabPageRebrandingenabled on Windows, macOS, iOS, and Android — especially drawer width, background-panel selection ring (::afterpseudo-element), and Windows medium switches in VisibilityMenu.- (info) Consider a lightweight integration test opening the customizer with
rebrand: 'enabled'mock param (pattern fromnew-tab.spec.js) to guard against accidental selector regressions.- (info) If other special-pages adopt
data-rebrandin future, the sharedSwitch.module.cssWindows-medium overrides will apply there too — document or scope further if that becomes a concern.Sent by Cursor Automation: Web compat and sec
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit c103d9f. Configure here.
| --selection-ring-offset: 2px; | ||
| --selection-ring-width: 2px; | ||
| --selection-ring-offset: var(--ds-space-x-5); | ||
| --selection-ring-width: var(--ds-space-x-5); |
There was a problem hiding this comment.
Non-gated token change affects all users' selection ring
Low Severity
The --selection-ring-offset and --selection-ring-width in the base .variantButton rule are changed from hardcoded 2px to var(--ds-space-x-5) without being gated behind [data-rebrand="true"]. This affects non-rebrand users. The equivalent change in CustomizerDrawerInner.module.css (line 312-313) is properly inside a [data-rebrand="true"] block. If --ds-space-x-5 is undefined or resolves to a value other than 2px, the theme variant selection ring breaks for all users. A fallback like var(--ds-space-x-5, 2px) would make this safe regardless of token availability.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit c103d9f. Configure here.
Co-authored-by: Cursor <cursoragent@cursor.com>
There was a problem hiding this comment.
Injected PR Evaluation: Web Compatibility & Security
PR: NTP: Restyle Customize drawer behind rebrand flag (3da8c5ef)
Scope: 7 CSS files + design-tokens bump (v0.30.0 → v0.33.0) in special-pages/ only. No injected/, messaging/, or runtime JavaScript changes.
Re-assessed after synchronize; latest commit 3da8c5ef hardcodes the DDG icon color in onboarding after palette-token removal.
Web Compatibility Assessment
| File | Lines | Severity | Finding |
|---|---|---|---|
| All changed files | — | info | CSS-only changes in the embedded NTP special-page, not injected into third-party pages. Standard injected web-compat categories (API fidelity, prototype chain, DOM timing, platform API shims) do not apply. |
Customizer.module.css, CustomizerDrawerInner.module.css, ThemeSection.module.css, VisibilityMenu.module.css |
46–338 | info | Visual overrides gated behind [data-rebrand="true"], driven by newTabPageRebranding (default disabled) → body[data-rebrand] in index.js. Legacy layout preserved when flag is off. |
ntp-theme.css |
44–47 | info | Rebrand-only drawer width bump (256px → 264px for theme-variant drawers). Layout change scoped to rebrand; no viewport <meta> manipulation. |
Customizer.module.css |
47 | info | backdrop-filter: none on the customize button removes blur in rebrand mode — visual-only. |
ThemeSection.module.css |
121–131 | info | macOS-only inset box-shadow on selected segmented-control segment — platform-scoped, rebrand-only. |
ThemeSection.module.css |
141–142 | info | .variantButton selection-ring vars moved from hard-coded 2px to var(--ds-space-x-5) outside the rebrand block, so legacy UI is affected too. Value is equivalent (--ds-space-x-5: 2px in v0.33.0) — refactor only, not a visual regression. |
Switch.module.css (shared) |
100–110, 233–235 | info | Windows medium switch sizing recolored under :global([data-rebrand="true"]). Only activates when an ancestor sets data-rebrand (currently NTP-only). |
ComparisonTable.module.css |
118–122 | info | Collateral design-tokens bump: --ds-color-palette-red-50 replaced with hardcoded #de5833 and explanatory comment. Restores onboarding DDG icon background after palette removal in v0.31+. |
| Customizer integration tests | — | info | Existing customizer.spec.js suite runs with rebrand off by default. No rebrand-on visual/integration coverage for drawer restyle. |
No errors identified.
Security Assessment
| File | Lines | Severity | Finding |
|---|---|---|---|
| All changed files | — | info | No changes to captured-globals.js, message bridge, messaging transports, postMessage, config parsing, or load()-time code. |
| All changed files | — | info | CSS uses static design-token variables and a hardcoded hex color — no page-derived values interpolated into styles, no url() with user data, no dynamic code execution. |
| All changed files | — | info | Feature is remotely disableable via existing newTabPageRebranding setting; no new un-gated functionality. |
package.json |
31 | info | design-tokens is a devDependency used at build time for CSS token resolution — no runtime injection surface. |
No warnings, errors, or critical findings identified.
Risk Level
Low Risk — CSS-only NTP customizer restyle behind an existing remote-config feature flag, plus a devDependency token bump with collateral onboarding fix; no injected runtime, API overrides, or messaging surface changes.
Recommendations
- (info) Manually QA the Customize drawer with
newTabPageRebrandingenabled on Windows, macOS, iOS, and Android — especially drawer width, background-panel selection ring (::afterpseudo-element), and Windows medium switches in VisibilityMenu. - (info) Consider a lightweight integration test opening the customizer with
rebrand: 'enabled'mock param (pattern fromnew-tab.spec.js) to guard against accidental selector regressions. - (info) If other special-pages adopt
data-rebrandin future, the sharedSwitch.module.cssWindows-medium overrides will apply there too — document or scope further if that becomes a concern.
Sent by Cursor Automation: Web compat and sec
| /* Hardcoded: --ds-color-palette-red-50 (legacy SERP palette) is no longer exported | ||
| by design-tokens desktop-browsers build (v0.31+). No current token matches this | ||
| exact value (closest is Mandarin 50, a different hex). Revisit if one is added. */ | ||
| background-color: #de5833; |
There was a problem hiding this comment.
resolved: Prior warning about unresolved --ds-color-palette-red-50 after the design-tokens v0.33.0 bump is addressed here. Hardcoded #de5833 with an explanatory comment is appropriate given no equivalent theme token exists in the desktop-browsers build.




Asana Task/Github Issue:
Description
Restyle the New Tab Customize button and drawer (shell, Theme segmented control, Background tiles, Sections rows + Windows switches, footer spacing) to match Desktop Components, gated behind
newTabPageRebranding/body[data-rebrand="true"]. FF-off styles remain unchanged.Testing Steps
?rebrand=enabled&autoOpen=true&themeVariant=default&platform=windowsand confirm Windows switch size/thumb + Customize button fill states?rebrand=disabled(or omit rebrand) keeps the previous Customize button/drawer lookChecklist
Please tick all that apply:
Made with Cursor