@bobfrankston/rmfmail 1.0.491 → 1.0.493

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 (31) hide show
  1. package/client/app.js +58 -47
  2. package/client/app.js.map +1 -1
  3. package/client/app.ts +55 -45
  4. package/client/components/message-viewer.js +145 -81
  5. package/client/components/message-viewer.js.map +1 -1
  6. package/client/components/message-viewer.ts +132 -85
  7. package/client/index.html +1 -1
  8. package/package.json +3 -3
  9. package/packages/mailx-settings/index.d.ts +1 -0
  10. package/packages/mailx-settings/index.d.ts.map +1 -1
  11. package/packages/mailx-settings/index.js +43 -2
  12. package/packages/mailx-settings/index.js.map +1 -1
  13. package/packages/mailx-settings/index.ts +50 -2
  14. package/packages/mailx-store/db.d.ts.map +1 -1
  15. package/packages/mailx-store/db.js +8 -0
  16. package/packages/mailx-store/db.js.map +1 -1
  17. package/packages/mailx-store/db.ts +6 -0
  18. package/packages/mailx-store-web/db.d.ts.map +1 -1
  19. package/packages/mailx-store-web/db.js +26 -0
  20. package/packages/mailx-store-web/db.js.map +1 -1
  21. package/packages/mailx-store-web/db.ts +20 -0
  22. package/packages/mailx-store-web/web-service.d.ts +4 -0
  23. package/packages/mailx-store-web/web-service.d.ts.map +1 -1
  24. package/packages/mailx-store-web/web-service.js +42 -0
  25. package/packages/mailx-store-web/web-service.js.map +1 -1
  26. package/packages/mailx-store-web/web-service.ts +42 -0
  27. package/packages/mailx-store-web/web-settings.d.ts +2 -0
  28. package/packages/mailx-store-web/web-settings.d.ts.map +1 -1
  29. package/packages/mailx-store-web/web-settings.js +34 -3
  30. package/packages/mailx-store-web/web-settings.js.map +1 -1
  31. package/packages/mailx-store-web/web-settings.ts +41 -3
@@ -29,6 +29,75 @@ export function getCurrentMessage(): { accountId: string; message: any } | null
29
29
  return { accountId: currentAccountId, message: currentMessage };
30
30
  }
31
31
 
