v0.1.0
What's new
Features vs kill-the-newsletter upstream
- Atom feed format — feeds are now available at `atom/:feedId
(application/atom+xml) in addition to RSS 2.0, with correct,, and HTML` elements. - WebSub push notifications — Atom and RSS feeds advertise a WebSub hub via
Linkheader; subscribers receive real-time push notifications on new emails instead of polling. - HTML email processing — email bodies are sanitized via
linkedom+escape-html(XSS prevention, MSO style stripping, plain-text fallback). - Email attachments as RSS enclosures — attachments are stored in Cloudflare R2 and served at
/files/:attachmentId/:filename, exposed as<enclosure>in RSS and<link rel="enclosure">in Atom. - Sender blocklist — block/allow senders by exact address or domain, with 4-level priority matching. Quick-add dropdown directly from the emails list.
EMAIL_DOMAINenv var — separate web domain and email domain.- Authelia / reverse-proxy auth — trusted header support (
Remote-User,X-Forwarded-User) for delegating admin auth to an external identity provider. - Demo environment — auto-deployed to
demo.kill-the.newson every push tomain, with a nightly KV reset.
Admin UI
- Full redesign: Inter font, orange theme, site header/footer, Atom feed links, unified container width.
- Scripts extracted to
src/scripts/client/and compiled via esbuild. - Templates migrated to
hono/jsx.
Infrastructure & CI
- Release action builds and attaches
dist/index.jsto each GitHub release. - Cloudflare WAF rate limiting documented (no code changes required).
- Dependabot updates: Hono 4.12, Zod 4.4, actions/checkout v6, actions/setup-node v6.
Known limitation
- Race condition on concurrent emails — two emails arriving simultaneously for the same feed can overwrite each other in KV. Fix planned via Durable Objects (see TODO).
Full Changelog: upstream...v0.1.0