@bobfrankston/rmfmail 1.0.686 → 1.0.690
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/client/app.bundle.js +57 -19
- package/client/app.bundle.js.map +2 -2
- package/client/app.js +36 -2
- package/client/app.js.map +1 -1
- package/client/app.ts +36 -2
- package/client/components/alarms.js +24 -12
- package/client/components/alarms.js.map +1 -1
- package/client/components/alarms.ts +23 -11
- package/client/components/message-list.js +9 -4
- package/client/components/message-list.js.map +1 -1
- package/client/components/message-list.ts +9 -4
- package/client/components/message-viewer.js +33 -3
- package/client/components/message-viewer.js.map +1 -1
- package/client/components/message-viewer.ts +33 -3
- package/client/compose/compose.bundle.js +7 -0
- package/client/compose/compose.bundle.js.map +2 -2
- package/client/compose/spellcheck.js +19 -0
- package/client/compose/spellcheck.js.map +1 -1
- package/client/compose/spellcheck.ts +17 -0
- package/package.json +3 -3
- package/packages/mailx-imap/index.d.ts.map +1 -1
- package/packages/mailx-imap/index.js +66 -9
- package/packages/mailx-imap/index.js.map +1 -1
- package/packages/mailx-imap/index.ts +63 -9
- package/packages/mailx-imap/package-lock.json +2 -2
- package/packages/mailx-imap/package.json +1 -1
- package/packages/mailx-service/google-sync.d.ts +46 -1
- package/packages/mailx-service/google-sync.d.ts.map +1 -1
- package/packages/mailx-service/google-sync.js +50 -1
- package/packages/mailx-service/google-sync.js.map +1 -1
- package/packages/mailx-service/google-sync.ts +91 -1
- package/packages/mailx-service/index.d.ts.map +1 -1
- package/packages/mailx-service/index.js +79 -6
- package/packages/mailx-service/index.js.map +1 -1
- package/packages/mailx-service/index.ts +76 -6
- package/packages/mailx-service/local-store.d.ts.map +1 -1
- package/packages/mailx-service/local-store.js +11 -0
- package/packages/mailx-service/local-store.js.map +1 -1
- package/packages/mailx-service/local-store.ts +9 -0
- package/packages/mailx-store/db.d.ts +7 -0
- package/packages/mailx-store/db.d.ts.map +1 -1
- package/packages/mailx-store/db.js +46 -5
- package/packages/mailx-store/db.js.map +1 -1
- package/packages/mailx-store/db.ts +48 -5
- package/packages/mailx-store/package.json +1 -1
- /package/packages/mailx-imap/{node_modules.npmglobalize-stash-11884 → node_modules.npmglobalize-stash-51400}/.package-lock.json +0 -0
package/client/app.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { initFolderTree, refreshFolderTree, updateFolderCounts, setFolderSynced, getFolderSynced, setOutboxTotal } from "./components/folder-tree.js";
|
|
6
6
|
import { initMessageList, loadMessages, loadUnifiedInbox, loadSearchResults, reloadCurrentFolder, clearSearchMode, getSelectedMessages, markBodiesCached, getCurrentFocused, releaseFocus, removeMessagesAndReconcile, setRowFlagged, scrollFocusedIntoView, refreshPriorityIndex } from "./components/message-list.js";
|
|
7
|
-
import { getCurrentMessage, initViewer, popOutCurrentMessage, toggleFullscreenPreview, showPreviewBodyMenu } from "./components/message-viewer.js";
|
|
7
|
+
import { getCurrentMessage, initViewer, popOutCurrentMessage, toggleFullscreenPreview, showPreviewBodyMenu, wrapHtmlBody } from "./components/message-viewer.js";
|
|
8
8
|
import { connectWebSocket, onWsEvent, triggerSync, syncAccount, reauthenticate, getAccounts, getFolders, deleteMessages, undeleteMessage, restartServer, getSyncPending, getVersion, getSettings, saveSettings, getAutocompleteSettings, saveAutocompleteSettings, repairAccounts, updateFlags, markAsSpamMessages, logClientEvent, sendMessage as apiSendMessage } from "./lib/api-client.js";
|
|
9
9
|
import * as messageState from "./lib/message-state.js";
|
|
10
10
|
// ── New message badge (favicon + title) ──
|
|
@@ -4504,6 +4504,32 @@ document.addEventListener("mailx-popout-message", (async (e) => {
|
|
|
4504
4504
|
alert(`Couldn't load message: ${err?.message || err}`);
|
|
4505
4505
|
return;
|
|
4506
4506
|
}
|
|
4507
|
+
// Drafts pop out into a COMPOSE window, not a read-only viewer popout.
|
|
4508
|
+
// Bob 2026-05-12: "popping out a draft should default to that" (edit
|
|
4509
|
+
// mode). Flag detection: server-side \Draft flag, or the message is
|
|
4510
|
+
// currently sitting in the user's Drafts folder. The read-only popout
|
|
4511
|
+
// surface is missing every action button (Reply, Forward, Edit Draft,
|
|
4512
|
+
// …) so dumping a draft into it is a worst-case dead-end.
|
|
4513
|
+
const isDraft = Array.isArray(msg?.flags) && msg.flags.includes("\\Draft");
|
|
4514
|
+
if (isDraft) {
|
|
4515
|
+
const accts = await getAccounts();
|
|
4516
|
+
const init = {
|
|
4517
|
+
mode: "draft",
|
|
4518
|
+
accountId,
|
|
4519
|
+
to: msg.to || [],
|
|
4520
|
+
cc: msg.cc || [],
|
|
4521
|
+
subject: msg.subject || subject || "",
|
|
4522
|
+
bodyHtml: msg.bodyHtml || "",
|
|
4523
|
+
inReplyTo: msg.inReplyTo || "",
|
|
4524
|
+
references: msg.references || [],
|
|
4525
|
+
accounts: accts.map((a) => ({ id: a.id, name: a.name, email: a.email, signature: a.signature, sig: a.sig })),
|
|
4526
|
+
draftUid: msg.uid,
|
|
4527
|
+
draftFolderId: msg.folderId,
|
|
4528
|
+
};
|
|
4529
|
+
sessionStorage.setItem("composeInit", JSON.stringify(init));
|
|
4530
|
+
showComposeOverlay(msg.subject ? `Edit: ${msg.subject}` : "Edit draft");
|
|
4531
|
+
return;
|
|
4532
|
+
}
|
|
4507
4533
|
const wrapper = document.createElement("div");
|
|
4508
4534
|
wrapper.className = "popout-overlay";
|
|
4509
4535
|
wrapper.style.cssText = "position:fixed;top:5vh;right:5vw;width:min(900px,60vw);height:min(800px,80vh);z-index:1500;background:var(--color-bg);border:1px solid var(--color-border);border-radius:6px;box-shadow:0 8px 32px rgba(0,0,0,0.3);display:flex;flex-direction:column;resize:both;overflow:hidden;";
|
|
@@ -4531,7 +4557,15 @@ document.addEventListener("mailx-popout-message", (async (e) => {
|
|
|
4531
4557
|
wrapper.appendChild(meta);
|
|
4532
4558
|
wrapper.appendChild(body);
|
|
4533
4559
|
document.body.appendChild(wrapper);
|
|
4534
|
-
|
|
4560
|
+
// Use the same wrapHtmlBody styling as the inline preview pane so the
|
|
4561
|
+
// popout's typography matches the preview's typography. Earlier the
|
|
4562
|
+
// popout fed bodyHtml DIRECTLY into srcdoc with no CSS wrapping, so
|
|
4563
|
+
// the browser used its default font (Times serif) while the preview
|
|
4564
|
+
// pane used system-ui sans-serif (Bob 2026-05-12: "double clicking on
|
|
4565
|
+
// the summary shows in a different font than in preview").
|
|
4566
|
+
body.srcdoc = msg.bodyHtml
|
|
4567
|
+
? wrapHtmlBody(msg.bodyHtml, !!msg.remoteAllowed)
|
|
4568
|
+
: `<!DOCTYPE html><html><head><style>body{font-family:system-ui,sans-serif;font-size:17.5px;line-height:1.5;color:#1a1a2e;padding:1rem;margin:0;}pre{white-space:pre-wrap;word-break:break-word;font-family:inherit;font-size:inherit;margin:0;}</style></head><body><pre>${escapeHtmlBasic(msg.bodyText || "(no body)")}</pre></body></html>`;
|
|
4535
4569
|
// Drag-to-move.
|
|
4536
4570
|
let dragX = 0, dragY = 0, dragging = false;
|
|
4537
4571
|
header.addEventListener("mousedown", (de) => {
|