Groups.io: Changelog

Subscribe via RSS


October 2, 2026

Members
  • API BUGFIX: When /updatemember was used to create more than one new label at once, every new label got the first name in new_label_names, so only one was created. Each new_ ID in member_labels now uses its own name, color, and description. If a label with that name already exists in the group, it is assigned instead of failing.
  • API BUGFIX: /getmember, /getmembers, and /updatemember never included the member_labels field in the member info object, even when the member had labels. They now return it for callers with the manage members permission.
  • BUGFIX: When sending a message to a member from their member page, clicking Discard took you to the group's home page, even though sending took you back to the member page. Discard now returns you to the page you started from: the member page, the Members list, an RSVP or poll responses list, or a chat. https://beta.groups.io/g/main/message/41338
Group Settings
  • BUGFIX: After renaming a group or subgroup in Settings, most of the sidebar links still used the old name and led to an error page. The page now fully reloads after a rename, so the sidebar uses the new name. https://beta.groups.io/g/main/message/41321
Subgroups
  • BUGFIX: Creating the first subgroup of a group appeared to do nothing: the page stayed where it was, even though the subgroup had been created. Creating later subgroups went to the new subgroup's page, but the sidebar kept pointing at the parent group, so choosing Settings from the sidebar could lead to deleting the parent group instead of the new subgroup. Creating a subgroup now fully loads the new subgroup, sidebar included. https://beta.groups.io/g/main/message/41321
  • BUGFIX: After deleting a subgroup, you were taken to whichever of your groups pages you had last visited. You're now taken to the parent group. https://beta.groups.io/g/main/message/41322
  • BUGFIX: On the Create Subgroup page, if there was a problem with the address or description, the subgroup address and visibility you had entered were cleared. They are now kept, and if the address is the problem, the cursor is placed in the address field. https://beta.groups.io/g/main/message/41322
  • CHANGE: When working with a subgroup, the delete button in Settings, the Delete page, and the confirmation dialog now say "Delete Subgroup" and refer to the subgroup, making it clearer which one you're about to delete. "THIS ACTION CANNOT BE UNDONE." is now also shown in bold on the Delete page. https://beta.groups.io/g/main/message/41322
Calendar
  • BUGFIX: Fastmail users subscribed to a group's calendar feed stopped getting updates, because Fastmail's calendar service was mistakenly treated as an outdated web browser and sent a web page instead of the calendar. Calendar feeds now sync to Fastmail again. The same mistake could also block other apps whose browser identification included punctuation after the version number.
Files
  • BUGFIX: Downloading a large file from a group's Files section over a slower connection could fail partway through with a "Network error", usually after a couple of minutes. It wasn't a size limit: our servers were cutting off any download that ran longer than that. Downloads now run until they finish. The same problem could also interrupt slow uploads of large files. https://beta.groups.io/g/main/message/41301
  • BUGFIX: An interrupted download from a group's Files section could not be resumed; your browser's Resume button started the download over from the beginning. Downloads can now be resumed where they left off, and your browser now shows the file size and time remaining while downloading. https://beta.groups.io/g/main/message/41301
Account & Login
  • BUGFIX: The "Your Activity" heading on your account's Activity page was always shown in English. It is now translated.
  • BUGFIX: Members of a group that requires two-factor authentication, who hadn't set it up yet, couldn't add a passkey. It failed with errors such as "Failed to add passkey: The string did not match the expected pattern." Adding a passkey now works for them.
  • CHANGE: A passkey now counts as two-factor authentication. Adding one satisfies a group's two-factor requirement, just like an authentication app, and the page asking you to set up two-factor now offers both options. If you have a passkey, you can turn off your authentication app even when a group requires two-factor. You can't delete your last passkey while a group requires two-factor and you have no authentication app.
  • CHANGE: If your only second factor is a passkey, logging in with your password, a login link, or single sign-on now also asks for your passkey, or for one of your recovery codes, before you're logged in. Previously your password alone was enough. Passkeys only work on the site where you added them, so if you added yours on another site (for example, groups.io rather than your organization's own address), you're offered a button to confirm it there. As with authentication apps, logging in with Google or Facebook is no longer allowed for accounts with a passkey.
  • CHANGE: Logging in with a passkey now always requires your device's fingerprint, face, or PIN. Security keys without a PIN set can no longer be used to log in.
  • API CHANGE: For accounts whose only second factor is a passkey, /login and /authenticateloginlink now return 2nd_factor_required; supply one of the account's recovery codes in twofactor. /googleloginfinal and /facebookloginfinal now refuse these accounts, as they already do for accounts with an authentication app.
  • INTERNAL: Disabling two-factor from the support queue or admin now also removes the account's passkeys, and the support queue offers it for accounts that only have passkeys.
  • BUGFIX: After entering a wrong two-factor or recovery code when logging in, entering the correct code sent you back to the start of login instead of logging you in. You can now try again with the correct code.
Site-wide
  • INTERNAL: blockerd now blocks IP addresses with firewall sets on the load balancers instead of an nginx deny list, so adding or removing a block no longer reloads nginx.