@bobfrankston/rmfmail 1.2.200 → 1.2.202

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 (38) hide show
  1. package/bin/mailx.js +42 -0
  2. package/bin/mailx.js.map +1 -1
  3. package/bin/mailx.ts +34 -0
  4. package/bin/rmfshare-src/Program.cs +14 -2
  5. package/bin/rmfshare.exe +0 -0
  6. package/client/android-bootstrap.bundle.js +6 -3
  7. package/client/android-bootstrap.bundle.js.map +2 -2
  8. package/client/app.bundle.js +3 -0
  9. package/client/app.bundle.js.map +2 -2
  10. package/client/components/message-viewer.js +5 -0
  11. package/client/components/message-viewer.js.map +1 -1
  12. package/client/components/message-viewer.ts +5 -0
  13. package/client/compose/compose.bundle.js +3 -0
  14. package/client/compose/compose.bundle.js.map +2 -2
  15. package/client/compose/compose.js +3 -0
  16. package/client/compose/compose.js.map +1 -1
  17. package/client/compose/compose.ts +3 -0
  18. package/client/package.json +1 -1
  19. package/package.json +3 -3
  20. package/packages/mailx-service/index.d.ts +1 -1
  21. package/packages/mailx-service/index.d.ts.map +1 -1
  22. package/packages/mailx-service/index.js +8 -2
  23. package/packages/mailx-service/index.js.map +1 -1
  24. package/packages/mailx-service/index.ts +8 -2
  25. package/packages/mailx-service/jsonrpc.js +1 -1
  26. package/packages/mailx-service/jsonrpc.js.map +1 -1
  27. package/packages/mailx-service/jsonrpc.ts +1 -1
  28. package/packages/mailx-service/package.json +1 -1
  29. package/packages/mailx-store-web/android-bootstrap.js +1 -1
  30. package/packages/mailx-store-web/android-bootstrap.js.map +1 -1
  31. package/packages/mailx-store-web/android-bootstrap.ts +1 -1
  32. package/packages/mailx-store-web/package.json +1 -1
  33. package/packages/mailx-store-web/web-service.d.ts +1 -1
  34. package/packages/mailx-store-web/web-service.d.ts.map +1 -1
  35. package/packages/mailx-store-web/web-service.js +5 -3
  36. package/packages/mailx-store-web/web-service.js.map +1 -1
  37. package/packages/mailx-store-web/web-service.ts +5 -3
  38. /package/packages/mailx-imap/{node_modules.npmglobalize-stash-13740 → node_modules.npmglobalize-stash-57816}/.package-lock.json +0 -0
@@ -49,8 +49,16 @@ internal static class Program
49
49
  if (activation is ShareTargetActivatedEventArgs share)
50
50
  {
51
51
  HandleShare(share).GetAwaiter().GetResult();
52
+ // Handoff launch: a RUNNING daemon consumes pending-share.json
53
+ // via fs.watch; the spawned mailx.js must exit instead of
54
+ // replace-on-launch restarting the whole app (Bob 2026-07-30).
55
+ LaunchDaemon(handoff: true);
56
+ }
57
+ else
58
+ {
59
+ // Plain double-click — a normal launch (replace is fine).
60
+ LaunchDaemon(handoff: false);
52
61
  }
53
- LaunchDaemon();
54
62
  return 0;
55
63
  }
56
64
  catch (Exception ex)
@@ -173,7 +181,7 @@ internal static class Program
173
181
  /// running the new process exits at the instance check (fs.watch on the
174
182
  /// pending file has already fired); otherwise it becomes the daemon and
175
183
  /// the client's startup poll consumes the file.
176
- private static void LaunchDaemon()
184
+ private static void LaunchDaemon(bool handoff)
177
185
  {
178
186
  var mailxJs = Environment.GetEnvironmentVariable("RMFMAIL_JS");
179
187
  if (string.IsNullOrEmpty(mailxJs) || !File.Exists(mailxJs))
@@ -203,6 +211,10 @@ internal static class Program
203
211
  WorkingDirectory = Path.GetDirectoryName(mailxJs)!,
204
212
  };
205
213
  psi.ArgumentList.Add(mailxJs);
214
+ // Tells mailx.js this is a share handoff: exit if a daemon is
215
+ // already running (it has the pending file) instead of the default
216
+ // replace-on-launch, which restarted the whole app mid-share.
217
+ if (handoff) psi.ArgumentList.Add("--handoff");
206
218
  Process.Start(psi);
207
219
  }
208
220
 
package/bin/rmfshare.exe CHANGED
Binary file
@@ -6346,7 +6346,7 @@ ${inner.body}`;
6346
6346
  await this.syncManager.undeleteMessage(accountId, uid, folderId);
6347
6347
  }
6348
6348
  // ── Drafts ──
6349
- async saveDraft(accountId, subject, bodyHtml, bodyText, to, cc, previousDraftUid, draftId) {
6349
+ async saveDraft(accountId, subject, bodyHtml, bodyText, to, cc, previousDraftUid, draftId, bcc, from) {
6350
6350
  const settings = await loadSettings();
6351
6351
  const account = settings.accounts.find((a) => a.id === accountId);
6352
6352
  if (!account)
@@ -6355,9 +6355,12 @@ ${inner.body}`;
6355
6355
  const body = bodyHtml || bodyText || "";
6356
6356
  const bodyEncoded = encodeQuotedPrintable(body);
6357
6357
  const headers = [
6358
- `From: ${account.name} <${account.email}>`,
6358
+ // Same rule as desktop: the compose From (reply-to-alias) wins
6359
+ // over the account default (Bob 2026-07-30).
6360
+ `From: ${from?.trim() || `${account.name} <${account.email}>`}`,
6359
6361
  to ? `To: ${to}` : null,
6360
6362
  cc ? `Cc: ${cc}` : null,
6363
+ bcc ? `Bcc: ${bcc}` : null,
6361
6364
  `Subject: ${subject || "(no subject)"}`,
6362
6365
  `Date: ${(/* @__PURE__ */ new Date()).toUTCString()}`,
6363
6366
  `X-Mailx-Draft-ID: ${id}`,
@@ -11556,7 +11559,7 @@ function installBridge() {
11556
11559
  await service.send(msg);
11557
11560
  return { ok: true };
11558
11561
  },
11559
- saveDraft: (p) => service.saveDraft(p.accountId, p.subject, p.bodyHtml, p.bodyText, p.to, p.cc, p.previousDraftUid, p.draftId),
11562
+ saveDraft: (p) => service.saveDraft(p.accountId, p.subject, p.bodyHtml, p.bodyText, p.to, p.cc, p.previousDraftUid, p.draftId, p.bcc, p.from),
11560
11563
  deleteDraft: async (accountId, draftUid) => {
11561
11564
  await service.deleteDraft(accountId, draftUid);
11562
11565
  return { ok: true };