@bobfrankston/rmfmail 1.1.86 → 1.1.88

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 (106) hide show
  1. package/.commitmsg +9 -12
  2. package/client/app.bundle.js +24 -2
  3. package/client/app.bundle.js.map +2 -2
  4. package/client/components/message-list.js +20 -2
  5. package/client/components/message-list.js.map +1 -1
  6. package/client/components/message-list.ts +19 -1
  7. package/client/components/message-viewer.js +17 -0
  8. package/client/components/message-viewer.js.map +1 -1
  9. package/client/components/message-viewer.ts +15 -0
  10. package/client/compose/compose.bundle.js +33 -21
  11. package/client/compose/compose.bundle.js.map +2 -2
  12. package/client/compose/compose.js +8 -9
  13. package/client/compose/compose.js.map +1 -1
  14. package/client/compose/compose.ts +8 -3
  15. package/client/lib/tinymce/skins/content/dark/content.js +10 -4
  16. package/client/lib/tinymce/skins/content/default/content.js +10 -4
  17. package/client/lib/tinymce/skins/content/document/content.js +10 -4
  18. package/client/lib/tinymce/skins/content/tinymce-5/content.js +10 -4
  19. package/client/lib/tinymce/skins/content/tinymce-5-dark/content.js +10 -4
  20. package/client/lib/tinymce/skins/content/writer/content.js +10 -4
  21. package/client/lib/tinymce/skins/ui/oxide/content.inline.js +10 -4
  22. package/client/lib/tinymce/skins/ui/oxide/content.js +10 -4
  23. package/client/lib/tinymce/skins/ui/oxide/skin.js +1 -4
  24. package/client/lib/tinymce/skins/ui/oxide/skin.shadowdom.js +1 -4
  25. package/client/lib/tinymce/skins/ui/oxide-dark/content.inline.js +10 -4
  26. package/client/lib/tinymce/skins/ui/oxide-dark/content.js +10 -4
  27. package/client/lib/tinymce/skins/ui/oxide-dark/skin.js +1 -4
  28. package/client/lib/tinymce/skins/ui/oxide-dark/skin.shadowdom.js +1 -4
  29. package/client/lib/tinymce/skins/ui/tinymce-5/content.inline.js +10 -4
  30. package/client/lib/tinymce/skins/ui/tinymce-5/content.js +10 -4
  31. package/client/lib/tinymce/skins/ui/tinymce-5/skin.js +1 -4
  32. package/client/lib/tinymce/skins/ui/tinymce-5/skin.shadowdom.js +1 -4
  33. package/client/lib/tinymce/skins/ui/tinymce-5-dark/content.inline.js +10 -4
  34. package/client/lib/tinymce/skins/ui/tinymce-5-dark/content.js +10 -4
  35. package/client/lib/tinymce/skins/ui/tinymce-5-dark/skin.js +1 -4
  36. package/client/lib/tinymce/skins/ui/tinymce-5-dark/skin.shadowdom.js +1 -4
  37. package/client/styles/components.css +6 -3
  38. package/npmchanges.md +35 -0
  39. package/package.json +1 -1
  40. package/client/lib/tinymce/skins/content/dark/content.js.map +0 -1
  41. package/client/lib/tinymce/skins/content/dark/content.min.js +0 -4
  42. package/client/lib/tinymce/skins/content/dark/content.min.js.map +0 -1
  43. package/client/lib/tinymce/skins/content/default/content.js.map +0 -1
  44. package/client/lib/tinymce/skins/content/default/content.min.js +0 -4
  45. package/client/lib/tinymce/skins/content/default/content.min.js.map +0 -1
  46. package/client/lib/tinymce/skins/content/document/content.js.map +0 -1
  47. package/client/lib/tinymce/skins/content/document/content.min.js +0 -4
  48. package/client/lib/tinymce/skins/content/document/content.min.js.map +0 -1
  49. package/client/lib/tinymce/skins/content/tinymce-5/content.js.map +0 -1
  50. package/client/lib/tinymce/skins/content/tinymce-5/content.min.js +0 -4
  51. package/client/lib/tinymce/skins/content/tinymce-5/content.min.js.map +0 -1
  52. package/client/lib/tinymce/skins/content/tinymce-5-dark/content.js.map +0 -1
  53. package/client/lib/tinymce/skins/content/tinymce-5-dark/content.min.js +0 -4
  54. package/client/lib/tinymce/skins/content/tinymce-5-dark/content.min.js.map +0 -1
  55. package/client/lib/tinymce/skins/content/writer/content.js.map +0 -1
  56. package/client/lib/tinymce/skins/content/writer/content.min.js +0 -4
  57. package/client/lib/tinymce/skins/content/writer/content.min.js.map +0 -1
  58. package/client/lib/tinymce/skins/ui/oxide/content.inline.js.map +0 -1
  59. package/client/lib/tinymce/skins/ui/oxide/content.inline.min.js +0 -4
  60. package/client/lib/tinymce/skins/ui/oxide/content.inline.min.js.map +0 -1
  61. package/client/lib/tinymce/skins/ui/oxide/content.js.map +0 -1
  62. package/client/lib/tinymce/skins/ui/oxide/content.min.js +0 -4
  63. package/client/lib/tinymce/skins/ui/oxide/content.min.js.map +0 -1
  64. package/client/lib/tinymce/skins/ui/oxide/skin.js.map +0 -1
  65. package/client/lib/tinymce/skins/ui/oxide/skin.min.js +0 -4
  66. package/client/lib/tinymce/skins/ui/oxide/skin.min.js.map +0 -1
  67. package/client/lib/tinymce/skins/ui/oxide/skin.shadowdom.js.map +0 -1
  68. package/client/lib/tinymce/skins/ui/oxide/skin.shadowdom.min.js +0 -4
  69. package/client/lib/tinymce/skins/ui/oxide/skin.shadowdom.min.js.map +0 -1
  70. package/client/lib/tinymce/skins/ui/oxide-dark/content.inline.js.map +0 -1
  71. package/client/lib/tinymce/skins/ui/oxide-dark/content.inline.min.js +0 -4
  72. package/client/lib/tinymce/skins/ui/oxide-dark/content.inline.min.js.map +0 -1
  73. package/client/lib/tinymce/skins/ui/oxide-dark/content.js.map +0 -1
  74. package/client/lib/tinymce/skins/ui/oxide-dark/content.min.js +0 -4
  75. package/client/lib/tinymce/skins/ui/oxide-dark/content.min.js.map +0 -1
  76. package/client/lib/tinymce/skins/ui/oxide-dark/skin.js.map +0 -1
  77. package/client/lib/tinymce/skins/ui/oxide-dark/skin.min.js +0 -4
  78. package/client/lib/tinymce/skins/ui/oxide-dark/skin.min.js.map +0 -1
  79. package/client/lib/tinymce/skins/ui/oxide-dark/skin.shadowdom.js.map +0 -1
  80. package/client/lib/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.js +0 -4
  81. package/client/lib/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.js.map +0 -1
  82. package/client/lib/tinymce/skins/ui/tinymce-5/content.inline.js.map +0 -1
  83. package/client/lib/tinymce/skins/ui/tinymce-5/content.inline.min.js +0 -4
  84. package/client/lib/tinymce/skins/ui/tinymce-5/content.inline.min.js.map +0 -1
  85. package/client/lib/tinymce/skins/ui/tinymce-5/content.js.map +0 -1
  86. package/client/lib/tinymce/skins/ui/tinymce-5/content.min.js +0 -4
  87. package/client/lib/tinymce/skins/ui/tinymce-5/content.min.js.map +0 -1
  88. package/client/lib/tinymce/skins/ui/tinymce-5/skin.js.map +0 -1
  89. package/client/lib/tinymce/skins/ui/tinymce-5/skin.min.js +0 -4
  90. package/client/lib/tinymce/skins/ui/tinymce-5/skin.min.js.map +0 -1
  91. package/client/lib/tinymce/skins/ui/tinymce-5/skin.shadowdom.js.map +0 -1
  92. package/client/lib/tinymce/skins/ui/tinymce-5/skin.shadowdom.min.js +0 -4
  93. package/client/lib/tinymce/skins/ui/tinymce-5/skin.shadowdom.min.js.map +0 -1
  94. package/client/lib/tinymce/skins/ui/tinymce-5-dark/content.inline.js.map +0 -1
  95. package/client/lib/tinymce/skins/ui/tinymce-5-dark/content.inline.min.js +0 -4
  96. package/client/lib/tinymce/skins/ui/tinymce-5-dark/content.inline.min.js.map +0 -1
  97. package/client/lib/tinymce/skins/ui/tinymce-5-dark/content.js.map +0 -1
  98. package/client/lib/tinymce/skins/ui/tinymce-5-dark/content.min.js +0 -4
  99. package/client/lib/tinymce/skins/ui/tinymce-5-dark/content.min.js.map +0 -1
  100. package/client/lib/tinymce/skins/ui/tinymce-5-dark/skin.js.map +0 -1
  101. package/client/lib/tinymce/skins/ui/tinymce-5-dark/skin.min.js +0 -4
  102. package/client/lib/tinymce/skins/ui/tinymce-5-dark/skin.min.js.map +0 -1
  103. package/client/lib/tinymce/skins/ui/tinymce-5-dark/skin.shadowdom.js.map +0 -1
  104. package/client/lib/tinymce/skins/ui/tinymce-5-dark/skin.shadowdom.min.js +0 -4
  105. package/client/lib/tinymce/skins/ui/tinymce-5-dark/skin.shadowdom.min.js.map +0 -1
  106. /package/packages/mailx-imap/{node_modules.npmglobalize-stash-88224 → node_modules.npmglobalize-stash-73816}/.package-lock.json +0 -0
