Changelog

Ship log for every release

Each release groups features, improvements, and fixes together.

1.2.8

October 31, 2026

Fixes

API

  • Account deletion finishes Deleting an account removes old team memberships and inbox items, and it clears you as the creator of keys on teams that remain. If deletion canceled the subscription and then stopped, the next try restores that subscription or removes the team.
  • Audit visitor address Audit entries record the visitor address the rest of the app already trusts.
  • Billing webhook retry A billing webhook can be delivered again when the job was not queued.
  • Child team members A member who joins a parent team stays on the child team when a sync is already running.
  • Reuse a deleted account email You can sign up again with an email from an account that was deleted. Confirming an email change onto that address stops before your sessions are signed out.
  • Invite when billing is missing Accepting an invite tells you when team billing is not ready yet. A team that is full still refuses the invite.
  • Leave a team Leaving a team removes it from your team list right away.
  • Member update body The member update API rejects an empty body. Sending an empty note still clears the note.
  • Notification confirmation links Notification confirmation links use your public API address in production.
  • Seat counts The first paid period keeps the seat count already on the team, and a later period keeps the count from the period that just ended. A new paid team counts each member once.
  • Team invites An expired invite can be replaced or canceled. Invites match the mailbox regardless of letter case, and a canceled invite cannot still add a member.
  • Last team owner A team keeps an owner when two owners change roles at the same time.
  • Usage alerts A usage alert is sent when the threshold is crossed.

Security

API

  • API key roll Rolling an API key drops the previous key before the new secret is shown. A failed roll can be retried without leaving the old key active.
  • Profile save Saving your name and emoji leaves the password that is already stored.
  • Other sessions sign out first Changing a password, resetting a password, or deleting an account signs other sessions out before the change is saved. A reset link is used once with the new password, and the account stays if that sign-out fails.
  • Webhook addresses Webhook delivery rejects shared carrier addresses and local IPv6 ranges along with private networks.

Frontend

  • Error reports omit reset links Error reports mask page text and drop the token from password-reset and email-confirmation links.
  • Sign-in redirect stays on this site A redirect after sign-in stays on this site when the path hides another address with a tab or a line break.

1.2.7

October 30, 2026

Fixes

API

  • Account deletion keeps the subscription Deleting an account no longer cancels the team subscription when another member has joined and the team stays.
  • Child teams follow the parent Removing someone from a parent team removes them from child teams that copy members. A role or note change on the parent shows up on those child teams.
  • Deleting a child team frees a slot Deleting a child team frees that slot on the parent plan, so you can create another child team afterward.
  • Member notes can be cleared Clearing a member note and saving now removes the note.
  • Cloudflare client IP Rate limits and staff access trust a Cloudflare visitor header only when the connection came from Cloudflare.
  • Email change confirmation Changing your email asks for your current password, replaces any older confirmation link, and signs out other sessions after the new address is confirmed.
  • Invite emails name the team A team invite email includes the team name. The email is sent only after the invite is saved.
  • Notification email confirmation The confirmation email for a notification address opens a link that verifies the channel.
  • Notification rule channels A notification rule delivers only to channels and members that belong to the same team.
  • One address, one account Sign-in, sign-up, and email changes treat an address as the same mailbox regardless of letter case, so one inbox cannot open two accounts.
  • Previous billing period Previous period on the usage page shows the billing period that ended when the current one started, including yearly plans and periods that begin on the 31st.
  • Production email delivery Password resets, invites, and other mail are sent on Fly and Railway when debug mode is off. Development environments still skip delivery.
  • Production webhook addresses Production rejects private and non-HTTPS webhook addresses, including when the environment name is blank, prod, or mixed case.
  • Recovery codes are single-use A recovery code can sign you in once. A second attempt with the same code is rejected, including when two sign-ins overlap.
  • Redis connection URL A rediss:// URL turns TLS on, and a redis:// URL leaves it off. A database URL applies its sslmode the same way.
  • Removed members can rejoin You can add someone again after you remove them from a team, and you can send a new invite after you cancel the previous one.
  • Seat counts on renewal Team and Enterprise renewals keep the current seat count. Enterprise renewals keep the current child team count.
  • Revoked API keys Revoking an API key stops it right away. A request already in progress cannot turn that key back on.
  • Seat count matches the member list Removing a member, leaving a team, or deleting an account no longer drops the membership when the seat count cannot be updated.
  • Webhook delivery address Webhook delivery connects to the address that was checked for that send.
  • Webhook redirects A webhook that responds with a redirect stays undelivered and is retried.
  • Webhook address changes Changing a webhook URL marks the channel unverified until a test send to the new address succeeds.

