@bobfrankston/rmfmail 1.0.479 → 1.0.481

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 (29) hide show
  1. package/client/app.js +22 -2
  2. package/client/app.js.map +1 -1
  3. package/client/app.ts +15 -2
  4. package/client/lib/local-store.js +1 -1
  5. package/client/lib/local-store.js.map +1 -1
  6. package/package.json +5 -5
  7. package/packages/mailx-service/index.d.ts +5 -0
  8. package/packages/mailx-service/index.d.ts.map +1 -1
  9. package/packages/mailx-service/index.ts +1 -1
  10. package/packages/mailx-settings/index.d.ts +3 -0
  11. package/packages/mailx-settings/index.d.ts.map +1 -1
  12. package/packages/mailx-settings/index.js +6 -5
  13. package/packages/mailx-settings/index.js.map +1 -1
  14. package/packages/mailx-settings/index.ts +7 -6
  15. package/packages/mailx-store-web/android-bootstrap.d.ts.map +1 -1
  16. package/packages/mailx-store-web/android-bootstrap.js +46 -11
  17. package/packages/mailx-store-web/android-bootstrap.js.map +1 -1
  18. package/packages/mailx-store-web/android-bootstrap.ts +50 -13
  19. package/packages/mailx-store-web/web-service.d.ts +4 -0
  20. package/packages/mailx-store-web/web-service.d.ts.map +1 -1
  21. package/packages/mailx-store-web/web-service.ts +1 -1
  22. package/packages/mailx-store-web/web-settings.d.ts +5 -1
  23. package/packages/mailx-store-web/web-settings.d.ts.map +1 -1
  24. package/packages/mailx-store-web/web-settings.js +22 -3
  25. package/packages/mailx-store-web/web-settings.js.map +1 -1
  26. package/packages/mailx-store-web/web-settings.ts +20 -4
  27. package/packages/mailx-store-web/worker-entry.js +39 -8
  28. package/packages/mailx-store-web/worker-entry.js.map +1 -1
  29. package/packages/mailx-store-web/worker-entry.ts +40 -10
package/client/app.js CHANGED
@@ -1942,6 +1942,16 @@ onWsEvent((event) => {
1942
1942
  statusSync.textContent = `Error: ${event.message}`;
1943
1943
  showAlert(event.message, "ws-error");
1944
1944
  break;
1945
+ case "fatal":
1946
+ // Unrecoverable startup failure — sticky red banner, no auto-dismiss.
1947
+ // Used for GDrive-folder-missing and similar conditions where the
1948
+ // app cannot function. console.warn would be invisible in the GUI.
1949
+ if (alertBanner)
1950
+ alertBanner.style.background = "oklch(0.45 0.18 25)";
1951
+ showAlert(event.message || "Fatal error", event.key || "fatal", { sticky: true });
1952
+ if (statusSync)
1953
+ statusSync.textContent = `FATAL: ${event.message}`;
1954
+ break;
1945
1955
  case "outboxStatus":
1946
1956
  renderOutboxStatus(event);
1947
1957
  break;
@@ -2826,7 +2836,7 @@ async function openAboutDialog() {
2826
2836
  panel.className = "mailx-modal";
2827
2837
  panel.innerHTML = `
2828
2838
  <div class="mailx-modal-title">
2829
- <span class="mailx-modal-title-text">About mailx</span>
2839
+ <span class="mailx-modal-title-text">About ${APP_NAME}</span>
2830
2840
  <button type="button" class="mailx-modal-close" id="about-x" title="Close (Esc)" aria-label="Close">&times;</button>
2831
2841
  </div>
2832
2842
  <div class="mailx-about" id="about-body">Loading...</div>
@@ -2876,6 +2886,16 @@ async function openAboutDialog() {
2876
2886
  rows.push(["Cloud path", `My Drive/${storage.cloudPath}/`]);
2877
2887
  if (storage.mode)
2878
2888
  rows.push(["Storage mode", storage.mode]);
2889
+ if (storage.folderPath)
2890
+ rows.push(["Drive path", storage.folderPath]);
2891
+ else if (storage.folderName)
2892
+ rows.push(["Drive folder", storage.folderName]);
2893
+ if (storage.folderId)
2894
+ rows.push(["Drive folderId", storage.folderId]);
2895
+ if (storage.folderOwner)
2896
+ rows.push(["Drive owner", storage.folderOwner]);
2897
+ if (storage.configDir)
2898
+ rows.push(["Config dir", storage.configDir]);
2879
2899
  rows.push(["Accounts", String((accounts || []).length)]);
2880
2900
  rows.push(["User agent", navigator.userAgent]);
2881
2901
  rows.push(["Screen", `${screen.width}×${screen.height}`]);
@@ -2893,7 +2913,7 @@ async function openAboutDialog() {
2893
2913
  ${accounts.map(a => `<li>${escapeHtml(a.email || a.id)}${a.name ? ` — ${escapeHtml(a.name)}` : ""}</li>`).join("")}
2894
2914
  </ul>
2895
2915
  </div>` : ""}
2896
- <div class="mailx-about-foot">mailx — local-first mail client</div>`;
2916
+ <div class="mailx-about-foot">${APP_NAME} — local-first mail client</div>`;
2897
2917
  }
2898
2918
  catch (e) {
2899
2919
  body.textContent = `Failed to load: ${e.message}`;