@bobfrankston/rmfmail 1.2.97 → 1.2.100

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 (41) hide show
  1. package/client/android-bootstrap.bundle.js +85 -22
  2. package/client/android-bootstrap.bundle.js.map +2 -2
  3. package/client/app.bundle.js +36 -1
  4. package/client/app.bundle.js.map +2 -2
  5. package/client/app.js +25 -0
  6. package/client/app.js.map +1 -1
  7. package/client/app.ts +25 -0
  8. package/client/components/message-viewer.js +29 -1
  9. package/client/components/message-viewer.js.map +1 -1
  10. package/client/components/message-viewer.ts +25 -1
  11. package/package.json +3 -3
  12. package/packages/mailx-imap/index.d.ts.map +1 -1
  13. package/packages/mailx-imap/index.js +6 -2
  14. package/packages/mailx-imap/index.js.map +1 -1
  15. package/packages/mailx-imap/index.ts +6 -2
  16. package/packages/mailx-imap/package-lock.json +2 -2
  17. package/packages/mailx-imap/package.json +1 -1
  18. package/packages/mailx-store/db.d.ts +7 -0
  19. package/packages/mailx-store/db.d.ts.map +1 -1
  20. package/packages/mailx-store/db.js +13 -1
  21. package/packages/mailx-store/db.js.map +1 -1
  22. package/packages/mailx-store/db.ts +19 -1
  23. package/packages/mailx-store/package.json +1 -1
  24. package/packages/mailx-store-web/android-bootstrap.d.ts.map +1 -1
  25. package/packages/mailx-store-web/android-bootstrap.js +74 -19
  26. package/packages/mailx-store-web/android-bootstrap.js.map +1 -1
  27. package/packages/mailx-store-web/android-bootstrap.ts +71 -16
  28. package/packages/mailx-store-web/db.d.ts +1 -0
  29. package/packages/mailx-store-web/db.d.ts.map +1 -1
  30. package/packages/mailx-store-web/db.js +21 -5
  31. package/packages/mailx-store-web/db.js.map +1 -1
  32. package/packages/mailx-store-web/db.ts +20 -7
  33. package/packages/mailx-store-web/imap-web-provider.d.ts.map +1 -1
  34. package/packages/mailx-store-web/imap-web-provider.js +1 -0
  35. package/packages/mailx-store-web/imap-web-provider.js.map +1 -1
  36. package/packages/mailx-store-web/imap-web-provider.ts +1 -0
  37. package/packages/mailx-store-web/package.json +1 -1
  38. package/packages/mailx-store-web/sync-manager.d.ts.map +1 -1
  39. package/packages/mailx-store-web/sync-manager.js +4 -0
  40. package/packages/mailx-store-web/sync-manager.js.map +1 -1
  41. package/packages/mailx-store-web/sync-manager.ts +4 -0
package/client/app.js CHANGED
@@ -710,6 +710,31 @@ document.getElementById("btn-back")?.addEventListener("click", backToList);
710
710
  // Android WebView sometimes drops synthetic clicks after a touchend inside a
711
711
  // header bar layered above the iframe — handle touchend explicitly too.
712
712
  document.getElementById("btn-back")?.addEventListener("touchend", backToList);
713
+ // ── Fold/unfold (and any window resize) layout reconcile ──
714
+ // narrow-active/narrow-hidden are otherwise only set when a message is
715
+ // CLICKED while already narrow. Opening a message on the Fold's inner
716
+ // screen (wide, two panes) and then folding to the cover screen crossed
717
+ // into the narrow layout with neither class set — the viewer vanished and
718
+ // there was no back-to-inbox button (Bob 2026-07-03). Reconcile on every
719
+ // tier crossing: into narrow with a message open → full-screen viewer +
720
+ // back button, exactly as if it had been opened narrow; out of narrow →
721
+ // both panes, classes off. matchMedia mirrors layout.css's narrow query
722
+ // (768px width OR 600px height) so JS and CSS agree on the tier.
723
+ const narrowMq = window.matchMedia("(max-width: 768px), (max-height: 600px)");
724
+ narrowMq.addEventListener("change", () => {
725
+ const viewer = document.getElementById("message-viewer");
726
+ const list = document.getElementById("message-list");
727
+ if (narrowMq.matches) {
728
+ if (getCurrentMessage()) {
729
+ viewer?.classList.add("narrow-active");
730
+ list?.classList.add("narrow-hidden");
731
+ }
732
+ }
733
+ else {
734
+ viewer?.classList.remove("narrow-active");
735
+ list?.classList.remove("narrow-hidden");
736
+ }
737
+ });
713
738
  // Pop-out viewer button — desktop spawns a floating overlay (multiple at
714
739
  // once), mobile toggles `body.viewer-fullscreen` for full-screen reading.
715
740
  // Threshold and behavior live in popOutCurrentMessage.