@bobfrankston/rmfmail 1.2.292 → 1.2.294

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.
Files changed (31) hide show
  1. package/.commitmsg +19 -25
  2. package/client/android-bootstrap.bundle.js +3 -1
  3. package/client/android-bootstrap.bundle.js.map +2 -2
  4. package/client/app.bundle.js +3 -1
  5. package/client/app.bundle.js.map +2 -2
  6. package/client/components/message-viewer.js +9 -1
  7. package/client/components/message-viewer.js.map +1 -1
  8. package/client/components/message-viewer.ts +8 -1
  9. package/npmchanges.md +63 -0
  10. package/package.json +6 -6
  11. package/packages/mailx-imap/package-lock.json +2 -2
  12. package/packages/mailx-imap/package.json +1 -1
  13. package/packages/mailx-service/index.d.ts.map +1 -1
  14. package/packages/mailx-service/index.js +6 -2
  15. package/packages/mailx-service/index.js.map +1 -1
  16. package/packages/mailx-service/index.ts +6 -2
  17. package/packages/mailx-service/package.json +1 -1
  18. package/packages/mailx-settings/index.d.ts +28 -1
  19. package/packages/mailx-settings/index.d.ts.map +1 -1
  20. package/packages/mailx-settings/index.js +49 -12
  21. package/packages/mailx-settings/index.js.map +1 -1
  22. package/packages/mailx-settings/index.ts +50 -14
  23. package/packages/mailx-settings/package.json +1 -1
  24. package/packages/mailx-store/package.json +1 -1
  25. package/packages/mailx-store-web/package.json +1 -1
  26. package/packages/mailx-store-web/web-settings.d.ts +2 -0
  27. package/packages/mailx-store-web/web-settings.d.ts.map +1 -1
  28. package/packages/mailx-store-web/web-settings.js +2 -0
  29. package/packages/mailx-store-web/web-settings.js.map +1 -1
  30. package/packages/mailx-store-web/web-settings.ts +2 -0
  31. /package/packages/mailx-imap/{node_modules.npmglobalize-stash-50524 → node_modules.npmglobalize-stash-38024}/.package-lock.json +0 -0
package/.commitmsg CHANGED
@@ -1,29 +1,23 @@
1
- Trusting a sender must not turn on their tracking pixels
1
+ A union merge cannot express a removal so removals are now stated
2
2
 
3
- Bob 2026-08-28, on a newsletter he subscribed to: "I don't need the spam
4
- reminder but I don't want to say show remote content in order to prevent
5
- tracking." He was right, and the shape of the bug is that the allowlist was
6
- answering two different questions with one list. The only gesture in the whole
7
- app that said "this correspondent is fine" was the remote-content banner's
8
- "Always: …", which buys a tracking pixel with every vote of confidence.
3
+ Toggling the new trust entry back OFF exposed the other half of yesterday's
4
+ merge bug: the IPC returned `{trusted: false}`, the entry left the local list,
5
+ and the union with the cloud copy handed it straight back. The same has been
6
+ true of `flagSenderOrDomain` since it was written "unflag this sender" has
7
+ always been a no-op whenever a cloud copy existed.
9
8
 
10
- Two lists now, both in allowlist.jsonc:
9
+ `mergeAllowlists(local, cloud, removals?)` now takes the values this write is
10
+ deleting on purpose, per key, and subtracts them after the union. Everything
11
+ not named stays additive, so a second machine's entries are exactly as safe as
12
+ before — the property that saved this file in the 2026-07-23 wipe is
13
+ untouched. `saveAllowlist(list, removals?)` passes it through, and both
14
+ toggles name what they removed.
11
15
 
12
- senders / domains load their images, and I trust them
13
- trustedSenders / trustedDomains ONLY stop warning me about them
16
+ Inference was never going to work here: a value missing from the local copy is
17
+ indistinguishable from a value another machine just added, which is precisely
18
+ why the union was written that way. Stating the removal is the only thing that
19
+ tells the two apart without a tombstone log.
14
20
 
15
- Both feed `senderTrusted` in the store; only the first feeds `allowRemote`, and
16
- that line carries a comment saying why it must never be widened to the second.
17
-
18
- The trust note gains the action it was missing: **"Stop warning about
19
- ‹address›"** and **"Stop warning about *@‹domain›"**, naming the sender rather
20
- than saying "this one" so the choice is checkable afterwards. New IPC
21
- `trustSenderOrDomain` (toggle, like flagSenderOrDomain) wired through all six
22
- places — service, jsonrpc, web-service, web-jsonrpc, android-bootstrap,
23
- api-client + mailxapi.js; the bridge-contract guard passes at 110 client calls.
24
-
25
- The buttons appear only where the server's own verdict is the WHOLE finding and
26
- the sender is proved. A forgery banner gets no such button: no list should be
27
- able to silence "this message is not what it says it is", and there is nothing
28
- to trust when identity is the thing in doubt. A failed write reports itself on
29
- the button rather than looking like it worked.
21
+ Two more tests in tests/allowlist-merge.test.ts: a stated removal sticks while
22
+ its neighbours stay, and removals match case-insensitively like every other
23
+ address comparison in this codebase.
@@ -4122,7 +4122,9 @@ var init_web_settings = __esm({
4122
4122
  domains: [],
4123
4123
  recipients: [],
4124
4124
  flaggedSenders: [],
4125
- flaggedDomains: []
4125
+ flaggedDomains: [],
4126
+ trustedSenders: [],
4127
+ trustedDomains: []
4126
4128
  };
4127
4129
  PREV_KEEP = 5;
4128
4130
  SHARED_REFRESH_MS = 5 * 6e4;