Skip to content

Releases: amandoti-win/cindermail

v0.7.1

Choose a tag to compare

@psalm2517 psalm2517 released this 01 Oct 23:52

v0.7.1

Fixed

  • Addresses created before short ids existed (v0.7.0) had none, so /list showed no #id for them and /extend, /note, and /torch couldn't target them by id. The daily cleanup now gives every address without one a unique id, with no manual step, so existing deployments fill their own gaps.

Changed

  • The repo moved to the amandoti-win organization. Every GitHub link (README badges, the Deploy button, clone instructions, the status page's Source link) now points at github.com/amandoti-win/cindermail. Old links redirect.
  • LICENSE copyright holder is now amandoti.win. The license itself is still MIT.

v0.7.0

Choose a tag to compare

@psalm2517 psalm2517 released this 25 Sep 16:25

v0.7.0

Added

  • /list now shows a short 5-digit id next to each address (#48213). /extend, /note, and /torch all accept that id instead of retyping the full address, just the digits, no #.
  • GitHub Sponsors is set up on the repo.

Changed

  • Discord's address option is now address_or_id, matching what it actually accepts. Re-run npm run register-commands to pick up the new label in Discord's UI; the old key still works until you do.
  • Bluesky link updated to amandoti.win.

Fixed

  • Discord's /torch, /note, and /extend briefly broke for anyone on a deployment that hadn't re-registered commands yet, fixed to accept both the old and new option key.

v0.6.1

Choose a tag to compare

@psalm2517 psalm2517 released this 07 Sep 02:46

v0.6.1

Changed

  • npm run setup now offers to collect Telegram's and Slack's secrets interactively, matching what the Deploy button's own form already covered since v0.6.0 -- the wizard was a step behind.
  • README now points to whichever of docs/discord-adapter.md, docs/telegram-adapter.md, or docs/slack-adapter.md matches what you filled in, instead of only linking Discord's after the Deploy section.
  • Status page title changed to "Cindermail Status" (tab and heading), and its domain moved to cindermail.xyz.
  • README now leads with a banner image instead of a plain text title.

Removed

  • The X link on the status page.

v0.6.0

Choose a tag to compare

@psalm2517 psalm2517 released this 06 Sep 20:33

v0.6.0

Slack delivery adapter.

Added

  • Slack is now a supported delivery platform alongside Discord and Telegram. All six commands work (/cm-new, /cm-list, /cm-note, /cm-extend, /cm-torch, /cm-remind), prefixed cm- since Slack rejects bare generic command names outright and /remind collides with a real Slack built-in. Works on a single Worker, set up via an app manifest instead of clicking through a dozen dashboard fields one at a time, secrets prompted by the "Deploy to Cloudflare" button same as Discord's and Telegram's, see docs/slack-adapter.md.

Changed

  • docs/discord-adapter.md, docs/telegram-adapter.md, and docs/slack-adapter.md all now include inline screenshots at every setup step, not just prose.
  • docs/telegram-adapter.md and docs/slack-adapter.md no longer point to docs/discord-adapter.md for command semantics, rate limits, or expiry/note behavior; each is fully self-contained.
  • Every secret-setting step across the docs now documents the Cloudflare dashboard as an alternative to the CLI, including the Type: Secret vs Type: Text distinction.
  • Discord's and Telegram's setup docs both now reuse a single shell variable for any value needed across more than one command (bot token, application ID, webhook secret), instead of separate manual entry per step where a value could drift out of sync between two systems without anything catching it.

v0.5.2

Choose a tag to compare

@psalm2517 psalm2517 released this 06 Sep 18:10
7c8b2e3

v0.5.2

  • Switched license from Unlicense to MIT.

v0.5.1

Choose a tag to compare

@psalm2517 psalm2517 released this 03 Sep 23:04
7a7ef8e

v0.5.1

v0.5.0

Choose a tag to compare

@psalm2517 psalm2517 released this 18 Aug 21:07

v0.5.0

Telegram delivery adapter.

Added

  • Telegram is now a supported delivery platform alongside Discord. All six commands work (/new, /list, /note, /extend, /torch, /remind), parsed from plain-text /command args messages. Works on a single Worker by default, see docs/telegram-adapter.md.

Changed

  • CommandConfig, expiry/note parsing, and HTML-to-text rendering moved out of the Discord adapter into core/, since none of it was Discord-specific and Telegram needed the same logic. Discord's behavior is unchanged.

Fixed

  • The mail.tm poller and cleanup were skipped entirely whenever the main Worker itself was in domain mode, even when a mail.tm-backed address existed from another adapter running in mail.tm mode independently. Mail sent to those addresses was silently dropped.

Under consideration (contingent on demand)

  • Public hosted instance
  • Slack delivery adapter

v0.4.0

Choose a tag to compare

@psalm2517 psalm2517 released this 10 Aug 23:21

v0.4.0

Quota visibility, and the project moves to the Unlicense license.

Added

  • /list now shows your quota (e.g. "3/10 active addresses") alongside your addresses, so hitting the cap on /new isn't a surprise.
  • /new's refusal message at the cap now reports current/max ("10/10 active addresses") instead of just the max.

Changed

  • License switched from MIT to the Unlicense (public domain). No functional change, just a licensing one.
  • Added an AI disclosure to the README: this project is built with AI assistance, directed by the maintainer.

Under consideration (contingent on demand)

  • Telegram delivery adapter
  • Slack delivery adapter
  • Publicly hosted instance

v0.3.0

Choose a tag to compare

@psalm2517 psalm2517 released this 07 Aug 01:50
86f9d6d

v0.3.0

Cindermail is now Cloudflare-only, and addresses are permanent by default.

Breaking

  • Self-hosted (SMTP + SQLite), Docker, and the Node mail.tm runtime are gone. Cloudflare Workers is the only target. Removes better-sqlite3 and smtp-server, and with them all 3 known dependency vulnerabilities.
  • /new is permanent by default. The permanent flag is replaced by expiry, a number of days, where 0 also means permanent. /extend still defaults to 10 days.
  • DISPOSABLE_DOMAIN and MAX_ACTIVE_ADDRESSES moved from wrangler.jsonc to secrets, so cloning the repo no longer inherits someone else's domain. Set them with wrangler secret put.
  • MailAdapter gained notify(owner, message) alongside deliver. Custom adapters need it.
  • Requires migrations 0006 and 0007. See docs/deploy-cloudflare.md.

Added

  • mail.tm runs on Workers now. Leave DISPOSABLE_DOMAIN unset for disposable addresses with no domain, no DNS and no Email Routing. Same Worker, switchable without redeploying.
  • Deploy to Cloudflare button. Provisions the database, deploys, and prompts for your own domain and credentials.
  • /note <address> [note], plus a note option on /new. Labels show up in /list.
  • /remind [enabled], opt-in DMs about a day before an address expires. One message covering everything expiring, off unless asked for.
  • Status page at the Worker root: addresses created, emails received, torched, and people holding an active address. Same numbers as JSON at /counters.
  • 85 tests, run in CI. Node's built-in runner against real SQLite, no new dependencies.

Fixed

  • Email content was rendered as Discord markdown unescaped, so a message could arrive as a link reading yourbank.com while pointing elsewhere. Bodies, subjects, senders and anchor labels are all escaped now, and mentions can't ping.
  • /torch, /extend and /note rejected addresses typed with different capitalisation or stray whitespace, reporting "Not found or not yours". Phone keyboards autocapitalise, so this was easy to hit.
  • A missing counters table threw from core, dropping inbound mail entirely. Counter failures are contained.
  • npm run setup could discard the domain you entered, or create a Worker in your account without asking.
  • Expiry reminders can't take down the cleanup that runs alongside them.

Under Consideration (contingent on demand)

  • Telegram delivery adapter
  • Publicly hosted instance

v.0.2.0

Choose a tag to compare

@psalm2517 psalm2517 released this 05 Aug 08:50
50fc568

v0.2.0

  • npm run setup: interactive wizard for all three receivers, writes .env/wrangler.jsonc and creates the D1 database for you
  • mail.tm reframed as the default quick-start path (no domain/DNS/server), Cloudflare and self-hosted documented as the bring-your-own-domain options
  • Permanent addresses: permanent option on /new and /extend, never expire, good until torched
  • Public status page (Cloudflare only): live created/received/torched counts at the Worker's root, /counters JSON endpoint
  • wrangler.jsonc replaces wrangler.toml.example as the Cloudflare config path — committed (no secrets in it), since Workers Builds needs the D1 binding present at build time and dashboard-only bindings weren't surviving into new versions
  • Counter failures no longer able to affect address creation or mail delivery
  • Status page for hosted instance: https://cindermail.vsvn.net/

Planned: Telegram delivery adapter.