@bobfrankston/rmfmail 1.2.115 → 1.2.117

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.
@@ -5,7 +5,7 @@
5
5
  */
6
6
 
7
7
  import { createEditor, type MailxEditor } from "./editor.js";
8
- import { getVersion, getSettings, getAccounts, searchContacts, sendMessage, saveDraft as apiSaveDraft, deleteDraft, logClientEvent, addPreferredContact, addToDenylist, openInWord, closeWordEdit, onEvent, installConsoleCapture } from "../lib/api-client.js";
8
+ import { getVersion, getSettings, getAccounts, searchContacts, sendMessage, saveDraft as apiSaveDraft, deleteDraft, logClientEvent, addPreferredContact, addToDenylist, openInWord, closeWordEdit, onEvent, installConsoleCapture, popoutCompose, consumePopoutComposeInit, closeComposePopout } from "../lib/api-client.js";
9
9
  import { showContextMenu, type MenuItem } from "../components/context-menu.js";
10
10
 
11
11
  // Capture compose-iframe console + window errors to the daemon log. Same
@@ -28,9 +28,19 @@ function _ctick(label: string): void {
28
28
  }
29
29
  _ctick("module body executing");
30
30
 
31
+ // Non-empty when this compose is running in its own popped-out OS window
32
+ // (served by the loopback popout server) rather than the main-window overlay.
33
+ // The id keys the daemon-side init stash AND the window handle for close.
34
+ const popoutInitId = new URLSearchParams(location.search).get("pi") || "";
35
+
31
36
  /** Close compose window */