Frontend

  • Email confirmation after sign-in Opening a change-email link while signed out takes you back to that confirmation after you sign in.
  • Inbox unread list The notification bell lists unread items and can load the next page when more unread notifications remain.
  • Stay signed in through a network error A failed connection while refreshing your session keeps you signed in. The app signs you out only when the session itself is no longer valid.
  • Two-factor sign-in The authenticator and recovery-code tabs no longer send both codes at once, so a leftover authenticator code does not block a recovery code.
  • Zero limits on the usage page A feature with a limit of zero shows none remaining on the usage page. A feature with no limit shows as unlimited.

1.2.6

October 13, 2026

Fixes

API

  • Fly client IP Staff routes and rate limits use the visitor address in X-Forwarded-For instead of Fly's edge address.

1.2.5

October 13, 2026

Fixes

Frontend

  • Pages URLs and sign-in routes The sitemap, security contact, and llms.txt use the Pages hostname, and /auth/login and /auth/register open the app instead of a 404.

1.2.4

October 12, 2026

Fixes

Frontend

  • Pages routes stay on the requested path Marketing pages no longer bounce between a URL and its trailing slash, and signed-in routes keep their path instead of landing on /app.

1.2.3

October 11, 2026

Improvements

Frontend

  • Changelog releases read as a timeline A timeline on the right lists each version and its date. Inside a release, features, improvements, and fixes are lists, split into API and Frontend.

1.2.2

October 9, 2026

Features

Frontend

  • Forks can see which template release they are on OpenAPI and the changelog now share one product version. A template release and a fork pin show how many upstream commits remain and which files would conflict.

1.2.1

September 29, 2026

Fixes

API

  • Metered API usage resets on renewal A Stripe renewal now starts the new billing period at zero for metered features such as API requests. Seat counts still carry into the next period.

Frontend

  • Email change links confirm the new address Opening a change-email link now submits the code to the email-change check. The new address is saved instead of being sent through signup verification.
  • Child teams require parent access Creating a child team now requires permission to update the parent team. A signed-in user who is not a current member of that parent can no longer attach a child team to it.
  • Turning off two-factor authentication accepts a correction A mistyped authenticator code when turning off two-factor authentication now shows an invalid-code message. The setting stays on so you can try again with the right code.
  • OAuth sign-in stops when a security check fails Google and GitHub sign-in no longer finishes if the check for two-factor authentication cannot be read. The sign-in stops with an error instead of issuing a session.
  • Removed team members lose access Removing someone from a team now drops them from permission checks and the member list immediately. A removed member can no longer keep using their previous role on team routes.
  • Signup verification requires the email address Signup verification now requires the email address. A request that leaves it off is rejected, so it cannot search the code or lock other pending signups.

1.1.0

September 16, 2026

Improvements

API

  • Staff can raise a team's API burst Staff limit overrides now include requests per minute on the public API so a staging or load-test team can sit above the plan cap without changing Stripe.

0.1.0

May 3, 2026

Features

Frontend

  • Disposable inbound mailboxes Instantly generate private, disposable inboxes with automatic expiration. Effortlessly avoid spam, manage sign-ups, and report abuse—with robust inbound email processing and transparent public stats. Your address is ready as soon as you visit the homepage.