@bobfrankston/rmfmail 1.2.321 → 1.2.323
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 +16 -9
- package/.llm/trusted-lists.md +3 -0
- package/client/android-bootstrap.bundle.js +35 -9
- package/client/android-bootstrap.bundle.js.map +2 -2
- package/client/app.bundle.js +33 -3
- package/client/app.bundle.js.map +2 -2
- package/client/components/calendar-sidebar.js +14 -2
- package/client/components/calendar-sidebar.js.map +1 -1
- package/client/components/calendar-sidebar.ts +17 -2
- package/client/components/message-viewer.js +33 -0
- package/client/components/message-viewer.js.map +1 -1
- package/client/components/message-viewer.ts +32 -1
- package/client/compose/compose.bundle.js +1 -1
- package/client/compose/compose.bundle.js.map +2 -2
- package/client/lib/api-client.js +1 -1
- package/client/lib/api-client.js.map +1 -1
- package/client/lib/api-client.ts +3 -3
- package/docs/allowlist.md +15 -1
- package/npmchanges.md +43 -0
- package/package.json +7 -7
- package/packages/mailx-imap/package-lock.json +2 -2
- package/packages/mailx-imap/package.json +1 -1
- package/packages/mailx-service/index.d.ts +1 -0
- package/packages/mailx-service/index.d.ts.map +1 -1
- package/packages/mailx-service/index.js +9 -2
- package/packages/mailx-service/index.js.map +1 -1
- package/packages/mailx-service/index.ts +10 -3
- package/packages/mailx-service/package.json +1 -1
- package/packages/mailx-settings/docs/allowlist.md +15 -1
- package/packages/mailx-settings/index.d.ts +1 -0
- package/packages/mailx-settings/index.d.ts.map +1 -1
- package/packages/mailx-settings/index.js +4 -0
- package/packages/mailx-settings/index.js.map +1 -1
- package/packages/mailx-settings/index.ts +4 -0
- package/packages/mailx-settings/package.json +1 -1
- package/packages/mailx-store/package.json +1 -1
- package/packages/mailx-store/store.d.ts.map +1 -1
- package/packages/mailx-store/store.js +2 -0
- package/packages/mailx-store/store.js.map +1 -1
- package/packages/mailx-store/store.ts +2 -0
- package/packages/mailx-store-web/package.json +1 -1
- package/packages/mailx-store-web/web-service.d.ts +1 -0
- package/packages/mailx-store-web/web-service.d.ts.map +1 -1
- package/packages/mailx-store-web/web-service.js +1 -0
- package/packages/mailx-store-web/web-service.js.map +1 -1
- package/packages/mailx-store-web/web-service.ts +2 -1
- package/packages/mailx-store-web/web-settings.d.ts +1 -0
- package/packages/mailx-store-web/web-settings.d.ts.map +1 -1
- package/packages/mailx-store-web/web-settings.js +1 -0
- package/packages/mailx-store-web/web-settings.js.map +1 -1
- package/packages/mailx-store-web/web-settings.ts +1 -0
- package/packages/mailx-types/mailx-api.d.ts +1 -0
- package/packages/mailx-types/mailx-api.d.ts.map +1 -1
- package/packages/mailx-types/mailx-api.ts +1 -1
- package/packages/mailx-types/package.json +1 -1
- package/packages/mailx-types/trust.d.ts +18 -0
- package/packages/mailx-types/trust.d.ts.map +1 -1
- package/packages/mailx-types/trust.js +42 -4
- package/packages/mailx-types/trust.js.map +1 -1
- package/packages/mailx-types/trust.ts +60 -4
package/client/app.bundle.js
CHANGED
|
@@ -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");
|
|
@@ -6765,7 +6791,7 @@ async function renderCalendarList() {
|
|
|
6765
6791
|
if (list.length === 0) {
|
|
6766
6792
|
host.innerHTML = "";
|
|
6767
6793
|
} else {
|
|
6768
|
-
const sorted =
|
|
6794
|
+
const sorted = list.filter((c) => c.selected !== false).sort((a, b) => (a.primary ? 0 : 1) - (b.primary ? 0 : 1) || a.name.localeCompare(b.name));
|
|
6769
6795
|
host.innerHTML = sorted.map((c) => `<label class="cal-side-cal-row" title="${escapeHtml6(c.name)} \u2014 untick to hide its events in this list. Which calendars are listed is set in Google Calendar: the ones selected there appear; use Refresh after changing it.">
|
|
6770
6796
|
<input type="checkbox" class="cal-side-cal-check" data-cal-id="${escapeHtml6(c.id)}" ${hiddenCalendars.has(c.id) ? "" : "checked"}>
|
|
6771
6797
|
${calIconHtml(c)}
|
|
@@ -7219,7 +7245,11 @@ function openNewEventDialog() {
|
|
|
7219
7245
|
opt.selected = true;
|
|
7220
7246
|
calSelect.append(opt);
|
|
7221
7247
|
}
|
|
7222
|
-
calRow.hidden =
|
|
7248
|
+
calRow.hidden = false;
|
|
7249
|
+
calSelect.disabled = writable.length < 2;
|
|
7250
|
+
if (writable.length < 2) {
|
|
7251
|
+
calRow.title = writable.length ? `${writable[0].name} is the only calendar Google says you can add events to. The others are read-only (holidays, or shared without edit rights). To add or share a calendar, do that in Google Calendar and press Refresh.` : "Google reported no calendar you can add events to.";
|
|
7252
|
+
}
|
|
7223
7253
|
};
|
|
7224
7254
|
if (calendarList.length)
|
|
7225
7255
|
fillCalendars(calendarList);
|