32
+ /** Build the body-context menu items (right-click outside a link in the
33
+ * preview iframe). Called from app.ts's window message listener after the
34
+ * iframe inline script postMessages a "previewContextMenu" event with the
35
+ * current selection. Translate routes to the configured AI provider via
36
+ * aiTransform; "Translate via Google" opens translate.google.com in the
37
+ * default browser as a no-account-needed alternative. */
38
+ export function showPreviewBodyMenu(absX: number, absY: number, selectedText: string, sourceWindow: Window | null): void {
39
+ const pct = Math.round(previewZoom * 100);
40
+ const runSearch = (query: string): void => {
41
+ const input = document.getElementById("search-input") as HTMLInputElement | null;
42
+ if (!input) return;
43
+ input.value = query;
44
+ input.dispatchEvent(new Event("input"));
45
+ input.dispatchEvent(new KeyboardEvent("keydown", { key: "Enter", bubbles: true }));
46
+ input.focus();
47
+ };
48
+ // Send a command back into the iframe (Copy, Select all) — the iframe
49
+ // owns its own document and these only work in the iframe's context.
50
+ const tellIframe = (cmd: string): void => {
51
+ try { sourceWindow?.postMessage({ type: "previewCommand", cmd }, "*"); } catch { /* */ }
52
+ };
53
+ const fullBody = (): string => {
54
+ try {
55
+ for (const f of Array.from(document.querySelectorAll("iframe"))) {
56
+ if ((f as HTMLIFrameElement).contentWindow === sourceWindow) {
57
+ return (f as HTMLIFrameElement).contentDocument?.body?.innerText || "";
58
+ }
59
+ }
60
+ } catch { /* */ }
61
+ return "";
62
+ };
63
+ const items: MenuItem[] = [
64
+ { label: "Copy", action: () => tellIframe("copy") },
65
+ { label: "Select all", action: () => tellIframe("selectAll") },
66
+ ];
67
+ if (selectedText) {
68
+ items.push(
69
+ { label: "", action: () => {}, separator: true },
70
+ { label: `Search messages for "${selectedText.length > 40 ? selectedText.slice(0, 40) + "…" : selectedText}"`,
71
+ action: () => runSearch(selectedText) },
72
+ { label: "Copy as quoted (> prefix)",
73
+ action: async () => {
74
+ const quoted = selectedText.split(/\r?\n/).map(l => "> " + l).join("\n");
75
+ try { await navigator.clipboard.writeText(quoted); } catch { /* */ }
76
+ } },
77
+ );
78
+ }
79
+ const senderAddr = currentMessage?.from?.address || "";
80
+ if (senderAddr) {
81
+ items.push({ label: `Search messages from ${senderAddr}`, action: () => runSearch(`from:${senderAddr}`) });
82
+ }
83
+ items.push(
84
+ { label: "", action: () => {}, separator: true },
85
+ { label: selectedText ? "Translate selection (AI)" : "Translate message (AI)",
86
+ action: () => translateAndShow(selectedText || fullBody()) },
87
+ { label: selectedText ? "Translate selection (Google Translate)" : "Translate message (Google Translate)",
88
+ action: () => {
89
+ const text = (selectedText || fullBody()).slice(0, 4500); // GT URL has practical limits
90
+ const url = `https://translate.google.com/?sl=auto&tl=en&op=translate&text=${encodeURIComponent(text)}`;
91
+ window.open(url, "_blank", "noopener,noreferrer");
92
+ } },
93
+ { label: "", action: () => {}, separator: true },
94
+ { label: "Zoom in", action: () => { for (const f of Array.from(document.querySelectorAll("iframe"))) { const d = (f as HTMLIFrameElement).contentDocument; if (d) { setZoom(previewZoom + ZOOM_STEP, d); break; } } } },
95
+ { label: "Zoom out", action: () => { for (const f of Array.from(document.querySelectorAll("iframe"))) { const d = (f as HTMLIFrameElement).contentDocument; if (d) { setZoom(previewZoom - ZOOM_STEP, d); break; } } } },
96
+ { label: `Reset zoom (${pct}%)`, action: () => { for (const f of Array.from(document.querySelectorAll("iframe"))) { const d = (f as HTMLIFrameElement).contentDocument; if (d) { setZoom(1, d); break; } } } },
97
+ );
98
+ showContextMenu(absX, absY, items);
99
+ }
100
+
32
101
  /** Toggle preview-fullscreen mode. CSS rule on body.fullscreen-preview hides
33
102
  * toolbar / rail / folder tree / list / statusbar and expands the viewer to
34
103
  * the full viewport. Exits via second toggle, Esc, or the floating ✕. */
@@ -181,89 +250,21 @@ function installPreviewControls(iframe: HTMLIFrameElement): void {
181
250
  setZoom(previewZoom + (e.deltaY < 0 ? ZOOM_STEP : -ZOOM_STEP), doc);
182
251
  }, { passive: false });
183
252
 
184
- // Double-tap (touch) / double-click (mouse) on the message body
185
- // toggles preview fullscreen phones lose too much screen real-estate
186
- // to chrome (toolbar, rail, list) when reading a long message. A
187
- // second double-tap exits; Esc and the floating ✕ also exit.
188
- doc.addEventListener("dblclick", (e) => {
189
- // Don't hijack double-clicks on links or selection drags inside
190
- // the body — the user might be selecting a word.
191
- const target = e.target as HTMLElement | null;
192
- if (target?.closest("a")) return;
193
- toggleFullscreenPreview();
194
- });
253
+ // dblclick fullscreen toggle moved into the iframe's inline script
254
+ // so it's wired by the time the document loads — the parent-side
255
+ // contentDocument listener was racing with the load event and
256
+ // sometimes never attached.
195
257
 
196
258
  // Link interception lives in the iframe's own inline <script> (see
