@bobfrankston/rmfmail 1.1.99 → 1.1.102

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 (50) hide show
  1. package/client/android-bootstrap.bundle.js.map +2 -2
  2. package/client/app.bundle.js +44 -3
  3. package/client/app.bundle.js.map +2 -2
  4. package/client/components/message-list.js +55 -3
  5. package/client/components/message-list.js.map +1 -1
  6. package/client/components/message-list.ts +56 -3
  7. package/client/components/message-viewer.js +5 -1
  8. package/client/components/message-viewer.js.map +1 -1
  9. package/client/components/message-viewer.ts +5 -1
  10. package/client/compose/compose.bundle.js +11 -1
  11. package/client/compose/compose.bundle.js.map +2 -2
  12. package/client/compose/compose.js +22 -1
  13. package/client/compose/compose.js.map +1 -1
  14. package/client/compose/compose.ts +22 -1
  15. package/client/styles/components.css +10 -0
  16. package/npmchanges.md +19 -0
  17. package/package.json +5 -5
  18. package/packages/mailx-core/index.d.ts +1 -0
  19. package/packages/mailx-core/index.d.ts.map +1 -1
  20. package/packages/mailx-imap/index.d.ts +24 -0
  21. package/packages/mailx-imap/index.d.ts.map +1 -1
  22. package/packages/mailx-imap/index.js +117 -19
  23. package/packages/mailx-imap/index.js.map +1 -1
  24. package/packages/mailx-imap/index.ts +113 -18
  25. package/packages/mailx-imap/package-lock.json +2 -2
  26. package/packages/mailx-imap/package.json +1 -1
  27. package/packages/mailx-service/index.d.ts.map +1 -1
  28. package/packages/mailx-service/index.js +17 -0
  29. package/packages/mailx-service/index.js.map +1 -1
  30. package/packages/mailx-service/index.ts +15 -0
  31. package/packages/mailx-service/reconciler.d.ts.map +1 -1
  32. package/packages/mailx-service/reconciler.js +4 -0
  33. package/packages/mailx-service/reconciler.js.map +1 -1
  34. package/packages/mailx-service/reconciler.ts +6 -0
  35. package/packages/mailx-settings/docs/rmf-tiny.md +31 -2
  36. package/packages/mailx-settings/package.json +1 -1
  37. package/packages/mailx-store/db.d.ts +27 -0
  38. package/packages/mailx-store/db.d.ts.map +1 -1
  39. package/packages/mailx-store/db.js +107 -5
  40. package/packages/mailx-store/db.js.map +1 -1
  41. package/packages/mailx-store/db.ts +120 -5
  42. package/packages/mailx-store/package.json +1 -1
  43. package/packages/mailx-store-web/package.json +1 -1
  44. package/packages/mailx-types/index.d.ts +1 -0
  45. package/packages/mailx-types/index.d.ts.map +1 -1
  46. package/packages/mailx-types/index.js.map +1 -1
  47. package/packages/mailx-types/index.ts +1 -0
  48. package/packages/mailx-types/package.json +1 -1
  49. package/.commitmsg +0 -16
  50. /package/packages/mailx-imap/{node_modules.npmglobalize-stash-75440 → node_modules.npmglobalize-stash-47276}/.package-lock.json +0 -0
@@ -2246,7 +2246,7 @@ var init_message_viewer = __esm({
2246
2246
  ZOOM_MIN = 0.5;
2247
2247
  ZOOM_MAX = 3;
2248
2248
  ZOOM_STEP = 0.1;
2249
- previewZoom = clampZoom(parseFloat(localStorage.getItem(ZOOM_KEY) || "1"));
2249
+ previewZoom = clampZoom(parseFloat(localStorage.getItem(ZOOM_KEY) || "1.15"));
2250
2250
  subscribeStore("*", (ev) => {
2251
2251
  if (ev.kind !== "bodyFetchError")
2252
2252
  return;
@@ -2612,6 +2612,31 @@ function senderColor(seed) {
2612
2612
  const hue = Math.abs(h) % 12 * 30 + 15;
2613
2613
  return `oklch(0.62 0.14 ${hue})`;
2614
2614
  }
2615
+ function renderStatusIcons(host, msg) {
2616
+ host.textContent = "";
2617
+ if (msg.hasAttachments) {
2618
+ const a = document.createElement("span");
2619
+ a.className = "ml-icon ml-icon-attach";
2620
+ a.textContent = "\u{1F4CE}";
2621
+ a.title = "Has attachments";
2622
+ host.appendChild(a);
2623
+ }
2624
+ const flags = msg.flags || [];
2625
+ if (msg.isReplied || flags.includes("\\Answered")) {
2626
+ const r = document.createElement("span");
2627
+ r.className = "ml-icon ml-icon-replied";
2628
+ r.textContent = "\u21A9";
2629
+ r.title = "Replied";
2630
+ host.appendChild(r);
2631
+ }
2632
+ if (flags.includes("$Forwarded")) {
2633
+ const f = document.createElement("span");
2634
+ f.className = "ml-icon ml-icon-forwarded";
2635
+ f.textContent = "\u21AA";
2636
+ f.title = "Forwarded";
2637
+ host.appendChild(f);
2638
+ }
2639
+ }
2615
2640
  function exitMultiSelect() {
2616
2641
  const body = document.getElementById("ml-body");
2617
2642
  if (!body?.classList.contains("multi-select-on"))
@@ -3324,7 +3349,14 @@ var init_message_list = __esm({
3324
3349
  }
3325
3350
  const date = document.createElement("span");
3326
3351
  date.className = "ml-date";
3327
- date.textContent = formatDate(msg.date);
3352
+ const icons = document.createElement("span");
3353
+ icons.className = "ml-status-icons";
3354
+ renderStatusIcons(icons, msg);
3355
+ const dateText = document.createElement("span");
3356
+ dateText.className = "ml-date-text";
3357
+ dateText.textContent = formatDate(msg.date);
3358
+ date.appendChild(icons);
3359
+ date.appendChild(dateText);
3328
3360
  row.appendChild(avatar);
3329
3361
  row.appendChild(flag);
3330
3362
  row.appendChild(from);
@@ -3371,10 +3403,19 @@ var init_message_list = __esm({
3371
3403
  * rather than waiting for the next IMAP APPEND + sync round-trip. */
3372
3404
  setDate(epochMs) {
3373
3405
  this.msg.date = epochMs;
3374
- const el = this.el.querySelector(".ml-date");
3406
+ const el = this.el.querySelector(".ml-date-text");
3375
3407
  if (el)
3376
3408
  el.textContent = formatDate(epochMs);
3377
3409
  }
3410
+ /** Re-render the attachment / replied / forwarded glyphs in the date
3411
+ * cell. Called when a flag-change event (Answered, $Forwarded) lands
3412
+ * for this row so the icon strip reflects current state without a
3413
+ * full row rebuild. */
3414
+ refreshStatusIcons() {
3415
+ const icons = this.el.querySelector(".ml-status-icons");
3416
+ if (icons)
3417
+ renderStatusIcons(icons, this.msg);
3418
+ }
3378
3419
  // Visual-state accessors for flag toggles. Read the *visual* state
3379
3420
  // (CSS class), not `this.msg.flags`, because the flag array can lag
3380
3421
  // the rendered class — auto-mark-as-read removes the `unread` class