Changelog
What changed, grouped by what a server owner would notice rather than by commit, newest first.
Built from the public commit history of the core repository. Some entries also touch the private hosted dashboard, which has no public commit link; those are described without one. Dates are the day the change merged, from git.
Entries
2026-09-20
- Fixed a billing link that did not expire: the signed link behind
/mod upgradenow checks its own expiry, in both the bot and the dashboard. (d432270, and a matching fix in the dashboard) - The fourteen-day trial and the free plan that never reaches the model shipped: Free stays free forever with local rules only, Trial runs the model for fourteen days, Pro is the paid plan after that. (5aa058c)
- Fixed a real GDPR gap in
/mod forget: it now discovers every table with a tenant column instead of relying on a hardcoded list, so a table added later is not silently kept. (8a1c5ee) - Trusted authors are now exempt from the local, no-model rules too, not only from the model. (de94a1e)
- Stripe now owns the subscription record; the dashboard mirrors it instead of tracking its own copy that could drift.
- Scheduled cleanup, quota resets and expired-record purges moved to a declared background service instead of a single crontab entry on one machine.
- A server's own API keys can now be issued and revoked from the dashboard.
- The five account emails, welcome, quota, trial ending, payment failed and cancellation, were written and wired up to actually send.
2026-09-19
- jevmod split into two repositories: an open-core public repository with the moderation engine, and a separate private one for the hosted billing and dashboard. (8cf4a4a)
- Spend ceilings shipped, so one busy server cannot run up a bill that lands on the operator: a global monthly ceiling, and a per-plan one that grows with every paid subscription. (47f11a1, c84baf7)
- Local rules, blocked links, words, patterns and anti-raid, that never call the model shipped, and now run on every plan including Free. (3d4ca5f)
- Fixed two features nobody had ever actually run, and a write path in the store that silently lied about what it had saved. (37d295f)
- The two buttons under every flag in
#jevmod-log, to move that category's line up or down without an email, replaced the bot reacting to its own message. (e860b22) - Fixed a bug where the hosted bot could not sell Pro at all after the repository split. (2e7c88b)
- The self-serve dashboard shipped: sign-in by email link, connecting Discord, editing a server's rules from the browser, viewing the decision log, and managing billing, all outside Discord.
- The homepage and pricing were rewritten to describe only what the code and the live deployment actually do, and to fit on a phone.
2026-09-18
- Fixed forgeable billing links, a timeout setting that deleted instead of timing out, and a log channel members could accidentally read. (2b49ed4)
- Fixed a category that could delete a message it was never supposed to touch, and a bug where
/mod forgetdid not stop Stripe from continuing to charge the card. (93b0d07) - The published OpenAPI document is now generated from the running application instead of written by hand, so it cannot drift from what the API actually accepts. (bd19213)
Before this
Earlier history exists in both repositories' commit logs; this page starts where the hosted product did. See the full commit history for anything not summarised here.