@bobfrankston/rmfmail 1.1.84 → 1.1.86

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 (105) hide show
  1. package/.commitmsg +13 -5
  2. package/client/app.bundle.js +5 -2
  3. package/client/app.bundle.js.map +2 -2
  4. package/client/app.js +14 -3
  5. package/client/app.js.map +1 -1
  6. package/client/app.ts +13 -3
  7. package/client/components/message-list.js.map +1 -1
  8. package/client/components/message-list.ts +1 -0
  9. package/client/compose/compose.js +38 -16
  10. package/client/compose/compose.js.map +1 -1
  11. package/client/compose/compose.ts +34 -15
  12. package/client/lib/mailxapi.js +5 -0
  13. package/client/lib/tinymce/skins/content/dark/content.js +4 -10
  14. package/client/lib/tinymce/skins/content/dark/content.js.map +1 -0
  15. package/client/lib/tinymce/skins/content/dark/content.min.js +4 -0
  16. package/client/lib/tinymce/skins/content/dark/content.min.js.map +1 -0
  17. package/client/lib/tinymce/skins/content/default/content.js +4 -10
  18. package/client/lib/tinymce/skins/content/default/content.js.map +1 -0
  19. package/client/lib/tinymce/skins/content/default/content.min.js +4 -0
  20. package/client/lib/tinymce/skins/content/default/content.min.js.map +1 -0
  21. package/client/lib/tinymce/skins/content/document/content.js +4 -10
  22. package/client/lib/tinymce/skins/content/document/content.js.map +1 -0
  23. package/client/lib/tinymce/skins/content/document/content.min.js +4 -0
  24. package/client/lib/tinymce/skins/content/document/content.min.js.map +1 -0
  25. package/client/lib/tinymce/skins/content/tinymce-5/content.js +4 -10
  26. package/client/lib/tinymce/skins/content/tinymce-5/content.js.map +1 -0
  27. package/client/lib/tinymce/skins/content/tinymce-5/content.min.js +4 -0
  28. package/client/lib/tinymce/skins/content/tinymce-5/content.min.js.map +1 -0
  29. package/client/lib/tinymce/skins/content/tinymce-5-dark/content.js +4 -10
  30. package/client/lib/tinymce/skins/content/tinymce-5-dark/content.js.map +1 -0
  31. package/client/lib/tinymce/skins/content/tinymce-5-dark/content.min.js +4 -0
  32. package/client/lib/tinymce/skins/content/tinymce-5-dark/content.min.js.map +1 -0
  33. package/client/lib/tinymce/skins/content/writer/content.js +4 -10
  34. package/client/lib/tinymce/skins/content/writer/content.js.map +1 -0
  35. package/client/lib/tinymce/skins/content/writer/content.min.js +4 -0
  36. package/client/lib/tinymce/skins/content/writer/content.min.js.map +1 -0
  37. package/client/lib/tinymce/skins/ui/oxide/content.inline.js +4 -10
  38. package/client/lib/tinymce/skins/ui/oxide/content.inline.js.map +1 -0
  39. package/client/lib/tinymce/skins/ui/oxide/content.inline.min.js +4 -0
  40. package/client/lib/tinymce/skins/ui/oxide/content.inline.min.js.map +1 -0
  41. package/client/lib/tinymce/skins/ui/oxide/content.js +4 -10
  42. package/client/lib/tinymce/skins/ui/oxide/content.js.map +1 -0
  43. package/client/lib/tinymce/skins/ui/oxide/content.min.js +4 -0
  44. package/client/lib/tinymce/skins/ui/oxide/content.min.js.map +1 -0
  45. package/client/lib/tinymce/skins/ui/oxide/skin.js +4 -1
  46. package/client/lib/tinymce/skins/ui/oxide/skin.js.map +1 -0
  47. package/client/lib/tinymce/skins/ui/oxide/skin.min.js +4 -0
  48. package/client/lib/tinymce/skins/ui/oxide/skin.min.js.map +1 -0
  49. package/client/lib/tinymce/skins/ui/oxide/skin.shadowdom.js +4 -1
  50. package/client/lib/tinymce/skins/ui/oxide/skin.shadowdom.js.map +1 -0
  51. package/client/lib/tinymce/skins/ui/oxide/skin.shadowdom.min.js +4 -0
  52. package/client/lib/tinymce/skins/ui/oxide/skin.shadowdom.min.js.map +1 -0
  53. package/client/lib/tinymce/skins/ui/oxide-dark/content.inline.js +4 -10
  54. package/client/lib/tinymce/skins/ui/oxide-dark/content.inline.js.map +1 -0
  55. package/client/lib/tinymce/skins/ui/oxide-dark/content.inline.min.js +4 -0
  56. package/client/lib/tinymce/skins/ui/oxide-dark/content.inline.min.js.map +1 -0
  57. package/client/lib/tinymce/skins/ui/oxide-dark/content.js +4 -10
  58. package/client/lib/tinymce/skins/ui/oxide-dark/content.js.map +1 -0
  59. package/client/lib/tinymce/skins/ui/oxide-dark/content.min.js +4 -0
  60. package/client/lib/tinymce/skins/ui/oxide-dark/content.min.js.map +1 -0
  61. package/client/lib/tinymce/skins/ui/oxide-dark/skin.js +4 -1
  62. package/client/lib/tinymce/skins/ui/oxide-dark/skin.js.map +1 -0
  63. package/client/lib/tinymce/skins/ui/oxide-dark/skin.min.js +4 -0
  64. package/client/lib/tinymce/skins/ui/oxide-dark/skin.min.js.map +1 -0
  65. package/client/lib/tinymce/skins/ui/oxide-dark/skin.shadowdom.js +4 -1
  66. package/client/lib/tinymce/skins/ui/oxide-dark/skin.shadowdom.js.map +1 -0
  67. package/client/lib/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.js +4 -0
  68. package/client/lib/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.js.map +1 -0
  69. package/client/lib/tinymce/skins/ui/tinymce-5/content.inline.js +4 -10
  70. package/client/lib/tinymce/skins/ui/tinymce-5/content.inline.js.map +1 -0
  71. package/client/lib/tinymce/skins/ui/tinymce-5/content.inline.min.js +4 -0
  72. package/client/lib/tinymce/skins/ui/tinymce-5/content.inline.min.js.map +1 -0
  73. package/client/lib/tinymce/skins/ui/tinymce-5/content.js +4 -10
  74. package/client/lib/tinymce/skins/ui/tinymce-5/content.js.map +1 -0
  75. package/client/lib/tinymce/skins/ui/tinymce-5/content.min.js +4 -0
  76. package/client/lib/tinymce/skins/ui/tinymce-5/content.min.js.map +1 -0
  77. package/client/lib/tinymce/skins/ui/tinymce-5/skin.js +4 -1
  78. package/client/lib/tinymce/skins/ui/tinymce-5/skin.js.map +1 -0
  79. package/client/lib/tinymce/skins/ui/tinymce-5/skin.min.js +4 -0
  80. package/client/lib/tinymce/skins/ui/tinymce-5/skin.min.js.map +1 -0
  81. package/client/lib/tinymce/skins/ui/tinymce-5/skin.shadowdom.js +4 -1
  82. package/client/lib/tinymce/skins/ui/tinymce-5/skin.shadowdom.js.map +1 -0
  83. package/client/lib/tinymce/skins/ui/tinymce-5/skin.shadowdom.min.js +4 -0
  84. package/client/lib/tinymce/skins/ui/tinymce-5/skin.shadowdom.min.js.map +1 -0
  85. package/client/lib/tinymce/skins/ui/tinymce-5-dark/content.inline.js +4 -10
  86. package/client/lib/tinymce/skins/ui/tinymce-5-dark/content.inline.js.map +1 -0
  87. package/client/lib/tinymce/skins/ui/tinymce-5-dark/content.inline.min.js +4 -0
  88. package/client/lib/tinymce/skins/ui/tinymce-5-dark/content.inline.min.js.map +1 -0
  89. package/client/lib/tinymce/skins/ui/tinymce-5-dark/content.js +4 -10
  90. package/client/lib/tinymce/skins/ui/tinymce-5-dark/content.js.map +1 -0
  91. package/client/lib/tinymce/skins/ui/tinymce-5-dark/content.min.js +4 -0
  92. package/client/lib/tinymce/skins/ui/tinymce-5-dark/content.min.js.map +1 -0
  93. package/client/lib/tinymce/skins/ui/tinymce-5-dark/skin.js +4 -1
  94. package/client/lib/tinymce/skins/ui/tinymce-5-dark/skin.js.map +1 -0
  95. package/client/lib/tinymce/skins/ui/tinymce-5-dark/skin.min.js +4 -0
  96. package/client/lib/tinymce/skins/ui/tinymce-5-dark/skin.min.js.map +1 -0
  97. package/client/lib/tinymce/skins/ui/tinymce-5-dark/skin.shadowdom.js +4 -1
  98. package/client/lib/tinymce/skins/ui/tinymce-5-dark/skin.shadowdom.js.map +1 -0
  99. package/client/lib/tinymce/skins/ui/tinymce-5-dark/skin.shadowdom.min.js +4 -0
  100. package/client/lib/tinymce/skins/ui/tinymce-5-dark/skin.shadowdom.min.js.map +1 -0
  101. package/client/styles/components.css +8 -5
  102. package/client/styles/variables.css +4 -0
  103. package/npmchanges.md +24 -0
  104. package/package.json +1 -1
  105. /package/packages/mailx-imap/{node_modules.npmglobalize-stash-88584 → node_modules.npmglobalize-stash-88224}/.package-lock.json +0 -0
