Skip to content

(feat)rebrand: NTP - Favorites tile styles - #2887

Open
borgateo wants to merge 8 commits into
mainfrom
matteo/rebrand/ntp-favorite
Open

(feat)rebrand: NTP - Favorites tile styles#2887
borgateo wants to merge 8 commits into
mainfrom
matteo/rebrand/ntp-favorite

Conversation

@borgateo

@borgateo borgateo commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Asana Task/Github Issue: https://app.asana.com/1/137249556945/project/72649045549333/task/1216270925937867?focus=true

Description

Gates favorites tile rebrand styles behind newTabPageRebranding (body[data-rebrand="true"]): updated radius, surface shadow, layout, and tile-to-label spacing.

Testing Steps

  • Open NTP with ?rebrand=enabled → favorites tiles use the new chrome (16px radius, 2026 shadow, 10px gap to label)
  • Same page with ?rebrand=disabled (or omit) → live/legacy tile styles
  • Quick pass light/dark and with a custom background image

Screenshots

Before After
Dark Favorites light after Favorites light before
Light Favorites dark before Favorites dark after

Checklist

Please tick all that apply:

  • I have tested this change locally
  • I have tested this change locally in all supported browsers
  • This change will be visible to users
  • I have added automated tests that cover this change
  • I have ensured the change is gated by config
  • This change was covered by a ship review
  • This change was covered by a tech design
  • Any dependent config has been merged

Made with Cursor

Co-authored-by: Cursor <cursoragent@cursor.com>

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stale comment

Injected PR Evaluation: Web Compatibility & Security

PR: #2887 — NTP Favorites tile rebrand styles
Scope: 1 file, +23 lines — special-pages/pages/new-tab/app/favorites/components/Tile.module.css only. No injected/, messaging/, or runtime API changes.


Web Compatibility Assessment

File Lines Severity Finding
Tile.module.css 150–171 info CSS-only visual refresh for first-party NTP favorites tiles. Does not run in third-party page injection context; standard injected web-compat criteria (API fidelity, prototype chain, DOM timing) do not apply.
Tile.module.css 151 info Rebrand styles are correctly gated behind :global(body[data-rebrand="true"]), matching the established NTP rebrand pattern (newTabPageRebrandingdocument.body.dataset.rebrand in app/index.js). Default-off flag limits rollout risk.
Tile.module.css 156–169 info Rebrand .draggable overrides display, padding, border-radius, and box-shadow but does not unset base backdrop-filter: blur(48px). If the design intent is a flat card (per new shadow tokens), consider adding backdrop-filter: none in the rebrand block to avoid unintended blur stacking.
Tile.module.css info Favorites screenshot tests (new-tab.screenshots.spec.js) run with rebrand disabled by default. No regression signal for rebrand-on visuals; consider a rebrand-enabled screenshot case if native enables the flag broadly.

No warnings or errors.


Security Assessment

File Lines Severity Finding
info No changes to captured-globals.js, messaging transports, message bridge, or API overrides.
info No user-controlled values in CSS — only static design tokens (--ds-space-x02-5, --ds-color-theme-shadow-*, etc.). No CSS injection or data-exfiltration vectors.
info Feature remains remotely disableable via native newTabPageRebranding setting; no new un-gated behavior.
info No new notify()/request() schemas, nativeData forwarding, or postMessage usage.

No warnings, errors, or critical findings.


Risk Level

Low Risk — Special-pages CSS-only change behind an existing remote-config rebrand flag; zero injected-runtime, messaging, or security-sensitive surface area.


Recommendations

  1. (info) Verify rebrand-on favorites tiles visually on macOS/Windows with newTabPageRebranding enabled — confirm whether backdrop-filter should be removed in the rebrand block.
  2. (info) Optional: add a rebrand-enabled favorites screenshot integration test to catch future CSS regressions when the flag ships broadly.
Open in Web View Automation 

Sent by Cursor Automation: Web compat and sec

