@bobfrankston/rmfmail 1.0.474 → 1.0.475

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 (2) hide show
  1. package/README.md +46 -44
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,31 +1,31 @@
1
- # mailx -- Email Client
1
+ # rmfmail -- Email Client
2
2
 
3
3
  A local-first email client with IMAP sync, full offline reading, and a standalone native app. Replaces Thunderbird/Outlook.
4
4
 
5
5
  > **Disclaimer:** This is a personal project written for my own use. I provide it as-is with no promises of support, stability, or fitness for any particular purpose. Use at your own risk.
6
6
 
7
+ > **Renamed from `@bobfrankston/mailx`** (2026-05). The old name collided with Linux's BSD `mailx` (`/usr/bin/mailx`) every launch in WSL or on a Linux box. If you have the old package, run `npm install -g @bobfrankston/rmfmail && npm uninstall -g @bobfrankston/mailx`. The old `~/.mailx/` config directory is auto-migrated to `~/.rmfmail/` on first start.
8
+
7
9
  MIT License -- Copyright (c) 2026 Bob Frankston
8
10
 
9
11
  ## Installation
10
12
 
11
13
  ```bash
12
- npm install -g @bobfrankston/mailx
13
- mailx
14
+ npm install -g @bobfrankston/rmfmail
15
+ rmfmail
14
16
  ```
15
17
 
16
18
  Requires Node.js 22 or later.
17
19
 
18
- The package installs two equivalent commands: **`mailx`** and **`bobmail`**. They're the same binary `bobmail` is provided as an alternative for environments where `mailx` collides with another tool (most commonly the BSD `mailx`/Heirloom mailx at `/usr/bin/mailx` on macOS and some Linux distributions). Use whichever name doesn't conflict on your system.
19
-
20
- On Windows, the native WebView2 app launches automatically via IPC (no HTTP server needed). Use `mailx --server` for browser mode at `http://127.0.0.1:9333`.
20
+ On Windows, the native WebView2 app launches automatically via IPC (no HTTP server needed). Use `rmfmail --server` for browser mode at `http://127.0.0.1:9333`.
21
21
 
22
22
  ## First-Time Setup
23
23
 
24
- On first run, mailx shows a setup form. Enter your name and email address.
24
+ On first run, rmfmail shows a setup form. Enter your name and email address.
25
25
 
26
26
  ### Gmail / Google Workspace
27
27
 
28
- No password needed. mailx detects Gmail via MX records, opens a browser for OAuth2 sign-in, and auto-configures Google Drive for settings sync. Custom domains hosted on Google Workspace are detected automatically.
28
+ No password needed. rmfmail detects Gmail via MX records, opens a browser for OAuth2 sign-in, and auto-configures Google Drive for settings sync. Custom domains hosted on Google Workspace are detected automatically.
29
29
 
30
30
  ### Outlook / Hotmail / Live
31
31
 
@@ -36,29 +36,29 @@ No password needed. OAuth2 sign-in opens in your browser.
36
36
  Use an **app password** (not your regular password):
37
37
  1. Go to **Yahoo Account Settings** > **Account Security**
38
38
  2. Click **Generate app password**
39
- 3. Paste the generated password into mailx
39
+ 3. Paste the generated password into rmfmail
40
40
 
41
41
  ### AOL
42
42
 
43
43
  Use an **app password**:
44
44
  1. Go to **AOL Account Settings** > **Account Security**
45
45
  2. Click **Generate app password**
46
- 3. Paste the generated password into mailx
46
+ 3. Paste the generated password into rmfmail
47
47
 
48
48
  ### iCloud
49
49
 
50
50
  Use an **app-specific password**:
51
51
  1. Go to [appleid.apple.com](https://appleid.apple.com) > **Sign-In and Security**
52
52
  2. Click **App-Specific Passwords** > **Generate**
53
- 3. Paste the generated password into mailx
53
+ 3. Paste the generated password into rmfmail
54
54
 
55
55
  ### Other Providers (Dovecot, Fastmail, etc.)
56
56
 
57
- Enter your IMAP password. mailx auto-detects server settings via MX records and DNS. If detection fails, use **Manual setup (advanced)** in the setup form, or create an accounts file and import it (see below).
57
+ Enter your IMAP password. rmfmail auto-detects server settings via MX records and DNS. If detection fails, use **Manual setup (advanced)** in the setup form, or create an accounts file and import it (see below).
58
58
 
59
59
  ### Adding Accounts via File
60
60
 
61
- You can create an `accounts.jsonc` file and import it into mailx. This is useful for adding accounts that aren't easily configured through the setup form (custom IMAP servers, non-standard ports, etc.).
61
+ You can create an `accounts.jsonc` file and import it into rmfmail. This is useful for adding accounts that aren't easily configured through the setup form (custom IMAP servers, non-standard ports, etc.).
62
62
 
63
63
  **Step 1.** Create a file (e.g., `my-accounts.jsonc`) with your account(s):
64
64
 
@@ -106,10 +106,10 @@ For known providers, most fields are optional:
106
106
  }