package/client/app.js CHANGED
@@ -315,15 +315,22 @@ window.addEventListener("mailx-alert", (e) => {
315
315
  if (d.message)
316
316
  showAlert(String(d.message), d.key);
317
317
  });
318
- function hideAlert() {
318
+ function hideAlert(opts) {
319
319
  if (alertBanner) {
320
+ // The "update available" notice is sticky: routine "clear the
321
+ // transient banner" calls (after a successful sync, etc.) must not
322
+ // wipe it — otherwise the next sync, seconds later, hides the
323
+ // update banner and the user never sees it. Only the explicit X
324
+ // (force) clears it.
325
+ if (!opts?.force && alertBanner.dataset.key === "update-available")
326
+ return;
320
327
  const key = alertBanner.dataset.key;
321
328
  if (key)
322
329
  dismissedAlerts.add(key);
323
330
  alertBanner.hidden = true;
324
331
  }
325
332
  }
326
- alertDismiss?.addEventListener("click", hideAlert);
333
+ alertDismiss?.addEventListener("click", () => hideAlert({ force: true }));
327
334
  /** Show the alert banner with a "Restart" button wired to the mailxapi
328
335
  * restartDaemon action. Used when a watched config file whose changes
329
336
  * don't apply live (accounts.jsonc) has been modified. */
@@ -1436,7 +1443,7 @@ function updateFlagButton() {
1436
1443
  const sel = getCurrentFocused();
1437
1444
  const yes = !!sel && flaggedOf(sel);
1438
1445
  btn.classList.toggle("flagged", yes);
1439
- btn.textContent = yes ? "\u2605" : "\u2606";
1446
+ btn.textContent = yes ? "" : "";
1440
1447
  }
1441
1448
  document.addEventListener("mailx-message-shown", updateFlagButton);
1442
1449
  document.getElementById("btn-flag")?.addEventListener("click", async () => {
@@ -2575,6 +2582,9 @@ onWsEvent((event) => {
2575
2582
  const text = document.getElementById("alert-text");
2576
2583
  if (banner && text) {
2577
2584
  banner.hidden = false;
2585
+ // Mark as the sticky update banner so hideAlert() (called
2586
+ // after every successful sync) leaves it alone.
2587
+ banner.dataset.key = "update-available";
2578
2588
  // Green update banner — matches the Android update bar Bob
2579
2589
  // likes (was blue, oklch hue 250).
2580
2590
  banner.style.background = "oklch(0.52 0.14 150)";
@@ -2604,6 +2614,7 @@ onWsEvent((event) => {
2604
2614
  const restoreHtml = window.__mailxUpdateBannerHtml;
2605
2615
  const prefix = event.offline ? "No connection — update postponed. " : "Update failed — ";
2606
2616
  banner.hidden = false;
2617
+ banner.dataset.key = "update-available"; // sticky — survives sync
2607
2618
  banner.style.background = event.offline ? "oklch(0.42 0.06 70)" : "oklch(0.45 0.12 25)";
2608
2619
  text.innerHTML = `${prefix}${restoreHtml ?? ""}`;
2609
2620
  document.getElementById("btn-do-update")?.addEventListener("click", () => {