Skip to content

Close out #3 and #5, add a system diagram - #8

Merged
EnesYilmazcode merged 2 commits into
mainfrom
fix/issue-5-counter-label
Aug 9, 2026
Merged

EnesYilmazcode merged 2 commits into
mainfrom
fix/issue-5-counter-label

Conversation

@EnesYilmazcode

Copy link
Copy Markdown
Owner

Closes #3. Closes #5. Partially addresses #7.

Two of the three open issues turned out to be answerable by reading
gmail.end.bundle.js rather than by writing code.

#3, drive their opt-out instead of deleting the node?

No, and the bundle says why. Their Remove handler kA() branches on
signatureVirality, which is the signature variant the server assigned the
account:

var a = iK(o).signatureVirality;
kI = [17, 18];
kI.includes(a)
  ? (new x7(function () {          // dialog, and on confirm:
      kT(false);                   // POST /settings/update/signature
      iP(sP({ signature: false })); //      { signatureEnabled: false }
      aM(t, hg);                   // remove the node
    }), kP(n, true))
  : iV(o).disableSignature || kC(); // otherwise: upgrade modal

So:

variant what Remove does
17, 18 dialog, then persists server side. permanent.
11 to 16 this email only, plus the upgrade modal unless the account has disableSignature

Three reasons not to build on it:

  1. It is only a real opt-out on two of the eight variants, and the variant is
    not ours to choose.
  2. On the rest it can fire the upgrade modal on every send.
  3. The persisting path is a server call that changes an account setting. An
    extension quietly flipping that on somebody's Mailsuite account is a much
    larger action than deleting a node out of a draft, and a much ruder surprise
    if they did not expect it. Local deletion stops the moment you switch the
    extension off. A flipped account setting does not.

The useful half of this is now in the README, including how to check your own
variant:

document.querySelector('[data-signature-version]')

Anyone on 17 or 18 should click Remove once and uninstall this extension.
Saying so in our own README costs nothing and is true.

#5, the popup counter

It counts scrub passes, not distinct emails, because the observer can fire more
than once on the same draft. Relabelled with the caveat instead of faking a
precision nobody needs:

0 removals
Counts scrub passes, not distinct emails, so one stubborn draft can score more
than once.

Took the cheap option from the issue deliberately. A wrong label is worth fixing;
threading per-compose-window state through the extension to make the number
exact is not, for something nobody audits.

#7, screenshots

Still open, and I cannot close it. Real before and after shots need a browser, a
Gmail session and a live Mailsuite account.

What I could do is docs/how-it-works.svg, which carries the two things the
ASCII was straining to show: the tracker-versus-watermark split inside the
email, and the five-step loop that produces the read receipt, with the watermark
visibly absent from it. The README embeds it and two ASCII blocks came out.

Deliberately not faking it: rendering their signature markup standalone and
presenting it as a Gmail screenshot would look better and be a lie.

Tests

15, unchanged, passing. Nothing in this PR touches detect.js.

EnesYilmazcode and others added 2 commits August 8, 2026 21:58
Three open issues, two of them resolved by reading gmail.end.bundle.js rather
than by writing code.

#3, whether to drive Mailsuite's own opt-out instead of deleting the node.
Answer is no, and the bundle says why. Their Remove handler kA() branches on
signatureVirality, the variant the server assigned the account:

  17 or 18  -> dialog, then POST /settings/update/signature
               { signatureEnabled: false }. persists. permanent.
  11 to 16  -> strips this one email, and calls the upgrade modal unless
               the account carries the disableSignature permission.

So their button is only a real opt-out on two of the eight variants, and the
variant is not ours to pick. Worse, the persisting path is a server call that
changes an account setting. An extension quietly flipping that on somebody's
Mailsuite account is a far larger action than deleting a node from a draft, and
a much ruder surprise. Deleting the div locally does the same visible job on
every variant, touches nothing server side, and stops when you switch it off.

Documented in the README, including how to check your own variant, since anyone
on 17 or 18 should click Remove once and uninstall this.

#5, the popup counter. It counts scrub passes, not distinct emails, so the
label was a small lie. Relabelled with the caveat rather than faking precision
nobody needs.

#7, screenshots. Cannot be done from a terminal, it needs a live Gmail session.
Added docs/how-it-works.svg instead, which carries the tracker-versus-watermark
split and the five-step receipt loop that the ASCII was straining to show. The
issue stays open for the real before and after.

15 tests, unchanged and passing.

Closes #3
Closes #5

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013rTepGiDUe15iPn6XqmKjy
GitHub sanitises SVG. If the style block were stripped, every rect would fall
back to fill:black and the diagram would render as solid rectangles sitting on
top of the text. Unreadable, and the kind of thing you only discover after it is
already on the README.

All fill, stroke and font attributes are now inline on the elements. No style
element, no class attributes, nothing left to strip. Greys still chosen to stay
legible on both light and dark backgrounds.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013rTepGiDUe15iPn6XqmKjy
@EnesYilmazcode
EnesYilmazcode force-pushed the fix/issue-5-counter-label branch from ab26502 to de60ebc Compare August 9, 2026 02:00
@EnesYilmazcode
EnesYilmazcode merged commit 5fb057c into main Aug 9, 2026
1 check passed
@EnesYilmazcode
EnesYilmazcode deleted the fix/issue-5-counter-label branch August 9, 2026 02:01
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.

Popup counter is labelled as a count but isn't one Prefer Mailsuite's own opt-out over deleting DOM

1 participant