32
37
  function closeCompose(): void {
33
38
  logClientEvent("compose-close");
39
+ if (popoutInitId) {
40
+ // Popped-out window: the daemon owns the native window handle, so ask
41
+ // it to close us. window.close() below stays as the fallback.
42
+ void closeComposePopout(popoutInitId).catch(() => { /* window X still works */ });
43
+ }
34
44
  // S61: Android WebView's window.close() override is unreliable inside
35
45
  // iframes — compose overlay sometimes stays visible after Send. Primary
36
46
  // path is a parent postMessage; window.close() is a fallback that also
@@ -54,6 +64,12 @@ interface ComposeInit {
54
64
  draftUid?: number;
55
65
  draftFolderId?: number;
56
66
  draftId?: string;
67
+ // Popout handoff extras — the overlay serializes its LIVE state, which
68
+ // includes fields the app.ts reply/forward initializers never set.
69
+ bcc?: { name: string; address: string }[];
70
+ /** Verbatim From input ("Name <addr>") — wins over fromAddress, which
71
+ * reconstructs the display name from the account list. */
72
+ fromRaw?: string;
57
73
  }
58
74
 
59
75
  // ── Load editor scripts dynamically ──
@@ -530,13 +546,14 @@ function getFromAddress(): string {
530
546
  return fromInput.value.trim();
531
547
  }
532
548
 
533
- /** Smart tab — skip to next empty field, ending at body */
534
- function smartTab(current: HTMLInputElement): void {
535
- const fields = [toInput, ccInput, bccInput, subjectInput];
549
+ /** Smart tab — skip to next empty visible field, ending at body */
550
+ function smartTab(current: HTMLInputElement | HTMLTextAreaElement): void {
551
+ const fields: (HTMLInputElement | HTMLTextAreaElement)[] = [toInput, ccInput, bccInput, subjectInput];
536
552
  const currentIdx = fields.indexOf(current);
537
- // Look for next empty field after current
553
+ // Look for next empty field after current — offsetParent is null while
554
+ // the Cc/Bcc row is hidden, and focusing a hidden field silently no-ops
538
555
  for (let i = currentIdx + 1; i < fields.length; i++) {
539
- if (!fields[i].value.trim()) {
556
+ if (!fields[i].value.trim() && fields[i].offsetParent !== null) {
540
557
  fields[i].focus();
541
558
  return;
542
559
  }
@@ -870,6 +887,18 @@ setupAutocomplete(toInput);
870
887
  setupAutocomplete(ccInput);
871
888
  setupAutocomplete(bccInput);
872
889
 
890
+ // Tab in a header field jumps to the next empty field and lands in the body,
891
+ // instead of walking the toolbar buttons. Registered after setupAutocomplete
892
+ // so an open dropdown's Tab-select (which preventDefaults) wins.
893
+ for (const field of [toInput, ccInput, bccInput, subjectInput]) {
894
+ field.addEventListener("keydown", (e: Event) => {
895
+ const ke = e as KeyboardEvent;
896
+ if (ke.key !== "Tab" || ke.shiftKey || ke.ctrlKey || ke.altKey || ke.defaultPrevented) return;
897
+ ke.preventDefault();
898
+ smartTab(field);
899
+ });
900
+ }
901
+
873
902
  /** Split a recipient string on TOP-LEVEL commas only — a comma inside a
874
903
  * quoted display name (`"Frankston, Bob" <bob@x.com>`) is part of the name,
875
904
  * not a separator. The naive `s.split(",")` parsed such a name as two
@@ -1041,7 +1070,9 @@ function applyInit(init: ComposeInit): void {
1041
1070
 
1042
1071
  // If the reply has a specific identity address (alias / +tag), set it
1043
1072
  // as the From value directly — overrides the account default.
1044
- if (init.fromAddress) {
1073
+ if (init.fromRaw) {
1074
+ fromInput.value = init.fromRaw;
1075
+ } else if (init.fromAddress) {
1045
1076
  const account = init.accounts.find(a => a.id === init.accountId);
1046
1077
  const displayName = account?.name || "";
1047
1078
  fromInput.value = displayName ? `${displayName} <${init.fromAddress}>` : init.fromAddress;
@@ -1049,6 +1080,7 @@ function applyInit(init: ComposeInit): void {
1049
1080
 
1050
1081
  toInput.value = formatAddrs(init.to);
1051
1082
  ccInput.value = formatAddrs(init.cc);
1083
+ bccInput.value = formatAddrs(init.bcc || []);
1052
1084
  subjectInput.value = init.subject;
1053
1085
  // Resize the textareas to match the freshly-loaded recipient lists —
1054
1086
  // without this the textareas stay 1-row even when the To: contains a
@@ -1057,6 +1089,14 @@ function applyInit(init: ComposeInit): void {
1057
1089
  autoGrowAddrInput(ccInput);
1058
1090
  autoGrowAddrInput(bccInput);
1059
1091
 
1092
+ // Auto-expand Bcc row if the init carried Bcc content (popout handoff)
1093
+ if (bccInput.value.trim()) {
1094
+ const bccRowEl = document.getElementById("compose-bcc-row");
1095
+ const bccBtn = document.getElementById("btn-toggle-bcc");
1096
+ if (bccRowEl) bccRowEl.hidden = false;
1097
+ if (bccBtn) bccBtn.classList.add("active");
1098
+ }
1099
+
1060
1100
  // Auto-expand Cc row if the init already has Cc content (reply-all, draft-with-cc)
1061
1101
  if (ccInput.value.trim()) {
1062
1102
  const ccRowEl = document.getElementById("compose-cc-row");
@@ -1440,15 +1480,29 @@ function waitForParentInit(maxMs: number): Promise<void> {
1440
1480
 
1441
1481
  (async () => {
1442
1482
  _ctick("init IIFE start");
1443
- // Try parent-stash FIRST it's synchronous and most reliable. Only
1444
- // wait/poll if it's empty.
1445
- let parentInit = pullInitFromParent();
1446
- if (!parentInit && !sessionStorage.getItem("composeInit") && !_postedInit) {
1447
- _ctick("waiting for parent init");
1448
- await waitForParentInit(1500);
1449
- _ctick(`parent init received (msgEvents=${_msgEventCount})`);
1450
- // Re-poll the parent stash — it may have been populated during the wait.
1451
- if (!_postedInit) parentInit = pullInitFromParent();
1483
+ let parentInit: ComposeInit | null = null;
1484
+ if (popoutInitId) {
1485
+ // Popped-out OS window — there is no parent frame; the overlay
1486
+ // stashed its live state with the daemon and put the stash id in
1487
+ // our URL. One-shot fetch over the popout server's RPC bridge.
1488
+ try {
1489
+ parentInit = ((await consumePopoutComposeInit(popoutInitId)) as any)?.init || null;
1490
+ } catch (e: any) {
1491
+ console.error("Failed to fetch popout compose init:", e);
1492
+ }
1493
+ _ctick(`popout init ${parentInit ? "received" : "MISSING"}`);
1494
+ try { document.title = parentInit?.subject ? `Compose: ${parentInit.subject}` : "Compose"; } catch { /* */ }
1495
+ } else {
1496
+ // Try parent-stash FIRST — it's synchronous and most reliable. Only
1497
+ // wait/poll if it's empty.
1498
+ parentInit = pullInitFromParent();
1499
+ if (!parentInit && !sessionStorage.getItem("composeInit") && !_postedInit) {
1500
+ _ctick("waiting for parent init");
1501
+ await waitForParentInit(1500);
1502
+ _ctick(`parent init received (msgEvents=${_msgEventCount})`);
1503
+ // Re-poll the parent stash — it may have been populated during the wait.
1504
+ if (!_postedInit) parentInit = pullInitFromParent();
1505
+ }
1452
1506
  }
1453
1507
  // Priority: parent-stash > postMessage > sessionStorage.
1454
1508
  const stored = sessionStorage.getItem("composeInit");
@@ -1458,7 +1512,7 @@ function waitForParentInit(maxMs: number): Promise<void> {
1458
1512
  if (initRaw) {
1459
1513
  sessionStorage.removeItem("composeInit");
1460
1514
  const init = initRaw;
1461
- const src = parentInit ? "parent-stash" : (_postedInit ? "postMessage" : "sessionStorage");
1515
+ const src = parentInit ? (popoutInitId ? "popout" : "parent-stash") : (_postedInit ? "postMessage" : "sessionStorage");
1462
1516
  _ctick(`init parsed (mode=${init.mode}, bodyHtml=${init.bodyHtml?.length || 0} bytes, src=${src})`);
1463
1517
  if (init.accounts && init.accounts.length > 0) {
1464
1518
  // Happy path — init is complete. Apply immediately. Kick
@@ -1819,6 +1873,57 @@ document.getElementById("btn-discard")?.addEventListener("click", async () => {
1819
1873
  closeCompose();
1820
1874
  });
1821
1875
 
1876
+ // ── Popout: continue this compose in its own OS window ──
1877
+ // Serializes the LIVE compose state (fields, body, attachments, draft
1878
+ // identity) and hands it to the daemon, which spawns a native msger window
1879
+ // running this same page against the popout server. Draft continuity comes
1880
+ // from passing draftUid/draftId — the popout keeps replacing the same draft.
1881
+ const composePopoutBtn = document.getElementById("btn-compose-popout") as HTMLButtonElement | null;
1882
+ // Already popped out → no button. style.display, not the hidden attr — the
1883
+ // .tb-btn display rule outranks the UA's [hidden] { display: none }.
1884
+ if (composePopoutBtn && popoutInitId) composePopoutBtn.style.display = "none";
1885
+ composePopoutBtn?.addEventListener("click", async () => {
1886
+ // Pin the draft identity BEFORE serializing: if the overlay's unload
1887
+ // flush still fires a save after the hand-off, it dedups against the
1888
+ // same X-Mailx-Draft-ID the popout continues with — no duplicate draft.
1889
+ if (!draftId) draftId = `mailx-draft-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
1890
+ const init: ComposeInit = {
1891
+ // "draft" mode so applyInit does NOT re-append the signature — the
1892
+ // body already carries whatever the user has (sig included).
1893
+ mode: "draft",
1894
+ accountId: getFromAccountId(),
1895
+ to: parseAddrs(toInput.value),
1896
+ cc: parseAddrs(ccInput.value),
1897
+ bcc: parseAddrs(bccInput.value),
1898
+ subject: subjectInput.value,
1899
+ bodyHtml: editor.getHtml(),
1900
+ inReplyTo: replyInReplyTo,
1901
+ references: replyReferences,
1902
+ accounts: knownAccounts,
1903
+ fromRaw: getFromAddress(),
1904
+ attachments: attachments.map(a => ({ filename: a.filename, mimeType: a.mimeType, dataBase64: a.dataBase64 })),
1905
+ draftUid: draftUid ?? undefined,
1906
+ draftId: draftId ?? undefined,
1907
+ };
1908
+ composePopoutBtn.disabled = true;
1909
+ try {
1910
+ const r = await popoutCompose(init);
1911
+ if (r?.ok) {
1912
+ // Hand-off complete — close the overlay silently (no discard
1913
+ // prompt, no draft delete; the popout owns the draft now).
1914
+ if (draftDebounceTimer) { clearTimeout(draftDebounceTimer); draftDebounceTimer = null; }
1915
+ if (draftTimer) { clearInterval(draftTimer); draftTimer = null; }
1916
+ closeCompose();
1917
+ } else {
1918
+ showDraftStatus(`Popout failed: ${r?.reason || "unknown"}`, true);
1919
+ composePopoutBtn.disabled = false;
1920
+ }
1921
+ } catch (e: any) {
1922
+ showDraftStatus(`Popout failed: ${e?.message || e}`, true);
1923
+ composePopoutBtn.disabled = false;
1924
+ }
1925
+ });
1926
+
1822
1927
  // ── Cc / Bcc toggle ──
1823
1928
  const ccRow = document.getElementById("compose-cc-row") as HTMLElement;
1824
1929
  const bccRow = document.getElementById("compose-bcc-row") as HTMLElement;
@@ -619,6 +619,27 @@ export async function popoutWindow(accountId, uid, folderId, subject) {
619
619
  return { ok: false, reason: "no popoutWindow bridge" };
620
620
  return fn(accountId, uid, folderId, subject);
621
621
  }
622
+ /** Take a live compose into its own native OS window. init is the full
623
+ * compose state; the daemon stashes it and spawns a popout-server-backed
624
+ * msger window that consumes it on boot. */
625
+ export async function popoutCompose(init) {
626
+ const fn = ipc().popoutCompose;
627
+ if (!fn)
628
+ return { ok: false, reason: "no popoutCompose bridge" };
629
+ return fn(init);
630
+ }
631
+ /** Popout compose page boot: one-shot fetch of the init stashed by popoutCompose. */
632
+ export async function consumePopoutComposeInit(id) {
633
+ const fn = ipc().consumePopoutComposeInit;
634
+ if (!fn)
635
+ return { init: null };
636
+ return fn(id);
637
+ }
638
+ /** Ask the daemon to close this compose-popout window (after send/discard). */
639
+ export function closeComposePopout(id) {
640
+ const fn = ipc().closeComposePopout;
641
+ return fn ? fn(id) : Promise.resolve({ ok: false });
642
+ }
622
643
  export async function getDeviceAccounts() {
623
644
  return ipc().getDeviceAccounts?.() ?? [];
624
645
  }
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.js","sourceRoot":"","sources":["api-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["api-client.ts"],"names":[],"mappings":"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"}
@@ -682,6 +682,28 @@ export async function popoutWindow(accountId: string, uid: number, folderId?: nu
682
682
  return fn(accountId, uid, folderId, subject);
683
683
  }
684
684
 
685
+ /** Take a live compose into its own native OS window. init is the full
686
+ * compose state; the daemon stashes it and spawns a popout-server-backed
687
+ * msger window that consumes it on boot. */
688
+ export async function popoutCompose(init: any): Promise<{ ok: boolean; reason?: string }> {
689
+ const fn = (ipc() as any).popoutCompose;
690
+ if (!fn) return { ok: false, reason: "no popoutCompose bridge" };
691
+ return fn(init);
692
+ }
693
+
694
+ /** Popout compose page boot: one-shot fetch of the init stashed by popoutCompose. */
695
+ export async function consumePopoutComposeInit(id: string): Promise<{ init: any | null }> {
696
+ const fn = (ipc() as any).consumePopoutComposeInit;
697
+ if (!fn) return { init: null };
698
+ return fn(id);
699
+ }
700
+
701
+ /** Ask the daemon to close this compose-popout window (after send/discard). */
702
+ export function closeComposePopout(id: string): Promise<{ ok: boolean }> {
703
+ const fn = (ipc() as any).closeComposePopout;
704
+ return fn ? fn(id) : Promise.resolve({ ok: false });
705
+ }
706
+
685
707
  export async function getDeviceAccounts(): Promise<{ email: string; name: string }[]> {
686
708
  return ipc().getDeviceAccounts?.() ?? [];
687
709
  }
@@ -32,14 +32,25 @@
32
32
  // log via logClientEvent — `[client] ipc-send <action> cbid=N tEpoch=...`.
33
33
  // High-res `performance.now()` is local to the WebView; we also include
34
34
  // wall-clock so daemon-side timestamps align.
35
+ // The service channel. Normally the host-injected window.ipc (msger Rust
36
+ // WebView2 / MAUI). Popout windows can't use it — msger injects window.ipc
37
+ // as a NON-WRITABLE, NON-CONFIGURABLE property wired to the messagebox
38
+ // channel, where service RPC dies silently. There the popout bridge
39
+ // (popout-bridge.ts) sets window.__rmfIpcOverride, an HTTP-backed
40
+ // postMessage that carries the same payloads to the popout server's /rpc.
41
+ function _chan() {
42
+ return window.__rmfIpcOverride || window.ipc;
43
+ }
44
+
35
45
  function _traceIpcSend(action, id) {
36
46
  try {
37
47
  var hr = (typeof performance !== "undefined" && performance.now) ? performance.now().toFixed(1) : "n/a";
38
48
  var line = "ipc-send " + action + " cbid=" + id + " hr=" + hr + " wall=" + Date.now();
39
49
  // Send via direct postMessage to avoid recursion — logClientEvent
40
50
  // would re-enter callNode and create a circular trace.
41
- if (window.ipc && window.ipc.postMessage) {
42
- window.ipc.postMessage(JSON.stringify({
51
+ var chan = _chan();
52
+ if (chan && chan.postMessage) {
53
+ chan.postMessage(JSON.stringify({
43
54
  _action: "logClientEvent", _cbid: "trace-" + id, tag: line,
44
55
  }));
45
56
  }
@@ -96,12 +107,13 @@
96
107
  var msgStr = JSON.stringify(Object.assign({ _action: action, _cbid: id }, params || {}));
97
108
  return new Promise(function(resolve, reject) {
98
109
  function send() {
99
- if (window.ipc && window.ipc.postMessage) {
110
+ var chan = _chan();
111
+ if (chan && chan.postMessage) {
100
112
  // Trace BEFORE the call so a slow daemon-receive shows up as
101
113
  // ipc-send + N s before the daemon logs `[ipc] ←`. Skip the
102
114
  // trace event itself to avoid recursion.
103
115
  if (action !== "logClientEvent") _traceIpcSend(action, id);
104
- window.ipc.postMessage(msgStr);
116
+ chan.postMessage(msgStr);
105
117
  return true;
106
118
  }
107
119
  return false;
@@ -390,6 +402,20 @@
390
402
  return callNode("popoutWindow", { accountId: accountId, uid: uid, folderId: folderId, subject: subject });
391
403
  },
392
404
 
405
+ // Take a live compose into its own NATIVE msger window. init is the
406
+ // full compose state (fields, body, attachments, draft identity).
407
+ popoutCompose: function(init) {
408
+ return callNode("popoutCompose", { init: init });
409
+ },
410
+ // Popout compose page boot: one-shot fetch of the stashed init.
411
+ consumePopoutComposeInit: function(id) {
412
+ return callNode("consumePopoutComposeInit", { id: id });
413
+ },
414
+ // Popout compose page after send/discard: close my window.
415
+ closeComposePopout: function(id) {
416
+ return callNode("closeComposePopout", { id: id });
417
+ },
418
+
393
419
  // Reminder sound (custom file bytes or mute flag; {} = built-in chime)
394
420
  getReminderSound: function() { return callNode("getReminderSound"); },
395
421
 
@@ -406,6 +432,7 @@
406
432
  reauthenticate: function(accountId) { return callNode("reauthenticate", { accountId: accountId }); },
407
433
  reauthGoogleScopes: function() { return callNode("reauthGoogleScopes"); },
408
434
  hasCcHistoryTo: function(email) { return callNode("hasCcHistoryTo", { email: email }); },
435
+ hasBccHistoryTo: function(email) { return callNode("hasBccHistoryTo", { email: email }); },
409
436
 
410
437
  // Bulk operations
411
438
  deleteMessages: function(accountId, uids, folderIds) {
@@ -0,0 +1,55 @@
1
+ /**
2
+ * popout-bridge — HTTP transport for mailxapi in popout windows served by the
3
+ * loopback popout server (bin/popout-server.ts).
4
+ *
5
+ * The real hosts (msger Rust, MAUI) provide `window.ipc.postMessage` and call
6
+ * `_msgapiServiceResolve/_msgapiServiceReject` with the daemon's response.
7
+ * In a msger url-mode window that channel exists but is wired to the
8
+ * MESSAGEBOX protocol — service RPC posted there dies silently — and
9
+ * window.ipc is injected non-writable/non-configurable, so it cannot be
10
+ * replaced or wrapped. mailxapi.js therefore checks `window.__rmfIpcOverride`
11
+ * before window.ipc; this script provides it: every posted
12
+ * `{ _action, _cbid, ...params }` payload goes to POST /rpc and the
13
+ * `{ _cbid, result | error }` reply resolves the matching callback. The page
14
+ * runs the REAL mailxapi.js unmodified — one API surface, zero duplication.
15
+ *
16
+ * Injected by serveStatic() into every popout-served HTML page, after a
17
+ * config script that sets `window.__rmfPopoutRpc = { url }` and before
18
+ * mailxapi.js. No imports/exports on purpose — this must compile to a plain
19
+ * classic script (mailxapi.js loads the same way).
20
+ */
21
+ (function () {
22
+ const w = window;
23
+ const cfg = w.__rmfPopoutRpc;
24
+ if (!cfg || !cfg.url || w.__rmfIpcOverride)
25
+ return;
26
+ w.__rmfIpcOverride = {
27
+ postMessage: function (msgStr) {
28
+ let cbid = "";
29
+ try {
30
+ cbid = JSON.parse(msgStr)._cbid || "";
31
+ }
32
+ catch { /* resolve path just no-ops */ }
33
+ fetch(cfg.url, {
34
+ method: "POST",
35
+ headers: { "content-type": "application/json" },
36
+ body: msgStr,
37
+ // Let a final draft flush survive window close. keepalive
38
+ // caps the body at ~64KB, so only ask for it when we fit —
39
+ // an attachment-laden saveDraft would otherwise be REJECTED
40
+ // outright instead of merely not surviving unload.
41
+ keepalive: msgStr.length < 60_000,
42
+ })
43
+ .then((r) => r.json())
44
+ .then((res) => {
45
+ if (res && res.error != null)
46
+ w._msgapiServiceReject?.(cbid, res.error);
47
+ else
48
+ w._msgapiServiceResolve?.(cbid, res ? res.result : undefined);
49
+ })
50
+ .catch((e) => w._msgapiServiceReject?.(cbid, String((e && e.message) || e)));
51
+ },
52
+ };
53
+ })();
54
+ export {};
55
+ //# sourceMappingURL=popout-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popout-bridge.js","sourceRoot":"","sources":["popout-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,CAAC;IACG,MAAM,CAAC,GAAG,MAAa,CAAC;IACxB,MAAM,GAAG,GAAG,CAAC,CAAC,cAAc,CAAC;IAC7B,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,gBAAgB;QAAE,OAAO;IACnD,CAAC,CAAC,gBAAgB,GAAG;QACjB,WAAW,EAAE,UAAU,MAAc;YACjC,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,IAAI,CAAC;gBAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,8BAA8B,CAAC,CAAC;YACvF,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;gBACX,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,MAAM;gBACZ,0DAA0D;gBAC1D,2DAA2D;gBAC3D,4DAA4D;gBAC5D,mDAAmD;gBACnD,SAAS,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM;aACpC,CAAC;iBACG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBACrB,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;gBACV,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI;oBAAE,CAAC,CAAC,oBAAoB,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;;oBACnE,CAAC,CAAC,qBAAqB,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACvE,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACrF,CAAC;KACJ,CAAC;AACN,CAAC,CAAC,EAAE,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * popout-bridge — HTTP transport for mailxapi in popout windows served by the
3
+ * loopback popout server (bin/popout-server.ts).
4
+ *
5
+ * The real hosts (msger Rust, MAUI) provide `window.ipc.postMessage` and call
6
+ * `_msgapiServiceResolve/_msgapiServiceReject` with the daemon's response.
7
+ * In a msger url-mode window that channel exists but is wired to the
8
+ * MESSAGEBOX protocol — service RPC posted there dies silently — and
9
+ * window.ipc is injected non-writable/non-configurable, so it cannot be
10
+ * replaced or wrapped. mailxapi.js therefore checks `window.__rmfIpcOverride`
11
+ * before window.ipc; this script provides it: every posted
12
+ * `{ _action, _cbid, ...params }` payload goes to POST /rpc and the
13
+ * `{ _cbid, result | error }` reply resolves the matching callback. The page
14
+ * runs the REAL mailxapi.js unmodified — one API surface, zero duplication.
15
+ *
16
+ * Injected by serveStatic() into every popout-served HTML page, after a
17
+ * config script that sets `window.__rmfPopoutRpc = { url }` and before
18
+ * mailxapi.js. No imports/exports on purpose — this must compile to a plain
19
+ * classic script (mailxapi.js loads the same way).
20
+ */
21
+
22
+ (function (): void {
23
+ const w = window as any;
24
+ const cfg = w.__rmfPopoutRpc;
25
+ if (!cfg || !cfg.url || w.__rmfIpcOverride) return;
26
+ w.__rmfIpcOverride = {
27
+ postMessage: function (msgStr: string): void {
28
+ let cbid = "";
29
+ try { cbid = JSON.parse(msgStr)._cbid || ""; } catch { /* resolve path just no-ops */ }
30
+ fetch(cfg.url, {
31
+ method: "POST",
32
+ headers: { "content-type": "application/json" },
33
+ body: msgStr,
34
+ // Let a final draft flush survive window close. keepalive
35
+ // caps the body at ~64KB, so only ask for it when we fit —
36
+ // an attachment-laden saveDraft would otherwise be REJECTED
37
+ // outright instead of merely not surviving unload.
38
+ keepalive: msgStr.length < 60_000,
39
+ })
40
+ .then((r) => r.json())
41
+ .then((res) => {
42
+ if (res && res.error != null) w._msgapiServiceReject?.(cbid, res.error);
43
+ else w._msgapiServiceResolve?.(cbid, res ? res.result : undefined);
44
+ })
45
+ .catch((e) => w._msgapiServiceReject?.(cbid, String((e && e.message) || e)));
46
+ },
47
+ };
48
+ })();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bobfrankston/rmfmail",
3
- "version": "1.2.115",
3
+ "version": "1.2.117",
4
4
  "description": "Local-first email client with IMAP sync and standalone native app",
5
5
  "type": "module",
6
6
  "main": "bin/mailx.js",
@@ -44,6 +44,21 @@ export type PopoutWindowFn = (opts: {
44
44
  ok: boolean;
45
45
  reason?: string;
46
46
  }>;
47
+ /** Injected compose-popout functions — bin/mailx.ts wraps mailx-host's
48
+ * showMessageBoxEx pointed at the popout server's static compose page, so
49
+ * "take this compose into its own OS window" spawns a native msger window.
50
+ * `open` receives the stash id the page will consume; `close` tears the
51
+ * window down after send/discard. Injection keeps mailx-service host-agnostic. */
52
+ export type ComposePopoutFns = {
53
+ open: (opts: {
54
+ id: string;
55
+ subject?: string;
56
+ }) => Promise<{
57
+ ok: boolean;
58
+ reason?: string;
59
+ }>;
60
+ close: (id: string) => void;
61
+ };
47
62
  export declare class MailxService implements MailxApi {
48
63
  /** The Store is the nexus — owns DB + .eml files + bus + operations.
49
64
  * MailxService is the IPC adapter on top: it routes UI requests to
@@ -73,6 +88,27 @@ export declare class MailxService implements MailxApi {
73
88
  ok: boolean;
74
89
  reason?: string;
75
90
  }>;
91
+ private composePopoutFns;
92
+ /** Compose-popout init stash, keyed by the id embedded in the popout
93
+ * window's URL. One-shot: consumePopoutComposeInit deletes on read. */
94
+ private composePopoutInits;
95
+ setComposePopoutFns(fns: ComposePopoutFns): void;
96
+ /** Take a live compose into its own native OS window. The overlay hands
97
+ * us its full state (fields, body, attachments, draft identity); we
98
+ * stash it under a one-shot id and spawn the window pointed at the
99
+ * popout server's compose page with that id in the URL. */
100
+ popoutCompose(init: any): Promise<{
101
+ ok: boolean;
102
+ reason?: string;
103
+ }>;
104
+ /** One-shot read of a stashed compose-popout init (popout page boot). */
105
+ consumePopoutComposeInit(id: string): {
106
+ init: any | null;
107
+ };
108
+ /** Close a compose-popout window (after send / discard in the popout). */
109
+ closeComposePopout(id: string): {
110
+ ok: boolean;
111
+ };
76
112
  /** Local-first read/write facade. Every UI IPC handler that touches the
77
113
  * local DB or body store goes through this — no awaiting IMAP, no
78
114
  * awaiting Gmail API, no awaiting SMTP. See docs/local-first-plan.md. */