package/.commitmsg CHANGED
@@ -1,14 +1,11 @@
1
- Fix: update banner wiped by next sync; raise server-search timeout
1
+ Fix: highlighted row with an empty viewer (selection/preview desync)
2
2
 
3
- Update banner: the "update available" notice shares the alert-banner
4
- element, and the sync-success path calls hideAlert() unconditionally
5
- so the banner the auto-update poller raised was cleared within seconds
6
- by the next sync and the user never saw it (the daemon log confirms the
7
- poller has been detecting every release). The banner is now tagged
8
- dataset.key="update-available"; hideAlert() leaves that key alone unless
9
- forced, and the X dismiss button passes force:true.
3
+ A list row could stay highlighted while the viewer showed "Select a
4
+ message to read". releaseFocus() only un-selected the tracked focusedRow,
5
+ so a stray .selected (multi-select remnant, or a row that kept the class
6
+ through an incremental rerender) was left highlighted after the viewer
7
+ had been cleared.
10
8
 
11
- Server search: a "Server"-checkbox search goes out to IMAP/Gmail and
12
- can exceed the default 30s IPC ceiling, surfacing as "mailxapi timeout:
13
- searchMessages". searchMessages now gets a 120s ceiling like the
14
- attachment actions.
9
+ releaseFocus() now strips every .selected row. focusRow() also sweeps
10
+ stray .selected in single-select mode before highlighting its row, so
11
+ the list can never show a highlight that doesn't match the viewer.
@@ -1665,6 +1665,19 @@ async function showMessage(accountId, uid, folderId, specialUse, isRetry = false
1665
1665
  chip.title = `${att.filename} (${att.mimeType})`;
1666
1666
  chip.addEventListener("click", async (e) => {
1667
1667
  e.preventDefault();
1668
+ if (chip.dataset.opening === "1")
1669
+ return;
1670
+ chip.dataset.opening = "1";
1671
+ const chipLabel = chip.textContent || "";
1672
+ chip.textContent = "\u23F3 Opening\u2026";
1673
+ const tStart = Date.now();
1674
+ const restoreChip = () => {
1675
+ const wait = Math.max(0, 600 - (Date.now() - tStart));
1676
+ setTimeout(() => {
1677
+ chip.textContent = chipLabel;
1678
+ chip.dataset.opening = "";
1679
+ }, wait);
1680
+ };
1668
1681
  try {
1669
1682
  const bridge = window._nativeBridge;
1670
1683
  if (bridge?.openAttachment) {
@@ -1693,6 +1706,8 @@ async function showMessage(accountId, uid, folderId, specialUse, isRetry = false
1693
1706
  const m = `Couldn't open "${att.filename}": ${err?.message || err}`;
1694
1707
  console.error(m);
1695
1708
  window.dispatchEvent(new CustomEvent("mailx-alert", { detail: { message: m, key: "attachment-open" } }));
1709
+ } finally {
1710
+ restoreChip();
1696
1711
  }
1697
1712
  });
1698
1713
  chip.draggable = true;
@@ -2507,6 +2522,13 @@ function rowKey(accountId, uid) {
2507
2522
  return `${accountId}:${uid}`;
2508
2523
  }
2509
2524
  function focusRow(row, opts = {}) {
2525
+ const body = row.el.parentElement;
2526
+ if (!body?.classList.contains("multi-select-on")) {
2527
+ body?.querySelectorAll(".ml-row.selected").forEach((r) => {
2528
+ if (r !== row.el)
2529
+ r.classList.remove("selected");
2530
+ });
2531
+ }
2510
2532
  if (focusedRow && focusedRow !== row)
2511
2533
  focusedRow.setSelected(false);
2512
2534
  row.setSelected(true);
@@ -2544,9 +2566,9 @@ function scrollFocusedIntoView() {
2544
2566
  focusedRow.el.scrollIntoView({ block: "center" });
2545
2567
  }
2546
2568
  function releaseFocus() {
2547
- if (focusedRow)
2548
- focusedRow.setSelected(false);
2549
2569
  focusedRow = null;
2570
+ const body = document.getElementById("ml-body");
2571
+ body?.querySelectorAll(".ml-row.selected").forEach((r) => r.classList.remove("selected"));
2550
2572
  clearViewer();
2551
2573
  document.dispatchEvent(new CustomEvent("mailx-focus-changed", { detail: null }));
2552
2574
  }