Repository navigation
Conversation
Generate responsive, sanitized HTML pages from EML filenames, group related messages by reply headers, preserve inline CID images and safe attachment downloads, and document the read-only correspondence workflow. Add regression tests and keep the existing Markdown and PDF hosting intact. Co-authored-by: Codex Web <noreply@openai.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
Add first-class, readable, inline EML correspondence pages to the existing read-only WhyDRS document host, with clean filename-derived public slugs and full conversation-thread views.
This is stacked on the interim Nginx document-hosting changes in #8, rather than targeting main directly. Merge that hosting PR first, then this one.
Reader experience
Board Letter.emlpublishes/board-letter/; nested documents retain directory-based URL prefixes, with deterministic disambiguation for filename collisions.Message-ID,In-Reply-To, andReferencesrender as a chronological, inline conversation, with per-message permalinks, a thread navigator, and a consolidated correspondence index at/_mail/. Sibling replies can still group if the original message is missing.cid:PNG, JPEG, GIF, and WebP images render inline. Other MIME attachments are downloadable with original filenames shown.Build and security
.binnames with a forced attachment disposition andnosniff..dockerignorenow admits EML files for conversion without publishing their originals.Verification
nginx -tsyntax validation passed.serve-documentswith seven intended files changed; existing repository documents remain untouched..emldocument fixtures, so production content rendering still needs an end-to-end check after adding a real EML.Notes
Thread grouping relies on actual RFC email reference headers, not subject similarity; separate emails that lack reply headers remain separate. HTML style blocks and remote images are deliberately dropped to prevent untrusted email content from controlling the site or tracking visitors.