# Upstream issues and bugs: status in this fork Tracks the open issues of `LukeSmithxyz/mutt-wizard` (as of 2026-07-26) and the bugs B1 to B19 found while triaging them. Bug IDs and the full triage are in Kris's project notes (`~/src/projects/luke-smith/mutt-wizard-triage.md`). Every fix below has tests in `tests/`; run `tests/run.sh`. ## Bug-category issues (roadmap stage 1 exit) | Issue | Problem | Status | Commit | |---|---|---|---| | #1037 | No notification when mbsync reports a hierarchy delimiter error | Fixed: delimiter parsed (B7), and new mail is notified even when a sync step fails (B11) | 69a67d9, 1811676 | | #1034 | isyncrc not created where isync 1.5 looks | Fixed: `$XDG_CONFIG_HOME/isyncrc` on isync 1.5+ when `~/.mbsyncrc` is absent; mailsync follows the same rule | 531754a, merge 792899e | | #1025 | mailsync evals lines from shell rc files | Fixed: one env file, parsed without eval | ba9cc66 | | #1008 | Newbie problems: `smtp_authenticators`, no scheduler | Fixed: line removed (B8); `mw -t` installs a systemd user timer, launchd agent or cron line | c577740, ba9cc66 | | #1006 | A failed add cannot be retried | Fixed: `-x` always replaces the secret; a failed or interrupted log-on rolls it back | 576ee9b, 0c24716 | | #979 | Gmail fails even with an app password | Fixed: same root cause as #1006 (stale secret), and curl's real error is shown | 576ee9b | | #949 | Forwarding text attachments inlines or loses them | Fixed: `mime_forward = ask-yes` | c577740 | | #896 | Notification D-Bus timeout | Fixed: existing session bus kept, Wayland supported (B12) | 1811676 | | #889 | Folders with subfolders not listed | Fixed: only `\Noselect` folders are dropped (B6) | 69a67d9 | | #994 | `INBOX.Archive` contains the server's hierarchy delimiter | Fixed: delimiter read from LIST and mapped to `/` (B7) | 69a67d9 | | #987 | Outlook sending stuck | Fixed: CSV ports honoured and TLS mode explicit (B1); `smtp_authenticators` removed (B8) | 0a3f98b, c577740 | | #944 | POP times out | Fixed: POP defaults to 995 with implicit TLS (B2, B3) | 0a3f98b | ## Other issues touched | Issue | Status | Commit | |---|---|---| | #1038 | Gmail text corrected: app passwords work with passkeys; OAuth2 not supported yet (roadmap stage 7) | 576ee9b | | #1001 | `"INBOX*"` added to `Patterns`; untested against a live isync 1.5.1 | 69a67d9 | | #954, #995 | OAuth2: `mw -a addr -A xoauth2` runs a token helper (neomutt's `mutt_oauth2.py` or `MW_OAUTH2_CMD`) and writes XOAUTH2 configs for isync, msmtp, curl, neomutt and goimapnotify; see `docs/oauth2.md`. Untested against live Google or Microsoft | round 4 (oauth) | | #955 (PR) | Salvaged: same token-helper idea; mbsync and msmtp configs rendered through the account helpers instead of new template variables; works for `-o`; the helper path and gpg key are not hardcoded; a pre-created token file is not required | round 4 (oauth) | | #1005, #965 | Real curl error and a pass round-trip check before the log-on test | 576ee9b | | #988, #963 | `-A ` pins the SASL mechanism for curl and mbsync (`AUTH=NTLM` for Exchange) | 576ee9b | | #982, #743 | Any case of `Inbox` normalised to `INBOX` | 69a67d9 | | #977 | `MAILSYNC_MUTE` takes a list of accounts | 1811676 | | #916, #1010 | Add warns about a shadowing neomutt rc and a missing `$EDITOR` | 531754a | | #888 | Folder names with spaces parse and stay quoted | 69a67d9 | | #1019 (PR) | Fish completions landed with edits | 8b2acf2, 5e6b544 | | #1015, #927, #966 | Already fixed in master before the fork | none | | #1024 (PR) | Rejected: `-p` is POP, `-P` is the pass prefix, as the README says | none | ## Bugs from the triage | Bug | Status | Commit | |---|---|---| | B1 ports overridden before the CSV lookup | Fixed | 0a3f98b | | B2 POP on 993 | Fixed | 0a3f98b | | B3 mpop STARTTLS on 995 | Fixed | 0a3f98b | | B4 stale secret, no rollback | Fixed | 576ee9b, 0c24716 | | B5 curl hides errors, password on argv, unpinned auth, `--proxy ""` | Fixed | 576ee9b | | B6 `\HasChildren` folders dropped | Fixed | 69a67d9 | | B7 delimiter ignored | Fixed | 69a67d9 | | B8 `smtp_authenticators` | Fixed | c577740 | | B9 gpg-wks macros reference shell variables | Fixed (rewritten, not exercised against a WKS server) | c577740 | | B10 rc-file eval | Fixed | ba9cc66 | | B11 partial sync failure skips notifications | Fixed | 1811676 | | B12 D-Bus and display guessing | Fixed | 1811676 | | B13 maildir ignores `XDG_DATA_HOME` | Fixed | 1811676 | | B14 deleting an account corrupts the next one | Fixed | d067720 | | B15 isync 1.4 gets Master/Slave | Fixed | 531754a | | B16 imapnotify: TLS checks off, appended twice, never deleted | Fixed | 0a3f98b, d067720 | | B17 `pgrep mbsync` matches anyone's process | Fixed: per-user lock | 1811676 | | B18 cron guard signs with the default gpg key | Fixed: uses the store's key, skipped without pass | ba9cc66 | | B19 leading space in `domains.csv` | Fixed | 0a3f98b | Issues not listed here are features or support questions; they belong to later roadmap stages (discovery, secret backends, Proton Bridge, `mw doctor`, OAuth2). ## Later roadmap stages (2026-10-08, rounds 2 and 3) | Stage | Issues and PRs | What landed | Commits | |---|---|---|---| | 2 salvage | #455, #731 (closed PRs) | `MAILSYNC_FOLDERS` notifies about new mail outside INBOX | 9444f4f | | 2 salvage | #972, #1023 (open PRs, reworked) | `MAILSYNC_MUTE_FROM` mutes senders; `MAILSYNC_ACTION` adds a non-blocking Open action | 9444f4f | | 2 salvage | #942 (closed PR, rewritten) | Certificate pinning library `lib/mutt-wizard-pin` and `docs/cert-pinning.md` | 94f8ad1 | | 3 discovery | #309 (Luke's "remove domains list"), #305, #312 | Discovery chain: provider files with local overrides, domain autoconfig, SRV, MX inference for custom domains, opt-in ISPDB, certificate-verified probes; `domains.csv` is now the last provider-file fallback; `docs/discovery.md` | 0d03057, e8da002, 02a4a37, ab51449, 51a4d6f, a2926d5 | | 3 exit | | `tests/t-stage3.sh`: Gmail, Fastmail, Outlook, Proton and a self-hosted domain set up with no lookups beyond the user's own domain | 1e975bb | | 4 secrets | #992, #925 | `lib/mutt-wizard-secret` dispatcher (pass, secret-service, gpg, age, cmd); not yet wired into the templates | 98b0221 | | 5 Proton | #262, #374, #667, #717, #718, #812, #826, #837, #865 | Bridge profile at add time (STARTTLS probe, pinned certificate in mbsync, msmtp, curl and neomutt, All Mail/Folders/Labels excluded, no FCC, longer timeouts, hydroxide fallback); `mw bridge` user service with keyring guard; mailsync skips a down or re-certified Bridge with one notification; `mw repin` | 53a1414, 679e7f4, 643379e, ef8cd56 | | 6 doctor | #984, #990 (support questions) | `mw doctor` checks secret, Bridge, pin, IMAP, SMTP, folders and sync per account | 7445b5e |