@bobfrankston/rmfmail 1.1.124 → 1.1.127
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 +8 -3
- package/client/app.bundle.js.map +2 -2
- package/client/app.js +17 -1
- package/client/app.js.map +1 -1
- package/client/app.ts +19 -1
- package/client/components/message-viewer.js +19 -6
- package/client/components/message-viewer.js.map +1 -1
- package/client/components/message-viewer.ts +19 -6
- package/client/compose/compose.bundle.js +4 -14
- package/client/compose/compose.bundle.js.map +2 -2
- package/client/compose/spellcheck.js +23 -19
- package/client/compose/spellcheck.js.map +1 -1
- package/client/compose/spellcheck.ts +22 -18
- package/client/index.html +1 -0
- package/package.json +13 -73
- package/packages/mailx-imap/index.d.ts.map +1 -1
- package/packages/mailx-imap/index.js +37 -2
- package/packages/mailx-imap/index.js.map +1 -1
- package/packages/mailx-imap/index.ts +35 -2
- package/packages/mailx-imap/package-lock.json +2 -2
- package/packages/mailx-imap/package.json +1 -1
- package/packages/mailx-store/db.d.ts.map +1 -1
- package/packages/mailx-store/db.js +17 -3
- package/packages/mailx-store/db.js.map +1 -1
- package/packages/mailx-store/db.ts +16 -2
- /package/packages/mailx-imap/{node_modules.npmglobalize-stash-86400 → node_modules.npmglobalize-stash-90024}/.package-lock.json +0 -0
package/client/app.js
CHANGED
|
@@ -1260,10 +1260,16 @@ function sanitizeQuotedBody(msg) {
|
|
|
1260
1260
|
// raw whitespace or not. pre-wrap stays as belt-and-braces and to
|
|
1261
1261
|
// keep multi-space runs (alignment, indented quote-markers like
|
|
1262
1262
|
// `> > >`) visible.
|
|
1263
|
-
|
|
1263
|
+
let escaped = String(msg.bodyText || "")
|
|
1264
1264
|
.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">")
|
|
1265
1265
|
.replace(/\r\n?/g, "\n")
|
|
1266
1266
|
.replace(/\n/g, "<br>");
|
|
1267
|
+
// Linkify bare URLs. Without this, replying to a plain-text email
|
|
1268
|
+
// (mailing lists, etc.) drops every URL into the quote as dead
|
|
1269
|
+
// text — the editor has nothing to keep clickable, so the sent
|
|
1270
|
+
// reply has no working links (Bob 2026-05-22). The regex stops at
|
|
1271
|
+
// `<`, so the <br>s inserted above can't be swallowed into an href.
|
|
1272
|
+
escaped = escaped.replace(/(https?:\/\/[^\s<>"')\]]+)/g, '<a href="$1" target="_blank" rel="noopener noreferrer">$1</a>');
|
|
1267
1273
|
return `<div style="white-space:pre-wrap;font-family:inherit;margin:0">${escaped}</div>`;
|
|
1268
1274
|
}
|
|
1269
1275
|
let body = msg.bodyHtml;
|
|
@@ -3198,6 +3204,16 @@ document.addEventListener("keydown", (e) => {
|
|
|
3198
3204
|
const active = document.activeElement;
|
|
3199
3205
|
if (active && (active.tagName === "INPUT" || active.tagName === "TEXTAREA" || active.tagName === "SELECT"))
|
|
3200
3206
|
return;
|
|
3207
|
+
// Respect focus: if the preview iframe or the folder tree has
|
|
3208
|
+
// focus, arrows should scroll/navigate that pane — not hijack to
|
|
3209
|
+
// list navigation. The viewer's iframe forwards every keydown to
|
|
3210
|
+
// the parent for hotkey unification; here we bail so the iframe's
|
|
3211
|
+
// own preventDefault chain leaves the native arrow-scroll alone
|
|
3212
|
+
// (Bob 2026-05-22: "arrow keys should work in the window with focus").
|
|
3213
|
+
if (active && (active.tagName === "IFRAME"
|
|
3214
|
+
|| active.closest?.("#message-viewer")
|
|
3215
|
+
|| active.closest?.("#folder-tree")))
|
|
3216
|
+
return;
|
|
3201
3217
|
const body = document.getElementById("ml-body");
|
|
3202
3218
|
if (!body)
|
|
3203
3219
|
return;
|