@bobfrankston/rmfmail 1.2.323 → 1.2.324
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.commitmsg +22 -15
- package/.llm/trusted-lists.md +1 -0
- package/client/android-bootstrap.bundle.js +5 -2
- package/client/android-bootstrap.bundle.js.map +2 -2
- package/client/app.bundle.js +3 -2
- package/client/app.bundle.js.map +2 -2
- package/client/components/message-viewer.js +12 -2
- package/client/components/message-viewer.js.map +1 -1
- package/client/components/message-viewer.ts +13 -3
- package/docs/allowlist.md +1 -0
- package/npmchanges.md +20 -0
- package/package.json +1 -1
- package/packages/mailx-imap/package-lock.json +2 -2
- package/packages/mailx-imap/package.json +1 -1
- package/packages/mailx-settings/docs/allowlist.md +1 -0
- package/packages/mailx-settings/package.json +1 -1
- package/packages/mailx-store/package.json +1 -1
- package/packages/mailx-store-web/package.json +1 -1
- package/packages/mailx-types/package.json +1 -1
- package/packages/mailx-types/trust.d.ts +4 -0
- package/packages/mailx-types/trust.d.ts.map +1 -1
- package/packages/mailx-types/trust.js +17 -1
- package/packages/mailx-types/trust.js.map +1 -1
- package/packages/mailx-types/trust.ts +20 -1
package/.commitmsg
CHANGED
|
@@ -1,17 +1,24 @@
|
|
|
1
|
-
|
|
1
|
+
A proved, trusted sender vouches for its own links; the trust button appears whenever trust would clear the banner
|
|
2
2
|
|
|
3
|
-
Bob 2026-09-11
|
|
4
|
-
|
|
5
|
-
two writable calendars — and his four are one owned calendar plus two
|
|
6
|
-
holiday feeds and a shared one, so the row never appeared and read as a
|
|
7
|
-
missing feature.
|
|
3
|
+
Bob 2026-09-11, a Toast receipt: "Another message to flag as safe because
|
|
4
|
+
I trust toasttakeout.com. There should be a trust button."
|
|
8
5
|
|
|
9
|
-
The
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
6
|
+
The mail is dmarc=pass toasttab.com, toasttab.com is on his list, so the
|
|
7
|
+
server's 19.9 spam verdict was already silent — what remained was the
|
|
8
|
+
redirector warning: every link runs through toasttakeout.page.link
|
|
9
|
+
(Firebase's per-app redirector) to toasttakeout.com. Two organisations by
|
|
10
|
+
hostname, nobody signed for page.link, the sender is neither, so rules 1
|
|
11
|
+
to 4 all missed, and the finding's own text said "only the sender could
|
|
12
|
+
vouch for the link". Rule 5: when the proved sender is one the reader
|
|
13
|
+
trusts, it has. Proof stays mandatory — trust without the server's pass
|
|
14
|
+
clears nothing (tested), so a forger typing a trusted domain into From
|
|
15
|
+
gets no vouching.
|
|
16
|
+
|
|
17
|
+
The banner's "Stop warning about" buttons used to appear only when the
|
|
18
|
+
server's verdict was the single finding. They now appear whenever every
|
|
19
|
+
finding is one trust clears (the verdict, the redirector warning) and the
|
|
20
|
+
sender is proved — the Toast receipt carried both and so had no button
|
|
21
|
+
on the one message that needed it. A proved-but-untrusted sender's
|
|
22
|
+
redirector warning now names the action; an unproved one says plainly
|
|
23
|
+
that nothing proves who the sender is. mailx-types 0.1.99. Verified on
|
|
24
|
+
the live receipt: two cautions before, nothing after.
|
package/.llm/trusted-lists.md
CHANGED
|
@@ -69,3 +69,4 @@ tests/trust.test.ts, .commitmsg, TODO.md C165, root version 1.2.311. Then rebuil
|
|
|
69
69
|
- Bob confirmed 2026-09-10: 'quill worked' (v1.2.320 placeCaretAfterLink).
|
|
70
70
|
- v1.2.322: trustedSendersVia ('sender via relay' pairs) — Ground News via amazonses.com. Banner offers 'Trust ‹sender› via ‹relay›' on the trusted-but-unproved caution; counts only when the relay DKIM-signed. 45/45 trust tests.
|
|
71
71
|
- v1.2.323: New event picker always shown (disabled + explanatory tooltip when only one writable calendar); getCalendars returns all calendars with selected flag; daemon logs roles.
|
|
72
|
+
- v1.2.324: redirector rule 5 — proved + trusted sender vouches for its own links (Toast via toasttakeout.page.link). Banner 'Stop warning about' now offered when every finding is verdict/redirector and sender proved. 48/48.
|
|
@@ -2589,6 +2589,8 @@ function provedSenderDomain(input) {
|
|
|
2589
2589
|
function redirectorLink(input) {
|
|
2590
2590
|
const bodyHtml = input.bodyHtml || "";
|
|
2591
2591
|
const senderDomain = provedSenderDomain(input);
|
|
2592
|
+
if (senderDomain && input.senderTrusted)
|
|
2593
|
+
return null;
|
|
2592
2594
|
const intermediary = provedIntermediary(input);
|
|
2593
2595
|
const signers = dkimSigners(input);
|
|
2594
2596
|
for (const m of bodyHtml.matchAll(/href\s*=\s*["']([^"']+)["']/gi)) {
|
|
@@ -2618,13 +2620,14 @@ function redirectorLink(input) {
|
|
|
2618
2620
|
if (senderDomain && sameOrg(target.hostname, senderDomain))
|
|
2619
2621
|
continue;
|
|
2620
2622
|
const signer = signers.find((s) => sameOrg(s, url.hostname));
|
|
2621
|
-
const how = signer ? ` ${signer} signed this message; "Trust ${signer} as an intermediary" stops this warning for links through ${signer} in mail it signs.` : ` Nobody signed this message for ${url.hostname}, so there is no intermediary to trust; only the sender could vouch for the link.`;
|
|
2623
|
+
const how = signer ? ` ${signer} signed this message; "Trust ${signer} as an intermediary" stops this warning for links through ${signer} in mail it signs.` : senderDomain ? ` Nobody signed this message for ${url.hostname}, so there is no intermediary to trust; ${senderDomain} proved it sent this, and "Stop warning about *@${senderDomain}" lets it vouch for its own links.` : ` Nobody signed this message for ${url.hostname}, so there is no intermediary to trust; only the sender could vouch for the link, and nothing proves who the sender is.`;
|
|
2622
2624
|
return {
|
|
2623
2625
|
id: "redirector-link",
|
|
2624
2626
|
severity: "caution",
|
|
2625
2627
|
text: `A link hides where it goes: it passes through ${url.hostname} and ends at ${target.hostname}.`,
|
|
2626
2628
|
detail: `${url.hostname} -> ${target.hostname}.${how}`,
|
|
2627
|
-
...signer ? { via: signer } : {}
|
|
2629
|
+
...signer ? { via: signer } : {},
|
|
2630
|
+
...senderDomain && !signer ? { sender: senderDomain } : {}
|
|
2628
2631
|
};
|
|
2629
2632
|
}
|
|
2630
2633
|
}
|