@bobfrankston/mailx 1.0.3 → 1.0.5

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 +63 -10
  2. package/package.json +3 -13
package/README.md CHANGED
@@ -76,11 +76,12 @@ If `config.json` doesn't exist, settings default to `~/.mailx/settings.jsonc`.
76
76
  "intervalMinutes": 5, // Full sync interval
77
77
  "historyDays": 30 // Days of history (0 = all)
78
78
  },
79
+ // UI preferences
79
80
  "ui": {
80
- "theme": "dark",
81
+ "theme": "system", // "system" (follows OS), "dark", or "light"
81
82
  "folderWidth": 220,
82
83
  "listViewerSplit": 40,
83
- "fontSize": 14
84
+ "fontSize": 15
84
85
  },
85
86
  // Auto-populated when you click "Always allow from sender/domain"
86
87
  "remoteAllowList": {
@@ -139,16 +140,67 @@ If `config.json` doesn't exist, settings default to `~/.mailx/settings.jsonc`.
139
140
  | Escape | Discard / Clear search |
140
141
  | F5 | Sync |
141
142
 
143
+ ## Installation
144
+
145
+ ```bash
146
+ npm install -g @bobfrankston/mailx
147
+ mailx # Starts server + opens browser
148
+ ```
149
+
150
+ Or for development:
151
+ ```bash
152
+ git clone https://github.com/BobFrankston/mailx.git
153
+ cd mailx
154
+ npm install
155
+ npm start # Starts server with --watch (auto-restart on changes)
156
+ ```
157
+
158
+ The native WebView2 app (optional):
159
+ ```bash
160
+ launch.ps1 # Builds and runs the Rust launcher
161
+ launch.ps1 -restart # Kill existing server first
162
+ ```
163
+
142
164
  ## Data Storage
143
165
 
144
- | File | Location | Purpose |
145
- |------|----------|---------|
146
- | config.json | ~/.mailx/ | Points to settings file |
147
- | settings.jsonc | OneDrive or ~/.mailx/ | Accounts, prefs (shared across machines) |
148
- | mailx.db | ~/.mailx/ | SQLite headers, contacts, sync state |
149
- | mailxstore/ | ~/.mailx/ | Cached message bodies (.eml) |
150
- | window.json | ~/.mailx/ | Window position (per machine) |
151
- | mailx.log | project dir | Server log with timestamps |
166
+ All data lives in `~/.mailx/` (e.g., `C:\Users\You\.mailx\`):
167
+
168
+ | File | Shared? | Purpose |
169
+ |------|---------|---------|
170
+ | config.json | No | Points to shared settings dir + local overrides |
171
+ | accounts.jsonc | Yes | IMAP/SMTP account configs |
172
+ | preferences.jsonc | Yes | UI, sync, font settings |
173
+ | allowlist.jsonc | Yes | Remote content sender/domain allow-list |
174
+ | settings.jsonc | Yes | Legacy combined settings (still supported) |
175
+ | mailx.db | No | SQLite — headers, contacts, sync state |
176
+ | mailxstore/ | No | Cached message bodies (.eml per message) |
177
+ | window.json | No | Window position (per machine) |
178
+ | mailx-YYYY-MM-DD.log | No | Server log (auto-deleted after 7 days) |
179
+
180
+ **Shared** files can live on OneDrive/Dropbox — `config.json` points to the shared directory. **Local** files stay on the machine.
181
+
182
+ ### Safe to Delete
183
+
184
+ - **mailxstore/** — cached bodies, re-downloaded automatically during sync or on demand. Delete to reclaim space or reset the cache.
185
+ - **mailx.db** — re-created on next startup, triggers full re-sync of all messages within the history window.
186
+ - **mailx-*.log** — auto-cleaned after 7 days. Safe to delete anytime.
187
+ - **window.json** — resets window position to default 1280×800.
188
+
189
+ ### config.json
190
+
191
+ ```json
192
+ {
193
+ "sharedDir": "C:/Users/You/OneDrive/home/.mailx",
194
+ "storePath": "C:/Users/You/.mailx/mailxstore",
195
+ "historyDays": 90
196
+ }
197
+ ```
198
+
199
+ - **sharedDir** — directory containing shared settings files (accounts, preferences, allowlist)
200
+ - **storePath** — where cached .eml files are stored
201
+ - **historyDays** — per-machine override for sync history (shared default is 30)
202
+
203
+ If `config.json` doesn't exist, all settings default to `~/.mailx/`.
152
204
 
153
205
  ## Architecture
154
206
 
@@ -158,3 +210,4 @@ If `config.json` doesn't exist, settings default to `~/.mailx/settings.jsonc`.
158
210
  - **Outbox** — queued in IMAP Outbox folder with multi-machine interlock via flags
159
211
  - **Remote content blocking** — HTML sanitized server-side, CSP in iframe, per-sender/domain allow-list
160
212
  - **Search** — SQLite FTS5 full-text index with qualifiers
213
+ - **Unified mode** — `mailx` command runs server in-process (no separate server). Use `--server` for standalone server mode.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bobfrankston/mailx",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "Local-first email client with IMAP sync and standalone native app",
5
5
  "type": "module",
6
6
  "main": "bin/mailx.js",
@@ -23,13 +23,8 @@
23
23
  "@bobfrankston/miscinfo": "^1.0.5",
24
24
  "@bobfrankston/oauthsupport": "^1.0.10",
25
25
  "@bobfrankston/certsupport": "^1.0.35",
26
- "better-sqlite3": "^11.0.0",
27
- "express": "^4.21.0",
28
- "jsonc-parser": "^3.3.1",
29
26
  "mailparser": "^3.7.2",
30
- "nodemailer": "^7.0.0",
31
- "quill": "^2.0.3",
32
- "ws": "^8.18.0"
27
+ "quill": "^2.0.3"
33
28
  },
34
29
  "devDependencies": {
35
30
  "@types/mailparser": "^3.4.6"
@@ -52,12 +47,7 @@
52
47
  "@bobfrankston/miscinfo": "file:../../projects/npm/miscinfo",
53
48
  "@bobfrankston/oauthsupport": "file:../../projects/oauth/oauthsupport",
54
49
  "@bobfrankston/certsupport": "file:../../projects/nodejs/certsupport",
55
- "better-sqlite3": "^11.0.0",
56
- "express": "^4.21.0",
57
- "jsonc-parser": "^3.3.1",
58
50
  "mailparser": "^3.7.2",
59
- "nodemailer": "^7.0.0",
60
- "quill": "^2.0.3",
61
- "ws": "^8.18.0"
51
+ "quill": "^2.0.3"
62
52
  }
63
53
  }