Groups.io: Changelog
August 29, 2026
Moderation
- BUGFIX: Banning an email address that didn't already have a Groups.io account ran the address through the same validation used for new registrations, so addresses on disposable email domains, role accounts like
postmaster@, and similar were rejected with "That email address is not valid" — exactly the addresses moderators most want to ban. Banning now only requires that the address be a plausible email address. https://beta.groups.io/g/main/message/40936 - CHANGE: Activity log entries for event RSVPs named the event but not its date, so with repeating events — which all share the same name — there was no way to tell which occurrence someone had RSVPed to without opening each instance on the calendar. RSVP entries now include the event's date, e.g. "RSVPed yes to event Weekly Training (scheduled for Sep 16)". This also covers RSVPs removed or changed by a moderator, waitlist promotions, and attendee comment edits. The dates — including those already shown on added/updated/deleted event entries — are now displayed using your timezone and date format preferences. Existing log entries are unchanged. https://beta.groups.io/g/main/message/40961
- BUGFIX: The activity log entry for removing a group alias showed an internal id number ("removed group alias 153958") instead of the alias itself. It now logs the alias name, and both the added and removed entries quote it like other text values in the log. Existing entries are unchanged. https://beta.groups.io/g/main/message/41096
Group Settings
- CHANGE: On the group Aliases page, the entry form now sits above the list of aliases — matching the Banned Domains arrangement — so adding an alias no longer requires scrolling past a long list. The help text moved into the box itself as placeholder text, the list is sorted alphabetically instead of by the date added, and the add buttons on both the Aliases and Banned Domains pages get a little breathing room above them. https://beta.groups.io/g/main/message/41078
Calendar
- API BUGFIX: The documentation for
/addrepeateventand/updaterepeateventlisted the wrong values for several repeat parameters.repeat_typewas described as1=daily, 2=weekly, 3=monthly, 4=yearly, when2actually means every Monday/Wednesday/Friday and weekly on selected days is4, so a client following the documentation to create a weekly event silently got a Monday/Wednesday/Friday series instead. Therepeat_endsvalues for "times" and "date" were also reversed, and themonth_typevalues were wrong and incomplete. The documentation now matches the implementation, and both endpoints reject an out of rangerepeat_typewithbad_request:invalid repeat_typeinstead of quietly creating a different repeat pattern. An unparseabletimezone, which shifted every occurrence to the wrong day of the week, is now rejected the same way. - API BUGFIX:
/updaterepeatevent,/splitrepeateventand/deleterepeateventstill acted on repeating events that had already been deleted; updating or splitting one brought the series back and started generating its occurrences again. They now returnbad_requestfor a deleted series. - BUGFIX: A deleted repeating event could come back on its own. If the series had been created from an emailed calendar invitation, a later invitation carrying the same event id — a re-send, or an update from the organizer's calendar program — recreated it as a new live series, and an RSVP reply to a reminder email sent before the deletion could do the same. Deleting a repeating event now sticks: invitations and RSVP replies for a deleted series are ignored.
- NEW: Calendar events that request RSVPs and have a maximum attendee limit now display a badge on the calendar showing the number of spots still available, or Full when the event has reached its limit — so you can scan a month of events for one with space without opening each event. The badge appears in the month, week, day, and list views of both a group's calendar and the consolidated calendar, and hovering over it shows the details. Events without an attendance limit are unchanged. beta.groups.io https://beta.groups.io/g/main/message/40912
- BUGFIX: When a member accepted or declined a calendar invitation from a group hosted on its own domain — an Enterprise group, or a group with its own subdomain — the reply their calendar program sent back automatically (Outlook's "Accepted: ..." message, for example) was rejected by our mail server, so the member received a confusing "This group does not exist" bounce and their response was never recorded on the event's RSVP list. Those replies are now processed just as they are for groups at groups.io addresses: the response is recorded and no bounce is sent.
Design & Accessibility
- CHANGE: Changed the second batch of web pages from Bootstrap 3 to Bootstrap 5: all of a group's admin pages — Members, Pending Messages, Invitations, Settings, Membership Defaults, Billing, Paid Memberships, subgroup management, and the rest. This is plumbing, not a redesign; the pages should look and behave as before.
- BUGFIX: On the Pending Messages, Activity, Manage Chat Members and Subgroup Members pages, the search box could sit on top of the list, hiding it — a side effect of the restyling above. Reported on beta within hours; fixed the same evening. https://beta.groups.io/g/main/message/41063
- BUGFIX: On phones, tables on the restyled admin pages — most painfully the Activity log — wrapped each row over many screen lines instead of keeping one line per entry with sideways scrolling, the way they had always displayed. The new framework kept the responsive-table class but dropped its phone behavior. One line per row, scrolling sideways, is restored on all the restyled pages. https://beta.groups.io/g/main/message/41067
- BUGFIX: Dropdown selects across the restyled admin pages — group Settings, Membership Defaults, Direct Add, member pages, and others — were missing their down-triangle in every browser, and were sized wider than before. A restyling class that suppresses the native triangle (expecting a replacement image that only comes with the correct class for selects) had been applied to some pages but not most. All selects now show the triangle and return to sizing to their content, on every restyled page. https://beta.groups.io/g/main/message/41076
Site-wide
- API BUGFIX: Paginated API endpoints treated an invalid or out of range
page_tokenas the first page while still reportinghas_more, so a client with a bad token would loop over the first page forever. Such a token now returns an empty page withhas_morefalse. https://beta.groups.io/g/api/message/467 - API BUGFIX: The last page of
/gettopicsresults within a group reportedhas_morealong with anext_page_tokenthat was not a valid cursor, causing aninvalid_valueerror when used. Paging through a group's topics now terminates cleanly. - INTERNAL: The browser error reporter could not deliver a report when the site's JavaScript bundle failed to download, because the reporter itself depended on that bundle — so real users with failed loads were invisible, while scraper bots (which inject their own jQuery) flooded the log with the follow-on errors. The reporter now uses a transport of its own, sends a single classified
bundle-load-failurereport naming the script that failed, suppresses the cascade of "not defined" errors that follow a failed bundle, and records whether the reporting browser had a session cookie, separating members from bots at a glance.
August 20, 2026
- INTERNAL: Spent most of the week dealing with a major, ongoing, bot scraper attack - adding additional defenses against it, adding additional monitoring, and optimizing systems.
August 19, 2026
- CHANGE: Groups on the free plan are now notified when people try to join but can't. If your group is at the 100-member limit, owners and moderators receive a weekly email when join attempts were turned away, with a link to the activity log showing who tried. Denied join attempts that arrive by email are now recorded in the activity log as well.
August 17, 2026
- INTERNAL: Added additional protections against bot group signups.
- BUGFIX: Fixed a case where in rare circumstances, when a message is deleted, it should still show up on the group home page and in search results. https://beta.groups.io/g/main/message/40992