@bobfrankston/mailx 1.0.324 → 1.0.327
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.
|
@@ -378,6 +378,15 @@ button.tb-menu-item { background: none; border: none; color: inherit; width: 100
|
|
|
378
378
|
grid-template-columns: subgrid;
|
|
379
379
|
align-content: start;
|
|
380
380
|
scrollbar-gutter: stable;
|
|
381
|
+
/* Android WebView / Chromium: without an explicit touch-action, the
|
|
382
|
+
* browser waits on JS touch listeners (passive or not) before deciding
|
|
383
|
+
* to scroll. That delay makes the first row feel like it got tapped
|
|
384
|
+
* before the scroll actually starts. pan-y tells the compositor: treat
|
|
385
|
+
* any vertical drag as a scroll, don't wait on JS. overscroll-behavior
|
|
386
|
+
* contains the scroll so we don't chain into the outer page / pull-to-
|
|
387
|
+
* refresh when the user flicks at top/bottom. */
|
|
388
|
+
touch-action: pan-y;
|
|
389
|
+
overscroll-behavior-y: contain;
|
|
381
390
|
}
|
|
382
391
|
|
|
383
392
|
.ml-row {
|
|
@@ -387,6 +396,11 @@ button.tb-menu-item { background: none; border: none; color: inherit; width: 100
|
|
|
387
396
|
padding: var(--gap-sm) var(--gap-sm);
|
|
388
397
|
border-bottom: 1px solid color-mix(in oklch, var(--color-border) 50%, transparent);
|
|
389
398
|
cursor: pointer;
|
|
399
|
+
/* Disable the 300ms double-tap-to-zoom delay on rows. Double-tap zoom
|
|
400
|
+
* makes no sense on a message row anyway; without this, Android often
|
|
401
|
+
* classifies a scroll-starting tap as a delayed-click because it's
|
|
402
|
+
* still in the double-tap wait window. */
|
|
403
|
+
touch-action: manipulation;
|
|
390
404
|
font-size: var(--font-size-base);
|
|
391
405
|
font-weight: 400;
|
|
392
406
|
color: var(--color-text);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bobfrankston/mailx",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.327",
|
|
4
4
|
"description": "Local-first email client with IMAP sync and standalone native app",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "bin/mailx.js",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"@bobfrankston/iflow-node": "^0.1.7",
|
|
25
25
|
"@bobfrankston/miscinfo": "^1.0.9",
|
|
26
26
|
"@bobfrankston/oauthsupport": "^1.0.24",
|
|
27
|
-
"@bobfrankston/msger": "^0.1.
|
|
27
|
+
"@bobfrankston/msger": "^0.1.344",
|
|
28
28
|
"@bobfrankston/mailx-host": "^0.1.3",
|
|
29
29
|
"@capacitor/android": "^8.3.0",
|
|
30
30
|
"@capacitor/cli": "^8.3.0",
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"@bobfrankston/iflow-node": "^0.1.7",
|
|
89
89
|
"@bobfrankston/miscinfo": "^1.0.9",
|
|
90
90
|
"@bobfrankston/oauthsupport": "^1.0.24",
|
|
91
|
-
"@bobfrankston/msger": "^0.1.
|
|
91
|
+
"@bobfrankston/msger": "^0.1.344",
|
|
92
92
|
"@bobfrankston/mailx-host": "^0.1.3",
|
|
93
93
|
"@capacitor/android": "^8.3.0",
|
|
94
94
|
"@capacitor/cli": "^8.3.0",
|
|
@@ -307,36 +307,43 @@ const PROVIDERS = {
|
|
|
307
307
|
label: "Gmail",
|
|
308
308
|
imap: { host: "imap.gmail.com", port: 993, tls: true, auth: "oauth2" },
|
|
309
309
|
smtp: { host: "smtp.gmail.com", port: 587, tls: true, auth: "oauth2" },
|
|
310
|
+
spam: "SPAM", // Gmail labels, mailx tree shows as "SPAM"
|
|
310
311
|
},
|
|
311
312
|
"googlemail.com": {
|
|
312
313
|
label: "Gmail",
|
|
313
314
|
imap: { host: "imap.gmail.com", port: 993, tls: true, auth: "oauth2" },
|
|
314
315
|
smtp: { host: "smtp.gmail.com", port: 587, tls: true, auth: "oauth2" },
|
|
316
|
+
spam: "SPAM",
|
|
315
317
|
},
|
|
316
318
|
"outlook.com": {
|
|
317
319
|
label: "Outlook",
|
|
318
320
|
imap: { host: "outlook.office365.com", port: 993, tls: true, auth: "oauth2" },
|
|
319
321
|
smtp: { host: "smtp.office365.com", port: 587, tls: true, auth: "oauth2" },
|
|
322
|
+
spam: "Junk Email",
|
|
320
323
|
},
|
|
321
324
|
"hotmail.com": {
|
|
322
325
|
label: "Hotmail",
|
|
323
326
|
imap: { host: "outlook.office365.com", port: 993, tls: true, auth: "oauth2" },
|
|
324
327
|
smtp: { host: "smtp.office365.com", port: 587, tls: true, auth: "oauth2" },
|
|
328
|
+
spam: "Junk Email",
|
|
325
329
|
},
|
|
326
330
|
"yahoo.com": {
|
|
327
331
|
label: "Yahoo",
|
|
328
332
|
imap: { host: "imap.mail.yahoo.com", port: 993, tls: true, auth: "password" },
|
|
329
333
|
smtp: { host: "smtp.mail.yahoo.com", port: 587, tls: true, auth: "password" },
|
|
334
|
+
spam: "Bulk Mail",
|
|
330
335
|
},
|
|
331
336
|
"aol.com": {
|
|
332
337
|
label: "AOL",
|
|
333
338
|
imap: { host: "imap.aol.com", port: 993, tls: true, auth: "password" },
|
|
334
339
|
smtp: { host: "smtp.aol.com", port: 587, tls: true, auth: "password" },
|
|
340
|
+
spam: "Bulk Mail",
|
|
335
341
|
},
|
|
336
342
|
"icloud.com": {
|
|
337
343
|
label: "iCloud",
|
|
338
344
|
imap: { host: "imap.mail.me.com", port: 993, tls: true, auth: "password" },
|
|
339
345
|
smtp: { host: "smtp.mail.me.com", port: 587, tls: true, auth: "password" },
|
|
346
|
+
spam: "Junk",
|
|
340
347
|
},
|
|
341
348
|
};
|
|
342
349
|
/** Fill in provider defaults for an account based on email domain */
|
|
@@ -372,6 +379,13 @@ function normalizeAccount(acct, globalName) {
|
|
|
372
379
|
relayDomains: acct.relayDomains,
|
|
373
380
|
deliveredToPrefix: acct.deliveredToPrefix,
|
|
374
381
|
identityDomains: acct.identityDomains,
|
|
382
|
+
// Spam folder: explicit account config wins; otherwise fall back to
|
|
383
|
+
// the provider default (e.g. Gmail ships with built-in SPAM; Outlook
|
|
384
|
+
// with "Junk Email"). Before 2026-04-21 this field was dropped by
|
|
385
|
+
// normalizeAccount entirely — silent regression even for accounts
|
|
386
|
+
// that had it configured. `acct.spam` first so a user-set value on
|
|
387
|
+
// a recognized provider still overrides the default.
|
|
388
|
+
spam: acct.spam !== undefined ? acct.spam : provider?.spam,
|
|
375
389
|
};
|
|
376
390
|
}
|
|
377
391
|
// ── Defaults ──
|