Skip to content

v0.1.5

Choose a tag to compare

@antrixy antrixy released this 02 Sep 20:31
· 203 commits to main since this release
ae3c78d

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.