@bobfrankston/rmfmail 1.2.166 → 1.2.168

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.
Files changed (50) hide show
  1. package/TODO.md +4 -0
  2. package/client/android-bootstrap.bundle.js +23 -4
  3. package/client/android-bootstrap.bundle.js.map +2 -2
  4. package/client/app.bundle.js +45 -0
  5. package/client/app.bundle.js.map +2 -2
  6. package/client/app.js +23 -0
  7. package/client/app.js.map +1 -1
  8. package/client/app.ts +18 -0
  9. package/client/components/folder-tree.js +25 -1
  10. package/client/components/folder-tree.js.map +1 -1
  11. package/client/components/folder-tree.ts +21 -1
  12. package/client/compose/compose.bundle.js +292 -0
  13. package/client/compose/compose.bundle.js.map +4 -4
  14. package/client/compose/compose.js +23 -0
  15. package/client/compose/compose.js.map +1 -1
  16. package/client/compose/compose.ts +20 -0
  17. package/client/compose/harper-lint.js +269 -0
  18. package/client/compose/harper-lint.js.map +1 -0
  19. package/client/compose/harper-lint.ts +265 -0
  20. package/client/index.html +1 -0
  21. package/client/lib/api-client.js +8 -0
  22. package/client/lib/api-client.js.map +1 -1
  23. package/client/lib/api-client.ts +8 -0
  24. package/client/lib/mailxapi.js +6 -0
  25. package/docs/harper-integration.md +120 -0
  26. package/package.json +8 -5
  27. package/packages/mailx-imap/package-lock.json +2 -2
  28. package/packages/mailx-imap/package.json +1 -1
  29. package/packages/mailx-service/index.d.ts +11 -0
  30. package/packages/mailx-service/index.d.ts.map +1 -1
  31. package/packages/mailx-service/index.js +56 -0
  32. package/packages/mailx-service/index.js.map +1 -1
  33. package/packages/mailx-service/index.ts +54 -0
  34. package/packages/mailx-service/jsonrpc.js +2 -0
  35. package/packages/mailx-service/jsonrpc.js.map +1 -1
  36. package/packages/mailx-service/jsonrpc.ts +2 -0
  37. package/packages/mailx-service/package.json +1 -1
  38. package/packages/mailx-settings/docs/harper-integration.md +120 -0
  39. package/packages/mailx-settings/package.json +1 -1
  40. package/packages/mailx-store/package.json +1 -1
  41. package/packages/mailx-store-web/android-bootstrap.d.ts.map +1 -1
  42. package/packages/mailx-store-web/android-bootstrap.js +31 -4
  43. package/packages/mailx-store-web/android-bootstrap.js.map +1 -1
  44. package/packages/mailx-store-web/android-bootstrap.ts +31 -4
  45. package/packages/mailx-store-web/package.json +1 -1
  46. package/packages/mailx-types/mailx-api.d.ts +12 -0
  47. package/packages/mailx-types/mailx-api.d.ts.map +1 -1
  48. package/packages/mailx-types/mailx-api.ts +4 -0
  49. package/packages/mailx-types/package.json +1 -1
  50. /package/packages/mailx-imap/{node_modules.npmglobalize-stash-61300 → node_modules.npmglobalize-stash-72420}/.package-lock.json +0 -0
@@ -3877,6 +3877,60 @@ Resolve relative dates ("tomorrow", "next Friday") against today's date. If no y
3877
3877
  }
3878
3878
  }
3879
3879
 