@github-actions github-actions Bot added the semver-minor New feature — triggers minor version bump label Jul 22, 2026
@github-actions

github-actions Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

[Beta] Generated file diff

Time updated: Mon, 27 Jul 2026 17:48:23 GMT

Apple
    - apple/pages/errorpage/dist/index.css
  • apple/pages/errorpage/index.html
  • apple/pages/history/dist/index.css
  • apple/pages/new-tab/dist/index.css
  • apple/pages/onboarding/dist/index.css
  • apple/pages/release-notes/dist/index.css
  • apple/pages/special-error/dist/index.css
  • apple/pages/special-error/index.html

File has changed

Integration
    - integration/pages/errorpage/dist/index.css
  • integration/pages/example/dist/index.css
  • integration/pages/history/dist/index.css
  • integration/pages/new-tab/dist/index.css
  • integration/pages/onboarding/dist/index.css
  • integration/pages/release-notes/dist/index.css
  • integration/pages/special-error/dist/index.css

File has changed

Windows
    - windows/pages/history/dist/index.css
  • windows/pages/new-tab/dist/index.css
  • windows/pages/onboarding/dist/index.css
  • windows/pages/release-notes/dist/index.css
  • windows/pages/special-error/dist/index.css
  • windows/pages/special-error/index.html

File has changed

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ 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 9e07863. Configure here.

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Cursor review was not successful.

This PR requires a manual review and approval from a member of one of the following teams:

  • @duckduckgo/content-scope-scripts-owners
  • @duckduckgo/apple-devs
  • @duckduckgo/android-devs
  • @duckduckgo/team-windows-development
  • @duckduckgo/extension-owners
  • @duckduckgo/config-aor
  • @duckduckgo/breakage-aor
  • @duckduckgo/breakage

@borgateo
borgateo requested a review from vkraucunas July 22, 2026 00:15
Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

github-actions Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Build Branch

Branch pr-releases/matteo/rebrand/ntp-favorite
Commit 5a3a7363f1
Updated July 27, 2026 at 5:47:37 PM UTC

Static preview entry points

QR codes (mobile preview)
Entry point QR code
Docs QR for docs preview
Static pages QR for static pages preview
Integration pages QR for integration pages preview

Integration commands

npm (Android / Extension):

npm i github:duckduckgo/content-scope-scripts#pr-releases/matteo/rebrand/ntp-favorite

Swift Package Manager (Apple):

.package(url: "https://github.com/duckduckgo/content-scope-scripts.git", branch: "pr-releases/matteo/rebrand/ntp-favorite")

git submodule (Windows):

git -C submodules/content-scope-scripts fetch origin pr-releases/matteo/rebrand/ntp-favorite
git -C submodules/content-scope-scripts checkout origin/pr-releases/matteo/rebrand/ntp-favorite
Pin to exact commit

npm (Android / Extension):

npm i github:duckduckgo/content-scope-scripts#5a3a7363f1d4a0c329aefe1061558260e59f474c

Swift Package Manager (Apple):

.package(url: "https://github.com/duckduckgo/content-scope-scripts.git", revision: "5a3a7363f1d4a0c329aefe1061558260e59f474c")

git submodule (Windows):

git -C submodules/content-scope-scripts fetch origin pr-releases/matteo/rebrand/ntp-favorite
git -C submodules/content-scope-scripts checkout 5a3a7363f1d4a0c329aefe1061558260e59f474c

@github-actions github-actions Bot added semver-patch Bug fix / internal — no release needed and removed semver-minor New feature — triggers minor version bump labels Jul 22, 2026
@borgateo borgateo self-assigned this Jul 22, 2026
Co-authored-by: Cursor <cursoragent@cursor.com>
@borgateo
borgateo requested review from a team and daxtheduck as code owners July 23, 2026 19:10
@github-actions github-actions Bot added semver-minor New feature — triggers minor version bump and removed semver-patch Bug fix / internal — no release needed labels Jul 23, 2026

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stale comment