107
107
  ```
108
108
 
109
- **Step 2.** Import into mailx:
109
+ **Step 2.** Import into rmfmail:
110
110
 
111
111
  ```bash
112
- mailx --import my-accounts.jsonc
112
+ rmfmail --import my-accounts.jsonc
113
113
  ```
114
114
 
115
115
  This merges the accounts into your Google Drive settings (deduplicates by email address). Existing accounts are preserved.
@@ -247,30 +247,30 @@ All AI features are opt-in. Provider + API key live in the autocomplete settings
247
247
  ## Command Line
248
248
 
249
249
  ```
250
- mailx Start the app (native window via IPC)
251
- mailx --email <addr> First-time setup with this email (skips prompt)
252
- mailx --verbose Show log output in terminal (default: log file only)
253
- mailx --import <file> Import accounts.jsonc into Google Drive
254
- mailx --server Start HTTP server for dev/remote (http://localhost:9333)
255
-
256
- mailx -kill Kill running mailx processes + clean up WAL files
257
- mailx -repair Re-sync message metadata (fix garbled subjects)
258
- mailx -rebuild Wipe local cache and re-download everything from IMAP
259
- mailx -setup Interactive first-time setup (CLI)
260
- mailx -test Test IMAP/SMTP connectivity for all accounts
261
- mailx -reauth Clear cached OAuth tokens; next start re-consents
262
- mailx -v Show version
250
+ rmfmail Start the app (native window via IPC)
251
+ rmfmail --email <addr> First-time setup with this email (skips prompt)
252
+ rmfmail --verbose Show log output in terminal (default: log file only)
253
+ rmfmail --import <file> Import accounts.jsonc into Google Drive
254
+ rmfmail --server Start HTTP server for dev/remote (http://localhost:9333)
255
+
256
+ rmfmail -kill Kill running rmfmail processes + clean up WAL files
257
+ rmfmail -repair Re-sync message metadata (fix garbled subjects)
258
+ rmfmail -rebuild Wipe local cache and re-download everything from IMAP
259
+ rmfmail -setup Interactive first-time setup (CLI)
260
+ rmfmail -test Test IMAP/SMTP connectivity for all accounts
261
+ rmfmail -reauth Clear cached OAuth tokens; next start re-consents
262
+ rmfmail -v Show version
263
263
  ```
264
264
 
265
265
  ### -repair vs -rebuild
266
266
 
267
- **-repair** clears message metadata (subjects, flags, sender names) from the database but preserves your downloaded `.eml` message files. Folder sync state resets so mailx re-fetches all envelopes on next run. Use this when subjects show garbled characters.
267
+ **-repair** clears message metadata (subjects, flags, sender names) from the database but preserves your downloaded `.eml` message files. Folder sync state resets so rmfmail re-fetches all envelopes on next run. Use this when subjects show garbled characters.
268
268
 
269
269
  **-rebuild** deletes the entire database and message store, then re-downloads everything from IMAP. Accounts and settings are preserved. Use this for a clean start or to reclaim disk space.
270
270
 
271
271
  ## Configuration
272
272
 
273
- All config files live in `~/.mailx/` (on Windows: `C:\Users\You\.mailx\`).
273
+ All config files live in `~/.rmfmail/` (on Windows: `C:\Users\You\.rmfmail\`). On first start, an existing `~/.mailx/` directory is auto-renamed to `~/.rmfmail/`.
274
274
 
275
275
  ### config.jsonc (per-machine, not synced)
276
276
 
@@ -278,8 +278,8 @@ Points to shared settings and controls local behavior. Created automatically for
278
278
 
279
279
  ```jsonc
280
280
  {
281
- "sharedDir": { "provider": "gdrive", "path": "mailx", "folderId": "..." },
282
- "storePath": "C:/Users/You/.mailx/mailxstore",
281
+ "sharedDir": { "provider": "gdrive", "path": "rmfmail", "folderId": "..." },
282
+ "storePath": "C:/Users/You/.rmfmail/mailxstore",
283
283
  "historyDays": 90,
284
284
  "accountOverrides": {
285
285
  "work": { "historyDays": 7 },
@@ -289,8 +289,8 @@ Points to shared settings and controls local behavior. Created automatically for
289
289
  ```
290
290
 
291
291
  **sharedDir** can be:
292
- - `{ "provider": "gdrive", "path": "mailx" }` -- Google Drive via API (auto-configured for Gmail)
293
- - `"C:/Users/You/OneDrive/home/.mailx"` -- Local/network path
292
+ - `{ "provider": "gdrive", "path": "rmfmail" }` -- Google Drive via API (auto-configured for Gmail). The legacy folder names `mailx` and `home/.mailx` are also discovered automatically for users migrating from the old name.
293
+ - `"C:/Users/You/OneDrive/home/.rmfmail"` -- Local/network path
294
294
 
295
295
  ### accounts.jsonc (shared via Google Drive or local)
296
296
 
@@ -369,12 +369,12 @@ Settings sync via Google Drive API. Each machine has its own `config.jsonc`:
369
369
 
370
370
  **Desktop** (full history):
371
371
  ```jsonc
372
- { "sharedDir": { "provider": "gdrive", "path": "mailx" }, "historyDays": 0 }
372
+ { "sharedDir": { "provider": "gdrive", "path": "rmfmail" }, "historyDays": 0 }
373
373
  ```
374
374
 
375
375
  **Laptop** (recent only):
376
376
  ```jsonc
377
- { "sharedDir": { "provider": "gdrive", "path": "mailx" }, "historyDays": 30,
377
+ { "sharedDir": { "provider": "gdrive", "path": "rmfmail" }, "historyDays": 30,
378
378
  "accountOverrides": { "archive": { "enabled": false } } }
379
379
  ```
380
380
 
@@ -392,32 +392,34 @@ Both machines share accounts, preferences, and allowlist via Google Drive.
392
392
  | mailxstore/ | No | Cached message bodies (.eml per message) |
393
393
  | logs/ | No | Daily log files |
394
394
 
395
+ Note: the SQLite database file (`mailx.db`) and message-store directory (`mailxstore/`) keep their original filenames inside `~/.rmfmail/` — they're internal to the app and renaming them would break backwards compatibility for no user benefit.
396
+
395
397
  **Safe to delete:** mailxstore/ (re-downloaded on sync), mailx.db (re-created on startup), logs/ (anytime).
396
398
 
397
399
  ## Logs
398
400
 
399
- Daily log files: `~/.mailx/logs/mailx-YYYY-MM-DD.log`
401
+ Daily log files: `~/.rmfmail/logs/mailx-YYYY-MM-DD.log`
400
402
 
401
- Use `mailx --verbose` to see logs in the terminal instead.
403
+ Use `rmfmail --verbose` to see logs in the terminal instead.
402
404
 
403
405
  ## Troubleshooting
404
406
 
405
- **Blank window or no response** -- Run `mailx -kill` then `mailx` to restart.
407
+ **Blank window or no response** -- Run `rmfmail -kill` then `rmfmail` to restart.
406
408
 
407
- **OAuth timeout** -- If the browser auth window doesn't appear or times out (5 minutes), close mailx and try again.
409
+ **OAuth timeout** -- If the browser auth window doesn't appear or times out (5 minutes), close rmfmail and try again.
408
410
 
409
- **Garbled subjects** -- Run `mailx -repair` to re-sync metadata from IMAP.
411
+ **Garbled subjects** -- Run `rmfmail -repair` to re-sync metadata from IMAP.
410
412
 
411
- **Sync stuck or corrupt data** -- Run `mailx -rebuild` for a clean start. Accounts and settings are preserved.
413
+ **Sync stuck or corrupt data** -- Run `rmfmail -rebuild` for a clean start. Accounts and settings are preserved.
412
414
 
413
- **"Too many connections"** -- mailx uses up to 5 IMAP connections per account. Close other email clients if you hit your server's limit.
415
+ **"Too many connections"** -- rmfmail uses up to 5 IMAP connections per account. Close other email clients if you hit your server's limit.
414
416
 
415
417
  **App password rejected (Yahoo/AOL/iCloud)** -- Make sure you're using an app-specific password, not your regular login. Generate a new one from your account security settings.
416
418
 
417
419
  ## Architecture
418
420
 
419
421
  - **IPC-first** -- Default mode uses msger (Rust/WebView2) with bidirectional IPC. No TCP server, no CLOSE_WAIT zombies.
420
- - **Host abstraction** -- mailx talks to the WebView host through `@bobfrankston/mailx-host`, which picks msger (default) or msgview (Electron, planned for Mac and niche Linux) at runtime. Override with `MAILX_HOST=msger|msgview`.
422
+ - **Host abstraction** -- rmfmail talks to the WebView host through `@bobfrankston/mailx-host`, which picks msger (default) or msgview (Electron, planned for Mac and niche Linux) at runtime. Override with `MAILX_HOST=msger|msgview`. Internal package names retain the historical `mailx-*` prefix; only the public package was renamed.
421
423
  - **HTTP fallback** -- `--server` flag starts Express for browser/remote access.
422
424
  - **Local-first** -- Changes update local DB immediately; background worker syncs to IMAP.
423
425
  - **Offline reading** -- Full message bodies cached as .eml files.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bobfrankston/rmfmail",
3
- "version": "1.0.474",
3
+ "version": "1.0.475",
4
4
  "description": "Local-first email client with IMAP sync and standalone native app",
5
5
  "type": "module",
6
6
  "main": "bin/mailx.js",