Commit Graph
440 Commits
Author SHA1 Message Date
rustmailer 7dee5a7874 bump to v1.6.2 1.6.2 2026-07-08 23:55:05 +08:00
rustmailer 166ac21549 feat: add tag display and editing to email view 2026-07-08 00:30:20 +08:00
rustmailer 524201c26d docs(openapi): update attachment download param to content_hash #314 2026-07-06 09:46:29 +08:00
rustmailerandGitHub ef954e255e Merge pull request #312 from 8times4/feat/proxy-provider-expansion
feat: expand proxy provider support
2026-07-01 00:53:19 +08:00
8times4 24fcca70a5 expand proxy provider support 2026-06-30 14:59:08 +02:00
rustmailer 2da42134d0 feat: Improve account setup UI and add post-download email filtering 2026-06-30 09:42:03 +08:00
rustmailer 5fe45795b9 bump to 1.6.1 1.6.1 2026-06-28 11:39:58 +08:00
rustmailer 4996dac1ea Update folder-hint.ts 2026-06-28 11:39:44 +08:00
rustmailer 42ce36a439 feat: add searchable account selector with alphabetical sort in user dialog #289 2026-06-28 11:35:39 +08:00
rustmailer 40ae2d49d4 feat: web upload supports PST, configurable MBOX/PST size limits
- Make MBOX/PST upload size limits configurable via SETTINGS
    (bichon_web_mbox_upload_limit_mb defaults to 1 GB,
     bichon_web_pst_upload_limit_mb defaults to 2 GB)
2026-06-28 09:43:50 +08:00
rustmailer 5034760517 fix: detect previewable attachments by file extension when MIME type is octet-stream #309 2026-06-27 16:08:42 +08:00
rustmailer 875eb2e309 fix:Truncate "To" column recipients in Search tab to prevent excessive row height #308 2026-06-27 13:06:41 +08:00
rustmailer f0d0f202ba bump to 1.6.0 1.6.0 2026-06-26 19:15:46 +08:00
rustmailer 0d37825625 feat: fullscreen attachment gallery with image navigation 2026-06-26 19:13:14 +08:00
rustmailer cfb8172607 fix: sliding token expiry and silent 401 redirect 2026-06-26 18:29:18 +08:00
rustmailer 8641bb4b56 fix: Proxy does not support formats from proxy providers #307 2026-06-26 18:20:19 +08:00
rustmailer cdf27f2dd4 feat: add web upload for EML/MBOX files #260 2026-06-26 17:49:35 +08:00
rustmailer db36272bae feat: add in-browser attachment preview for images, PDFs, and text files #303 2026-06-25 04:51:05 +08:00
rustmailer cad447275f feat: search for an email address simultaneously in to, cc and bcc #304 2026-06-25 02:36:24 +08:00
rustmailer 8542ba0d28 feat: Display Name / Alias for IMAP Accounts #306 2026-06-25 02:00:20 +08:00
rustmailer af089958e9 Update README.md 2026-06-24 23:11:52 +08:00
rustmailer bba1ea5cc7 feat: add per-account FilterRule, ExtractionRules and ArchiveRules with regex validation 2026-06-24 21:46:32 +08:00
rustmailer 9e55026f12 feat: add SSO/OIDC support to user model and settings 2026-06-24 17:32:14 +08:00
rustmailer b0f229618c refactor(blob): add NFS-safe file I/O layer 2026-06-24 00:03:56 +08:00
rustmailer ff59d47a0d fix(blob): fsync meta before rename and hold write_mutex during GC 2026-06-23 23:57:34 +08:00
rustmailer b6957c8ceb test(blob): add concurrent access and crash recovery integration tests 2026-06-23 23:29:48 +08:00
rustmailer cd98c050b6 fix(blob): invalidate FilePool after GC to prevent stale reads 2026-06-23 23:28:33 +08:00
rustmailer 11e40750fe feat(blob): add FilePool read cache and fix BucketCache TOCTOU 2026-06-23 23:23:03 +08:00
rustmailer b0374517e8 fix(blob): address review issues - visibility, unused param 2026-06-23 23:20:24 +08:00
rustmailer 4e12ae5457 refactor(blob): replace global RwLock with per-account Arc<AccountHandle> 2026-06-23 23:13:39 +08:00
rustmailer 495c91b7ae fix(blob): address code review issues - CRC guard, tests, clone 2026-06-23 23:10:15 +08:00
rustmailer e442db4a2d feat(blob): replace JSON metadata with bincode + CRC32 binary format 2026-06-23 23:01:32 +08:00
rustmailer cc54063669 chore(blob): add bincode dependency and new meta error variants 2026-06-23 22:55:13 +08:00
rustmailer 04745458bc feat(blob): add embedded KV storage engine for email archiving 2026-06-23 21:38:31 +08:00
rustmailer 6fcc9e0e8e bump to v1.5.3 1.5.3 2026-06-23 17:18:46 +08:00
rustmailer 220aa268c1 feat(imap): handle UIDVALIDITY changes via Message-ID comparison instead of full rebuild 2026-06-23 10:46:36 +08:00
rustmailer e3fd9d2f29 fix: purge DedupCache entries on account/mailbox/envelope removal 2026-06-22 17:11:20 +08:00
rustmailer 41c3b84e65 feat(ui): persist account table sorting to localStorage 2026-06-21 12:50:21 +08:00
rustmailer 89557700ae Merge branch 'main' of https://github.com/rustmailer/bichon 2026-06-11 09:23:00 +08:00
rustmailer 2f5de48c6a fix(smtp): reject journaling attempts to non-local accounts 2026-06-11 09:22:57 +08:00
rustmailerandGitHub debb119d3d Merge pull request #298 from shadowdao/fix/smtp-inbox-uidvalidity-clobber-297
fix(smtp): don't clobber the IMAP-owned INBOX uid_validity on journal ingest (#297)
2026-06-11 09:10:01 +08:00
JoshandClaude Opus 4.8 ce3f8944a3 fix(smtp): don't clobber the IMAP-owned INBOX uid_validity on journal ingest
When SMTP journaling ingests a message, parse_email() upserts the account's
INBOX MailBox row so the journaled envelope has a row to attach to. But it
built the row with uid_validity/highest_uid/uid_next = None and called
batch_upsert, which replaces the WHOLE row. The INBOX row id
(create_hash(account_id, "INBOX")) is the same id the IMAP sync maintains,
so every journaled delivery reset the IMAP-maintained uid_validity to None.