Injected PR Evaluation: Web Compatibility & Security

PR: #2887 — NTP Favorites tile rebrand styles
Scope: 3 files, +27/−5 lines — Tile.module.css rebrand block + @duckduckgo/design-tokens v0.30.0 → v0.32.0 (devDependency). No injected/, messaging/, or runtime API changes.

Delta since prior review: commit 64529d367 bumps design-tokens to v0.32.0 so the new --ds-space-x02-5, --ds-space-x04, and --ds-radius-x04 tokens resolve at build time.


Web Compatibility Assessment

File Lines Severity Finding
Tile.module.css 150–171 info CSS-only visual refresh for first-party NTP favorites tiles. Does not run in third-party page injection context; standard injected web-compat criteria (API fidelity, prototype chain, DOM timing) do not apply.
Tile.module.css 151 info Rebrand styles are correctly gated behind :global(body[data-rebrand="true"]), matching the established NTP rebrand pattern (newTabPageRebrandingdocument.body.dataset.rebrand in app/index.js). Default-off flag limits rollout risk.
Tile.module.css 156–169 info Rebrand .draggable overrides display, padding, border-radius, and box-shadow but does not unset base backdrop-filter: blur(48px). If the design intent is a flat card (per new shadow tokens), consider adding backdrop-filter: none in the rebrand block to avoid unintended blur stacking.
package.json / package-lock.json info @duckduckgo/design-tokens bumped v0.30.0 → v0.32.0 (devDependency). Build-time token import only via shared/styles/design-tokens.css; not bundled into content-scope injection runtime.
Tile.module.css info Favorites integration/screenshot tests run with rebrand disabled by default. No regression signal for rebrand-on visuals.

No warnings or errors.


Security Assessment

File Lines Severity Finding
info No changes to captured-globals.js, messaging transports, message bridge, or API overrides.
info No user-controlled values in CSS — only static design tokens (--ds-space-x02-5, --ds-color-theme-shadow-*, etc.). No CSS injection or data-exfiltration vectors.
info Feature remains remotely disableable via native newTabPageRebranding setting; no new un-gated behavior.
info No new notify()/request() schemas, nativeData forwarding, or postMessage usage.

No warnings, errors, or critical findings.


Risk Level

Low Risk — Special-pages CSS-only change behind an existing remote-config rebrand flag, plus a devDependency design-tokens bump; zero injected-runtime, messaging, or security-sensitive surface area.


Recommendations

  1. (info) Verify rebrand-on favorites tiles visually on macOS/Windows with newTabPageRebranding enabled — confirm whether backdrop-filter should be removed in the rebrand block.
  2. (info) Optional: add a rebrand-enabled favorites screenshot integration test to catch future CSS regressions when the flag ships broadly.
Open in Web View Automation 

Sent by Cursor Automation: Web compat and sec

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stale comment

Injected PR Evaluation: Web Compatibility & Security

Re-assessed at ae5b99d1 (synchronize). Scope note: this PR touches special-pages/ only — no injected/, messaging/, wrapper-utils.js, or captured-globals.js changes. The injected threat model does not apply to runtime behavior here; findings below are scoped accordingly.

Web Compatibility Assessment

File Lines Severity Finding
special-pages/pages/new-tab/app/favorites/components/Tile.module.css 150–172 info Rebrand tile styles are correctly gated behind :global(body[data-rebrand="true"]). Default path (newTabPageRebranding.state === 'disabled') is unchanged — no third-party web compatibility impact.
special-pages/pages/new-tab/app/favorites/components/Tile.module.css 166 info Resolved (ae5b99d1): rebrand .draggable now sets backdrop-filter: none, overriding the base blur(48px). Prevents stacked blur/perf artifacts in rebrand mode.
special-pages/pages/new-tab/app/favorites/components/Tile.module.css 156–170 info Rebrand block changes layout (display: flex, padding, tokenized radius/shadow) but does not alter DOM structure or JS event handling — low regression risk within first-party NTP.
special-pages/package.json 31 info @duckduckgo/design-tokens bumped v0.30.0v0.32.0 (devDependency). Supplies --ds-space-x02-5, --ds-space-x04, --ds-radius-x04, and shadow tokens used by the rebrand block. Build-time only for this PR's CSS.
special-pages/pages/new-tab/integration-tests/new-tab.screenshots.spec.js info Favorites screenshot tests run with rebrand off (default). No rebrand-on visual regression coverage for the new tile styles.

