Repository navigation
Releases: amandoti-win/cindermail
Releases · amandoti-win/cindermail
Release list
v0.7.1
v0.7.1
Fixed
- Addresses created before short ids existed (v0.7.0) had none, so
/listshowed no#idfor them and/extend,/note, and/torchcouldn'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
v0.7.0
Added
/listnow shows a short 5-digit id next to each address (#48213)./extend,/note, and/torchall 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-runnpm run register-commandsto 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/extendbriefly 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
v0.6.1
Changed
npm run setupnow 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, ordocs/slack-adapter.mdmatches 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
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), prefixedcm-since Slack rejects bare generic command names outright and/remindcollides 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, anddocs/slack-adapter.mdall now include inline screenshots at every setup step, not just prose.docs/telegram-adapter.mdanddocs/slack-adapter.mdno longer point todocs/discord-adapter.mdfor 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: SecretvsType: Textdistinction. - 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
v0.5.1
v0.5.1
- Changed cindermail.vsvn.net from a status page for the private hosted instance to a landing page for Cindermail, status page was moved to status.cindermail.vsvn.net.
- Added docs to the README and landing page; available at cindermail.vsvn.net/docs.
v0.5.0
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 argsmessages. 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 intocore/, 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
v0.4.0
Quota visibility, and the project moves to the Unlicense license.
Added
/listnow shows your quota (e.g. "3/10 active addresses") alongside your addresses, so hitting the cap on/newisn'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
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-sqlite3andsmtp-server, and with them all 3 known dependency vulnerabilities. /newis permanent by default. Thepermanentflag is replaced byexpiry, a number of days, where0also means permanent./extendstill defaults to 10 days.DISPOSABLE_DOMAINandMAX_ACTIVE_ADDRESSESmoved fromwrangler.jsoncto secrets, so cloning the repo no longer inherits someone else's domain. Set them withwrangler secret put.MailAdaptergainednotify(owner, message)alongsidedeliver. Custom adapters need it.- Requires migrations
0006and0007. See docs/deploy-cloudflare.md.
Added
- mail.tm runs on Workers now. Leave
DISPOSABLE_DOMAINunset 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 anoteoption 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.comwhile pointing elsewhere. Bodies, subjects, senders and anchor labels are all escaped now, and mentions can't ping. /torch,/extendand/noterejected 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
counterstable threw from core, dropping inbound mail entirely. Counter failures are contained. npm run setupcould 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
v0.2.0
npm run setup: interactive wizard for all three receivers, writes.env/wrangler.jsoncand 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:
permanentoption on/newand/extend, never expire, good until torched - Public status page (Cloudflare only): live created/received/torched counts at the Worker's root,
/countersJSON endpoint wrangler.jsoncreplaceswrangler.toml.exampleas 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.