@bobfrankston/rmfmail 1.0.703 → 1.0.704
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/build-bundles.mjs +52 -24
- package/client/android-bootstrap.bundle.js +8188 -0
- package/client/android-bootstrap.bundle.js.map +7 -0
- package/client/app.bundle.js +34 -1
- package/client/app.bundle.js.map +2 -2
- package/client/app.js +46 -2
- package/client/app.js.map +1 -1
- package/client/app.ts +46 -3
- package/client/index.html +9 -1
- package/package.json +1 -1
- package/packages/mailx-service/local-store.d.ts.map +1 -1
- package/packages/mailx-service/local-store.js +9 -22
- package/packages/mailx-service/local-store.js.map +1 -1
- package/packages/mailx-service/local-store.ts +9 -23
- /package/packages/mailx-imap/{node_modules.npmglobalize-stash-4104 → node_modules.npmglobalize-stash-40924}/.package-lock.json +0 -0
package/client/app.js
CHANGED
|
@@ -801,9 +801,18 @@ async function openCompose(mode) {
|
|
|
801
801
|
const account = accounts.find((a) => a.id === accountId);
|
|
802
802
|
const explicitDomains = (account?.identityDomains || []).map((d) => d.toLowerCase());
|
|
803
803
|
const accountDomain = (account?.email || "").split("@")[1]?.toLowerCase();
|
|
804
|
-
|
|
804
|
+
// Fold subsumed subdomains. If the list has both `frankston.com` and
|
|
805
|
+
// `bobf.frankston.com`, drop the longer entry — the matcher's
|
|
806
|
+
// `endsWith(".frankston.com")` test already catches it, so listing
|
|
807
|
+
// both is wasted clutter. Same-pair dedup + parent-shadow filter in
|
|
808
|
+
// one pass.
|
|
809
|
+
function foldDomains(list) {
|
|
810
|
+
const unique = Array.from(new Set(list));
|
|
811
|
+
return unique.filter(d => !unique.some(p => p !== d && d.endsWith(`.${p}`)));
|
|
812
|
+
}
|
|
813
|
+
const identityDomains = foldDomains(explicitDomains.length > 0
|
|
805
814
|
? explicitDomains
|
|
806
|
-
: (accountDomain ? [accountDomain] : []);
|
|
815
|
+
: (accountDomain ? [accountDomain] : []));
|
|
807
816
|
function detectReplyFrom() {
|
|
808
817
|
if (!msg)
|
|
809
818
|
return undefined;
|
|
@@ -832,6 +841,41 @@ async function openCompose(mode) {
|
|
|
832
841
|
console.log(`[compose] no identity match`);
|
|
833
842
|
return undefined;
|
|
834
843
|
}
|
|
844
|
+
// Trace what we're feeding the reply — `[reply-init]` on the daemon log
|
|
845
|
+
// will show the exact `from`/`to`/`cc` values present on the source
|
|
846
|
+
// message at construction time, so a "To field empty" report can be
|
|
847
|
+
// diagnosed without re-deriving state. Bob 2026-05-13: had empty To on
|
|
848
|
+
// a clear-From mailing list message; need to see whether msg.from was
|
|
849
|
+
// populated or arrived as null.
|
|
850
|
+
if (msg) {
|
|
851
|
+
try {
|
|
852
|
+
const dump = {
|
|
853
|
+
mode,
|
|
854
|
+
accountId,
|
|
855
|
+
hasMsg: true,
|
|
856
|
+
from: msg.from || null,
|
|
857
|
+
toLen: Array.isArray(msg.to) ? msg.to.length : -1,
|
|
858
|
+
ccLen: Array.isArray(msg.cc) ? msg.cc.length : -1,
|
|
859
|
+
deliveredTo: msg.deliveredTo || "",
|
|
860
|
+
identityDomains,
|
|
861
|
+
subject: msg.subject || "",
|
|
862
|
+
};
|
|
863
|
+
const apiClient = window.mailxapi;
|
|
864
|
+
if (apiClient?.logClientEvent) {
|
|
865
|
+
apiClient.logClientEvent("reply-init", dump);
|
|
866
|
+
}
|
|
867
|
+
else {
|
|
868
|
+
console.log("[reply-init]", dump);
|
|
869
|
+
}
|
|
870
|
+
}
|
|
871
|
+
catch { /* tracing must never break compose */ }
|
|
872
|
+
}
|
|
873
|
+
else {
|
|
874
|
+
try {
|
|
875
|
+
window.mailxapi?.logClientEvent?.("reply-init", { mode, accountId, hasMsg: false });
|
|
876
|
+
}
|
|
877
|
+
catch { /* */ }
|
|
878
|
+
}
|
|
835
879
|
// Defensive: msg.from / msg.to may be missing on rows that arrived before
|
|
836
880
|
// headers finished loading. Don't push undefined into init.to — that
|
|
837
881
|
// bubbles to the compose form as literal "undefined". Empty-out gracefully.
|