Changelog

This changelog is generated automatically from GitHub Releases.

v0.0.6

2026-09-30 · GitHub

0.0.6 (2026-09-30)

Documentation

  • color the site from a stylesheet in assets (#87) (70ac733)
  • move the README’s guide into site pages (#85) (d61a006), closes #77
  • write the setup steps for each mail service (#89) (ae67bf0), closes #78

v0.0.5

2026-09-30 · GitHub

0.0.5 (2026-09-30)

Features

  • attach files and embed inline images (8d43923), closes #37
  • build the RFC 5322 message (6a853d1), closes #41
  • carry custom headers on a message (0ac7440), closes #40
  • print a message with ConsoleBackend (edee2fa), closes #42
  • rewrite data: images into inline images (ec9b755), closes #38
  • send a Markdown message (0c33fe8), closes #39
  • send an HTML message with derived plain text (c140764), closes #36
  • send over Graph on the large path (3869679), closes #46
  • send over Graph on the small path (484a232), closes #45
  • send over SMTP with no credential or a password (600714b), closes #43
  • send over SMTP with OAuth (2fea1d4), closes #47
  • send over the Gmail API (2177623), closes #44

Bug Fixes

  • authenticate a Password through one SMTP mechanism (16bccba), closes #71
  • declare all in epistole.exceptions (0aa43b5)
  • make one attempt per Gmail token request (db0c21e), closes #52
  • map a Graph token reply by its status (69a565a), closes #63
  • map a null or empty draft id or uploadUrl to ProviderError (870f3a9), closes #56
  • map a token reply google-auth or msal cannot read to ProviderError (d9de3cc), closes #55
  • name the from address’s domain in EHLO (#82) (846d705)
  • raise RejectedError for a custom Resent-Bcc over SMTP (797a415), closes #57
  • raise ValueError for a custom Resent-Bcc on every backend (cf47954), closes #64
  • raise ValueError for a surrogate in any text a caller passes (4adbd4e), closes #59
  • raise when an <img src> names a cid: that no inline image holds (d682378)
  • reject a content id that is not ASCII (5dfffca), closes #41
  • reject a line break in a subject, address, filename or content id (76822c7), closes #42
  • request a token on every connect() for an AuthorizedUser (654c2ab), closes #53
  • resolve the loose ends from the #48 audit (7807781), closes #62
  • write UTF-8 headers for a non-ASCII custom header value (483cd94), closes #58

Documentation

  • decide how the code resolves the loose ends from the #48 audit (3502596), closes #62
  • decide that a custom Resent-Bcc is a ValueError on every backend (dbd98a6), closes #64
  • decide that a non-ASCII custom header value needs UTF-8 headers (4680a58), closes #58
  • decide that a null or empty draft id or uploadUrl is ProviderError (8aa901c), closes #56
  • decide that a surrogate is a ValueError wherever a caller passes text (6ba3d71), closes #59
  • decide that an unreadable token reply is ProviderError (3978c4b), closes #55
  • decide that connect() ignores a saved AuthorizedUser token (8f5fa7d), closes #53
  • decide that Gmail makes one attempt per token request (ecfd45e), closes #52
  • decide that Graph maps a token reply by its status (6b41d93), closes #63
  • decide that SMTP raises RejectedError on a custom Resent-Bcc (7409ffd), closes #57
  • define mail service in the glossary (#84) (56812c4)
  • explain each value in a docstring under it (6fa644d)
  • record that Epistole does not accept a domain-literal address (a00762e), closes #65
  • record that the README shows no example for every public name (3fd05ad)
  • record what implementing #62 measured (4b6188a)
  • record what implementing #63 measured (17572ee)
  • record what the iCloud live sends measured (91f4daa), closes #66
  • run every README example against MemoryBackend (9d188bb), closes #48

v0.0.4

2026-09-23 · GitHub

0.0.4 (2026-09-23)

Features

  • build and compare a message (54f8430), closes #34
  • send a message through MemoryBackend (57f6518), closes #35

Documentation

  • repair the citation and name drift in the spec and the adrs (fbf7a36)
  • resolve the v1 spec review findings (649dcfa)
  • rewrite the prose to the writing guidelines (#49) (04f9126)

v0.0.3

2026-09-10 · GitHub

0.0.3 (2026-09-10)

Documentation

  • add html authoring guide to readme (aa8030b)
  • collapse the ADRs into the v1 api spec (25171f6)
  • decide how a message carries custom headers (8203e40)
  • decide how an address is written and when it is checked (9424d34)
  • decide what the test backends record (d9fccd4)
  • record that css stays as written (1b65853)
  • research css in an html body (9287a3e)
  • rule live-send verification out of scope (128d18c)
  • update the package name explanation (7f1e7b2)
  • write up the #8 html-body findings (a5a351e)

v0.0.2

2026-09-10 · GitHub

0.0.2 (2026-09-10)

Features

  • rename package from herma to epistole (a06dce5)

Documentation

  • add contributing guide (78285cd)
  • add prose spelling rule to CONTRIBUTING (eaaa749)
  • add wayfinder research findings (354a182)
  • record attachment and inline-image decisions (33c96c7)
  • record backend connection lifecycle (4c4dd75)
  • record credentials as values in each backend module (bc17259)
  • record graph as json on two paths chosen by size (7caa2c1)
  • record how a backend plugs into a message (5b9b4d8)
  • record message immutability and chaining semantics (0777d05)
  • record plain-text derivation and content entries (8ca885a)
  • record receipt and error model (1e97e22)
  • record that herma has no escape hatch and no unsupported-feature mechanism (489c5b3)
  • record the HTTP backend dependency and transport strategy (bf004a6)
  • settle the domain vocabulary (babbed2)