Updates to the Groups.io service.
January 10, 2020
- BUGFIX: When a poll was created and moderated, if a group moderator edited the poll before approving it, the poll ownership was mistakenly changed to the moderator.
- CHANGE: All premium groups now have 20GB of storage.
- CHANGE: The 'Note Sent To Attendees' email sent to people reply yes to an event, as well as the email notifying someone they have been moved from the waitlist to the attending list, were sent from the +owner email address. They are now sent as coming from the creator of the event.
- INTERNAL: Wrote a new utility to do some consistency checking and cleanups of the various databases.
- API: We are now ratelimiting the `/downloadarchives` endpoint because of abuse.
- INTERNAL: Developed a new system to make it easier to grep through all the various logs to research problems in the system.
- INTERNAL: Switched from a redis-based rate limiting system to a custom system.
- BUGFIX: When changing your email address, we were sending the warning email to the new email address when we should have been sending it to the old email address.
- CHANGE: Display the updated date in the 'Uploaded' column in the files section.
- CHANGE: Previously, when a group had `separate footers` checked, we would not try to strip out any remnant footers from incoming replies. Because some mailers combine multiple text parts when replying, we still need to look for these footers in replies, otherwise unsubscribe links could be inadvertently sent out.
- BUGFIX: For some reason, a few people started receiving duplicate summaries the last couple of days. I refactored the code that generates the summaries and that fixed the problem even though that code hadn't been touched in months.
- NEW: Added new Event Summary Email interval: Bi-Weekly on Fridays.
- CHANGE: Changed Zendesk to send back an acknowledgement when a support email is received.
- BUGFIX: For enterprise groups without a custom home page, setting `disable sign up` to true would result in an endless redirect.
- CHANGE: Modified message import code to support mbox files from Yahoo Group's export system.
- API: Added `/updatewikipage`, `/deletewikipage` and `/deletewikirevision` endpoints.
- BUGFIX: For people on `special messages only`, the message footers wrongly said `You receive all messages sent to this group.`
- NEW: Special messages are now sent with the subject tag `[Special]`.
- API: Changed `moderated` to `moderation` in the Group object.
- NEW: Added additional information to the `Sent message requiring approval` activity log line, specifying exactly why a message was moderated. This duplicated the `Message from member required approval because of virus` line, which I have removed.
- SYSADMIN: Upgraded hot spare database instance to have the same resources as our main database.
- INTERNAL: Switched from a redis-based session tracking system to a custom system.
- BUGFIX: Fixed line breaks in the index in the plain text digest.
- API: Added `plan` field to `group` object.
- API: Added `nice_group_name`, `cover_photo_url`, `icon_url`, `subs_count`, `most_recent_message` fields to the `member_info` object.
- API: Changed the sort options for the `/getsubs` endpoint and added the `set_home_page` parameter.
- API: First pass at `/getdatabaserows` endpoint.
- NEW: Added 'Deleted Account' activity log entry for when people delete their accounts.
- API: Added `is_reply` field to `Message` object.
- INTERNAL: Lots of technical debt formatting issues cleaned up.
- API: Added `/getdatabases` endpoint.
- INTERNAL: Split smtpauthd from smtpd server to make things more clear.
December 13, 2019
- BUGFIX: Even if a group is configured to allow users to specify new hashtags (Messages can be tagged with new hashtags), the 'Create Hashtag' button was not displayed in the Hashtags page for members.
- NEW: Integrated with Canny.io to test feature request/tracking.
- API: Added `/newhashtag`, `/updatehashtag`, `/deletehashtag` endpoints.
- API: Added `/mutehashtag`, `/unmutehashtag`, `/followhashtag`, and `/unfollowhashtag` endpoints.
- CHANGE: Members can only donate to a donation request one time. This is to prevent accidental duplicate donations (which have happened, unfortunately).
December 7, 2019
- SYSADMIN: Upgraded the outbound email machine.
- CHANGE: We are no longer accepting new Yahoo Group transfer requests.
- API: Added `reply`, `bcc_me` and `from_owner` parameters to the `/postdraft` endpoint.
- API: Added `/authenticateloginlink` endpoint.
November 26, 2019
- API: Added `/sendloginlink`, `/resendconfirmationemail` and `/unbounceuser` endpoints.
- API: Added `/getsubgroupsbycategory` endpoint.
- NEW: When changing your email address, we now send a notification email to your old email address.
- API: Added `/getsubgroupcategories` endpoint.
November 15, 2019
- API: Added `/searchwikis` endpoint.
- API: Changed `search_result` object to `message_search_result`.
- API: Added `/getbounceinfo` and `/getdeliveryinfo' endpoints.
- API: Added `/getmessagehistory` endpoint.
- API: Added optional `type` parameter to the `getmembernotices` endpoint.
- API: Added `muted` and `followed` fields to `hashtag` object.
- API: Added `/getsinglefeed` endpoint.
- CHANGE: When switching from monthly to yearly billing, charge the card immediately instead of waiting until the next invoice date.
- BUGFIX: Updated the list of timezones with their current UDT offsets.
- BUGFIX: Fixed an issue where going to an open chat would just return you to the available chats page.
November 8, 2019
- INTERNAL: Several database optimizations to speed group imports.
- INTERNAL: Completed webhook server.
- API: Added `/getmemberdirectory` endpoint.
- API: Added `sticky_wiki_page_id` field to the `group` object.
- API: Added new `id` parameter to `/getwikiset` endpoint.
- API: Added new `Types` section to the docs. Currently only lists the `action` enum.
- API: Changed all view_* permissions to be *_visible, to be consistent.
- API: Added `msg_num`, `subject`, `extra`, `extra2`, `extra_id` fields to `webhook_event` objects.
November 1, 2019
- API: New endpoints: `newpoll`, `updatepoll`, `getpoll`, `vote`.
- API: New endpoint: `registeruser`.
- NEW: Testing prioritizing support emails from group owners of premium groups.
- API: New endpoints: `newwikipage`, `getwikipages`, `getwikipageset`.
October 18, 2019
- INTERNAL: Various software changes and additional machines to deal with the extreme massive influx of new groups.
- NEW: For premium/enterprise groups on annual billing, we now send out a courtesy reminder two weeks before billing them.
- API: Added `signature` to `member_info` object.
October 11, 2019
- INTERNAL: More work on the API webhooks system.
- CHANGE: When forwarding a message using the Mac email client (and maybe others), it takes the forwarded message, encloses it in a blockquote and adds at the top 'Begin forwarded message'. Because it was in a blockquote, we were collapsing it. This was not good behavior, so we now look for this special case and don't collapse that blockquote.
- API: Added `open_donations_visible` to `perms` object.
- API: Added `hashtags_visible` to `perms` object.
- API: Removed `view_archives` from `perms` object.
- API: Changed `view_guidelines` to `guidelines_visible` in `perms` object.
- API: Added `subgroups_visible` to `perms` object.
- API: Added `perms` field to `member_info` object.
- API: Added new Subs array to `user` object.
- API: The `member_info` object now only returns the fields that are set by the endpoint. Previously it returned all fields, regardless of whether the fields were set or not (some endpoints won't set all the fields based on permissions).
- BUGFIX: When dealing with a message from someone not a part of the group, who has DMARC p=reject set on their domain, use their name in the From line (ie Mark Fletcher via Groups.io). Previously this was blank.
- CHANGE: When banning a member of a group, we now generate a past member object for them so they properly appear in the past members list.
- CHANGE: Added autocomplete="off" to email fields when viewing a member and when viewing your account information to prevent the browser from changing the fields.
October 4, 2019
- INTERNAL: More work on the upcoming notifications system.
- INTERNAL: Much work to revamp the activity log system to support webhook API functionality.
- BUGFIX: The `/getmembers` API endpoint would return all members, including banned and pending members, if you didn't specify a `type`, instead of only returning normal members, which it should do.
- NEW: Added subject checks for 'ris:' and 'r: ' which can indicate a message is a reply.
- CHANGE: Changed the file upload notification so that only one notification is generated regardless of the number of files/directories that are uploaded.
- API: Added `/getphoto` endpoint.
- API: Added `display_name`, `user_name`, `profile_photo_url`, `profile_privacy`, `email` fields to the `photo` object.
- API: Added `/reportcontent` endpoint.
September 27, 2019
- NEW: Upload Folder button in the Files area to upload a directory of files.
- API: Added `/newmembernotice`, `/updatemembernotice`, `/deletemembernotice`, and `/getmembernotices` endpoints.
- NEW: Checkbox to notify the group when you modify a file.
- CHANGE: Rate limit how often someone can report a message, to make abuse more difficult.
- CHANGE: Changed how we present start/end dates/times in calendar invite emails, to match how we present them when clicking Download Event. Even though both should be equivalent, apparently Outlook likes the Download Event version better.
- API: Added `/searchfiles` endpoint.
- BUGFIX: We now consider email addresses with parentheses as invalid.
- API: Added `/searchphotos` endpoint.
- API: Added `/getdirectory` and `/getfile` endpoints.
- API: Changed `snippet` field to `summary` in the `search_result` object for naming consistency.
- INTERNAL: Upgraded Go compiler to 1.13.1
- API: Added `/testnotification` endpoint.
- API: Handle case where group is not in the same domain as the API request. Caused incorrect direct add emails.
September 20, 2019
- API: Added `sort_field`, `second_order`, `query`, `sort_dir` fields to the pagination object.
- BUGFIX: In some cases, when doing a photos search, clicking an individual photo would bring up a different photo.
- CHANGE: Sorting group calendar ICS feeds by start time, to maybe, hopefully, fix a weird Outlook bug.
- BUGFIX: Fix issue where the photo may not match the thumbnail if the album was sorted by Posted.
- API: Added `/registerdevice` endpoint for registering device tokens for notifications.
- NEW: Added `exclude_aliases` flag to `/gethashtags` endpoint.
- NEW: Include the IP address of the mail server we were attempting to delivery email to in bounce message lists on the website.
- API: Added `/searcharchives` endpoint and related `search_result` and `search_results_list` objects.
- API: Added `profile_photo_url`, `name` and `can_view_profile` fields to the `chat` object.
- API: Added `alias` field to `hashtag`.
- API: Added `announce` flag to `/newchat` endpoint.
- API: Setting the `chat_sub` field on the chat object whenever we can. Previously this was only set in a few instances.
- BUGFIX: You couldn't change the case of your email address; it thought you were merging with a different email address and would fail.
- API: Added `/addalbum`, `/updatealbum`, `/deletealbum`, `/addphotos`, `/updatephoto`, `/deletephoto` endpoints.
September 13, 2019
- NEW: More work on the new notifications system.
- API: Changed `gallery_url` field in the photo and attachment objects to `thumbnail_url` because it's more clear.
- API: Added `getalbums` and `getphotos` endpoints.
- API: Changed `profile_photo_id` field in `member_info` to `profile_photo_url`.
- BUGFIX: We had disabled signature parsing in plain text messages where we couldn't tell if the sig was part of the reply or the original message. That change wasn't also added to html messages.
- BUGFIX: Subscribing to a subgroup via email did not work.
- BUGFIX: Fixed a loophole that would sometimes allow emails from numbered qq.com accounts through.
- API: Added `/chatmembers` endpoint.
- API: Fixed bug in `/joinchat` endpoint that caused it to return a `no_group_specified` error.
- API: Added `updateprofile` endpoint.
- API: Added `num_drafts` field to `member_info` object.
- API: Added `updateprofilephoto` and `deleteprofilephoto` endpoints.
- CHANGE: No longer allowing the CSS height attribute because in some instances we were ending up with archives that had overlapping text at the bottom.
- BUGFIX: After creating a group, fix text for groups that are unlisted but with public archives.
September 6, 2019
- CHANGE: Changed a bunch of references to 'post' to 'message'.
- API: Changed `profile_photo_id` to `profile_photo_url` in the User object.
August 30, 2019
- CHANGE: The email bounce returned when sending a message to a group you're not subscribed to had a link to the /join page, which if you are logged in, would bounce you to another page. Removed the /join part of the URL.
- INTERNAL: Updated Facebook API integration to use their latest version.
- API: Added `googleloginstart` and `googleloginfinal` endpoints.
- API: Added `facebookloginstart` and `facebookloginfinal` endpoints.
- NEW: Enterprise groups now support single sign-on (currently only by Auth0, others by request).
- API: New `logout` endpoint.
August 23, 2019
- NEW: Enterprise Settings screen for enterprise accounts to make changes to their domain settings.
- BUGFIX: The email address displayed when you edit an email integration was incorrect. The email address displayed in the overall email integration display is correct.
- CHANGE: In certain messages, we cannot tell if a signature is part of the original message or a part of the reply. We were displaying these sigs, but that lead to some 'false positives'. So, we're no longer displaying the sigs.
- CHANGE: Event notification and cancellation emails now include the Organizer name, if there is one.
- INTERNAL: Cleanup of various javascript displaytime file versions usage.
- API: Implemented `/chatdata` endpoint for chats.
- INTERNAL: Re-implemented much of the chat system to behave well with API calls.
- BUGFIX: We were not recording failed confirmation email results.
- API: Changed `is_subscribed` field in the chat object to `chat_sub`.
- API: Added `show_closed` parameter to the `getchats` endpoint.
- BUGFIX: We were not detecting quoted message parts from Outlook that included a "Cc:" header line.
- CHANGE: Redid the Login With Google authentication system to hopefully conform with their updated requirements.
August 16, 2019
- CHANGE: For premium/enterprise groups, only automatically add an event to the calendar that was emailed to the group if the message is not a reply.
- BUGFIX: When viewing a database row that had checkbox columns, the checkboxes were always checked.
- BUGFIX: Registering a new account via Google or Facebook was broken.
- API: Changed /getgroup endpoint to require a group_name for groups that you are not subscribed to, for security.
- API: Documentation change: The Objects section has been moved to the end of the docs.
- API: The Group object now includes a Perms object if you are subscribed to the group.
- API: Relaxed the requirement for having the `manage_group_settings` permission when accessing the `/getgroup` endpoint.
- API: Added `/sendchatmsg` endpoint.
- INTERNAL: Optimizations for calendars with a lot of repeating events.
- API: Added `/getchathistory` endpoint.
- API: Added `group_name` and `nice_group_name` to the Event object.
August 9, 2019
- INTERNAL: Work to support the app.
- CHANGE: Tweaked the wording of 'Changed display name' activity log entries to be more clear.
- BUGFIX: If someone had changed their display name for a particular subscription, and then changed their display name through their overall profile, an activity log was generated incorrectly saying that the modified display name had been changed, even though it had not.
- NEW: There is a new activity log entry type, 'Moderator changed display name'.
- BUGFIX: Display name activity log records were generated even when the display name wasn't changed when editing a member.
- CHANGE: In the activity log Actions dropdown, change 'Moderated message' to 'Sent message requiring approval'.
- API: Renamed all instances of `sub_id` parameters to `member_info_id`. In all cases, `sub_id` will still be accepted to maintain backwards compatibility.
- BUGFIX: Sending invites still worked even when the group was locked.
- BUGFIX: In message search and member activity search, custom date ranges didn't work correctly if the user had selected a different date format.
- BUGFIX: If a basic group previously was a premium group with a different person set as payor, you could not change who was the payor or upgrade the group.
- API: Removed API_KEY requirement for the /login endpoint.
- API: Changed the /login endpoint from GET to POST.
- NEW: In the sub/resub notification emails, now link to the member pages of the people who joined.
- BUGFIX: Fix for weekly event summary emails not being sent out if the first of the month falls on a Thursday.
July 25, 2019
- BUGFIX: We were not logging when a moderator changed a user's display name.
- INTERNAL: A lot of work to support the API/app.
- BUGFIX: Links in wiki pages were unintentionally opening in new browser windows.
- NEW: You can now view past member +Owner messages.
- CHANGE: When attempting to view member only parts of a group after you've been banned, instead of saying you were banned, we now say 'You are not a member of this group.'
July 19, 2019
- CHANGE: In the activity log, we sometimes truncate long entries. We now have 'more' links to show the full entry.
- NEW: Added new chat API endpoints: /newchat, /updatechat, /getchats, /deletechat, /joinchat, /leavechat.
- NEW: Added /getevent API endpoint.
- BUGFIX: In some cases when someone RSVPs to an event but is waitlisted, an incorrect activity log entry was generated.
- NEW: Added /rsvp endpoint to set/update an event RSVP.
- CHANGE: Previously, the /getsubgroups endpoint would return group objects that represented group aliases. It now longer returns these.
- CHANGE: In the /directadd endpoint, if a subgroupname or subgroupid is specified that points to a group alias, the pointed to group will be used instead.
- NEW: Added /getgroupaliases API endpoint to fetch group aliases.
- INTERNAL: Split out chat websocket endpoint from the web server into a new chat server process.