197
259
  // wrapHtmlBody). That script runs under a CSP nonce so email-body
198
260
  // scripts stay blocked while ours forwards taps to the parent frame.
199
261
 
200
- doc.addEventListener("contextmenu", (e) => {
201
- e.preventDefault();
202
- const me = e as MouseEvent;
203
- const rect = iframe.getBoundingClientRect();
204
- const x = rect.left + me.clientX;
205
- const y = rect.top + me.clientY;
206
- const pct = Math.round(previewZoom * 100);
207
- const sel = doc.defaultView?.getSelection();
208
- const selectedText = sel?.toString().trim() || "";
209
- const runSearch = (query: string): void => {
210
- const input = document.getElementById("search-input") as HTMLInputElement | null;
211
- if (!input) return;
212
- input.value = query;
213
- // Trigger the existing search path — Enter keydown hits the
214
- // immediate branch in app.ts's handler.
215
- input.dispatchEvent(new Event("input"));
216
- input.dispatchEvent(new KeyboardEvent("keydown", { key: "Enter", bubbles: true }));
217
- input.focus();
218
- };
219
- const items: MenuItem[] = [
220
- { label: "Copy", action: () => doc.execCommand("copy") },
221
- { label: "Select all", action: () => {
222
- const s = doc.defaultView?.getSelection();
223
- if (!s) return;
224
- const range = doc.createRange();
225
- range.selectNodeContents(doc.body);
226
- s.removeAllRanges();
227
- s.addRange(range);
228
- } },
229
- ];
230
- if (selectedText) {
231
- items.push(
232
- { label: "", action: () => {}, separator: true },
233
- // Truncate long selections in the label so the menu doesn't
234
- // blow out; full string is what we search for.
235
- { label: `Search messages for "${selectedText.length > 40 ? selectedText.slice(0, 40) + "…" : selectedText}"`,
236
- action: () => runSearch(selectedText) },
237
- {
238
- label: "Copy as quoted (> prefix)",
239
- action: async () => {
240
- // Prefix each line with "> " (RFC 3676 reply-quote).
241
- // Useful when pasting a snippet into a compose window
242
- // without the usual full-message blockquote wrapping.
243
- const quoted = selectedText.split(/\r?\n/).map(l => "> " + l).join("\n");
244
- try { await navigator.clipboard.writeText(quoted); } catch { /* */ }
245
- },
246
- },
247
- );
248
- }
249
- const senderAddr = currentMessage?.from?.address || "";
250
- if (senderAddr) {
251
- items.push({
252
- label: `Search messages from ${senderAddr}`,
253
- action: () => runSearch(`from:${senderAddr}`),
254
- });
255
- }
256
- items.push(
257
- { label: "", action: () => {}, separator: true },
258
- { label: selectedText ? "Translate selection" : "Translate message",
259
- action: () => translateAndShow(selectedText || (doc.body?.innerText || "")) },
260
- { label: "", action: () => {}, separator: true },
261
- { label: "Zoom in", action: () => setZoom(previewZoom + ZOOM_STEP, doc) },
262
- { label: "Zoom out", action: () => setZoom(previewZoom - ZOOM_STEP, doc) },
263
- { label: `Reset zoom (${pct}%)`, action: () => setZoom(1, doc) },
264
- );
265
- showContextMenu(x, y, items);
266
- });
262
+ // Body-context menu was previously built here on doc.contextmenu, but
263
+ // the inline iframe script (wrapHtmlBody) now postMessages the request
264
+ // to the parent unconditionally — see showPreviewContextMenu in app.ts
265
+ // which calls showPreviewBodyMenu below. This route works on every
266
+ // host; the doc-level handler missed cases where WebView2's native
267
+ // menu fired before our parent listener got installed.
267
268
  };
268
269
  if (iframe.contentDocument?.readyState === "complete") attach();
269
270
  else iframe.addEventListener("load", attach, { once: true });
@@ -1124,17 +1125,63 @@ ${csp}
1124
1125
  // in the middle of the reading pane. Right-click (desktop) and long-
1125
1126
  // press (touch) on a link still open the existing C29 menu with Open /
