You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Fix
Two profiles that write the same header on overlapping domains no longer
pick a silent winner. Every generated rule carries the same DNR priority,
and Chrome does not standardise ordering between rules with the same action
and priority — so one profile's header applied, the other silently did
nothing, and the popup showed both as applying (FINDING-021). v0.1.5 refuses
the configuration instead of letting Chrome choose: a colliding pair applies neither header, both profiles are marked in the popup with the header
name and the other profile's name, and a save or import that would create a
collision is refused with the same explanation. Domains overlap the way rules
do — example.com overlaps api.example.com, notexample.com does not.
Verified on the wire.
Migration
This can affect you without your having changed anything. v0.1.4's
subdomain fix made profiles overlap that did not overlap before — example.com and api.example.com is the common case — so a pair that
worked under v0.1.3 may be marked after updating, with neither header
applying until the header or the domains are changed in one of them. The
refusal is reversible, and editing an unrelated profile is not blocked while
a collision exists.
Notes
No new permissions. The manifest remains declarativeNetRequestWithHostAccess
and storage, with host access requested per-domain at grant time. No webRequest; the extension cannot read your traffic.
A colliding profile still shows a green domain dot, is counted in the
"domains granted" total, and the status line still reads "applying" — the
per-profile marker is the only surface reporting the collision. Being
addressed in the next release (FINDING-022, FINDING-026).
Full wire evidence for this release is in test/EVIDENCE.md (v0.1.5 —
sitting D). Predictions were frozen before the browser opened
(test/RUNBOOK-2026-09-01-v015.md); 13 of 15 were right, and the 2 wrong
ones are recorded with their original wording.
Selftest is 241 checks, 36 of them for this change, including a control that notexample.com is not treated as overlapping example.com. The new logic
also passes an eleven-mutation pass, re-runnable via test/mutate-collisions.py.
Known open items are tracked in FINDINGS.md (022–027); none block this fix.