On the next reconcile, local_mailbox.uid_validity != Some(remote) is then
true, so the mailbox is treated as invalid and wiped + rebuilt. For a large,
UID-sparse INBOX whose rebuild gets interrupted, the local copy is silently
lost and never restored (the incremental fetch resumes past all existing
UIDs). See #297 for the full diagnosis and DB evidence.

Fix: only create the INBOX row when it does not already exist; otherwise
leave the IMAP-owned row untouched. The journaling path only needs the row
to exist so the envelope can attach to it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 11:36:38 -07:00
rustmailer 6f572b15ae deps: upgrade fjall to 3.1.5 to address NFS Bad file descriptor error #216 #242 #239 #231 #240 1.5.2 2026-06-09 01:33:17 +08:00
rustmailer 3bfc080258 bump to 1.5.1 1.5.1 2026-06-07 18:21:07 +08:00
rustmailer c3a725770c fix: reconnect and retry IMAP batch on BrokenPipe/network errors 2026-06-07 18:18:37 +08:00
rustmailer c736afffb0 fix: account deletion times out #291 2026-06-07 15:34:38 +08:00
rustmailerandGitHub 62cb5264fd Add funding.json for project funding details 2026-06-06 15:56:47 +08:00
rustmailer aebb94ee4e fix: preserve non-stored search fields when updating envelope tags
update_envelope_tags lost f_body, f_from_text, f_to_text, f_cc_text,
  f_bcc_text, f_attachment_name_text and f_attachment_name_exact because
  they are not STORED and field_values() skipped them during delete+add.
  Rebuild these from stored counterparts and the blob-store EML.
2026-06-05 09:13:25 +08:00
rustmailer 769630f9d7 Merge branch 'main' of https://github.com/rustmailer/bichon 1.5.0 2026-06-04 23:46:28 +08:00
rustmailer 368b18c45f bump to v1.5.0 2026-06-04 23:46:25 +08:00