Repository navigation
Verify: decode quoted-printable bodies even when their encoding header is hidden - #29
Conversation
…ader is hidden
Proofs that hide the body and reveal a few sentences also hide the MIME part's
Content-Transfer-Encoding header, so the verify page and CLI showed raw QP
("samples=E2=80=94whether iden=" + soft line breaks). Detect QP from the revealed text
too (soft breaks not after '=', =XX escapes that decode to valid UTF-8 between hidden
bytes; never when another encoding is declared) and add a 'Show raw' toggle. Display only:
the proof still covers the encoded bytes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (5)
Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughThe site and CLI now detect quoted-printable content using body evidence when the transfer-encoding header is absent. They retain raw body text, report the evidence source, and let the verification page switch between raw and decoded text. ChangesQuoted-Printable Detection and Display
Priority: ⬇️ Low Estimated code review effort: 3 (Moderate) | ~20 minutes Change: Bug fix Sequence Diagram(s)sequenceDiagram
participant VerifyPage
participant extractMaskedDataFromProof
participant quotedPrintableEvidence
VerifyPage->>extractMaskedDataFromProof: Load proof data
extractMaskedDataFromProof->>quotedPrintableEvidence: Classify masked body
quotedPrintableEvidence-->>extractMaskedDataFromProof: Return evidence
extractMaskedDataFromProof-->>VerifyPage: Return raw and display body data
VerifyPage->>VerifyPage: Toggle raw or decoded text
Merge Risk: ⚪ Minimal · up to The change decodes quoted-printable bodies when the encoding header is hidden, and adds a raw/decoded toggle. I found no concrete merge-blocking risk. Security Architecture ReviewSecurity architecture risk: 🔵 Low · up to The change operates on already-public, masked proof content. Raw text remains available, decoding is disclosed, and proof verification and redaction remain separate from presentation. Residual risk concerns ambiguous encoding detection rather than new access to private data or increased authority. Retained concerns Security review detailsSecurity Blast Radius
Trust Boundaries and Controls
Resilience and Maintainability Implications
Hardening Proposals
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Human intent
A published proof showed text like
customers' samples=E2=80=94whether iden=followed by a line break. The ask: fix how that displays, and fix any proof bug causing it if there is one.Cause: display only, the proof is fine
=E2=80=94is an em dash, and a trailing=is a soft line break).Content-Transfer-Encoding: quoted-printableheader was visible.Fix
quotedPrintableEvidence(maskedBody)in the site and the CLI returns"header" | "content" | null. It now also recognises QP from the revealed text itself:=(base64 padding==at a line end isn't QP), and/or uppercase=XXescapes;=E2=80=+=94);verify: labels the decoded body;--jsonaddsmaskedBodyRawandbodyDecodedFromQp.Evidence
5db31511-…), with the site page in headless Chromium:=XXescapes and 18 soft breaks left;tests/qp.test.ts:=text, a lone=-ended line, non-UTF-8 escapes, or a declared base64 part.vite buildOK.tscshows the same 5 errors as main, in files this PR doesn't touch.🤖 Generated with Claude Code
Summary by CodeRabbit