Skip to content

Make broken-page recovery obvious for casual users - #8

Merged
G-man3207 merged 4 commits into
mainfrom
cursor/casual-site-breakage-recovery-d285
Aug 21, 2026
Merged

G-man3207 merged 4 commits into
mainfrom
cursor/casual-site-breakage-recovery-d285

Conversation

@G-man3207

@G-man3207 G-man3207 commented Aug 21, 2026

Copy link
Copy Markdown
Owner

Problem

Static can break some sites (logins, checkouts, anti-bot/CAPTCHA flows, pages that mishandle blocked extension probes). Advanced users already know to pause the origin or toggle rulesets. Casual users often do not:

  • The only recovery hint lived in the popup, and only after a narrow compatibility signal (an unhandled blocked fetch).
  • Copy was technical (unhandled page error, extension-probe fetch).
  • Pause here did not actually undo fingerprint/CAPTCHA network blocks, because those DNR lists are global. Pausing the site only stopped page-layer patches.

We also should not inject an in-page banner. That would be another Static fingerprint.

Approach

Keep recovery inside the toolbar popup, but make it the default casual path:

  1. Always-visible recovery card on the current site: Page not working? with one button, Pause this site and reload.
  2. Upgrade the same card when the existing high-confidence compatibility warning fires, instead of a separate technical banner. Toolbar badge shows ! so people notice they should open the popup.
  3. Paused state is equally obvious: Static is paused here + Turn protection back on.
  4. Pause now also installs an initiator-scoped DNR allow rule for that host, so fingerprint/CAPTCHA vendor blocks stop applying to that site. Resume removes the rule.

Static still does not auto-disable itself.

Test plan

  • Playwright: recovery card help / warning / paused states in the popup
  • Playwright: pause installs a DNR allow rule; resume removes it
  • Playwright: toolbar badge shows ! for a fresh compatibility warning
  • Existing compatibility-warning, per-site disable, and header-spoof tests still pass
  • Firefox package self-check: pause-allow retry must not leave Chrome-only DNR type names in the zip

Results

  • npm run test:static: 42 passed, 1 skipped (Firefox zip test now also passing locally with CI=1)
  • Recovery UX + learned-path Noise tests after merging latest main: 14 passed
  • node build-firefox.js self-check: passed after removing leftover webtransport / webbundle string literals from the pause-allow retry path
Open in Web Open in Cursor 

Show a plain-language Page not working? card in the popup with one-click pause and reload, upgrade it when Static has a compatibility warning, and actually let paused sites through the global fingerprint/CAPTCHA network lists.
Playwright opens popup.html as a tab, so point it at the http tab via tabId and install pause-allow DNR rules through storage updates instead of service-worker sendMessage.
@G-man3207 G-man3207 self-assigned this Aug 21, 2026
Keep both Unreleased changelog entries: popup recovery UX from this branch and learned WAR-path Noise coverage from main.
The pause-allow retry path named webtransport/webbundle, which the Firefox zip self-check forbids. Filter those types without quoting them, and blank leftover quoted names during the Firefox build.
@G-man3207
G-man3207 marked this pull request as ready for review August 21, 2026 14:05
@G-man3207
G-man3207 merged commit 94e200d into main Aug 21, 2026
2 checks passed
@G-man3207
G-man3207 deleted the cursor/casual-site-breakage-recovery-d285 branch August 21, 2026 14:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants