@bobfrankston/rmfmail 1.1.4 → 1.1.6

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 (73) hide show
  1. package/bin/build-bundles.mjs +14 -4
  2. package/bin/mailx.js +8 -3
  3. package/bin/mailx.js.map +1 -1
  4. package/bin/mailx.ts +8 -3
  5. package/client/android-bootstrap.bundle.js +2151 -2
  6. package/client/android-bootstrap.bundle.js.map +4 -4
  7. package/client/app.bundle.js +40 -8
  8. package/client/app.bundle.js.map +2 -2
  9. package/client/app.js +15 -6
  10. package/client/app.js.map +1 -1
  11. package/client/app.ts +14 -6
  12. package/client/components/alarms.js +36 -10
  13. package/client/components/alarms.js.map +1 -1
  14. package/client/components/alarms.ts +32 -10
  15. package/client/components/message-list.js +30 -7
  16. package/client/components/message-list.js.map +1 -1
  17. package/client/components/message-list.ts +28 -6
  18. package/package.json +3 -3
  19. package/packages/mailx-api/index.d.ts +2 -2
  20. package/packages/mailx-api/index.d.ts.map +1 -1
  21. package/packages/mailx-api/index.js +2 -2
  22. package/packages/mailx-api/index.js.map +1 -1
  23. package/packages/mailx-api/index.ts +3 -3
  24. package/packages/mailx-core/index.d.ts.map +1 -1
  25. package/packages/mailx-core/index.js +3 -2
  26. package/packages/mailx-core/index.js.map +1 -1
  27. package/packages/mailx-core/index.ts +3 -2
  28. package/packages/mailx-imap/index.d.ts +13 -4
  29. package/packages/mailx-imap/index.d.ts.map +1 -1
  30. package/packages/mailx-imap/index.js +16 -8
  31. package/packages/mailx-imap/index.js.map +1 -1
  32. package/packages/mailx-imap/index.ts +15 -7
  33. package/packages/mailx-imap/package-lock.json +2 -2
  34. package/packages/mailx-imap/package.json +1 -1
  35. package/packages/mailx-server/index.d.ts.map +1 -1
  36. package/packages/mailx-server/index.js +4 -3
  37. package/packages/mailx-server/index.js.map +1 -1
  38. package/packages/mailx-server/index.ts +4 -3
  39. package/packages/mailx-service/db-worker.js +3 -4
  40. package/packages/mailx-service/db-worker.js.map +1 -1
  41. package/packages/mailx-service/db-worker.ts +5 -6
  42. package/packages/mailx-service/index.d.ts +20 -3
  43. package/packages/mailx-service/index.d.ts.map +1 -1
  44. package/packages/mailx-service/index.js +19 -17
  45. package/packages/mailx-service/index.js.map +1 -1
  46. package/packages/mailx-service/index.ts +18 -17
  47. package/packages/mailx-service/local-store.d.ts +7 -144
  48. package/packages/mailx-service/local-store.d.ts.map +1 -1
  49. package/packages/mailx-service/local-store.js +6 -511
  50. package/packages/mailx-service/local-store.js.map +1 -1
  51. package/packages/mailx-service/local-store.ts +7 -551
  52. package/packages/mailx-store/charset.d.ts +15 -0
  53. package/packages/mailx-store/charset.d.ts.map +1 -0
  54. package/packages/mailx-store/charset.js +61 -0
  55. package/packages/mailx-store/charset.js.map +1 -0
  56. package/packages/mailx-store/charset.ts +45 -0
  57. package/packages/mailx-store/index.d.ts +2 -0
  58. package/packages/mailx-store/index.d.ts.map +1 -1
  59. package/packages/mailx-store/index.js +2 -0
  60. package/packages/mailx-store/index.js.map +1 -1
  61. package/packages/mailx-store/index.ts +4 -0
  62. package/packages/mailx-store/package.json +1 -1
  63. package/packages/mailx-store/store.d.ts +169 -0
  64. package/packages/mailx-store/store.d.ts.map +1 -0
  65. package/packages/mailx-store/store.js +528 -0
  66. package/packages/mailx-store/store.js.map +1 -0
  67. package/packages/mailx-store/store.ts +567 -0
  68. package/client/lib/tinymce/themes/silver/index.js +0 -7
  69. package/client/lib/tinymce/themes/silver/theme.js +0 -34829
  70. package/client/lib/tinymce/themes/silver/theme.min.js +0 -1
  71. package/client/lib/tinymce/tinymce.js +0 -41682
  72. package/client/lib/tinymce/tinymce.min.js +0 -10
  73. /package/packages/mailx-imap/{node_modules.npmglobalize-stash-39436 → node_modules.npmglobalize-stash-41384}/.package-lock.json +0 -0
