@bobfrankston/rmfmail 1.2.320 → 1.2.322

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 (57) hide show
  1. package/.commitmsg +25 -12
  2. package/.llm/trusted-lists.md +3 -0
  3. package/client/android-bootstrap.bundle.js +35 -9
  4. package/client/android-bootstrap.bundle.js.map +2 -2
  5. package/client/app.bundle.js +27 -1
  6. package/client/app.bundle.js.map +2 -2
  7. package/client/components/message-viewer.js +33 -0
  8. package/client/components/message-viewer.js.map +1 -1
  9. package/client/components/message-viewer.ts +32 -1
  10. package/client/compose/compose.bundle.js +3 -2
  11. package/client/compose/compose.bundle.js.map +2 -2
  12. package/client/compose/compose.js +8 -1
  13. package/client/compose/compose.js.map +1 -1
  14. package/client/compose/compose.ts +8 -1
  15. package/client/lib/api-client.js +1 -1
  16. package/client/lib/api-client.js.map +1 -1
  17. package/client/lib/api-client.ts +3 -3
  18. package/docs/allowlist.md +15 -1
  19. package/npmchanges.md +30 -0
  20. package/package.json +3 -3
  21. package/packages/mailx-imap/package-lock.json +2 -2
  22. package/packages/mailx-imap/package.json +1 -1
  23. package/packages/mailx-service/index.d.ts +1 -0
  24. package/packages/mailx-service/index.d.ts.map +1 -1
  25. package/packages/mailx-service/index.js +1 -0
  26. package/packages/mailx-service/index.js.map +1 -1
  27. package/packages/mailx-service/index.ts +2 -1
  28. package/packages/mailx-service/package.json +1 -1
  29. package/packages/mailx-settings/docs/allowlist.md +15 -1
  30. package/packages/mailx-settings/index.d.ts +1 -0
  31. package/packages/mailx-settings/index.d.ts.map +1 -1
  32. package/packages/mailx-settings/index.js +4 -0
  33. package/packages/mailx-settings/index.js.map +1 -1
  34. package/packages/mailx-settings/index.ts +4 -0
  35. package/packages/mailx-settings/package.json +1 -1
  36. package/packages/mailx-store/package.json +1 -1
  37. package/packages/mailx-store/store.d.ts.map +1 -1
  38. package/packages/mailx-store/store.js +2 -0
  39. package/packages/mailx-store/store.js.map +1 -1
  40. package/packages/mailx-store/store.ts +2 -0
  41. package/packages/mailx-store-web/package.json +1 -1
  42. package/packages/mailx-store-web/web-service.d.ts +1 -0
  43. package/packages/mailx-store-web/web-service.d.ts.map +1 -1
  44. package/packages/mailx-store-web/web-service.js +1 -0
  45. package/packages/mailx-store-web/web-service.js.map +1 -1
  46. package/packages/mailx-store-web/web-service.ts +2 -1
  47. package/packages/mailx-store-web/web-settings.d.ts +1 -0
  48. package/packages/mailx-store-web/web-settings.d.ts.map +1 -1
  49. package/packages/mailx-store-web/web-settings.js +1 -0
  50. package/packages/mailx-store-web/web-settings.js.map +1 -1
  51. package/packages/mailx-store-web/web-settings.ts +1 -0
  52. package/packages/mailx-types/package.json +1 -1
  53. package/packages/mailx-types/trust.d.ts +18 -0
  54. package/packages/mailx-types/trust.d.ts.map +1 -1
  55. package/packages/mailx-types/trust.js +42 -4
  56. package/packages/mailx-types/trust.js.map +1 -1
  57. package/packages/mailx-types/trust.ts +60 -4
@@ -360,7 +360,7 @@ function trustSenderOrDomain(type, value) {
360
360
  return ipc().trustSenderOrDomain?.(type, value) ?? Promise.resolve({ trusted: false });
361
361
  }
362
362
  function getAllowlist() {
363
- return ipc().getAllowlist?.() ?? Promise.resolve({ senders: [], domains: [], recipients: [], flaggedSenders: [], flaggedDomains: [], trustedSenders: [], trustedDomains: [], trustedIntermediaries: [], trustedLists: [] });
363
+ return ipc().getAllowlist?.() ?? Promise.resolve({ senders: [], domains: [], recipients: [], flaggedSenders: [], flaggedDomains: [], trustedSenders: [], trustedDomains: [], trustedIntermediaries: [], trustedLists: [], trustedSendersVia: [] });
364
364
  }
365
365
  function flagSenderOrDomain(type, value) {
366
366
  return ipc().flagSenderOrDomain?.(type, value) ?? Promise.resolve({ flagged: false });
@@ -3295,6 +3295,32 @@ Delivered by the ${spam.listId} mailing list, which your server proved sent it.
3295
3295
  }
3296
3296
  warn.appendChild(actions);
3297
3297
  }
3298
+ const senderVias = worst === "danger" ? [] : Array.from(new Set(trust.map((f) => f.senderVia).filter(Boolean)));
3299
+ if (senderVias.length) {
3300
+ const actions = document.createElement("div");
3301
+ actions.className = "mv-trust-actions";
3302
+ for (const pair of senderVias) {
3303
+ const b = document.createElement("button");
3304
+ b.className = "mv-trust-action";
3305
+ b.textContent = `Trust ${pair}`;
3306
+ b.title = `Adds "${pair}" to trustedSendersVia in allowlist.jsonc. Stops this note for mail from ${pair.split(" via ")[0]} that ${pair.split(" via ")[1]} signs; a message without that signature is still checked.`;
3307
+ b.addEventListener("click", async () => {
3308
+ b.disabled = true;
3309
+ try {
3310
+ const res = await trustSenderOrDomain("via", pair);
3311
+ if (!res?.trusted)
3312
+ throw new Error("the sender-via list did not save");
3313
+ warn.remove();
3314
+ document.querySelector(".mv-spamscore")?.remove();
3315
+ } catch (e) {
3316
+ b.disabled = false;
3317
+ b.textContent = `Could not save: ${e?.message || e}`;
3318
+ }
3319
+ });
3320
+ actions.appendChild(b);
3321
+ }
3322
+ warn.appendChild(actions);
3323
+ }
3298
3324
  const vias = worst === "danger" ? [] : Array.from(new Set(trust.map((f) => f.via).filter(Boolean)));
3299
3325
  if (vias.length) {
3300
3326
  const actions = document.createElement("div");