3880
+ // ── Grammar lint (Harper) ─────────────────────────────────────────
3881
+ // Offline grammar checking via Automattic's Harper (harper.js, WASM in
3882
+ // Node). Runs in the DAEMON so the 18 MB engine never touches the
3883
+ // compose page's load path; the client sends plain-text blocks over IPC
3884
+ // and paints squiggles from the returned spans. Lazy singleton — nothing
3885
+ // loads until the first compose actually lints. Plan: docs/harper-integration.md.
3886
+ private harperInit: Promise<any> | null = null;
3887
+
3888
+ // (wire shape of one lint — shared by both early-return sites)
3889
+ private static readonly EMPTY_LINTS: { start: number; end: number; kind: string; message: string; suggestions: string[] }[] = [];
3890
+
3891
+ async grammarLint(blocks: string[]): Promise<{ blocks: { start: number; end: number; kind: string; message: string; suggestions: string[] }[][] }> {
3892
+ const texts = (Array.isArray(blocks) ? blocks : []).slice(0, 500).map(b => String(b ?? "").slice(0, 20_000));
3893
+ if (texts.every(t => !t.trim())) return { blocks: texts.map(() => MailxService.EMPTY_LINTS) };
3894
+ try {
3895
+ if (!this.harperInit) {
3896
+ this.harperInit = (async () => {
3897
+ const harper = await import("harper.js");
3898
+ const { createRequire } = await import("node:module");
3899
+ const wasmPath = createRequire(import.meta.url)
3900
+ .resolve("harper.js/binary").replace(/binary\.js$/, "harper_wasm_bg.wasm");
3901
+ // data: URI instead of the package's own file:// loader —
3902
+ // harper's Node branch does fs.readFile(new URL(u).pathname),
3903
+ // which mangles Windows drive letters into "Y:\Y:\...".
3904
+ const b64 = fs.readFileSync(wasmPath).toString("base64");
3905
+ const binary = harper.createBinaryModuleFromUrl(`data:application/wasm;base64,${b64}`, "full");
3906
+ const linter = new harper.LocalLinter({ binary });
3907
+ await linter.setup?.();
3908
+ console.log(" [grammar] Harper linter initialized");
3909
+ return linter;
3910
+ })();
3911
+ }
3912
+ const linter = await this.harperInit;
3913
+ const out: { start: number; end: number; kind: string; message: string; suggestions: string[] }[][] = [];
3914
+ for (const t of texts) {
3915
+ if (!t.trim()) { out.push([]); continue; }
3916
+ const lints = await linter.lint(t);
3917
+ out.push(lints.map((l: any) => {
3918
+ const s = l.span();
3919
+ return {
3920
+ start: s.start, end: s.end,
3921
+ kind: l.lint_kind(), message: l.message(),
3922
+ suggestions: l.suggestions().map((x: any) => x.get_replacement_text()),
3923
+ };
3924
+ }));
3925
+ }
3926
+ return { blocks: out };
3927
+ } catch (e: any) {
3928
+ console.error(` [grammar] harper lint failed: ${e?.message || e}`);
3929
+ this.harperInit = null; // failed init shouldn't wedge future calls
3930
+ return { blocks: texts.map(() => MailxService.EMPTY_LINTS) };
3931
+ }
3932
+ }
3933
+
3880
3934
  /** Event extraction via the interface `gcal add -clip` uses — keep the
3881
3935
  * prompt and model IN SYNC with Y:/dev/utils/cardx/gcal/glib/aihelper.ts
3882
3936
  * (EVENT_EXTRACTION_PROMPT / extractEventsFromText). Key sources, in
@@ -338,6 +338,8 @@ async function dispatchAction(svc, action, p) {
338
338
  return await svc.popoutWindow(p.accountId, p.uid, p.folderId, p.subject);
339
339
  case "registerMailto":
340
340
  return await svc.registerMailto();
341
+ case "grammarLint":
342
+ return await svc.grammarLint(p.blocks);
341
343
  case "popoutCompose":
342
344
  return await svc.popoutCompose(p.init);
343
345
  case "consumePopoutComposeInit":
@@ -1 +1 @@
1
- {"version":3,"file":"jsonrpc.js","sourceRoot":"","sources":["jsonrpc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jsonrpc.js","sourceRoot":"","sources":["jsonrpc.ts"],"names":[],"mappings":"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"}
@@ -366,6 +366,8 @@ async function dispatchAction(svc: ServiceLike, action: string, p: Record<string
366
366
  return await svc.popoutWindow(p.accountId, p.uid, p.folderId, p.subject);
367
367
  case "registerMailto":
368
368
  return await svc.registerMailto();
369
+ case "grammarLint":
370
+ return await svc.grammarLint(p.blocks);
369
371
  case "popoutCompose":
370
372
  return await svc.popoutCompose(p.init);
371
373
  case "consumePopoutComposeInit":
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bobfrankston/mailx-service",
3
- "version": "0.1.4",
3
+ "version": "0.1.5",
4
4
  "type": "module",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -0,0 +1,120 @@
1
+ # Harper grammar-check integration
2
+
3
+ Status: **desktop SHIPPED v1.2.168 (2026-07-22); Android deferred.**
4
+ What shipped diverges from the original sketch in one big way: the linter
5
+ runs **in the daemon**, not in the compose page — harper.js works in Node,
6
+ and the 18 MB WASM engine has no business in the page load path. The client
7
+ (`client/compose/harper-lint.ts`) sends plain-text blocks over IPC
8
+ (`grammarLint`), paints dotted-blue squiggle overlays from the returned
9
+ spans, and shows a suggestion popup on squiggle click. One generic
10
+ implementation covers Quill, tiptap, AND TinyMCE (all contenteditable DOM;
11
+ TinyMCE's editable body reached via `nativeEditor.getBody()`, overlay parked
12
+ on the iframe's `<html>` so nothing ever lands inside the editable subtree).
13
+ Settings → "Grammar check (local)", default ON (`ui.grammarCheck` +
14
+ `mailx-grammar-check` localStorage; boot-snapshot carries it to popouts).
15
+ Quoted reply chains (blockquotes) are skipped. Spelling lints are skipped
16
+ (native WebView2 spellcheck owns spelling). Windows note: harper's Node
17
+ loader mangles drive letters (`fs.readFile(new URL(u).pathname)` →
18
+ `Y:\Y:\...`); the daemon sidesteps it by handing the engine a
19
+ `data:application/wasm;base64,` URI.
20
+
21
+ **Remaining — Android** (bridge has no `grammarLint`; the client goes
22
+ silently dark there): host a `LocalLinter` in android-bootstrap, lazy-loaded
23
+ post-boot; ship harper.js dist in the APK assets like sql.js; ArrayBuffer
24
+ instantiate for the file:// wasm fetch. ~+18 MB APK. Also still open:
25
+ per-rule LintConfig, harper user-dictionary merge with userdict.jsonc,
26
+ ignore-this-lint memory.
27
+
28
+ ## What Harper is
29
+
30
+ - Offline, Rust-based grammar checker from Automattic. Apache-2.0, free.
31
+ - Catches grammar, awkward phrasing, capitalization, spelling — the mechanical
32
+ layer above spellcheck, below meaning-level AI rewrite.
33
+ - `harper.js` npm package: ESM wrapping the engine compiled to WASM. Runs
34
+ in-browser (WebView2, Android WebView) and Node. `WorkerLinter` (off-thread,
35
+ preferred) and `LocalLinter`. Lint returns spans + suggestions; suggestions
36
+ are applicable programmatically. Sub-10 ms lint passes; ~1/50th of
37
+ LanguageTool's memory.
38
+ - English only (dialect-aware: US/UK/CA/AU/IN). API flagged "early access /
39
+ not yet stable" — pin the version, expect churn on upgrade.
40
+ - Docs: https://writewithharper.com/docs/harperjs/introduction
41
+
42
+ ## Why it fits rmfmail
43
+
44
+ - Local-first like the app; drafts never leave the machine. No API key, no
45
+ Ollama, no feature gate needed.
46
+ - Matches Bob's standing rule: AI assists with **proofreading, not drafting**
47
+ — and this layer doesn't even need the AI providers.
48
+ - Fills the gap between native WebView2 spellcheck (spelling only) and the
49
+ on-demand AI Proofread (whole-text rewrite, cloud/Ollama): live squiggles
50
+ as you type.
51
+ - Could subsume the bundled nspell + dictionary-en machinery (harper does
52
+ spelling too) — one engine, less code. Fold `userdict.jsonc` into Harper's
53
+ user-dictionary API (it has one — verify shape at build time).
54
+
55
+ ## Architecture sketch
56
+
57
+ One shared module (`client/compose/harper-lint.ts`), per-editor adapters as
58
+ thin as possible:
59
+
60
+ 1. **Linting**: `WorkerLinter` singleton in the compose page. Debounced
61
+ (~500 ms after idle, reuse the draft-checkpoint debounce cadence). Feed it
62
+ PLAIN TEXT extracted per block (paragraph-level granularity keeps lint
63
+ cheap and mapping simple); harper.js documents contenteditable-oriented
64
+ extraction incl. soft breaks.
65
+ 2. **Rendering — prefer the OVERLAY approach over per-editor decorations**:
66
+ absolutely-positioned underline elements computed from `Range.getClientRects()`
67
+ over the editor's DOM, in a pointer-events:none layer above the editor.
68
+ ONE renderer serves Quill, tiptap, AND TinyMCE (TinyMCE = same-origin
69
+ iframe: overlay goes inside its doc, or map rects to the host). Editor
70
+ decorations (Quill formats / tiptap decorations / TinyMCE annotations)
71
+ mutate editor state, fight undo stacks, and need three implementations —
72
+ the overlay touches nothing. Re-paint on scroll/resize/input (cheap:
73
+ rects only for on-screen spans).
74
+ 3. **Span→DOM mapping**: lint per text node / per block so span offsets map
75
+ directly into that node's Range. Avoid whole-document offset arithmetic —
76
+ rich text invalidates global offsets constantly.
77
+ 4. **Suggestions UI**: reuse the msger native context-menu plumbing
78
+ (contextMenuItems + `__msgerContextCommand`) — right-click on a squiggle
79
+ inserts Harper's suggestions above the native spellcheck entries. Applying
80
+ a fix goes through the EDITOR's own API (Quill deleteText/insertText,
81
+ tiptap transaction, TinyMCE `editor.selection` + `insertContent`) so undo
82
+ history stays coherent — apply is the only per-editor code besides text
83
+ extraction.
84
+ 5. **Settings**: View→Settings toggle "Grammar check (Harper, local)" —
85
+ default ON once stable (it's private and cheap); per-rule config later
86
+ (harper has lint-rule toggles).
87
+
88
+ ## Platform notes
89
+
90
+ - **Desktop WebView2 / msger**: WASM served via the msger custom protocol —
91
+ verify `application/wasm` content-type or use `WebAssembly.instantiate`
92
+ with ArrayBuffer (avoid `instantiateStreaming` MIME dependency).
93
+ - **Android WebView**: `file:///android_asset` fetch of .wasm can be finicky —
94
+ same ArrayBuffer fallback; bundle the .wasm as a base64 asset if needed.
95
+ harper.js worker mode inside Android WebView needs a check — fall back to
96
+ `LocalLinter` on the main thread there (lints are ms-scale; acceptable).
97
+ - **Bundling**: esbuild (`bin/build-bundles.mjs`) — mark the .wasm as an
98
+ external asset copied next to the bundle, not inlined, unless base64
99
+ inlining proves simpler for the msger protocol.
100
+
101
+ ## Phasing + estimates (Bob-calibrated, hours not weeks)
102
+
103
+ 1. **P1 — TinyMCE first** (since that's what Bob uses): WorkerLinter + overlay
104
+ renderer + context-menu apply, TinyMCE adapter. ~1 day.
105
+ 2. **P2 — Quill + tiptap adapters** on the same renderer: ~½ day each,
106
+ mostly text-extraction + apply-fix glue.
107
+ 3. **P3 — retire nspell path**, merge userdict.jsonc into Harper dictionary;
108
+ decide whether native WebView2 spellcheck stays on (probably yes — free,
109
+ and its suggestion menu already works) with Harper owning grammar only,
110
+ to avoid double-squiggles on spelling errors: configure Harper with
111
+ spelling lints OFF while native spellcheck is on.
112
+ 4. **P4 — Android**: same bundle; verify WASM load + LocalLinter fallback.
113
+
114
+ ## Open questions for build time
115
+
116
+ - harper.js API stability — re-check docs/changelog before starting
117
+ (https://github.com/Automattic/harper/releases).
118
+ - Does Harper's dialect setting matter for Bob? (Default American English.)
119
+ - Interaction with AI ghost-text autocomplete overlay (both paint over the
120
+ editor — z-order and pointer-events need a look).
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bobfrankston/mailx-settings",
3
- "version": "0.1.38",
3
+ "version": "0.1.40",
4
4
  "type": "module",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bobfrankston/mailx-store",
3
- "version": "0.1.65",
3
+ "version": "0.1.66",
4
4
  "type": "module",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -1 +1 @@
1
- {"version":3,"file":"android-bootstrap.d.ts","sourceRoot":"","sources":["android-bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAizCH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAqMjD;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAIhD"}
1
+ {"version":3,"file":"android-bootstrap.d.ts","sourceRoot":"","sources":["android-bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAizCH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAgOjD;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAIhD"}
@@ -1372,10 +1372,30 @@ export async function initAndroid() {
1372
1372
  // already see and use mail by the time this resolves.
1373
1373
  if (gmailTokenProvider) {
1374
1374
  const tp = gmailTokenProvider;
1375
- (async () => {
1375
+ // Retry loop, not one-shot. On a brand-new install this runs seconds
1376
+ // after the OAuth redirect; the native token fetch can hang or fail
1377
+ // while the exchange is still settling, and the old one-shot then
1378
+ // left the device with ONLY the locally-created account until the
1379
+ // next full app restart (Bob 2026-07-22: "only showing me gmail —
1380
+ // not my other mailboxes"). Each attempt logs breadcrumbs (vlog →
1381
+ // logit) so a silent stall is visible in the server log.
1382
+ const RECONCILE_RETRY_MS = 30_000;
1383
+ const RECONCILE_MAX_TRIES = 5;
1384
+ let reconcileTry = 0;
1385
+ const reconcile = async () => {
1386
+ reconcileTry++;
1376
1387
  setGDriveTokenProvider(tp);
1377
1388
  try {
1378
- console.log("[android] Looking up GDrive .rmfmail folder…");
1389
+ console.log(`[android] Looking up GDrive .rmfmail folder… (try ${reconcileTry}/${RECONCILE_MAX_TRIES})`);
1390
+ vlog(`gdrive-reconcile try ${reconcileTry}: token fetch`);
1391
+ // Watchdog the token fetch — it crosses into native code and has
1392
+ // hung on cold boots; without a timeout the whole reconcile just
1393
+ // vanishes with no log line.
1394
+ await Promise.race([
1395
+ tp(),
1396
+ new Promise((_, rej) => setTimeout(() => rej(new Error("token fetch timed out (20s)")), 20_000)),
1397
+ ]);
1398
+ vlog(`gdrive-reconcile try ${reconcileTry}: folder lookup`);
1379
1399
  const folder = await findGDriveMailxFolder(tp);
1380
1400
  if (!folder) {
1381
1401
  emitEvent({
@@ -1430,13 +1450,20 @@ export async function initAndroid() {
1430
1450
  }
1431
1451
  }
1432
1452
  catch (e) {
1453
+ vlog(`gdrive-reconcile try ${reconcileTry} FAILED: ${e.message}`);
1454
+ if (reconcileTry < RECONCILE_MAX_TRIES) {
1455
+ console.warn(`[android] GDrive reconcile failed (${e.message}) — retrying in ${RECONCILE_RETRY_MS / 1000}s`);
1456
+ setTimeout(() => { void reconcile(); }, RECONCILE_RETRY_MS);
1457
+ return;
1458
+ }
1433
1459
  emitEvent({
1434
1460
  type: "fatal",
1435
1461
  key: "gdrive-access-failed",
1436
- message: `GDrive access failed app cannot start: ${e.message}`,
1462
+ message: `GDrive access failed after ${RECONCILE_MAX_TRIES} attempts: ${e.message}. Mail from this device's local accounts still works; restart the app to retry cloud settings.`,
1437
1463
  });
1438
1464
  }
1439
- })();
1465
+ };
1466
+ void reconcile();
1440
1467
  }
1441
1468
  // Startup contacts load. TWO sources, both wanted:
1442
1469
  // 1. The shared GDrive contacts.jsonc — desktop's full union (everything