Tags give the ability to mark specific points in history as being important
-
v2.6.0
protected729f21be · ·parsemail v2.6.0 * Devtools update pin (729f21b) * Grade the egress probe against a control on the egress network, since Docker drops where podman has no route (034a4b9) * Merge the devtools includes into one entry with one ref, and add make devtools-update (8fb5f80) * Update devtools (8d31261) * Fuzz the upload path nightly against stated properties, and fix the two charset crashes it led to (ebbaad4) * Build a dry-run image on every branch push, with a manual smoke test, and use devtools' .dind template (8df2b0d) * Add a schedule-only heartbeat to the nightly, and model scheduled pipelines as branch pipelines in ci_lint (9a13257) * Use devtools' VEX scripts, keep the tooling venv installable on any Python, and move devtools to 30507dd (3bb69ee) * Use devtools' shared .sigstore template instead of a local copy (6c8534f) * Set timeouts on the four slow CI jobs, allow urllib3 in ci_lint, and run devtools' ci-lint too (800cbc7) * Cache only successful responses, so a 404 never gets a path's cache tier (058964b) * Escape the text split off before linked domains, and treat DKIM's i= as a tag on the page and in extraction (7acd9f8) * Close the leaked wake socket and HTTPError responses, and stop doubling the full stop on upload errors (9b7716d) * Keep extra= fields from overwriting the JSON log's own time, level, logger, pid, exception and stack (090994a) * Decode 8-bit attachment filenames from the raw headers instead of get_filename's replacement characters (6757100) * Match domains case-insensitively so upper-case TLDs are extracted and linked (3128d84) * Parse uploads with BytesFeedParser so binary attachments keep their CR bytes (b57f0eb) * Keep a failing renderer from failing the upload, and list parts after an empty one (117fb95) * Add a unit test suite gated at exactly 100% line and branch coverage, with strict xfails for 16 bugs it found (da1c5f9) * Confine every parsemail process with a seccomp denylist, self-tested at build (cd7530e) * Set no DNS search list for parsemail, closing CVE-2026-8674's DHCP/VPN path in the shipped stack (c673e0d) * Assess CVE-2026-8674 (glibc resolver abort) as affected, via host DNS config only (c7fca11) * Run make inside the CI image via devtools' container.mk, keeping only image, stack and release targets on the host (69c0abc) * Add RELEASING.md and CONTRIBUTING.md, moving the maintainer and contributor material out of the README (5e87056) * Use the Makefile's RUNTIME in release.sh instead of hard-coded docker (a51effc) * Correct stale statements in CLAUDE.md and the README about setup, reproducibility, release_image and tooling (9b6ee2e) * Verify the Makefile's syft, grype and pip downloads by SHA256, and pin the lint job's PyYAML (2b93d39) * Start every guarded CI block with set -e, and lint for it (739713b) * Make release.sh fetch, refuse a stale branch or unpinned key up front, and require a release-key signature (68a76cd) * Keep THIRD-PARTY-NOTICES.md versions in step with the lock and the image (3676158) * Measure the egress check from parsemail's own namespace and require ENETUNREACH (dd4ff4b) * Keep CI tokens out of argv and .git/config: credential helper for push, header file for curl (5773ed6) * Stop the daily job when the published image cannot be compared, instead of releasing (5705e14) * Count a tag signature only when GOODSIG and VALIDSIG are in the same gpg record (39e365e) * Apply a 7-day release cooldown to version checks, bumps and lockfiles via devtools (a4f8918) * Commit message: Attest the merged SBOM: derive the SPDX from the CycloneDX instead of a second syft run (89bae99) * Install devtools (83258e8)
-
v2.0.0
protected1bf6c672 · ·parsemail v2.0.0 * Fix the release stack: fail-fast diagnostics and pinned DNS (1bf6c67) * Make every smoke-test wait visible (d79c9a6) * Fix the release gates: key import and when:always (a3f11e2) * Match tag signatures against the primary key or its signing subkey (f3b1c05) * Require a buffering proxy, and bound upload size (dad08e9) * Improved CI and release process and greatly shrunk image (f350cd0) * Ship as a PyInstaller bundle on a scratch base (2848eec) * Run the parsemail container unprivileged and read-only (b5b5c44) * Use geoveto for IP geolocation (dfdba3c) * Use tonguepipe for translation (f2b9de7) * Messages about rendered html differences, especially in dark mode (166f749) * Switch to using external parsemail-renderer image for html rendering (8acafa0)