No API surface fidelity, prototype chain, DOM timing, platform API, or third-party script compatibility concerns — this code does not run in arbitrary page contexts.

Security Assessment

File Lines Severity Finding
(none) No messaging schema changes, no nativeData forwarding, no bridge/origin validation changes, no captured-global usage, no postMessage, no dynamic code execution, no iframe access.
special-pages/pages/new-tab/app/index.js (context, unchanged) 179 info Rebrand activation remains native-controlled via settings.newTabPageRebrandingdocument.body.dataset.rebrand. Remote kill-switch path intact.

Risk Level

Low Risk — CSS-only, feature-flag-gated visual refresh in the embedded New Tab Page; zero injected-runtime or messaging surface changes.

Recommendations

  1. (Optional, info) Add a rebrand-on favorites screenshot test (e.g. ?rebrand=enabled mock transport flag) to lock in tile padding, radius, and shadow tokens.
  2. (Done) backdrop-filter: none in rebrand mode — good fix for the prior stacked-blur note.
  3. (Ship gate) Confirm native clients ship newTabPageRebranding default disabled until coordinated rollout.

Automation assessment — Injected PR Evaluation (Web Compatibility & Security)

Open in Web View Automation 

Sent by Cursor Automation: Web compat and sec

@github-actions github-actions Bot added semver-patch Bug fix / internal — no release needed and removed semver-minor New feature — triggers minor version bump labels Jul 24, 2026

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stale comment

Injected PR Evaluation: Web Compatibility & Security

Re-assessed at 4d90259c (synchronize). Scope: special-pages/ only — no injected/, messaging/, wrapper-utils.js, or captured-globals.js changes. The injected threat model does not apply to runtime behavior here.

Delta since ae5b99d1: @duckduckgo/design-tokens bumped v0.32.0v0.33.0 and 28 onboarding screenshot baselines updated (collateral from the tokens bump). No further CSS or JS changes to the NTP favorites tile rebrand block.

Web Compatibility Assessment

