@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.
- package/bin/mailx.js +42 -0
- package/bin/mailx.js.map +1 -1
- package/bin/mailx.ts +34 -0
- package/bin/rmfshare-src/Program.cs +14 -2
- package/bin/rmfshare.exe +0 -0
- package/client/android-bootstrap.bundle.js +6 -3
- package/client/android-bootstrap.bundle.js.map +2 -2
- package/client/app.bundle.js +3 -0
- package/client/app.bundle.js.map +2 -2
- package/client/components/message-viewer.js +5 -0
- package/client/components/message-viewer.js.map +1 -1
- package/client/components/message-viewer.ts +5 -0
- package/client/compose/compose.bundle.js +3 -0
- package/client/compose/compose.bundle.js.map +2 -2
- package/client/compose/compose.js +3 -0
- package/client/compose/compose.js.map +1 -1
- package/client/compose/compose.ts +3 -0
- package/client/package.json +1 -1
- package/package.json +3 -3
- package/packages/mailx-service/index.d.ts +1 -1
- package/packages/mailx-service/index.d.ts.map +1 -1
- package/packages/mailx-service/index.js +8 -2
- package/packages/mailx-service/index.js.map +1 -1
- package/packages/mailx-service/index.ts +8 -2
- package/packages/mailx-service/jsonrpc.js +1 -1
- package/packages/mailx-service/jsonrpc.js.map +1 -1
- package/packages/mailx-service/jsonrpc.ts +1 -1
- package/packages/mailx-service/package.json +1 -1
- package/packages/mailx-store-web/android-bootstrap.js +1 -1
- package/packages/mailx-store-web/android-bootstrap.js.map +1 -1
- package/packages/mailx-store-web/android-bootstrap.ts +1 -1
- package/packages/mailx-store-web/package.json +1 -1
- package/packages/mailx-store-web/web-service.d.ts +1 -1
- package/packages/mailx-store-web/web-service.d.ts.map +1 -1
- package/packages/mailx-store-web/web-service.js +5 -3
- package/packages/mailx-store-web/web-service.js.map +1 -1
- package/packages/mailx-store-web/web-service.ts +5 -3
- /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
|
-
|
|
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 };
|