What it is
email-signup.
A visitor submits an email; the module records a pending row, sends a signed confirmation link, and marks the address confirmed only when the link is followed. It answers the same bytes whatever the row state, so it never leaks whether an address is already on the list. The admin export is a CSV behind the harness admin token.
Ports
Database · Mailer · Signer · Captcha and RateLimiter optional
Routes
/v1/email-signup
- POST
/v1/ email-signup - GET
/v1/email-signup/confirm - GET
/v1/email-signup/admin/ export.csv
UI surface
A join form and a confirmation landing page, rendered at /ui from the handler's own body types, so the form cannot drift from the route.
History
Changelog.
From the crate’s CHANGELOG.md in the harness, as of 0c5560b. 4 versions recorded, newest first. Every published version is on crates.io.
Other
- updated the following local packages: cratefield-core, cratefield-mail-templates
Other
- ADR 0030: the mail-theme record takes the number it was sharing (#875)
2 earlier versions 0.3.0 to 0.4.0
Added
Changed
- Breaking: requires
cratefield-core0.8 (was 0.7), and so a minor rather than a patch bump: a venture still on core 0.7 does not pick this release up through a caret requirement and end up with two copies of core (#712). - The confirmation and welcome mails render through
cratefield-mail-templatesin the venture's theme (layout, dark variant, preheader, text twin), replacing the askama templates; subjects are unchanged and the unsubscribe link moves to the footer.themed_templates(&theme)composes the venture's ownMailTheme;default_templates()uses the theme resolved from the venture'sBrandandMAIL_THEME(#715).
- Breaking: requires
Merged, tested against SQLite and Postgres, and conformant on both mounts.