fix: audit fixes — silent send failures, caching, safety, cleanup#16
Merged
radiosilence merged 5 commits intomainfrom Mar 26, 2026
Merged
fix: audit fixes — silent send failures, caching, safety, cleanup#16radiosilence merged 5 commits intomainfrom
radiosilence merged 5 commits intomainfrom
Conversation
…p ordering, caching - Check EmailSubmission/set response (fix #1) - Remove unsafe env var manipulation in tests (fix #2) - Replace .unwrap() in Output::print (fix #3) - Cache mailbox list after first fetch (fix #7) - Fix forward_email body extraction HashMap ordering (fix #8) - Commit Cargo.lock, remove from .gitignore (fix #9) - Extract account_id() helper (fix #11) - Rename md5_hash → hash_id (fix #12) - Remove dead_code allow, use Display trait (fix #13) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add `mut` to all callers of methods that now require `&mut self` - Remove unused `sender_display` method and its tests (dead code) - Let cargo fix remove unnecessary mut bindings - Zero warnings, all 31 tests pass Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…reply/forward Shared helper handles: to/cc/bcc address serialization, subject, body, threading headers, method call building, response parsing. Removes ~80 lines of duplicated code across the three compose methods. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Run cargo fmt to fix all formatting diffs - Fix clippy too_many_arguments: bundle params into EmailDraft struct - Fix clippy collapsible_if in carddav parser - Replace hand-rolled XML parsing with roxmltree (fix #5) - Add vCard line folding and quoted-printable decoding (fix #6) - Fix QP decoder to handle multi-byte UTF-8 properly - Add 9 new carddav tests (unfold, QP decode, vCard parsing edge cases) - All 40 tests pass, zero warnings Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add stateless confirmation_token to send/reply/forward mutations (#10) PREVIEW returns hash-based token, CONFIRM/DRAFT require it - Replace hand-rolled XML with roxmltree for CardDAV (#5) - Add vCard line unfolding + quoted-printable decoding (#6) - 9 new carddav tests, all 40 tests pass - Update changelog with all remaining fixes Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Critical and major fixes from code audit (fc-xym):
Batch 1 (done)
EmailSubmission/setresponse — previously email could be created but submission silently failbv.values().next()on HashMap (non-deterministic); now usestext_content()to get correct body part.unwrap()with graceful error handlingunsafe { std::env::set_var/remove_var }blocksRemaining (in progress)
Test plan
cargo checkpassescargo testpassescargo clippyclean🤖 Generated with Claude Code