File Lines Severity Finding
special-pages/pages/new-tab/app/favorites/components/Tile.module.css 150–172 info Rebrand tile styles gated behind :global(body[data-rebrand="true"]). Default path (newTabPageRebranding.state === 'disabled') unchanged — no third-party web compatibility impact.
special-pages/pages/new-tab/app/favorites/components/Tile.module.css 166 info Rebrand .draggable sets backdrop-filter: none, overriding base blur(48px). Prevents stacked blur/perf artifacts in rebrand mode.
special-pages/pages/new-tab/app/favorites/components/Tile.module.css 156–170 info Rebrand block changes layout (display: flex, padding, tokenized radius/shadow) but does not alter DOM structure or JS event handling — low regression risk within first-party NTP.
special-pages/package.json 31 info @duckduckgo/design-tokens bumped v0.30.0v0.33.0 (devDependency). Supplies --ds-space-x02-5, --ds-space-x04, --ds-radius-x04, and shadow tokens. Build-time only for this PR's CSS.
special-pages/pages/onboarding/integration-tests/*.png info 28 onboarding screenshot rebaselines from design-tokens bumps. Unrelated to NTP favorites runtime; no injected or third-party page impact.
special-pages/pages/new-tab/integration-tests/new-tab.screenshots.spec.js info Favorites screenshot tests run with rebrand off (default). No rebrand-on visual regression coverage for the new tile styles.

No API surface fidelity, prototype chain, DOM timing, platform API, or third-party script compatibility concerns — this code does not run in arbitrary page contexts.

Security Assessment

File Lines Severity Finding
(none) No messaging schema changes, no nativeData forwarding, no bridge/origin validation changes, no captured-global usage, no postMessage, no dynamic code execution, no iframe access.
special-pages/pages/new-tab/app/index.js (context, unchanged) 179 info Rebrand activation remains native-controlled via settings.newTabPageRebrandingdocument.body.dataset.rebrand. Remote kill-switch path intact.

Risk Level

Low Risk — CSS-only, feature-flag-gated visual refresh in the embedded New Tab Page; zero injected-runtime or messaging surface changes.

Recommendations

  1. (Optional, info) Add a rebrand-on favorites screenshot test (e.g. ?rebrand=enabled mock transport flag) to lock in tile padding, radius, and shadow tokens.
  2. (Done) backdrop-filter: none in rebrand mode — good fix for stacked-blur artifacts.
  3. (Ship gate) Confirm native clients ship newTabPageRebranding default disabled until coordinated rollout.

Automation assessment — Injected PR Evaluation (Web Compatibility & Security)

Open in Web View Automation 

Sent by Cursor Automation: Web compat and sec

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Injected PR Evaluation: Web Compatibility & Security

PR: #2887 — NTP Favorites tile rebrand styles
HEAD: bcbe69936 (workflow snapshot rebaseline; no code changes since 4d90259c)
Scope: 23 files — special-pages/ only; zero injected/ changes


Web Compatibility Assessment

File Lines Severity Finding
(none) No injected code, browser API overrides, prototype patches, or third-party page interactions. Standard injected web-compat categories are not applicable.
special-pages/pages/new-tab/app/favorites/components/Tile.module.css 150–172 info Rebrand styles are correctly gated behind :global(body[data-rebrand="true"]), set by native config (settings.newTabPageRebranding) in app/index.js. Legacy layout is unchanged when the flag is off.
Tile.module.css 156–171 info Rebrand block switches .draggable from display: gridflex, removes backdrop-filter: blur(48px), and applies tokenized shadows/radius/spacing. Visual-only; no DOM API or timing changes.
special-pages/pages/new-tab/integration-tests/new-tab.screenshots.spec.js 562–593 info Favorites screenshot tests do not pass rebrand: 'enabled', so the new tile styles are not covered by visual regression tests. Unit test in new-tab.spec.js (L113–118) only asserts the data-rebrand attribute.
package-lock.json, special-pages/package.json info Collateral @duckduckgo/design-tokens bump v0.30.0 → v0.33.0 drives 20 onboarding screenshot rebaselines (unrelated to favorites logic).

Security Assessment

File Lines Severity Finding
(none) No changes to captured-globals.js, messaging transports, message bridge, wrapper-utils.js, DDGProxy, or any injected feature code.
Tile.module.css 150–172 info Static CSS using design-system tokens; no page-derived values, no eval/Function, no postMessage, no network requests.
NTP context info Special-pages run in a privileged embedded browser context (DDG NTP), not in hostile third-party pages. Messaging trust-boundary categories are unchanged.

Risk Level

Low Risk — Special-pages-only CSS behind a native feature flag; no injected runtime, API shimming, or messaging changes.


Recommendations

  1. (info) Add favorites screenshot tests with rebrand: 'enabled' (e.g. favorites-single.png rebrand variant) to lock in the new tile layout, shadows, and backdrop-filter: none behavior.
  2. (info) When the rebrand flag graduates, fold the @todo block (L150) into base rules and remove the :global(body[data-rebrand="true"]) wrapper per the existing comment.
  3. (info) Confirm onboarding screenshot rebaselines from the design-tokens v0.33.0 bump are intentional collateral (no favorites-specific action needed).
Open in Web View Automation 

Sent by Cursor Automation: Web compat and sec

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

semver-patch Bug fix / internal — no release needed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants