@bobfrankston/mailx 1.0.466 → 1.0.500

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 (344) hide show
  1. package/.globalize.json5 +25 -0
  2. package/README.md +17 -420
  3. package/bin/mailx.js +87 -84
  4. package/bin/mailx.js.map +1 -1
  5. package/bin/mailx.ts +87 -84
  6. package/client/android.html +5 -5
  7. package/client/app.js +42 -38
  8. package/client/components/folder-tree.js +7 -5
  9. package/client/components/message-list.js +485 -448
  10. package/client/components/message-viewer.js +36 -41
  11. package/client/index.html +8 -8
  12. package/client/lib/message-state.js +46 -65
  13. package/index.js +59 -0
  14. package/package.json +12 -114
  15. package/packages/mailx-send/mailsend/{package-lock.json → node_modules/.package-lock.json} +0 -16
  16. package/packages/mailx-send/mailsend/node_modules/@types/node/LICENSE +21 -0
  17. package/packages/mailx-send/mailsend/node_modules/@types/node/README.md +15 -0
  18. package/packages/mailx-send/mailsend/node_modules/@types/node/assert/strict.d.ts +111 -0
  19. package/packages/mailx-send/mailsend/node_modules/@types/node/assert.d.ts +1078 -0
  20. package/packages/mailx-send/mailsend/node_modules/@types/node/async_hooks.d.ts +603 -0
  21. package/packages/mailx-send/mailsend/node_modules/@types/node/buffer.buffer.d.ts +472 -0
  22. package/packages/mailx-send/mailsend/node_modules/@types/node/buffer.d.ts +1934 -0
  23. package/packages/mailx-send/mailsend/node_modules/@types/node/child_process.d.ts +1476 -0
  24. package/packages/mailx-send/mailsend/node_modules/@types/node/cluster.d.ts +578 -0
  25. package/packages/mailx-send/mailsend/node_modules/@types/node/compatibility/disposable.d.ts +14 -0
  26. package/packages/mailx-send/mailsend/node_modules/@types/node/compatibility/index.d.ts +9 -0
  27. package/packages/mailx-send/mailsend/node_modules/@types/node/compatibility/indexable.d.ts +20 -0
  28. package/packages/mailx-send/mailsend/node_modules/@types/node/compatibility/iterators.d.ts +20 -0
  29. package/packages/mailx-send/mailsend/node_modules/@types/node/console.d.ts +452 -0
  30. package/packages/mailx-send/mailsend/node_modules/@types/node/constants.d.ts +21 -0
  31. package/packages/mailx-send/mailsend/node_modules/@types/node/crypto.d.ts +4545 -0
  32. package/packages/mailx-send/mailsend/node_modules/@types/node/dgram.d.ts +600 -0
  33. package/packages/mailx-send/mailsend/node_modules/@types/node/diagnostics_channel.d.ts +578 -0
  34. package/packages/mailx-send/mailsend/node_modules/@types/node/dns/promises.d.ts +503 -0
  35. package/packages/mailx-send/mailsend/node_modules/@types/node/dns.d.ts +923 -0
  36. package/packages/mailx-send/mailsend/node_modules/@types/node/domain.d.ts +170 -0
  37. package/packages/mailx-send/mailsend/node_modules/@types/node/events.d.ts +976 -0
  38. package/packages/mailx-send/mailsend/node_modules/@types/node/fs/promises.d.ts +1295 -0
  39. package/packages/mailx-send/mailsend/node_modules/@types/node/fs.d.ts +4461 -0
  40. package/packages/mailx-send/mailsend/node_modules/@types/node/globals.d.ts +172 -0
  41. package/packages/mailx-send/mailsend/node_modules/@types/node/globals.typedarray.d.ts +38 -0
  42. package/packages/mailx-send/mailsend/node_modules/@types/node/http.d.ts +2089 -0
  43. package/packages/mailx-send/mailsend/node_modules/@types/node/http2.d.ts +2644 -0
  44. package/packages/mailx-send/mailsend/node_modules/@types/node/https.d.ts +579 -0
  45. package/packages/mailx-send/mailsend/node_modules/@types/node/index.d.ts +97 -0
  46. package/packages/mailx-send/mailsend/node_modules/@types/node/inspector.d.ts +253 -0
  47. package/packages/mailx-send/mailsend/node_modules/@types/node/inspector.generated.d.ts +4052 -0
  48. package/packages/mailx-send/mailsend/node_modules/@types/node/module.d.ts +891 -0
  49. package/packages/mailx-send/mailsend/node_modules/@types/node/net.d.ts +1057 -0
  50. package/packages/mailx-send/mailsend/node_modules/@types/node/os.d.ts +506 -0
  51. package/packages/mailx-send/mailsend/node_modules/@types/node/package.json +145 -0
  52. package/packages/mailx-send/mailsend/node_modules/@types/node/path.d.ts +200 -0
  53. package/packages/mailx-send/mailsend/node_modules/@types/node/perf_hooks.d.ts +968 -0
  54. package/packages/mailx-send/mailsend/node_modules/@types/node/process.d.ts +2084 -0
  55. package/packages/mailx-send/mailsend/node_modules/@types/node/punycode.d.ts +117 -0
  56. package/packages/mailx-send/mailsend/node_modules/@types/node/querystring.d.ts +152 -0
  57. package/packages/mailx-send/mailsend/node_modules/@types/node/readline/promises.d.ts +161 -0
  58. package/packages/mailx-send/mailsend/node_modules/@types/node/readline.d.ts +594 -0
  59. package/packages/mailx-send/mailsend/node_modules/@types/node/repl.d.ts +428 -0
  60. package/packages/mailx-send/mailsend/node_modules/@types/node/sea.d.ts +153 -0
  61. package/packages/mailx-send/mailsend/node_modules/@types/node/sqlite.d.ts +721 -0
  62. package/packages/mailx-send/mailsend/node_modules/@types/node/stream/consumers.d.ts +38 -0
  63. package/packages/mailx-send/mailsend/node_modules/@types/node/stream/promises.d.ts +90 -0
  64. package/packages/mailx-send/mailsend/node_modules/@types/node/stream/web.d.ts +622 -0
  65. package/packages/mailx-send/mailsend/node_modules/@types/node/stream.d.ts +1664 -0
  66. package/packages/mailx-send/mailsend/node_modules/@types/node/string_decoder.d.ts +67 -0
  67. package/packages/mailx-send/mailsend/node_modules/@types/node/test.d.ts +2163 -0
  68. package/packages/mailx-send/mailsend/node_modules/@types/node/timers/promises.d.ts +108 -0
  69. package/packages/mailx-send/mailsend/node_modules/@types/node/timers.d.ts +287 -0
  70. package/packages/mailx-send/mailsend/node_modules/@types/node/tls.d.ts +1319 -0
  71. package/packages/mailx-send/mailsend/node_modules/@types/node/trace_events.d.ts +197 -0
  72. package/packages/mailx-send/mailsend/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +468 -0
  73. package/packages/mailx-send/mailsend/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +34 -0
  74. package/packages/mailx-send/mailsend/node_modules/@types/node/ts5.6/index.d.ts +97 -0
  75. package/packages/mailx-send/mailsend/node_modules/@types/node/tty.d.ts +208 -0
  76. package/packages/mailx-send/mailsend/node_modules/@types/node/url.d.ts +984 -0
  77. package/packages/mailx-send/mailsend/node_modules/@types/node/util.d.ts +2606 -0
  78. package/packages/mailx-send/mailsend/node_modules/@types/node/v8.d.ts +920 -0
  79. package/packages/mailx-send/mailsend/node_modules/@types/node/vm.d.ts +1000 -0
  80. package/packages/mailx-send/mailsend/node_modules/@types/node/wasi.d.ts +181 -0
  81. package/packages/mailx-send/mailsend/node_modules/@types/node/web-globals/abortcontroller.d.ts +34 -0
  82. package/packages/mailx-send/mailsend/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
  83. package/packages/mailx-send/mailsend/node_modules/@types/node/web-globals/events.d.ts +97 -0
  84. package/packages/mailx-send/mailsend/node_modules/@types/node/web-globals/fetch.d.ts +55 -0
  85. package/packages/mailx-send/mailsend/node_modules/@types/node/web-globals/navigator.d.ts +22 -0
  86. package/packages/mailx-send/mailsend/node_modules/@types/node/web-globals/storage.d.ts +24 -0
  87. package/packages/mailx-send/mailsend/node_modules/@types/node/worker_threads.d.ts +784 -0
  88. package/packages/mailx-send/mailsend/node_modules/@types/node/zlib.d.ts +747 -0
  89. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/LICENSE +21 -0
  90. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/README.md +15 -0
  91. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/index.d.ts +82 -0
  92. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/addressparser/index.d.ts +31 -0
  93. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/base64/index.d.ts +22 -0
  94. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/dkim/index.d.ts +45 -0
  95. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/dkim/message-parser.d.ts +75 -0
  96. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/dkim/relaxed-body.d.ts +75 -0
  97. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/dkim/sign.d.ts +21 -0
  98. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/fetch/cookies.d.ts +54 -0
  99. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/fetch/index.d.ts +38 -0
  100. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/json-transport/index.d.ts +53 -0
  101. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/mail-composer/index.d.ts +25 -0
  102. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/mailer/index.d.ts +283 -0
  103. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/mailer/mail-message.d.ts +32 -0
  104. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/mime-funcs/index.d.ts +87 -0
  105. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/mime-funcs/mime-types.d.ts +2 -0
  106. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/mime-node/index.d.ts +224 -0
  107. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/mime-node/last-newline.d.ts +9 -0
  108. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/qp/index.d.ts +23 -0
  109. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/sendmail-transport/index.d.ts +53 -0
  110. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/sendmail-transport/le-unix.d.ts +7 -0
  111. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/sendmail-transport/le-windows.d.ts +7 -0
  112. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/ses-transport/index.d.ts +146 -0
  113. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/shared/index.d.ts +58 -0
  114. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/smtp-connection/data-stream.d.ts +11 -0
  115. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/smtp-connection/http-proxy-client.d.ts +16 -0
  116. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/smtp-connection/index.d.ts +270 -0
  117. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/smtp-pool/index.d.ts +93 -0
  118. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/smtp-pool/pool-resource.d.ts +66 -0
  119. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/smtp-transport/index.d.ts +115 -0
  120. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/stream-transport/index.d.ts +59 -0
  121. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/well-known/index.d.ts +6 -0
  122. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/xoauth2/index.d.ts +114 -0
  123. package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/package.json +38 -0
  124. package/packages/mailx-send/mailsend/node_modules/nodemailer/.ncurc.js +9 -0
  125. package/packages/mailx-send/mailsend/node_modules/nodemailer/.prettierignore +8 -0
  126. package/packages/mailx-send/mailsend/node_modules/nodemailer/.prettierrc +12 -0
  127. package/packages/mailx-send/mailsend/node_modules/nodemailer/.prettierrc.js +10 -0
  128. package/packages/mailx-send/mailsend/node_modules/nodemailer/.release-please-config.json +9 -0
  129. package/packages/mailx-send/mailsend/node_modules/nodemailer/LICENSE +16 -0
  130. package/packages/mailx-send/mailsend/node_modules/nodemailer/README.md +86 -0
  131. package/packages/mailx-send/mailsend/node_modules/nodemailer/SECURITY.txt +22 -0
  132. package/packages/mailx-send/mailsend/node_modules/nodemailer/eslint.config.js +88 -0
  133. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/addressparser/index.js +383 -0
  134. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/base64/index.js +139 -0
  135. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/dkim/index.js +253 -0
  136. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/dkim/message-parser.js +155 -0
  137. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/dkim/relaxed-body.js +154 -0
  138. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/dkim/sign.js +117 -0
  139. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/fetch/cookies.js +281 -0
  140. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/fetch/index.js +280 -0
  141. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/json-transport/index.js +82 -0
  142. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/mail-composer/index.js +629 -0
  143. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/mailer/index.js +441 -0
  144. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/mailer/mail-message.js +316 -0
  145. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/mime-funcs/index.js +625 -0
  146. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/mime-funcs/mime-types.js +2113 -0
  147. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/mime-node/index.js +1316 -0
  148. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/mime-node/last-newline.js +33 -0
  149. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/mime-node/le-unix.js +43 -0
  150. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/mime-node/le-windows.js +52 -0
  151. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/nodemailer.js +157 -0
  152. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/punycode/index.js +460 -0
  153. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/qp/index.js +227 -0
  154. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/sendmail-transport/index.js +210 -0
  155. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/ses-transport/index.js +234 -0
  156. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/shared/index.js +754 -0
  157. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/smtp-connection/data-stream.js +108 -0
  158. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/smtp-connection/http-proxy-client.js +143 -0
  159. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/smtp-connection/index.js +1870 -0
  160. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/smtp-pool/index.js +652 -0
  161. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/smtp-pool/pool-resource.js +259 -0
  162. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/smtp-transport/index.js +421 -0
  163. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/stream-transport/index.js +135 -0
  164. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/well-known/index.js +47 -0
  165. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/well-known/services.json +611 -0
  166. package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/xoauth2/index.js +427 -0
  167. package/packages/mailx-send/mailsend/node_modules/nodemailer/package.json +47 -0
  168. package/packages/mailx-send/mailsend/node_modules/undici-types/LICENSE +21 -0
  169. package/packages/mailx-send/mailsend/node_modules/undici-types/README.md +6 -0
  170. package/packages/mailx-send/mailsend/node_modules/undici-types/agent.d.ts +31 -0
  171. package/packages/mailx-send/mailsend/node_modules/undici-types/api.d.ts +43 -0
  172. package/packages/mailx-send/mailsend/node_modules/undici-types/balanced-pool.d.ts +29 -0
  173. package/packages/mailx-send/mailsend/node_modules/undici-types/cache.d.ts +36 -0
  174. package/packages/mailx-send/mailsend/node_modules/undici-types/client.d.ts +108 -0
  175. package/packages/mailx-send/mailsend/node_modules/undici-types/connector.d.ts +34 -0
  176. package/packages/mailx-send/mailsend/node_modules/undici-types/content-type.d.ts +21 -0
  177. package/packages/mailx-send/mailsend/node_modules/undici-types/cookies.d.ts +28 -0
  178. package/packages/mailx-send/mailsend/node_modules/undici-types/diagnostics-channel.d.ts +66 -0
  179. package/packages/mailx-send/mailsend/node_modules/undici-types/dispatcher.d.ts +256 -0
  180. package/packages/mailx-send/mailsend/node_modules/undici-types/env-http-proxy-agent.d.ts +21 -0
  181. package/packages/mailx-send/mailsend/node_modules/undici-types/errors.d.ts +149 -0
  182. package/packages/mailx-send/mailsend/node_modules/undici-types/eventsource.d.ts +61 -0
  183. package/packages/mailx-send/mailsend/node_modules/undici-types/fetch.d.ts +209 -0
  184. package/packages/mailx-send/mailsend/node_modules/undici-types/file.d.ts +39 -0
  185. package/packages/mailx-send/mailsend/node_modules/undici-types/filereader.d.ts +54 -0
  186. package/packages/mailx-send/mailsend/node_modules/undici-types/formdata.d.ts +108 -0
  187. package/packages/mailx-send/mailsend/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  188. package/packages/mailx-send/mailsend/node_modules/undici-types/global-origin.d.ts +7 -0
  189. package/packages/mailx-send/mailsend/node_modules/undici-types/handlers.d.ts +15 -0
  190. package/packages/mailx-send/mailsend/node_modules/undici-types/header.d.ts +4 -0
  191. package/packages/mailx-send/mailsend/node_modules/undici-types/index.d.ts +71 -0
  192. package/packages/mailx-send/mailsend/node_modules/undici-types/interceptors.d.ts +17 -0
  193. package/packages/mailx-send/mailsend/node_modules/undici-types/mock-agent.d.ts +50 -0
  194. package/packages/mailx-send/mailsend/node_modules/undici-types/mock-client.d.ts +25 -0
  195. package/packages/mailx-send/mailsend/node_modules/undici-types/mock-errors.d.ts +12 -0
  196. package/packages/mailx-send/mailsend/node_modules/undici-types/mock-interceptor.d.ts +93 -0
  197. package/packages/mailx-send/mailsend/node_modules/undici-types/mock-pool.d.ts +25 -0
  198. package/packages/mailx-send/mailsend/node_modules/undici-types/package.json +55 -0
  199. package/packages/mailx-send/mailsend/node_modules/undici-types/patch.d.ts +33 -0
  200. package/packages/mailx-send/mailsend/node_modules/undici-types/pool-stats.d.ts +19 -0
  201. package/packages/mailx-send/mailsend/node_modules/undici-types/pool.d.ts +39 -0
  202. package/packages/mailx-send/mailsend/node_modules/undici-types/proxy-agent.d.ts +28 -0
  203. package/packages/mailx-send/mailsend/node_modules/undici-types/readable.d.ts +65 -0
  204. package/packages/mailx-send/mailsend/node_modules/undici-types/retry-agent.d.ts +8 -0
  205. package/packages/mailx-send/mailsend/node_modules/undici-types/retry-handler.d.ts +116 -0
  206. package/packages/mailx-send/mailsend/node_modules/undici-types/util.d.ts +18 -0
  207. package/packages/mailx-send/mailsend/node_modules/undici-types/webidl.d.ts +228 -0
  208. package/packages/mailx-send/mailsend/node_modules/undici-types/websocket.d.ts +150 -0
  209. package/packages/mailx-server/index.js +1 -1
  210. package/packages/mailx-settings/cloud.js +12 -7
  211. package/packages/mailx-settings/index.js +22 -1
  212. package/client/.gitattributes +0 -10
  213. package/client/app.js.map +0 -1
  214. package/client/app.ts +0 -3190
  215. package/client/components/address-book.js.map +0 -1
  216. package/client/components/address-book.ts +0 -204
  217. package/client/components/alarms.js.map +0 -1
  218. package/client/components/alarms.ts +0 -276
  219. package/client/components/calendar-sidebar.js.map +0 -1
  220. package/client/components/calendar-sidebar.ts +0 -474
  221. package/client/components/calendar.js.map +0 -1
  222. package/client/components/calendar.ts +0 -211
  223. package/client/components/context-menu.js.map +0 -1
  224. package/client/components/context-menu.ts +0 -95
  225. package/client/components/folder-picker.js.map +0 -1
  226. package/client/components/folder-picker.ts +0 -127
  227. package/client/components/folder-tree.js.map +0 -1
  228. package/client/components/folder-tree.ts +0 -1069
  229. package/client/components/message-list.js.map +0 -1
  230. package/client/components/message-list.ts +0 -1129
  231. package/client/components/message-viewer.js.map +0 -1
  232. package/client/components/message-viewer.ts +0 -1257
  233. package/client/components/outbox-view.js.map +0 -1
  234. package/client/components/outbox-view.ts +0 -102
  235. package/client/components/tasks.js.map +0 -1
  236. package/client/components/tasks.ts +0 -234
  237. package/client/compose/compose.js.map +0 -1
  238. package/client/compose/compose.ts +0 -1231
  239. package/client/compose/editor.js.map +0 -1
  240. package/client/compose/editor.ts +0 -599
  241. package/client/compose/ghost-text.js.map +0 -1
  242. package/client/compose/ghost-text.ts +0 -140
  243. package/client/lib/android-bootstrap.js.map +0 -1
  244. package/client/lib/android-bootstrap.ts +0 -9
  245. package/client/lib/api-client.js.map +0 -1
  246. package/client/lib/api-client.ts +0 -439
  247. package/client/lib/local-service.js.map +0 -1
  248. package/client/lib/local-service.ts +0 -646
  249. package/client/lib/local-store.js.map +0 -1
  250. package/client/lib/local-store.ts +0 -283
  251. package/client/lib/message-state.js.map +0 -1
  252. package/client/lib/message-state.ts +0 -160
  253. package/client/tsconfig.json +0 -19
  254. package/packages/mailx-api/.gitattributes +0 -10
  255. package/packages/mailx-api/index.d.ts.map +0 -1
  256. package/packages/mailx-api/index.js.map +0 -1
  257. package/packages/mailx-api/index.ts +0 -283
  258. package/packages/mailx-api/tsconfig.json +0 -9
  259. package/packages/mailx-compose/.gitattributes +0 -10
  260. package/packages/mailx-compose/index.d.ts.map +0 -1
  261. package/packages/mailx-compose/index.js.map +0 -1
  262. package/packages/mailx-compose/index.ts +0 -85
  263. package/packages/mailx-compose/tsconfig.json +0 -9
  264. package/packages/mailx-host/.gitattributes +0 -10
  265. package/packages/mailx-host/index.d.ts +0 -21
  266. package/packages/mailx-host/index.d.ts.map +0 -1
  267. package/packages/mailx-host/index.js +0 -29
  268. package/packages/mailx-host/index.js.map +0 -1
  269. package/packages/mailx-host/index.ts +0 -38
  270. package/packages/mailx-host/package.json +0 -23
  271. package/packages/mailx-host/tsconfig.json +0 -9
  272. package/packages/mailx-host/types-shim.d.ts +0 -14
  273. package/packages/mailx-imap/.gitattributes +0 -10
  274. package/packages/mailx-imap/index.d.ts +0 -442
  275. package/packages/mailx-imap/index.d.ts.map +0 -1
  276. package/packages/mailx-imap/index.js +0 -3684
  277. package/packages/mailx-imap/index.js.map +0 -1
  278. package/packages/mailx-imap/index.ts +0 -3652
  279. package/packages/mailx-imap/package-lock.json +0 -131
  280. package/packages/mailx-imap/package.json +0 -28
  281. package/packages/mailx-imap/providers/gmail-api.d.ts +0 -8
  282. package/packages/mailx-imap/providers/gmail-api.d.ts.map +0 -1
  283. package/packages/mailx-imap/providers/gmail-api.js +0 -8
  284. package/packages/mailx-imap/providers/gmail-api.js.map +0 -1
  285. package/packages/mailx-imap/providers/gmail-api.ts +0 -8
  286. package/packages/mailx-imap/providers/outlook-api.ts +0 -7
  287. package/packages/mailx-imap/providers/types.d.ts +0 -9
  288. package/packages/mailx-imap/providers/types.d.ts.map +0 -1
  289. package/packages/mailx-imap/providers/types.js +0 -9
  290. package/packages/mailx-imap/providers/types.js.map +0 -1
  291. package/packages/mailx-imap/providers/types.ts +0 -9
  292. package/packages/mailx-imap/tsconfig.json +0 -9
  293. package/packages/mailx-imap/tsconfig.tsbuildinfo +0 -1
  294. package/packages/mailx-send/.gitattributes +0 -10
  295. package/packages/mailx-send/cli-queue.d.ts.map +0 -1
  296. package/packages/mailx-send/cli-queue.js.map +0 -1
  297. package/packages/mailx-send/cli-queue.ts +0 -62
  298. package/packages/mailx-send/cli-send.d.ts.map +0 -1
  299. package/packages/mailx-send/cli-send.js.map +0 -1
  300. package/packages/mailx-send/cli-send.ts +0 -83
  301. package/packages/mailx-send/cli.d.ts.map +0 -1
  302. package/packages/mailx-send/cli.js.map +0 -1
  303. package/packages/mailx-send/cli.ts +0 -126
  304. package/packages/mailx-send/index.d.ts.map +0 -1
  305. package/packages/mailx-send/index.js.map +0 -1
  306. package/packages/mailx-send/index.ts +0 -333
  307. package/packages/mailx-send/mailsend/cli.d.ts.map +0 -1
  308. package/packages/mailx-send/mailsend/cli.js.map +0 -1
  309. package/packages/mailx-send/mailsend/cli.ts +0 -81
  310. package/packages/mailx-send/mailsend/index.d.ts.map +0 -1
  311. package/packages/mailx-send/mailsend/index.js.map +0 -1
  312. package/packages/mailx-send/mailsend/index.ts +0 -333
  313. package/packages/mailx-send/mailsend/tsconfig.json +0 -21
  314. package/packages/mailx-send/package-lock.json +0 -65
  315. package/packages/mailx-send/tsconfig.json +0 -21
  316. package/packages/mailx-server/.gitattributes +0 -10
  317. package/packages/mailx-server/index.d.ts.map +0 -1
  318. package/packages/mailx-server/index.js.map +0 -1
  319. package/packages/mailx-server/index.ts +0 -429
  320. package/packages/mailx-server/tsconfig.json +0 -9
  321. package/packages/mailx-settings/.gitattributes +0 -10
  322. package/packages/mailx-settings/cloud.d.ts.map +0 -1
  323. package/packages/mailx-settings/cloud.js.map +0 -1
  324. package/packages/mailx-settings/cloud.ts +0 -388
  325. package/packages/mailx-settings/index.d.ts.map +0 -1
  326. package/packages/mailx-settings/index.js.map +0 -1
  327. package/packages/mailx-settings/index.ts +0 -892
  328. package/packages/mailx-settings/tsconfig.json +0 -9
  329. package/packages/mailx-store/.gitattributes +0 -10
  330. package/packages/mailx-store/db.d.ts.map +0 -1
  331. package/packages/mailx-store/db.js.map +0 -1
  332. package/packages/mailx-store/db.ts +0 -2007
  333. package/packages/mailx-store/file-store.d.ts.map +0 -1
  334. package/packages/mailx-store/file-store.js.map +0 -1
  335. package/packages/mailx-store/file-store.ts +0 -82
  336. package/packages/mailx-store/index.d.ts.map +0 -1
  337. package/packages/mailx-store/index.js.map +0 -1
  338. package/packages/mailx-store/index.ts +0 -7
  339. package/packages/mailx-store/tsconfig.json +0 -9
  340. package/packages/mailx-types/.gitattributes +0 -10
  341. package/packages/mailx-types/index.d.ts.map +0 -1
  342. package/packages/mailx-types/index.js.map +0 -1
  343. package/packages/mailx-types/index.ts +0 -498
  344. package/packages/mailx-types/tsconfig.json +0 -9
@@ -0,0 +1,25 @@
1
+ {
2
+ // npmglobalize configuration (JSON5 format - trailing commas OK)
3
+ // Explicitly set values are preserved here
4
+
5
+ "install": true, // Auto-install globally after publish (from registry)
6
+ "npmVisibility": "public", // private (default) or public
7
+
8
+ // Defaults (omitted above):
9
+ // "bump": "patch" // Version bump: patch, minor, major
10
+ // "install": false // Auto-install globally after publish (from registry)
11
+ // "link": false // Install globally via symlink (npm install -g .)
12
+ // "wsl": false // Also install in WSL
13
+ // "files": true // Keep file: paths after publish
14
+ // "force": false // Continue despite git errors
15
+ // "quiet": true // Suppress npm warnings
16
+ // "verbose": false // Show detailed output
17
+ // "gitVisibility": "private" // Git repo: private or public
18
+ // "npmVisibility": "private" // npm package: private or public
19
+ // "fix": false // Auto-run npm audit fix
20
+ // "local": false // Local install only (skip transform/publish)
21
+ // "noPublish": false // Transform but don't publish
22
+ // "freeze": false // Freeze node_modules (replace symlinks with real copies)
23
+ // "usePaths": true // Resolve file: deps from siblings; false = use latest npm version (standalone)
24
+ // "allowTs": false // Include .ts source in npm tarball (auto-true for noEmit projects)
25
+ }
package/README.md CHANGED
@@ -1,429 +1,26 @@
1
- # mailx -- Email Client
1
+ # @bobfrankston/mailx DEPRECATED
2
2
 