@@ -2668,18 +2668,29 @@ function removeMessagesAndReconcile(uids) {
2668
2668
  for (const row of Array.from(body.querySelectorAll(".ml-row"))) {
2669
2669
  const el = row;
2670
2670
  const key = `${el.dataset.accountId}:${el.dataset.uid}`;
2671
- if (!stateUids.has(key))
2672
- el.remove();
2671
+ if (!stateUids.has(key)) {
2672
+ const dead = rowByKey.get(key);
2673
+ if (dead)
2674
+ dead.detach();
2675
+ else
2676
+ el.remove();
2677
+ }
2673
2678
  }
2674
2679
  if (getMessages2().length === 0) {
2675
2680
  body.innerHTML = `<div class="ml-empty">No messages</div>`;
2676
2681
  }
2677
2682
  }
2678
2683
  if (outcome.focusedWasRemoved) {
2679
- if (outcome.nextSurvivor && focusByIdentity(outcome.nextSurvivor.accountId, outcome.nextSurvivor.uid)) {
2680
- } else {
2681
- releaseFocus();
2684
+ const survivor = outcome.nextSurvivor;
2685
+ if (survivor && focusByIdentity(survivor.accountId, survivor.uid)) {
2686
+ return;
2682
2687
  }
2688
+ const remaining = getMessages2();
2689
+ for (const m of remaining) {
2690
+ if (focusByIdentity(m.accountId, m.uid))
2691
+ return;
2692
+ }
2693
+ releaseFocus();
2683
2694
  }
2684
2695
  }
2685
2696
  function reloadCurrentFolder() {
@@ -4655,7 +4666,8 @@ async function collectDueAlarms(now) {
4655
4666
  try {
4656
4667
  const events = await getCalendarEvents(now - LOOKBACK_MS, now + LOOKAHEAD_MS);
4657
4668
  for (const ev of events) {
4658
- if (!ev.uuid)
4669
+ const stableId = ev.providerId || ev.uuid;
4670
+ if (!stableId)
4659
4671
  continue;
4660
4672
  const startMs = ev.startMs || 0;
4661
4673
  if (!startMs)
@@ -4663,7 +4675,7 @@ async function collectDueAlarms(now) {
4663
4675
  if (!Array.isArray(ev.reminderMinutes) || ev.reminderMinutes.length === 0)
4664
4676
  continue;
4665
4677
  const offsets = ev.reminderMinutes.map((m) => m * 6e4);
4666
- const occBaseKey = occKey(ev.uuid, startMs);
4678
+ const occBaseKey = occKey(stableId, startMs);
4667
4679
  let pick = null;
4668
4680
  const eligibleOffsets = [];
4669
4681
  for (const offsetMs of offsets) {
@@ -4937,6 +4949,17 @@ async function firePopupForItem(item) {
4937
4949
  snoozeItem(item, 60);
4938
4950
  break;
4939
4951
  case "Dismiss":
4952
+ case "dismissed":
4953
+ // msger reports window-close as r.dismissed=true → daemon
4954
+ // wrapper lowercases to "dismissed". Treat the same as
4955
+ // explicit Dismiss-button: the popup HAD a clear button
4956
+ // for that action, so any close that lands here is the
4957
+ // user's "I'm done with this reminder" — not a 15-min
4958
+ // snooze. Bob 2026-05-14: "I keep dismissing the
4959
+ // reminder but it keeps coming back" — the lowercase
4960
+ // path was hitting the snooze-15-min default, so the
4961
+ // popup re-fired every 15 min indefinitely.
4962
+ case "closed":
4940
4963
  {
4941
4964
  const m = loadDismissed();
4942
4965
  m[item.uuid] = true;
@@ -4953,7 +4976,12 @@ async function firePopupForItem(item) {
4953
4976
  deleteCalendarEvent(item.uuid).catch((e) => console.error(` [alarm] delete failed for ${item.uuid}: ${e?.message || e}`));
4954
4977
  break;
4955
4978
  default:
4956
- snoozeItem(item, 15);
4979
+ console.warn(`[alarm] unknown popup result: button=${JSON.stringify(r.button)}, form=${JSON.stringify(r.form)}`);
4980
+ {
4981
+ const m = loadDismissed();
4982
+ m[item.uuid] = true;
4983
+ saveDismissed(m);
4984
+ }
4957
4985
  break;
4958
4986
  }
4959
4987
  }
@@ -7988,6 +8016,10 @@ subscribeStore("*", (ev) => {
7988
8016
  document.dispatchEvent(new CustomEvent("mailx-remove-stale", {
7989
8017
  detail: { accountId: ev.accountId, uid: ev.uid }
7990
8018
  }));
8019
+ } else if (ev.kind === "messageMoved" && ev.accountId && ev.uid) {
8020
+ document.dispatchEvent(new CustomEvent("mailx-remove-stale", {
8021
+ detail: { accountId: ev.accountId, uid: ev.uid }
8022
+ }));
7991
8023
  }
7992
8024
  });
7993
8025
  async function openComposeFromMailto(m) {