1126
1127
  // Save-as / Copy URL / Copy link-text.
1127
- // C29: right-click on a link ask parent for the Open/Save/Copy menu.
1128
+ // Double-click on bodytoggle preview fullscreen via parent.
1129
+ document.addEventListener("dblclick", function (e) {
1130
+ var t = e.target;
1131
+ // Don't hijack on links (the user might be opening) or interactive controls.
1132
+ if (t && t.closest && t.closest("a, button, input, select, textarea")) return;
1133
+ e.preventDefault();
1134
+ window.parent.postMessage({ type: "previewToggleFullscreen" }, "*");
1135
+ });
1136
+
1137
+ // Receive commands from the parent (Copy / Select all menu actions).
1138
+ // Browsers restrict execCommand("copy") to the document where focus
1139
+ // lives — running it in the parent against the iframe's selection is
1140
+ // a no-op, so the parent posts the command in and we run it here.
1141
+ window.addEventListener("message", function (e) {
1142
+ var d = e.data;
1143
+ if (!d || d.type !== "previewCommand") return;
1144
+ if (d.cmd === "copy") {
1145
+ try { document.execCommand("copy"); } catch (_) {}
1146
+ } else if (d.cmd === "selectAll") {
1147
+ try {
1148
+ var s = window.getSelection && window.getSelection();
1149
+ if (s) {
1150
+ var r = document.createRange();
1151
+ r.selectNodeContents(document.body);
1152
+ s.removeAllRanges();
1153
+ s.addRange(r);
1154
+ }
1155
+ } catch (_) {}
1156
+ }
1157
+ });
1158
+
1159
+ // Right-click → ask parent for the appropriate context menu. Suppress the
1160
+ // browser/WebView2 native menu unconditionally — without this, the native
1161
+ // Back/Refresh/Save-as/Inspect menu fires before the parent's
1162
+ // contentDocument listener (attached after iframe load) gets a chance.
1163
+ // Branches by target: link → linkContextMenu (Open/Save/Copy URL); body
1164
+ // text → previewContextMenu (Copy / Search / Translate / Zoom).
1128
1165
  document.addEventListener("contextmenu", function (e) {
1129
- var a = e.target && e.target.closest ? e.target.closest("a[href]") : null;
1130
- if (!a) return; // let parent's body-context handler take over
1131
1166
  e.preventDefault();
1132
1167
  e.stopPropagation();
1133
- var rect = (e.target.getBoundingClientRect && e.target.getBoundingClientRect()) || { left: 0, top: 0 };
1168
+ var rect = { left: 0, top: 0 };
1169
+ try { rect = e.target.getBoundingClientRect ? e.target.getBoundingClientRect() : rect; } catch (_) {}
1170
+ var a = e.target && e.target.closest ? e.target.closest("a[href]") : null;
1171
+ if (a) {
1172
+ window.parent.postMessage({
1173
+ type: "linkContextMenu",
1174
+ url: a.href,
1175
+ text: (a.textContent || "").slice(0, 100),
1176
+ x: e.clientX, y: e.clientY,
1177
+ iframeLeft: rect.left, iframeTop: rect.top
1178
+ }, "*");
1179
+ return;
1180
+ }
1181
+ var sel = (window.getSelection && window.getSelection()) ? window.getSelection().toString() : "";
1134
1182
  window.parent.postMessage({
1135
- type: "linkContextMenu",
1136
- url: a.href,
1137
- text: (a.textContent || "").slice(0, 100),
1183
+ type: "previewContextMenu",
1184
+ selectedText: sel,
1138
1185
  x: e.clientX, y: e.clientY,
1139
1186
  iframeLeft: rect.left, iframeTop: rect.top
1140
1187
  }, "*");
package/client/index.html CHANGED
@@ -106,7 +106,7 @@
106
106
  <button class="rail-btn" id="rail-tasks" title="Tasks" aria-label="Tasks">☑</button>
107
107
  </div>
108
108
  <div class="rail-bottom">
109
- <button class="rail-btn" id="rail-view" title="View options" aria-label="View options">▦</button>
109
+ <button class="rail-btn" id="rail-view" title="View options" aria-label="View options">⊞</button>
110
110
  <button class="rail-btn" id="rail-settings" title="Settings" aria-label="Settings">⚙</button>
111
111
  <button class="rail-btn" id="rail-theme" title="Toggle theme" aria-label="Toggle theme">◐</button>
112
112
  <button class="rail-btn" id="rail-help" title="Help / About" aria-label="Help">?</button>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bobfrankston/rmfmail",
3
- "version": "1.0.491",
3
+ "version": "1.0.493",
4
4
  "description": "Local-first email client with IMAP sync and standalone native app",
5
5
  "type": "module",
6
6
  "main": "bin/mailx.js",
@@ -34,7 +34,7 @@
34
34
  "@bobfrankston/iflow-direct": "^0.1.27",
35
35
  "@bobfrankston/miscinfo": "^1.0.10",
36
36
  "@bobfrankston/oauthsupport": "^1.0.26",
37
- "@bobfrankston/msger": "^0.1.373",
37
+ "@bobfrankston/msger": "^0.1.376",
38
38
  "@bobfrankston/mailx-host": "^0.1.10",
39
39
  "@capacitor/android": "^8.3.0",
40
40
  "@capacitor/cli": "^8.3.0",
@@ -98,7 +98,7 @@
98
98
  "@bobfrankston/iflow-direct": "^0.1.27",
99
99
  "@bobfrankston/miscinfo": "^1.0.10",
100
100
  "@bobfrankston/oauthsupport": "^1.0.26",
101
- "@bobfrankston/msger": "^0.1.373",
101
+ "@bobfrankston/msger": "^0.1.376",
102
102
  "@bobfrankston/mailx-host": "^0.1.10",
103
103
  "@capacitor/android": "^8.3.0",
104
104
  "@capacitor/cli": "^8.3.0",
@@ -43,6 +43,7 @@ export declare function getStorageInfo(): {
43
43
  configDir?: string;
44
44
  cloudError?: string;
45
45
  };
46
+ export declare function withJsoncHeader(filename: string, data: any): string;
46
47
  /** Fill in provider defaults for an account based on email domain.
47
48
  * Exported so mailx-service's leanAccountsJsonc helper can reuse the same
48
49
  * canonicalization rules that loadAccounts uses. */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AA4BpG,QAAA,MAAM,SAAS,QAA4E,CAAC;AAiE5F,qFAAqF;AACrF,KAAK,kBAAkB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE;IAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,CAAC;AAE/G,wBAAgB,YAAY,CAAC,EAAE,EAAE,kBAAkB,GAAG,MAAM,IAAI,CAM/D;AAOD,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAA2B;AAU7E,iBAAS,YAAY,IAAI,MAAM,CAgB9B;AAED,sEAAsE;AACtE,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyBxE;AAED;;qCAEqC;AACrC,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BjF;AAaD,2CAA2C;AAC3C,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED,4CAA4C;AAC5C,wBAAgB,cAAc,IAAI;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CA+B3L;AAuED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,MAAM,CAInE;AA4GD;;qDAEqD;AACrD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,CA4D9E;AAMD,QAAA,MAAM,mBAAmB;;eAEE,QAAQ,GAAG,MAAM,GAAG,OAAO;gBAC3B,OAAO,GAAG,QAAQ;;;;;;;;;;;;;;;;;;;;CAoB5C,CAAC;AAEF,QAAA,MAAM,oBAAoB,EAAE,oBAS3B,CAAC;AAEF,QAAA,MAAM,iBAAiB;aACJ,MAAM,EAAE;aACR,MAAM,EAAE;gBACL,MAAM,EAAE;oBAOJ,MAAM,EAAE;oBACR,MAAM,EAAE;CACjC,CAAC;AAIF,2BAA2B;AAC3B,wBAAgB,YAAY,IAAI,aAAa,EAAE,CA0C9C;AAoCD,iGAAiG;AACjG,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAoBlE;AAED;;;;;;;;;;;;;;;iDAeiD;AACjD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,GAAG,CA+ChF;AAED,2BAA2B;AAC3B;;kCAEkC;AAClC,wBAAsB,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B3E;AAED,wEAAwE;AACxE,wBAAgB,eAAe,IAAI,OAAO,mBAAmB,CAoB5D;AAED,uBAAuB;AACvB,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAEhD;AAED,iCAAiC;AACjC,wBAAgB,gBAAgB,IAAI,oBAAoB,CAGvD;AAED,iCAAiC;AACjC,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAIrE;AAED,qCAAqC;AACrC,wBAAgB,aAAa,IAAI,OAAO,iBAAiB,CAExD;AAED,4EAA4E;AAC5E,wBAAsB,aAAa,CAAC,IAAI,EAAE,OAAO,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBjF;AAcD,6EAA6E;AAC7E,wBAAgB,YAAY,IAAI,aAAa,CAe5C;AAED,4CAA4C;AAC5C,wBAAsB,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAGzE;AAED,oCAAoC;AACpC,wBAAgB,YAAY,IAAI,MAAM,CAGrC;AAED,qDAAqD;AACrD,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wCAAwC;AACxC,OAAO,EAAE,YAAY,EAAE,CAAC;AAKxB,kDAAkD;AAClD,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAgB5E;AAED;;;mFAGmF;AACnF,wBAAsB,eAAe,CAAC,QAAQ,GAAE,QAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBlF;AAED,QAAA,MAAM,gBAAgB,EAAE,aAMvB,CAAC;AAEF,8FAA8F;AAC9F,wBAAgB,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAQzD;AAED,uEAAuE;AACvE,wBAAgB,WAAW,IAAI,OAAO,CAGrC;AAED,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,SAAS,EAAE,CAAC"}
@@ -273,9 +273,50 @@ function atomicWrite(filePath, data) {
273
273
  const dir = path.dirname(filePath);
274
274
  fs.mkdirSync(dir, { recursive: true });
275
275
  const tmp = filePath + ".tmp";
276
- fs.writeFileSync(tmp, JSON.stringify(data, null, 2));
276
+ fs.writeFileSync(tmp, withJsoncHeader(path.basename(filePath), data));
277
277
  fs.renameSync(tmp, filePath);
278
278
  }
279
+ /** Header comment prepended to each JSONC file when written. Documents the
280
+ * schema so a user opening the file in any editor sees the rules without
281
+ * having to consult external docs. JSONC parsers strip comments, so this
282
+ * has no effect on readers — it only helps the human editor. */
283
+ const JSONC_HEADERS = {
284
+ "accounts.jsonc": "// mailx — accounts.jsonc (synced to your GDrive .rmfmail folder)\n" +
285
+ "// Shape: { name?: string, accounts: [ { id, email, name?, imap?, smtp?, enabled?, identityDomains? } ] }\n" +
286
+ "// id — short tag used in folder paths and the UI (e.g. \"gmail\", \"bobma\")\n" +
287
+ "// email — primary login address\n" +
288
+ "// imap / smtp — { host, port, tls, auth: \"password\"|\"oauth2\" }; omit for known providers (gmail/outlook/yahoo/icloud auto-config from the email domain)\n" +
289
+ "// enabled — set false to skip this account at startup (default true)\n" +
290
+ "// identityDomains — extra domains/aliases for Reply-From auto-detection\n" +
291
+ "// JSONC: // comments and trailing commas are allowed.\n\n",
292
+ "allowlist.jsonc": "// mailx — allowlist.jsonc (remote-content + flagged-sender lists, synced to GDrive)\n" +
293
+ "// Shape: { senders: [], domains: [], recipients: [], flaggedSenders: [], flaggedDomains: [] }\n" +
294
+ "// senders / domains — auto-load remote images from these\n" +
295
+ "// recipients — addresses you receive at (treated as your inbox identity)\n" +
296
+ "// flaggedSenders / flaggedDomains — viewer shows a ⚠ FLAGGED banner on every message from these\n" +
297
+ "// All entries are case-insensitive plain email or domain strings.\n\n",
298
+ "contacts.jsonc": "// mailx — contacts.jsonc (address book, synced to GDrive)\n" +
299
+ "// Shape: { preferred: [], denylist: [], discovered: [] }\n" +
300
+ "// preferred — manually-curated contacts: { name?, email, source?, organization? }\n" +
301
+ "// denylist — addresses excluded from autocomplete (lowercased emails)\n" +
302
+ "// discovered — auto-collected from sent/received mail; ranking uses useCount × recency\n" +
303
+ "// Junk-pattern addresses (noreply, *-bounces, mailer-daemon, *-noreply-*) are dropped at insertion.\n\n",
304
+ "clients.jsonc": "// mailx — clients.jsonc (registered devices, synced to GDrive)\n" +
305
+ "// Shape: { devices: [ { id, name, lastSeen, accounts: [accountId,...] } ] }\n" +
306
+ "// Auto-managed by each device on startup; you don't normally need to edit this.\n\n",
307
+ "config.jsonc": "// mailx — config.jsonc (LOCAL per-machine config; NOT synced to GDrive)\n" +
308
+ "// Shape: { sharedDir: { provider, path, folderId? }, storePath?, historyDays? }\n" +
309
+ "// sharedDir — pointer to your GDrive .rmfmail folder\n" +
310
+ "// storePath — local directory for .eml message bodies (default ~/.rmfmail/mailxstore)\n" +
311
+ "// Edit only the local copy at ~/.rmfmail/config.jsonc — every machine has its own.\n\n",
312
+ "preferences.jsonc": "// mailx — preferences.jsonc (UI + sync prefs, synced to GDrive)\n" +
313
+ "// Shape: { ui: {...}, sync: {...}, autocomplete: {...} }\n\n",
314
+ };
315
+ export function withJsoncHeader(filename, data) {
316
+ const json = JSON.stringify(data, null, 2);
317
+ const header = JSONC_HEADERS[filename] || "";
318
+ return header + json;
319
+ }
279
320
  /** Read a config file: shared first, local fallback, merge local overrides */
280
321
  function loadFile(filename, defaults) {
281
322
  const sharedDir = getSharedDir();
@@ -318,7 +359,7 @@ function saveFile(filename, data) {
318
359
  }
319
360
  // Write to cloud API if filesystem mount unavailable (creates app-owned file for drive.file scope)
320
361
  if (pendingCloudConfig) {
321
- cloudWrite(filename, JSON.stringify(data, null, 2))
362
+ cloudWrite(filename, withJsoncHeader(filename, data))
322
363
  .then(() => console.log(` [cloud] Saved ${filename} via ${pendingCloudConfig.provider} API`))
323
364
  .catch(e => console.error(` [cloud] Failed to save ${filename}: ${e.message}`));
324
365
  // Note: we don't await — saveFile is sync. cloudWrite() already calls
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
@@ -292,10 +292,58 @@ function atomicWrite(filePath: string, data: any): void {
292
292
  const dir = path.dirname(filePath);
293
293
  fs.mkdirSync(dir, { recursive: true });
294
294
  const tmp = filePath + ".tmp";
295
- fs.writeFileSync(tmp, JSON.stringify(data, null, 2));
295
+ fs.writeFileSync(tmp, withJsoncHeader(path.basename(filePath), data));
296
296
  fs.renameSync(tmp, filePath);
297
297
  }
298
298
 
299
+ /** Header comment prepended to each JSONC file when written. Documents the
300
+ * schema so a user opening the file in any editor sees the rules without
301
+ * having to consult external docs. JSONC parsers strip comments, so this
302
+ * has no effect on readers — it only helps the human editor. */
303
+ const JSONC_HEADERS: Record<string, string> = {
304
+ "accounts.jsonc":
305
+ "// mailx — accounts.jsonc (synced to your GDrive .rmfmail folder)\n" +
306
+ "// Shape: { name?: string, accounts: [ { id, email, name?, imap?, smtp?, enabled?, identityDomains? } ] }\n" +
307
+ "// id — short tag used in folder paths and the UI (e.g. \"gmail\", \"bobma\")\n" +
308
+ "// email — primary login address\n" +
309
+ "// imap / smtp — { host, port, tls, auth: \"password\"|\"oauth2\" }; omit for known providers (gmail/outlook/yahoo/icloud auto-config from the email domain)\n" +
310
+ "// enabled — set false to skip this account at startup (default true)\n" +
311
+ "// identityDomains — extra domains/aliases for Reply-From auto-detection\n" +
312
+ "// JSONC: // comments and trailing commas are allowed.\n\n",
313
+ "allowlist.jsonc":
314
+ "// mailx — allowlist.jsonc (remote-content + flagged-sender lists, synced to GDrive)\n" +
315
+ "// Shape: { senders: [], domains: [], recipients: [], flaggedSenders: [], flaggedDomains: [] }\n" +
316
+ "// senders / domains — auto-load remote images from these\n" +
317
+ "// recipients — addresses you receive at (treated as your inbox identity)\n" +
318
+ "// flaggedSenders / flaggedDomains — viewer shows a ⚠ FLAGGED banner on every message from these\n" +
319
+ "// All entries are case-insensitive plain email or domain strings.\n\n",
320
+ "contacts.jsonc":
321
+ "// mailx — contacts.jsonc (address book, synced to GDrive)\n" +
322
+ "// Shape: { preferred: [], denylist: [], discovered: [] }\n" +
323
+ "// preferred — manually-curated contacts: { name?, email, source?, organization? }\n" +
324
+ "// denylist — addresses excluded from autocomplete (lowercased emails)\n" +
325
+ "// discovered — auto-collected from sent/received mail; ranking uses useCount × recency\n" +
326
+ "// Junk-pattern addresses (noreply, *-bounces, mailer-daemon, *-noreply-*) are dropped at insertion.\n\n",
327
+ "clients.jsonc":
328
+ "// mailx — clients.jsonc (registered devices, synced to GDrive)\n" +
329
+ "// Shape: { devices: [ { id, name, lastSeen, accounts: [accountId,...] } ] }\n" +
330
+ "// Auto-managed by each device on startup; you don't normally need to edit this.\n\n",
331
+ "config.jsonc":
332
+ "// mailx — config.jsonc (LOCAL per-machine config; NOT synced to GDrive)\n" +
333
+ "// Shape: { sharedDir: { provider, path, folderId? }, storePath?, historyDays? }\n" +
334
+ "// sharedDir — pointer to your GDrive .rmfmail folder\n" +
335
+ "// storePath — local directory for .eml message bodies (default ~/.rmfmail/mailxstore)\n" +
336
+ "// Edit only the local copy at ~/.rmfmail/config.jsonc — every machine has its own.\n\n",
337
+ "preferences.jsonc":
338
+ "// mailx — preferences.jsonc (UI + sync prefs, synced to GDrive)\n" +
339
+ "// Shape: { ui: {...}, sync: {...}, autocomplete: {...} }\n\n",
340
+ };
341
+ export function withJsoncHeader(filename: string, data: any): string {
342
+ const json = JSON.stringify(data, null, 2);
343
+ const header = JSONC_HEADERS[filename] || "";
344
+ return header + json;
345
+ }
346
+
299
347
  /** Read a config file: shared first, local fallback, merge local overrides */
300
348
  function loadFile<T>(filename: string, defaults: T): T {
301
349
  const sharedDir = getSharedDir();
@@ -338,7 +386,7 @@ function saveFile(filename: string, data: any): void {
338
386
  }
339
387
  // Write to cloud API if filesystem mount unavailable (creates app-owned file for drive.file scope)
340
388
  if (pendingCloudConfig) {
341
- cloudWrite(filename, JSON.stringify(data, null, 2))
389
+ cloudWrite(filename, withJsoncHeader(filename, data))
342
390
  .then(() => console.log(` [cloud] Saved ${filename} via ${pendingCloudConfig!.provider} API`))
343
391
  .catch(e => console.error(` [cloud] Failed to save ${filename}: ${e.message}`));
344
392
  // Note: we don't await — saveFile is sync. cloudWrite() already calls