3
- A local-first email client with IMAP sync, full offline reading, and a standalone native app. Replaces Thunderbird/Outlook.
3
+ This package has been renamed to **`@bobfrankston/rmfmail`**.
4
4
 
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
-
7
- MIT License -- Copyright (c) 2026 Bob Frankston
8
-
9
- ## Installation
10
-
11
- ```bash
12
- npm install -g @bobfrankston/mailx
13
- mailx
14
- ```
15
-
16
- Requires Node.js 22 or later.
17
-
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`.
21
-
22
- ## First-Time Setup
23
-
24
- On first run, mailx shows a setup form. Enter your name and email address.
25
-
26
- ### Gmail / Google Workspace
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.
29
-
30
- ### Outlook / Hotmail / Live
31
-
32
- No password needed. OAuth2 sign-in opens in your browser.
33
-
34
- ### Yahoo
35
-
36
- Use an **app password** (not your regular password):
37
- 1. Go to **Yahoo Account Settings** > **Account Security**
38
- 2. Click **Generate app password**
39
- 3. Paste the generated password into mailx
40
-
41
- ### AOL
42
-
43
- Use an **app password**:
44
- 1. Go to **AOL Account Settings** > **Account Security**
45
- 2. Click **Generate app password**
46
- 3. Paste the generated password into mailx
47
-
48
- ### iCloud
49
-
50
- Use an **app-specific password**:
51
- 1. Go to [appleid.apple.com](https://appleid.apple.com) > **Sign-In and Security**
52
- 2. Click **App-Specific Passwords** > **Generate**
53
- 3. Paste the generated password into mailx
54
-
55
- ### Other Providers (Dovecot, Fastmail, etc.)
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).
58
-
59
- ### Adding Accounts via File
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.).
62
-
63
- **Step 1.** Create a file (e.g., `my-accounts.jsonc`) with your account(s):
64
-
65
- ```jsonc
66
- {
67
- "accounts": [
68
- {
69
- "email": "you@example.com",
70
- "name": "Your Name",
71
- "label": "Work", // Display name in folder tree
72
- "imap": {
73
- "host": "imap.example.com", // IMAP server hostname
74
- "port": 993, // 993 for TLS (default)
75
- "tls": true,
76
- "user": "you@example.com", // IMAP username (default: email)
77
- "password": "your-password"
78
- },
79
- "smtp": {
80
- "host": "smtp.example.com", // SMTP server hostname
81
- "port": 587, // 587 for STARTTLS (default)
82
- "tls": true,
83
- "user": "you@example.com",
84
- "password": "your-password"
85
- }
86
- }
87
- ]
88
- }
89
- ```
90
-
91
- For known providers, most fields are optional:
92
-
93
- ```jsonc
94
- {
95
- "accounts": [
96
- { "email": "you@gmail.com", "name": "Your Name" },
97
- { "email": "you@yahoo.com", "name": "Your Name", "password": "app-password-here" },
98
- {
99
- "email": "you@yourserver.com",
100
- "name": "Your Name",
101
- "label": "Personal",
102
- "imap": { "host": "imap.yourserver.com", "user": "you", "password": "pass" },
103
- "smtp": { "host": "smtp.yourserver.com", "user": "you", "password": "pass" }
104
- }
105
- ]
106
- }
107
- ```
108
-
109
- **Step 2.** Import into mailx:
110
-
111
- ```bash
112
- mailx --import my-accounts.jsonc
113
- ```
114
-
115
- This merges the accounts into your Google Drive settings (deduplicates by email address). Existing accounts are preserved.
116
-
117
- ### Gmail OAuth Prerequisites
118
-
119
- Gmail OAuth requires a one-time Google Cloud setup:
120
- 1. Go to [Google Cloud Console](https://console.cloud.google.com/) and create a project
121
- 2. Enable the **Gmail API** (and **People API** for contacts)
122
- 3. Create **OAuth 2.0 credentials** (Desktop app type)
123
- 4. Download `credentials.json` to the iflow package directory
124
- 5. First connection opens a browser for consent. Tokens refresh automatically.
125
-
126
- ## Usage
127
-
128
- ### Layout
129
-
130
- A vertical **icon rail** sits on the far left (Thunderbird / Dovecot style) with one-click access to Compose, Inbox, All Inboxes, and Settings; Calendar / Tasks / Contacts slots are placeholders until those features land. The rail is always visible on wide and medium screens; it folds into the hamburger menu on narrow ones.
131
-
132
- ### Reading Mail
133
-
134
- - Click a **folder** to see its messages
135
- - Click a **message** to read it in the preview pane
136
- - **All Inboxes** combines inboxes from all accounts (appears with 2+ accounts)
137
- - A small filled teal dot before the date means the message body is downloaded locally (offline-ready); a hollow circle means not yet prefetched. Prefetch runs as a background task every ~60 s independent of folder sync.
138
- - Unread counts show on folders; sub-folder counts bubble up to collapsed parents
139
- - Use the **folder search** box to find folders by name
140
-
141
- ### Composing
142
-
143
- - **Ctrl+N** -- New message
144
- - **Ctrl+R** -- Reply
145
- - **Ctrl+Shift+R** -- Reply All
146
- - **Ctrl+F** -- Forward
147
- - From dropdown lets you pick which account to send from; reply auto-detects which identity to reply from based on which of your addresses the mail was sent to
148
- - Contact autocomplete searches Google Contacts as you type in To/Cc/Bcc
149
- - **Cc / Bcc** are hidden by default — click the toggle buttons next to To to show them
150
- - **Attach** opens a file picker; attachments show as chips with remove buttons
151
- - Drafts auto-save 1.5s after you stop typing, plus a 5s safety-net interval, plus on window close
152
- - Compose window close asks Save / Discard / Cancel if there's content
153
- - Address validation (`local@domain.tld`) runs on To/Cc/Bcc/From before sending — invalid addresses are refused
154
- - **Editor shortcuts**: Ctrl+K insert link, Ctrl+Shift+K remove link, Ctrl+Shift+X strikethrough, Ctrl+Shift+7/8 ordered/bullet list, Ctrl+]/[ indent/outdent, Ctrl+Shift+C color, Ctrl+\ clear formatting. Native spell-check via WebView2 (right-click to add to dictionary).
155
- - **Link editor modal**: Ctrl+K opens a two-field dialog (text + URL) with Remove-link button; hovering any link in the editor shows a floating URL preview
156
- - **Paste URL** auto-links: paste a bare URL over a selection and it wraps it, or paste into empty space to insert as a link
157
-
158
- ### Managing Messages
159
-
160
- - **Delete** or **Ctrl+D** -- Delete selected messages (moves to Trash; second delete in Trash is a hard delete + EXPUNGE)
161
- - **Ctrl+Z** -- Undo the last **delete or move** (whichever came last, 60s window)
162
- - **Ctrl+A** -- Select all messages in the list
163
- - **Drag and drop** -- Move messages to a folder by dragging them
164
- - **Right-click a message → Move to folder…** -- Searchable folder picker; useful on narrow layouts where the folder tree is hidden
165
- - Click the **star** column to flag/unflag a message
166
- - **Unsubscribe** button appears when the message has a List-Unsubscribe header. One-click (RFC 8058) when the sender advertises `List-Unsubscribe-Post: List-Unsubscribe=One-Click`; otherwise opens the URL or a pre-filled compose for `mailto:` lists.
167
- - **Right-click on a From/To/Cc address** -- Copy name, Copy address, Copy both, Add to contacts, or Reply/Reply All/Forward
168
- - **Right-click in the message body → Translate** (opt-in) -- Uses the configured AI provider; select text first to translate just the selection. Off by default; enable under **Settings → AI translate**.
169
- - **Preview pane zoom** -- Ctrl+wheel, Ctrl+= / Ctrl+- / Ctrl+0, or right-click menu (Zoom in/out/reset, Copy, Select all). Persisted across messages.
170
- - **Cross-folder search results** show the folder name for each hit
171
- - **Empty Trash / Empty Junk** -- Right-click the folder in the tree → Empty (confirmation prompt)
172
-
173
- ### Searching
174
-
175
- Type in the search bar and press **Enter**. Use the dropdown to search:
176
- - **All folders** -- Every account and folder
177
- - **This folder** -- Current folder only (filters as you type, server search on Enter)
178
- - **IMAP server** -- Server-side search (useful for messages older than your sync window)
179
-
180
- Supports regex: wrap pattern in `/slashes/`.
181
-
182
- ### Folder Operations
183
-
184
- Right-click a folder for options:
185
- - Mark all read
186
- - New subfolder
187
- - Rename / Delete folder
188
- - Empty (Trash and Junk only)
189
-
190
- ### View Options
191
-
192
- Under **View** in the toolbar:
193
- - **Two-line view** -- Show preview snippet below each subject
194
- - **Preview pane** -- Toggle the message reader panel
195
- - **Preview snippets** -- Show snippet text in message rows
196
- - **Flagged only** -- Show only starred messages
197
- - **Folder counts** -- Show total message counts on all folders
198
-
199
- ### Settings
200
-
201
- Under **Settings** in the toolbar:
202
- - **Editor** -- Choose between Quill (default) and tiptap for compose
203
- - **AI autocomplete** -- Enable LLM-powered writing suggestions (Ollama, Claude, or OpenAI)
204
- - **AI translate** -- Enable the right-click Translate item in the message viewer (off by default; uses the same provider as autocomplete)
205
- - **AI proofread** -- Enable the proofread path (off by default; provider method available, UI wiring in progress)
206
-
207
- All AI features are opt-in. Provider + API key live in the autocomplete settings; toggling a feature only controls whether that specific capability calls out to the provider.
208
-
209
- ### Keyboard Shortcuts
210
-
211
- | Key | Action |
212
- |-----|--------|
213
- | Ctrl+N | New message |
214
- | Ctrl+R | Reply |
215
- | Ctrl+Shift+R | Reply All |
216
- | Ctrl+F | Forward |
217
- | Delete / Ctrl+D | Delete |
218
- | Ctrl+Z | Undo last delete or move |
219
- | Ctrl+A | Select all |
220
- | F5 | Sync all folders |
221
- | Escape | Clear search / close menus |
222
-
223
- **In the compose editor:**
224
-
225
- | Key | Action |
226
- |-----|--------|
227
- | Ctrl+K | Insert / edit link (opens dialog with text + URL fields) |
228
- | Ctrl+Shift+K | Remove link |
229
- | Ctrl+B / Ctrl+I / Ctrl+U | Bold / Italic / Underline |
230
- | Ctrl+Shift+X | Strikethrough |
231
- | Ctrl+Shift+7 / 8 | Ordered / Bullet list |
232
- | Ctrl+] / Ctrl+[ | Indent / Outdent |
233
- | Ctrl+Shift+C | Set text color |
234
- | Ctrl+\ | Clear formatting |
235
- | Ctrl+Enter | Send |
236
- | Escape | Close (prompts Save / Discard / Cancel) |
237
-
238
- **In the preview pane:**
239
-
240
- | Key | Action |
241
- |-----|--------|
242
- | Ctrl+wheel | Zoom in/out |
243
- | Ctrl+= / Ctrl+- | Zoom in / out |
244
- | Ctrl+0 | Reset zoom |
245
- | Delete | Delete message (also works with focus in preview) |
246
-
247
- ## Command Line
5
+ ## Migrate
248
6
 
249
7
  ```
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
8
+ npm install -g @bobfrankston/rmfmail
9
+ npm uninstall -g @bobfrankston/mailx
10
+ rmfmail
263
11
  ```
264
12
 
265
- ### -repair vs -rebuild
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.
268
-
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
-
271
- ## Configuration
272
-
273
- All config files live in `~/.mailx/` (on Windows: `C:\Users\You\.mailx\`).
274
-
275
- ### config.jsonc (per-machine, not synced)
276
-
277
- Points to shared settings and controls local behavior. Created automatically for Gmail accounts.
278
-
279
- ```jsonc
280
- {
281
- "sharedDir": { "provider": "gdrive", "path": "mailx", "folderId": "..." },
282
- "storePath": "C:/Users/You/.mailx/mailxstore",
283
- "historyDays": 90,
284
- "accountOverrides": {
285
- "work": { "historyDays": 7 },
286
- "archive": { "enabled": false }
287
- }
288
- }
289
- ```
290
-
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
294
-
295
- ### accounts.jsonc (shared via Google Drive or local)
296
-
297
- For known providers, only `email` is required -- IMAP/SMTP settings fill automatically.
298
-
299
- ```jsonc
300
- {
301
- "accounts": [
302
- { "email": "you@gmail.com", "name": "Your Name" },
303
- { "email": "you@icloud.com", "name": "Your Name", "password": "xxxx-xxxx-xxxx-xxxx" },
304
- {
305
- "email": "you@example.com",
306
- "name": "Your Name",
307
- "label": "Work",
308
- "spam": "_spam", // Optional: enables the ⚠ Spam button in the viewer toolbar
309
- "imap": { "host": "imap.example.com", "port": 993, "tls": true, "user": "you", "password": "..." },
310
- "smtp": { "host": "smtp.example.com", "port": 587, "tls": true, "user": "you", "password": "..." }
311
- }
312
- ]
313
- }
314
- ```
315
-
316
- **Optional per-account fields:**
317
-
318
- | Field | Type | Purpose |
319
- |-------|------|---------|
320
- | `spam` | string | IMAP folder path to send messages when the **Spam** (⚠) button is pressed. The button is hidden until this is set. Use the exact folder path on the server (e.g., `"_spam"`, `"INBOX/Spam"`, `"[Gmail]/Spam"`). |
321
- | `label` | string | Display name in the folder tree (overrides auto-detected). |
322
- | `defaultSend` | bool | Use this account's SMTP when From doesn't match any account. |
323
- | `relayDomains` | string[] | Domains to skip in Delivered-To chain (e.g., `["m.connectivity.xyz"]`). |
324
- | `deliveredToPrefix` | string[] | Strip these prefixes from Delivered-To to recover the clean alias (e.g., `["bobf-ma-", "bobf-"]` — order matters, longest first). |
325
- | `identityDomains` | string[] | Domains where Delivered-To becomes the reply From (e.g., `["bob.ma"]`). |
326
-
327
- **Auto-detected providers:**
328
-
329
- | Domain | IMAP | SMTP | Auth | Label |
330
- |--------|------|------|------|-------|
331
- | gmail.com | imap.gmail.com:993 | smtp.gmail.com:587 | OAuth2 | Gmail |
332
- | outlook.com, hotmail.com | outlook.office365.com:993 | smtp.office365.com:587 | OAuth2 | Outlook |
333
- | yahoo.com | imap.mail.yahoo.com:993 | smtp.mail.yahoo.com:587 | App password | Yahoo |
334
- | aol.com | imap.aol.com:993 | smtp.aol.com:587 | App password | AOL |
335
- | icloud.com | imap.mail.me.com:993 | smtp.mail.me.com:587 | App password | iCloud |
336
-
337
- Google Workspace and Microsoft 365 custom domains are detected automatically via MX records.
338
-
339
- ### preferences.jsonc (shared)
340
-
341
- ```jsonc
342
- {
343
- "ui": { "theme": "dark", "editor": "quill", "fontSize": 15 },
344
- "sync": { "intervalMinutes": 5, "historyDays": 30 },
345
- "autocomplete": {
346
- "enabled": false,
347
- "provider": "ollama",
348
- "ollamaUrl": "http://localhost:11434",
349
- "ollamaModel": "qwen2.5-coder:1.5b"
350
- }
351
- }
352
- ```
353
-
354
- ### allowlist.jsonc (shared)
355
-
356
- Remote content (images, tracking pixels) is blocked by default. Whitelist trusted senders:
357
-
358
- ```jsonc
359
- {
360
- "senders": ["boss@example.com"],
361
- "domains": ["example.com"],
362
- "recipients": ["team@our-group.com"]
363
- }
364
- ```
365
-
366
- ### Multi-Machine Setup
367
-
368
- Settings sync via Google Drive API. Each machine has its own `config.jsonc`:
369
-
370
- **Desktop** (full history):
371
- ```jsonc
372
- { "sharedDir": { "provider": "gdrive", "path": "mailx" }, "historyDays": 0 }
373
- ```
374
-
375
- **Laptop** (recent only):
376
- ```jsonc
377
- { "sharedDir": { "provider": "gdrive", "path": "mailx" }, "historyDays": 30,
378
- "accountOverrides": { "archive": { "enabled": false } } }
379
- ```
380
-
381
- Both machines share accounts, preferences, and allowlist via Google Drive.
382
-
383
- ## Data Storage
384
-
385
- | Path | Synced? | Purpose |
386
- |------|---------|---------|
387
- | config.jsonc | No | Local config pointer + overrides |
388
- | accounts.jsonc | Yes | IMAP/SMTP account configs |
389
- | preferences.jsonc | Yes | UI and sync settings |
390
- | allowlist.jsonc | Yes | Remote content allow-list |
391
- | mailx.db | No | SQLite metadata (headers, contacts, sync state) |
392
- | mailxstore/ | No | Cached message bodies (.eml per message) |
393
- | logs/ | No | Daily log files |
394
-
395
- **Safe to delete:** mailxstore/ (re-downloaded on sync), mailx.db (re-created on startup), logs/ (anytime).
396
-
397
- ## Logs
398
-
399
- Daily log files: `~/.mailx/logs/mailx-YYYY-MM-DD.log`
400
-
401
- Use `mailx --verbose` to see logs in the terminal instead.
402
-
403
- ## Troubleshooting
404
-
405
- **Blank window or no response** -- Run `mailx -kill` then `mailx` to restart.
406
-
407
- **OAuth timeout** -- If the browser auth window doesn't appear or times out (5 minutes), close mailx and try again.
408
-
409
- **Garbled subjects** -- Run `mailx -repair` to re-sync metadata from IMAP.
410
-
411
- **Sync stuck or corrupt data** -- Run `mailx -rebuild` for a clean start. Accounts and settings are preserved.
412
-
413
- **"Too many connections"** -- mailx uses up to 5 IMAP connections per account. Close other email clients if you hit your server's limit.
13
+ `@bobfrankston/rmfmail` is declared as a dependency of this stub, so
14
+ installing this stub pulls the new package along too — run the
15
+ uninstall after the install to drop the deprecation marker.
414
16
 
415
- **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.
17
+ ## Why the rename
416
18
 
417
- ## Architecture
19
+ The old name collided with Linux's BSD `mailx` (`/usr/bin/mailx`,
20
+ the traditional `mail` command alias) every time the client launched
21
+ in WSL or on a Linux box. The new name `rmfmail` is unique — no
22
+ system-tool collision.
418
23
 
419
- - **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`.
421
- - **HTTP fallback** -- `--server` flag starts Express for browser/remote access.
422
- - **Local-first** -- Changes update local DB immediately; background worker syncs to IMAP.
423
- - **Offline reading** -- Full message bodies cached as .eml files.
424
- - **IMAP IDLE** -- Instant new-mail notifications + periodic sync fallback.
425
- - **Outbox** -- Queued in IMAP Outbox folder with multi-machine interlock via flags.
426
- - **Remote content blocking** -- HTML sanitized server-side, CSP in iframe, per-sender allow-list.
427
- - **Search** -- SQLite FTS5 full-text index + IMAP server search + regex filtering.
428
- - **Connection management** -- Semaphore limits 5 connections per account; exponential backoff on server limits.
429
- - **Cloud sync** -- Google Drive API for settings portability (no filesystem mount required).
24
+ See [the active package](https://www.npmjs.com/package/@bobfrankston/rmfmail)
25
+ for everything else: features, install, configuration, IMAP/SMTP setup,
26
+ Android APK download.