All Versions
48
Latest Version
Avg Release Cycle
37 days
Latest Release
143 days ago

Changelog History
Page 1

  • v3.4.1 Changes

    June 03, 2021

    โž• Added

    • โž• Add new emoji assets from Twemoji 13.1.0 (Gargron)

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fix some ActivityPub identifiers in server actor outbox (ClearlyClaire)
    • ๐Ÿ›  Fix custom CSS path setting cookies and being uncacheable due to it (tribela)
    • ๐Ÿ›  Fix unread notification count when polling in web UI (ClearlyClaire)
    • ๐Ÿ›  Fix health check not being accessible through localhost (ClearlyClaire)
    • ๐Ÿ›  Fix some redis locks auto-releasing too fast (ClearlyClaire, ClearlyClaire)
    • ๐Ÿ›  Fix e-mail confirmations API not working correctly (Gargron)
    • ๐Ÿ›  Fix migration script not being able to run if it fails midway (ClearlyClaire)
    • ๐Ÿ›  Fix account deletion sometimes failing because of optimistic locks (ClearlyClaire)
    • ๐Ÿ›  Fix deprecated slash as division in SASS files (ClearlyClaire)
    • ๐Ÿ›  Fix tootctl search deploy compatibility error on Ruby 3 (ClearlyClaire)
    • ๐Ÿ›  Fix mailer jobs for deleted notifications erroring out (ClearlyClaire)
  • v3.4.0 Changes

    May 16, 2021

    โž• Added

    • โž• Add follow recommendations for onboarding (Gargron, Gargron, Gargron, Gargron, Gargron, Gargron, Gargron, noellabo, noellabo, Gargron, Gargron, ClearlyClaire, ClearlyClaire, ClearlyClaire, ClearlyClaire)
      • Tutorial on first web UI launch has been replaced with follow suggestions
      • Follow suggestions take user locale into account and are a mix of accounts most followed by currently active local users, and accounts that wrote the most shared/favourited posts in the last 30 days
      • Only accounts that have opted-in to being discoverable from their profile settings, and that do not require follow requests, will be suggested
      • Moderators can review suggestions for every supported locale and suppress specific suggestions from appearing and admins can ensure certain accounts always show up in suggestions from the settings area
      • New users no longer automatically follow admins
    • โž• Add server rules (Gargron, ClearlyClaire)
      • Admins can create and edit itemized server rules
      • They are available through the REST API and on the about page
    • โž• Add canonical e-mail blocks for suspended accounts (Gargron)
      • Normally, people can make multiple accounts using the same e-mail address using the + trick or by inserting or removing . characters from the first part of their address
      • Once an account is suspended, it will no longer be possible for the e-mail address used by that account to be used for new sign-ups in any of its forms
    • โž• Add management of delivery availability in admin UI (noellabo)
    • โž• Add system checks to dashboard in admin UI (Gargron, ClearlyClaire, ClearlyClaire)
      • The dashboard will now warn you if you some Sidekiq queues are not being processed, if you have not defined any server rules, or if you forgot to run database migrations from the latest Mastodon upgrade
    • โž• Add inline description of moderation actions in admin UI (ClearlyClaire)
    • โž• Add "recommended" label to activity/peers API toggles in admin UI (Gargron)
    • โž• Add joined date to profiles in web UI (Gargron, rinsuki)
    • โž• Add transition to media modal background in web UI (mkljczk)
    • โž• Add option to opt-out of unread notification markers in web UI (ClearlyClaire)
    • โž• Add borders to ๐Ÿ“ฑ, ๐Ÿšฒ, and ๐Ÿ“ฒ emojis in web UI (ClearlyClaire, ClearlyClaire)
    • โž• Add dropdown for boost privacy in boost confirmation modal in web UI (ClearlyClaire)
    • โž• Add support for Ruby 3.0 (ClearlyClaire, ClearlyClaire)
    • โž• Add Message-ID header to outgoing emails (ClearlyClaire)
      • Some e-mail spam filters penalize e-mails that have a Message-ID header that uses a different domain name than the sending e-mail address. Now, the same domain will be used
    • โž• Add af, gd and si locales (Gargron)
    • โž• Add guard against DNS rebinding attacks (noellabo, noellabo)
    • โž• Add HTTP header to explicitly opt-out of FLoC by default (ClearlyClaire)
    • โž• Add missing push notification title for polls and statuses (ClearlyClaire, mkljczk, ClearlyClaire)
    • โž• Add POST /api/v1/emails/confirmations to REST API (Gargron, Gargron)
      • This method allows an app through which a user signed-up to request a new confirmation e-mail to be sent, or to change the e-mail of the account before it is confirmed
    • โž• Add GET /api/v1/accounts/lookup to REST API (Gargron, ClearlyClaire)
      • This method allows to quickly convert a username of a known account to an ID that can be used with the REST API, or to check if a username is available for sign-up
    • โž• Add policy param to POST /api/v1/push/subscriptions in REST API (Gargron)
      • This param allows an app to control from whom notifications should be delivered as push notifications to the app
    • โž• Add details to error response for POST /api/v1/accounts in REST API (Gargron)
      • This attribute allows an app to display more helpful information to the user about why the sign-up did not succeed
    • Add SIDEKIQ_REDIS_URL and related environment variables to optionally use a separate Redis server for Sidekiq (noellabo)

    ๐Ÿ”„ Changed

    • ๐Ÿ”„ Change trending hashtags to be affected be reblogs (Gargron)
      • Previously, only original posts contributed to a hashtag's trending score
      • Now, reblogs of posts will also contribute to that hashtag's trending score
    • ๐Ÿ”„ Change e-mail confirmation link to always redirect to web UI (ClearlyClaire)
    • ๐Ÿ”„ Change log level of worker lifecycle to WARN in streaming API (Gargron)
      • Since running with INFO log level in production is not always desirable, it is easy to miss when a worker is shutdown and a new one is started
    • ๐Ÿ”„ Change the nouns "toot" and "status" to "post" in web UI (Gargron, Gargron)
      • To be clear, the button still says "Toot!"
    • ๐Ÿ”„ Change order of dropdown menu on posts to be more intuitive in web UI (ariasuni)
    • ๐Ÿ”„ Change description of keyboard shortcuts in web UI (ariasuni)
    • ๐Ÿ”„ Change option labels on edit profile page (Gargron)
      • "Lock account" is now "Require follow requests"
      • "List this account on the directory" is now "Suggest account to others"
      • "Hide your network" is now "Hide your social graph"
    • ๐Ÿ”„ Change newly generated account IDs to not be enumerable (ClearlyClaire)
    • ๐Ÿ”„ Change Web Push API deliveries to use request pooling (Gargron)
    • ๐Ÿ”„ Change multiple mentions with same username to render with domain (Gargron, noellabo)
      • When a post contains mentions of two or more users who have the same username, but on different domains, render their names with domain to help disambiguate them
      • Always render the domain of usernames used in profile metadata
    • ๐Ÿ”„ Change health check endpoint to reveal less information (Gargron)
    • ๐Ÿ”„ Change account counters to use upsert (requires Postgres >= 9.5) (ClearlyClaire)
    • ๐Ÿ”„ Change mastodon:setup to not call assets:precompile in Docker (ClearlyClaire)
    • ๐Ÿ”„ Change max. image dimensions to 1920x1080px (1080p) (Gargron)
      • Previously, this was 1280x1280px
      • This is the amount of pixels that original images get downsized to
    • ๐Ÿ”„ Change custom emoji to be animated when hovering container in web UI (ClearlyClaire)
    • ๐Ÿ”„ Change streaming API from deprecated ClusterWS/cws to ws (ClearlyClaire)
    • ๐Ÿ”„ Change systemd configuration to add sandboxing features (Izorkin, Izorkin, Izorkin)
    • ๐Ÿ”„ Change nginx configuration to make running Onion service easier (cohosh)
    • ๐Ÿ”„ Change Helm configuration (dunn, dunn, dunn, dunn, dunn)
    • ๐Ÿ”„ Change Docker configuration (SuperSandro2000, mashirozx)

    โœ‚ Removed

    • โœ‚ Remove PubSubHubbub-related columns from accounts table (Gargron, ClearlyClaire)
    • โœ‚ Remove dependency on @babel/plugin-proposal-class-properties (ykzts)
    • โœ‚ Remove dependency on pluck_each gem (Gargron)
    • โœ‚ Remove spam check and dependency on nilsimsa gem (Gargron)
    • โœ‚ Remove MySQL-specific code from Mastodon::MigrationHelpers (ClearlyClaire)
    • โœ‚ Remove IE11 from supported browsers target (gol-cha)

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fix "You might be interested in" flashing while searching in web UI (Gargron)
    • ๐Ÿ›  Fix display of posts without text content in web UI (ClearlyClaire)
    • ๐Ÿ›  Fix Google Translate breaking web UI (ClearlyClaire, ClearlyClaire)
    • ๐Ÿ›  Fix web UI crashing when SVG support is disabled (ClearlyClaire)
    • ๐Ÿ›  Fix web UI crash when a status opened in the media modal is deleted (kaias1jp)
    • ๐Ÿ›  Fix OCR language data failing to load in web UI (ClearlyClaire)
    • ๐Ÿ›  Fix footer links not being clickable in Safari in web UI (noellabo)
    • ๐Ÿ›  Fix autofocus/autoselection not working on mobile in web UI (ClearlyClaire, ClearlyClaire)
    • ๐Ÿ›  Fix media redownload worker retrying on unexpected response codes (Gargron)
    • ๐Ÿ›  Fix thread resolve worker retrying when status no longer exists (Gargron)
    • ๐Ÿ›  Fix n+1 queries when rendering statuses in REST API (abcang)
    • ๐Ÿ›  Fix n+1 queries when rendering notifications in REST API (abcang)
    • ๐Ÿ›  Fix delete of local reply to local parent not being forwarded (Gargron)
    • ๐Ÿ›  Fix remote reporters not receiving suspend/unsuspend activities (Gargron)
    • ๐Ÿ›  Fix understanding (not fully qualified) as:Public and Public (ClearlyClaire)
    • ๐Ÿ›  Fix actor update not being distributed on profile picture deletion (ClearlyClaire)
    • ๐Ÿ›  Fix processing of incoming Delete activities (ClearlyClaire)
    • ๐Ÿ›  Fix processing of incoming Block activities (ClearlyClaire)
    • ๐Ÿ›  Fix processing of incoming Update activities of unknown accounts (ClearlyClaire)
    • ๐Ÿ›  Fix URIs of repeat follow requests not being recorded (ClearlyClaire)
    • ๐Ÿ›  Fix error on requests with no Digest header (ClearlyClaire)
    • ๐Ÿ›  Fix activity object not requiring signature in secure mode (ClearlyClaire)
    • ๐Ÿ›  Fix database serialization failure returning HTTP 500 (Gargron)
    • ๐Ÿ›  Fix media processing getting stuck on too much stdin/stderr (Gargron)
    • ๐Ÿ›  Fix some inefficient array manipulations (007lva, 007lva)
    • ๐Ÿ›  Fix some inefficient regex matching (007lva)
    • ๐Ÿ›  Fix some inefficient SQL queries (abcang, abcang, abcang)
    • ๐Ÿ›  Fix trying to fetch key from empty URI when verifying HTTP signature (Gargron)
    • ๐Ÿ›  Fix tootctl maintenance fix-duplicates failures (ClearlyClaire, ClearlyClaire)
    • ๐Ÿ›  Fix error when removing status caused by race condition (Gargron)
    • ๐Ÿ›  Fix blocking someone not clearing up list feeds (ClearlyClaire)
    • ๐Ÿ›  Fix misspelled URLs character counting (ClearlyClaire)
    • ๐Ÿ›  Fix Sidekiq hanging forever due to a Resolv bug in Ruby 2.7.3 (ClearlyClaire)
    • ๐Ÿ›  Fix edge case where follow limit interferes with accepting a follow (ClearlyClaire)
    • ๐Ÿ›  Fix inconsistent lead text style in admin UI (Gargron, ClearlyClaire)
    • ๐Ÿ›  Fix reports of already suspended accounts being recorded (Gargron)
    • ๐Ÿ›  Fix sign-up restrictions based on IP addresses not being enforced (ClearlyClaire)
    • ๐Ÿ›  Fix YouTube embeds failing due to YouTube serving wrong OEmbed URLs (Gargron)
    • ๐Ÿ›  Fix error when rendering public pages with media without meta (Gargron)
    • ๐Ÿ›  Fix misaligned logo on follow button on public pages (noellabo)
    • ๐Ÿ›  Fix video modal not working on public pages (noellabo)
    • ๐Ÿ›  Fix race conditions on account migration creation (ClearlyClaire)
    • ๐Ÿ›  Fix not being able to change world filter expiration back to โ€œNeverโ€ (ClearlyClaire)
    • ๐Ÿ›  Fix .env.vagrant not setting RAILS_ENV variable (chandrn7)
    • ๐Ÿ›  Fix error when muting users with duration in REST API (Tak)
    • ๐Ÿ›  Fix border padding on front page in light theme (ClearlyClaire)
    • ๐Ÿ›  Fix wrong URL to custom CSS when CDN_HOST is used (ClearlyClaire)
    • ๐Ÿ›  Fix tootctl accounts unfollow (ClearlyClaire)
    • ๐Ÿ›  Fix tootctl emoji import wasting time on MacOS shadow files (cortices)
    • ๐Ÿ›  Fix tootctl emoji import not treating shortcodes as case-insensitive (angristan)
    • ๐Ÿ›  Fix some issues with SAML account creation (Gargron, kaiyou)
    • ๐Ÿ›  Fix MX validation applying for explicitly allowed e-mail domains (ClearlyClaire)
    • ๐Ÿ›  Fix share page not using configured custom mascot (tribela)
    • ๐Ÿ›  Fix instance actor not being automatically created if it wasn't seeded properly (ClearlyClaire)
    • ๐Ÿ›  Fix HTTPS enforcement preventing Mastodon from being run as an Onion service (cohosh, jtracey, ClearlyClaire, cohosh)
    • ๐Ÿ›  Fix app name, website and redirect URIs not having a maximum length (Gargron)
  • v3.3.0 Changes

    December 27, 2020

    โž• Added

    • โž• Add hotkeys for audio/video control in web UI (Gargron, Gargron)
      • Space and k to toggle playback
      • m to toggle mute
      • f to toggle fullscreen
      • j and l to go back and forward by 10 seconds
      • . and , to go back and forward by a frame (video only)
    • โž• Add expand/compress button on media modal in web UI (mashirozx, mashirozx, mashirozx)
    • โž• Add border around ๐Ÿ•บ emoji in web UI (ClearlyClaire)
    • โž• Add border around ๐Ÿž emoji in web UI (ClearlyClaire)
    • โž• Add home link to the getting started column when home isn't mounted (ClearlyClaire)
    • โž• Add option to disable swiping motions across the web UI (ClearlyClaire)
    • โž• Add pop-out player for audio/video in web UI (Gargron, Gargron, Gargron, noellabo)
      • Continue watching/listening when you scroll away
      • Action bar to interact with/open toot from the pop-out player
    • โž• Add unread notification markers in web UI (ClearlyClaire, ClearlyClaire, ClearlyClaire, noellabo, noellabo)
    • โž• Add paragraph about browser add-ons when encountering errors in web UI (ClearlyClaire)
    • โž• Add import and export for bookmarks (ClearlyClaire)
    • โž• Add cache buster feature for media files (Gargron)
      • If you have a proxy cache in front of object storage, deleted files will persist until the cache expires
      • If enabled, cache buster will make a special request to the proxy to signal a cache reset
    • โž• Add duration option to the mute function (aquarla)
    • โž• Add replies policy option to the list function (ClearlyClaire, trwnh)
    • โž• Add og:published_time OpenGraph tags on toots (nornagon)
    • โž• Add option to be notified when a followed user posts (Gargron, ClearlyClaire, Gargron)
      • If you don't want to miss a toot, click the bell button!
    • โž• Add client-side validation in password change forms (ClearlyClaire)
    • โž• Add client-side validation in the registration form (ClearlyClaire, ClearlyClaire)
    • โž• Add support for Gemini URLs (joshleeb)
    • โž• Add app shortcuts to web app manifest (mkljczk)
    • โž• Add WebAuthn as an alternative 2FA method (santiagorodriguez96, jiikko)
    • โž• Add honeypot fields and minimum fill-out time for sign-up form (ClearlyClaire)
    • โž• Add icon for mutual relationships in relationship manager (noellabo)
    • โž• Add follow selected followers button in relationship manager (noellabo)
    • โž• Add subresource integrity for JS and CSS assets (Gargron)
      • If you use a CDN for static assets (JavaScript, CSS, and so on), you have to trust that the CDN does not modify the assets maliciously
      • Subresource integrity compares server-generated asset digests with what's actually served from the CDN and prevents such attacks
    • โž• Add ku, sa, sc, zgh to available locales (ykzts)
    • โž• Add ability to force an account to mark media as sensitive (noellabo)
    • โž• Add ability to block access or limit sign-ups from chosen IPs (Gargron, ClearlyClaire)
      • Add rules for IPs or CIDR ranges that automatically expire after a configurable amount of time
      • Choose the severity of the rule, either blocking all access or merely limiting sign-ups
    • โž• Add support for reversible suspensions through ActivityPub (Gargron)
      • Servers can signal that one of their accounts has been suspended
      • During suspension, the account can only delete its own content
      • A reversal of the suspension can be signalled the same way
      • A local suspension always overrides a remote one
    • โž• Add indication to admin UI of whether a report has been forwarded (ClearlyClaire)
    • โž• Add display of reasons for joining of an account in admin UI (mashirozx)
    • โž• Add option to obfuscate domain name in public list of domain blocks (Gargron)
    • โž• Add option to make reasons for joining required on sign-up (ClearlyClaire, ClearlyClaire, ClearlyClaire, ClearlyClaire)
    • โž• Add ActivityPub follower synchronization mechanism (ClearlyClaire, ClearlyClaire)
    • โž• Add outbox attribute to instance actor (ClearlyClaire)
    • โž• Add featured hashtags as an ActivityPub collection (Gargron, noellabo)
    • โž• Add support for dereferencing objects through bearcaps (Gargron, noellabo)
    • Add S3_READ_TIMEOUT environment variable (tateisu)
    • Add ALLOWED_PRIVATE_ADDRESSES environment variable (ClearlyClaire)
    • โž• Add --fix-permissions option to tootctl media remove-orphans (Gargron, uist1idrju3i)
    • โž• Add tootctl accounts merge (Gargron, ClearlyClaire, ClearlyClaire)
      • Has someone changed their domain or subdomain thereby creating two accounts where there should be one?
      • This command will fix it on your end
    • โž• Add tootctl maintenance fix-duplicates (ClearlyClaire, Gargron, ClearlyClaire)
      • Index corruption in the database?
      • This command is for you
    • โž• Add support for managing multiple stream subscriptions in a single connection (Gargron, Gargron, mfmfuyu, zunda)
      • Previously, getting live updates for multiple timelines required opening a HTTP or WebSocket connection for each
      • More connections means more resource consumption on both ends, not to mention the (ever so slight) delay when establishing a new connection
      • Now, with just a single WebSocket connection you can subscribe and unsubscribe to and from multiple streams
    • Add support for limiting results by both min_id and max_id at the same time in REST API (tateisu)
    • โž• Add GET /api/v1/accounts/:id/featured_tags to REST API (noellabo, noellabo)
    • โž• Add stoplight for object storage failures, return HTTP 503 in REST API (Gargron)
    • โž• Add optional tootctl remove media cronjob in Helm chart (dunn)
    • โž• Add clean error message when RAILS_ENV is unset (ClearlyClaire)

    ๐Ÿ”„ Changed

    • ๐Ÿ”„ Change media modals look in web UI (Gargron, Gargron, Gargron, Gargron, Kjwon15, noellabo, ClearlyClaire)
      • Background of the overlay matches the color of the image
      • Action bar to interact with or open the toot from the modal
    • ๐Ÿ”„ Change order of announcements in admin UI to be newest-first (ClearlyClaire)
    • ๐Ÿ”„ Change account suspensions to be reversible by default (Gargron, ClearlyClaire, ClearlyClaire, ClearlyClaire, ClearlyClaire, noellabo, ClearlyClaire, Gargron, Gargron)
      • Suspensions no longer equal deletions
      • A suspended account can be unsuspended with minimal consequences for 30 days
      • Immediate deletion of data is still available as an explicit option
      • Suspended accounts can request an archive of their data through the UI
    • ๐Ÿ”„ Change REST API to return empty data for suspended accounts (14765)
    • ๐Ÿ”„ Change web UI to show empty profile for suspended accounts (Gargron, Gargron)
    • ๐Ÿ”„ Change featured hashtag suggestions to be recently used instead of most used (abcang)
    • ๐Ÿ”„ Change direct toots to appear in the home feed again (Gargron, ClearlyClaire, noellabo)
      • Return to treating all toots the same instead of trying to retrofit direct visibility into an instant messaging model
    • ๐Ÿ”„ Change email address validation to return more specific errors (ClearlyClaire)
    • ๐Ÿ”„ Change HTTP signature requirements to include Digest header on POST requests (ClearlyClaire)
    • ๐Ÿ”„ Change click area of video/audio player buttons to be bigger in web UI (ariasuni)
    • ๐Ÿ”„ Change order of filters by alphabetic by "keyword or phrase" (ariasuni)
    • ๐Ÿ”„ Change suspension of remote accounts to also undo outgoing follows (ClearlyClaire)
    • ๐Ÿ”„ Change string "Home" to "Home and lists" in the filter creation screen (ariasuni)
    • ๐Ÿ”„ Change string "Boost to original audience" to "Boost with original visibility" in web UI (3n-k1)
    • ๐Ÿ”„ Change string "Show more" to "Show newer" and "Show older" on public pages (ariasuni)
    • ๐Ÿ”„ Change order of announcements to be reverse chronological in web UI (dariusk, dariusk)
    • ๐Ÿ”„ Change RTL detection to rely on unicode-bidi paragraph by paragraph in web UI (Gargron)
    • ๐Ÿ”„ Change visibility icon next to timestamp to be clickable in web UI (ariasuni, mayaeh)
    • ๐Ÿ”„ Change public thread view to hide "Show thread" link (ClearlyClaire)
    • ๐Ÿ”„ Change number format on about page from full to shortened (Gargron)
    • ๐Ÿ”„ Change how scheduled tasks run in multi-process environments (noellabo)
      • New dedicated queue scheduler
      • Runs by default when Sidekiq is executed with no options
      • Has to be added manually in a multi-process environment

    โœ‚ Removed

    • โœ‚ Remove fade-in animation from modals in web UI (Gargron)
    • โœ‚ Remove auto-redirect to direct messages in web UI (Gargron)
    • โœ‚ Remove obsolete IndexedDB operations from web UI (Gargron)
    • โœ‚ Remove dependency on unused and unmaintained http_parser.rb gem (ClearlyClaire)

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fix layout on about page when contact account has a long username (ClearlyClaire)
    • ๐Ÿ›  Fix follow limit preventing re-following of a moved account (Gargron, ClearlyClaire)
    • ๐Ÿ›  Fix deletes not reaching every server that interacted with toot (Gargron)
      • Previously, delete of a toot would be primarily sent to the followers of its author, people mentioned in the toot, and people who reblogged the toot
      • Now, additionally, it is ensured that it is sent to people who replied to it, favourited it, and to the person it replies to even if that person is not mentioned
    • ๐Ÿ›  Fix resolving an account through its non-canonical form (i.e. alternate domain) (ClearlyClaire)
    • ๐Ÿ›  Fix sending redundant ActivityPub events when processing remote account deletion (ClearlyClaire)
    • ๐Ÿ›  Fix Move handler not being triggered when failing to fetch target account (ClearlyClaire)
    • ๐Ÿ›  Fix downloading remote media files when server returns empty filename (ClearlyClaire)
    • ๐Ÿ›  Fix account processing failing because of large collections (ClearlyClaire)
    • ๐Ÿ›  Fix not being able to unfavorite toots one has lost access to (ClearlyClaire)
    • ๐Ÿ›  Fix not being able to unbookmark toots one has lost access to (ClearlyClaire)
    • ๐Ÿ›  Fix possible casing inconsistencies in hashtag search (ClearlyClaire)
    • ๐Ÿ›  Fix updating account counters when association is not yet created (Gargron)
    • ๐Ÿ›  Fix cookies not having a SameSite attribute (Gargron)
    • ๐Ÿ›  Fix poll ending notifications being created for each vote (ClearlyClaire)
    • ๐Ÿ›  Fix multiple boosts of a same toot erroneously appearing in TL (ClearlyClaire)
    • ๐Ÿ›  Fix asset builds not picking up CDN_HOST change (ClearlyClaire)
    • ๐Ÿ›  Fix desktop notifications permission prompt in web UI (Gargron, Gargron, ClearlyClaire, ClearlyClaire)
      • Some time ago, browsers added a requirement that desktop notification prompts could only be displayed in response to a user-generated event (such as a click)
      • This means that for some time, users who haven't already given the permission before were not getting a prompt and as such were not receiving desktop notifications
    • ๐Ÿ›  Fix "Mark media as sensitive" string not supporting pluralizations in other languages in web UI (ariasuni)
    • ๐Ÿ›  Fix glitched image uploads when canvas read access is blocked in web UI (ClearlyClaire)
    • ๐Ÿ›  Fix some account gallery items having empty labels in web UI (ClearlyClaire)
    • ๐Ÿ›  Fix alt-key hotkeys activating while typing in a text field in web UI (ClearlyClaire)
    • ๐Ÿ›  Fix wrong seek bar width on media player in web UI (mfmfuyu)
    • ๐Ÿ›  Fix logging out on mobile in web UI (ClearlyClaire)
    • ๐Ÿ›  Fix wrong click area for GIFVs in media modal in web UI (noellabo)
    • ๐Ÿ›  Fix unreadable placeholder text color in high contrast theme in web UI (Gargron)
    • ๐Ÿ›  Fix scrolling issues when closing some dropdown menus in web UI (ClearlyClaire)
    • ๐Ÿ›  Fix notification filter bar incorrectly filtering gaps in web UI (ClearlyClaire)
    • ๐Ÿ›  Fix disabled boost icon being replaced by private boost icon on hover in web UI (ClearlyClaire)
    • ๐Ÿ›  Fix hashtag detection in compose form being different to server-side in web UI (kedamaDQ, ClearlyClaire)
    • ๐Ÿ›  Fix home last read marker mishandling gaps in web UI (ClearlyClaire)
    • ๐Ÿ›  Fix unnecessary re-rendering of various components when typing in web UI (Gargron)
    • ๐Ÿ›  Fix notifications being unnecessarily re-rendered in web UI (ClearlyClaire)
    • ๐Ÿ›  Fix column swiping animation logic in web UI (ClearlyClaire)
    • ๐Ÿ›  Fix inefficiency when fetching hashtag timeline (noellabo, akihikodaki)
    • ๐Ÿ›  Fix inefficiency when fetching bookmarks (akihikodaki)
    • ๐Ÿ›  Fix inefficiency when fetching favourites (akihikodaki)
    • ๐Ÿ›  Fix inefficiency when fetching media-only account timeline (akihikodaki)
    • ๐Ÿ›  Fix inefficieny when deleting accounts (Gargron, ClearlyClaire, ClearlyClaire, ClearlyClaire, ClearlyClaire, ClearlyClaire, Gargron)
    • ๐Ÿ›  Fix redundant query when processing batch actions on custom emojis (niwatori24)
    • ๐Ÿ›  Fix slow distinct queries where grouped queries are faster (Gargron)
    • ๐Ÿ›  Fix performance on instances list in admin UI (Gargron)
    • ๐Ÿ›  Fix server actor appearing in list of accounts in admin UI (ClearlyClaire)
    • ๐Ÿ›  Fix "bootstrap timeline accounts" toggle in site settings in admin UI (ClearlyClaire)
    • ๐Ÿ›  Fix PostgreSQL secret name for cronjob in Helm chart (metal3d)
    • ๐Ÿ›  Fix Procfile not being compatible with herokuish (acuteaura)
    • ๐Ÿ›  Fix installation of tini being split into multiple steps in Dockerfile (ryncsn)

    ๐Ÿ”’ Security

    • ๐Ÿ›  Fix streaming API allowing connections to persist after access token invalidation (Gargron)
    • ๐Ÿ›  Fix 2FA/sign-in token sessions being valid after password change (Gargron)
    • ๐Ÿ›  Fix resolving accounts sometimes creating duplicate records for a given ActivityPub identifier (ClearlyClaire)
  • v3.3.0.rc1 Changes

    December 01, 2020

    Mastodon

    Note: This is a release candidate. It is intended to be stable, but not guaranteed.

    ๐Ÿ”„ Changelog

    โž• Added

    • โž• Add hotkeys for audio/video control in web UI (Gargron, Gargron)
      • Space and k to toggle playback
      • m to toggle mute
      • f to toggle fullscreen
      • j and l to go back and forward by 10 seconds
      • . and , to go back and forward by a frame (video only)
    • โž• Add expand/compress button on media modal in web UI (mashirozx, mashirozx, mashirozx)
    • โž• Add border around ๐Ÿ•บ emoji in web UI (ThibG)
    • โž• Add border around ๐Ÿž emoji in web UI (ThibG)
    • โž• Add home link to the getting started column when home isn't mounted (ThibG)
    • โž• Add option to disable swiping motions across the web UI (ThibG)
    • โž• Add pop-out player for audio/video in web UI (Gargron, Gargron, Gargron)
      • Continue watching/listening when you scroll away
      • Action bar to interact with/open toot from the pop-out player
    • โž• Add unread notification markers in web UI (ThibG, ThibG, ThibG, noellabo, noellabo)
    • โž• Add paragraph about browser add-ons when encountering errors in web UI (ThibG)
    • โž• Add import and export for bookmarks (ThibG)
    • โž• Add cache buster feature for media files (Gargron)
      • If you have a proxy cache in front of object storage, deleted files will persist until the cache expires
      • If enabled, cache buster will make a special request to the proxy to signal a cache reset
    • โž• Add duration option to the mute function (aquarla)
    • โž• Add replies policy option to the list function (ThibG)
    • โž• Add og:published_time OpenGraph tags on toots (nornagon)
    • โž• Add option to be notified when a followed user posts (Gargron, ThibG, Gargron)
      • If you don't want to miss a toot, click the bell button!
    • โž• Add client-side validation in password change forms (ThibG)
    • โž• Add client-side validation in the registration form (ThibG, ThibG)
    • โž• Add support for Gemini URLs (joshleeb)
    • โž• Add WebAuthn as an alternative 2FA method (santiagorodriguez96, jiikko)
    • โž• Add icon for mutual relationships in relationship manager (noellabo)
    • โž• Add follow selected followers button in relationship manager (noellabo)
    • โž• Add subresource integrity for JS and CSS assets (Gargron)
      • If you use a CDN for static assets (JavaScript, CSS, and so on), you have to trust that the CDN does not modify the assets maliciously
      • Subresource integrity compares server-generated asset digests with what's actually served from the CDN and prevents such attacks
    • โž• Add ku, sa, sc, zgh to available locales (ykzts)
    • โž• Add ability to force an account to mark media as sensitive (noellabo)
    • โž• Add ability to block access or limit sign-ups from chosen IPs (Gargron)
      • Add rules for IPs or CIDR ranges that automatically expire after a configurable amount of time
      • Choose the severity of the rule, either blocking all access or merely limiting sign-ups
    • โž• Add support for reversible suspensions through ActivityPub (Gargron)
      • Servers can signal that one of their accounts has been suspended
      • During suspension, the account can only delete its own content
      • A reversal of the suspension can be signalled the same way
      • A local suspension always overrides a remote one
    • โž• Add ActivityPub follower synchronization mechanism (ThibG, ThibG)
    • โž• Add outbox attribute to instance actor (ThibG)
    • โž• Add featured hashtags as an ActivityPub collection (Gargron)
    • โž• Add support for dereferencing objects through bearcaps (Gargron, noellabo)
    • Add S3_READ_TIMEOUT environment variable (tateisu)
    • Add ALLOWED_PRIVATE_ADDRESSES environment variable (ThibG)
    • โž• Add --fix-permissions option to tootctl media remove-orphans (Gargron, uist1idrju3i)
    • โž• Add tootctl accounts merge (Gargron)
      • Has someone changed their domain or subdomain thereby creating two accounts where there should be one?
      • This command will fix it on your end
    • โž• Add tootctl maintenance fix-duplicates (ThibG, Gargron)
      • Index corruption in the database?
      • This command is for you
    • โž• Add support for managing multiple stream subscriptions in a single connection (Gargron, Gargron, mfmfuyu, zunda)
      • Previously, getting live updates for multiple timelines required opening a HTTP or WebSocket connection for each
      • More connections means more resource consumption on both ends, not to mention the (ever so slight) delay when establishing a new connection
      • Now, with just a single WebSocket connection you can subscribe and unsubscribe to and from multiple streams
    • Add support for limiting results by both min_id and max_id at the same time in REST API (tateisu)
    • โž• Add GET /api/v1/accounts/:id/featured_tags to REST API (noellabo)
    • โž• Add optional tootctl remove media cronjob in Helm chart (dunn)

    ๐Ÿ”„ Changed

    • ๐Ÿ”„ Change media modals look in web UI (Gargron, Gargron)
      • Background of the overlay matches the color of the image
      • Action bar to interact with or open the toot from the modal
    • ๐Ÿ”„ Change order of announcements in admin UI to be newest-first (ThibG)
    • ๐Ÿ”„ Change account suspensions to be reversible by default (Gargron, ThibG, ThibG, ThibG, ThibG, noellabo)
      • Suspensions no longer equal deletions
      • A suspended account can be unsuspended with minimal consequences for 30 days
      • Immediate deletion of data is still available as an explicit option
      • Suspended accounts can request an archive of their data through the UI
    • ๐Ÿ”„ Change REST API to return empty data for suspended accounts (Gargron)
    • ๐Ÿ”„ Change web UI to show empty profile for suspended accounts (Gargron)
    • ๐Ÿ”„ Change featured hashtag suggestions to be recently used instead of most used (abcang)
    • ๐Ÿ”„ Change direct toots to appear in the home feed again (Gargron, ThibG, noellabo)
      • Return to treating all toots the same instead of trying to retrofit direct visibility into an instant messaging model
    • ๐Ÿ”„ Change email address validation to return more specific errors (ThibG)
    • ๐Ÿ”„ Change HTTP signature requirements to include Digest header on POST requests (ThibG)
    • ๐Ÿ”„ Change click area of video/audio player buttons to be bigger in web UI (ariasuni)
    • ๐Ÿ”„ Change order of filters by alphabetic by "keyword or phrase" (ariasuni)
    • ๐Ÿ”„ Change suspension of remote accounts to also undo outgoing follows (ThibG)
    • ๐Ÿ”„ Change string "Home" to "Home and lists" in the filter creation screen (ariasuni)
    • ๐Ÿ”„ Change string "Boost to original audience" to "Boost with original visibility" in web UI (3n-k1)
    • ๐Ÿ”„ Change string "Show more" to "Show newer" and "Show older" on public pages (ariasuni)
    • ๐Ÿ”„ Change order of announcements to be reverse chronological in web UI (dariusk, dariusk)
    • ๐Ÿ”„ Change visibility icon next to timestamp to be clickable in web UI (ariasuni, mayaeh)

    โœ‚ Removed

    • โœ‚ Remove fade-in animation from modals in web UI (Gargron)
    • โœ‚ Remove auto-redirect to direct messages in web UI (Gargron)
    • โœ‚ Remove obsolete IndexedDB operations from web UI (Gargron)
    • โœ‚ Remove dependency on unused and unmaintained http_parser.rb gem (ThibG)

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fix deletes not reaching every server that interacted with toot (Gargron)
      • Previously, delete of a toot would be primarily sent to the followers of its author, people mentioned in the toot, and people who reblogged the toot
      • Now, additionally, it is ensured that it is sent to people who replied to it, favourited it, and to the person it replies to even if that person is not mentioned
    • ๐Ÿ›  Fix resolving an account through its non-canonical form (i.e. alternate domain) (ThibG)
    • ๐Ÿ›  Fix sending redundant ActivityPub events when processing remote account deletion (ThibG)
    • ๐Ÿ›  Fix Move handler not being triggered when failing to fetch target account (ThibG)
    • ๐Ÿ›  Fix downloading remote media files when server returns empty filename (ThibG)
    • ๐Ÿ›  Fix account processing failing because of large collections (ThibG)
    • ๐Ÿ›  Fix not being able to unfavorite toots one has lost access to (ThibG)
    • ๐Ÿ›  Fix not being able to unbookmark toots one has lost access to (ThibG)
    • ๐Ÿ›  Fix possible casing inconsistencies in hashtag search (ThibG)
    • ๐Ÿ›  Fix updating account counters when association is not yet created (Gargron)
    • ๐Ÿ›  Fix cookies not having a SameSite attribute (Gargron)
    • ๐Ÿ›  Fix poll ending notifications being created for each vote (ThibG)
    • ๐Ÿ›  Fix multiple boosts of a same toot erroneously appearing in TL (ThibG)
    • ๐Ÿ›  Fix asset builds not picking up CDN_HOST change (ThibG)
    • ๐Ÿ›  Fix desktop notifications permission prompt in web UI (Gargron, Gargron, ThibG)
      • Some time ago, browsers added a requirement that desktop notification prompts could only be displayed in response to a user-generated event (such as a click)
      • This means that for some time, users who haven't already given the permission before were not getting a prompt and as such were not receiving desktop notifications
    • ๐Ÿ›  Fix "Mark media as sensitive" string not supporting pluralizations in other languages in web UI (ariasuni)
    • ๐Ÿ›  Fix glitched image uploads when canvas read access is blocked in web UI (ThibG)
    • ๐Ÿ›  Fix some account gallery items having empty labels in web UI (ThibG)
    • ๐Ÿ›  Fix alt-key hotkeys activating while typing in a text field in web UI (ThibG)
    • ๐Ÿ›  Fix wrong seek bar width on media player in web UI (mfmfuyu)
    • ๐Ÿ›  Fix logging out on mobile in web UI (ThibG)
    • ๐Ÿ›  Fix wrong click area for GIFVs in media modal in web UI (noellabo)
    • ๐Ÿ›  Fix unreadable placeholder text color in high contrast theme in web UI (Gargron)
    • ๐Ÿ›  Fix scrolling issues when closing some dropdown menus in web UI (ThibG)
    • ๐Ÿ›  Fix notification filter bar incorrectly filtering gaps in web UI (ThibG)
    • ๐Ÿ›  Fix disabled boost icon being replaced by private boost icon on hover in web UI (ThibG)
    • ๐Ÿ›  Fix hashtag detection in compose form being different to server-side in web UI (kedamaDQ, ThibG)
    • ๐Ÿ›  Fix home last read marker mishandling gaps in web UI (ThibG)
    • ๐Ÿ›  Fix inefficiency when fetching hashtag timeline (noellabo, akihikodaki)
    • ๐Ÿ›  Fix inefficiency when fetching bookmarks (akihikodaki)
    • ๐Ÿ›  Fix inefficiency when fetching favourites (akihikodaki)
    • ๐Ÿ›  Fix inefficiency when fetching media-only account timeline (akihikodaki)
    • ๐Ÿ›  Fix redundant query when processing batch actions on custom emojis (niwatori24)
    • ๐Ÿ›  Fix PostgreSQL secret name for cronjob in Helm chart (metal3d)
    • ๐Ÿ›  Fix Procfile not being compatible with herokuish (acuteaura)
    • ๐Ÿ›  Fix installation of tini being split into multiple steps in Dockerfile (ryncsn)

    ๐Ÿ”’ Security

    • ๐Ÿ›  Fix streaming API allowing connections to persist after access token invalidation (Gargron)
    • ๐Ÿ›  Fix 2FA/sign-in token sessions being valid after password change (Gargron)

    โฌ†๏ธ Upgrade notes

    โฌ†๏ธ > As always, make sure you have backups of the database before performing any upgrades. If you are using docker-compose, this is how a backup command might look: docker exec mastodon_db_1 pg_dump -Fc -U postgres postgres > name_of_the_backup.dump

    ๐Ÿณ Non-Docker only:

    • โฌ†๏ธ The recommended Ruby version has been bumped to 2.7.2. You can upgrade, or you can continue using the old version by overwriting the .ruby-version file with e.g. 2.6.6 which was recommended previously
    • Install dependencies: bundle install and yarn install

    ๐Ÿณ Both Docker and non-Docker:

    ๐Ÿš€ 1. Run the pre-deployment database migrations by specifying the SKIP_POST_DEPLOYMENT_MIGRATIONS=true environment variable:

    • Non-Docker: SKIP_POST_DEPLOYMENT_MIGRATIONS=true RAILS_ENV=production bundle exec rails db:migrate
    • Docker: docker-compose run --rm -e SKIP_POST_DEPLOYMENT_MIGRATIONS=true web rails db:migrate ๐Ÿฑ 2. Precompile the assets:
    • Non-Docker: RAILS_ENV=production bundle exec rails assets:precompile
    • Docker: The assets are already precompiled during the build step
      1. Restart all Mastodon processes
      2. Clear cache:
    • Non-Docker: RAILS_ENV=production bin/tootctl cache clear
    • Docker: docker-compose run --rm web bin/tootctl cache clear ๐Ÿš€ 5. Now that the new code is running, we can finish the database migrations. This will run the post-deployment ones:
    • Non-Docker: RAILS_ENV=production bundle exec rails db:migrate
    • Docker: docker-compose run --rm web rails db:migrate
      1. Restart all Mastodon processes

    Translators

    TBA

  • v3.2.2 Changes

    December 19, 2020

    โž• Added

    • โž• Add tootctl maintenance fix-duplicates (ClearlyClaire, Gargron)
      • Index corruption in the database?
      • This command is for you

    โœ‚ Removed

    • โœ‚ Remove dependency on unused and unmaintained http_parser.rb gem (ClearlyClaire)

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fix Move handler not being triggered when failing to fetch target account (ClearlyClaire)
    • ๐Ÿ›  Fix downloading remote media files when server returns empty filename (ClearlyClaire)
    • ๐Ÿ›  Fix possible casing inconsistencies in hashtag search (ClearlyClaire)
    • ๐Ÿ›  Fix updating account counters when association is not yet created (Gargron)
    • ๐Ÿ›  Fix account processing failing because of large collections (ClearlyClaire)
    • ๐Ÿ›  Fix resolving an account through its non-canonical form (i.e. alternate domain) (ClearlyClaire)
    • ๐Ÿ›  Fix slow distinct queries where grouped queries are faster (Gargron)

    ๐Ÿ”’ Security

    • ๐Ÿ›  Fix 2FA/sign-in token sessions being valid after password change (Gargron)
    • ๐Ÿ›  Fix resolving accounts sometimes creating duplicate records for a given ActivityPub identifier (ClearlyClaire)
  • v3.2.1 Changes

    October 19, 2020

    Mastodon

    ๐Ÿ”„ Changelog

    โž• Added

    • โž• Add support for latest HTTP Signatures spec draft (ThibG)
    • โž• Add support for inlined objects in ActivityPub to/cc (ThibG)

    ๐Ÿ”„ Changed

    • ๐Ÿ”„ Change actors to not be served at all without authentication in limited federation mode (ThibG)
      • Previously, a bare version of an actor was served when not authenticated, i.e. username and public key
      • Because all actor fetch requests are signed using a separate system actor, that is no longer required

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fix tootctl media commands not recognizing very large IDs (ThibG)
    • ๐Ÿ›  Fix crash when failing to load emoji picker in web UI (ThibG)
    • ๐Ÿ›  Fix contrast requirements in thumbnail color extraction (ThibG)
    • ๐Ÿ›  Fix audio/video player not using CDN_HOST on public pages (ThibG)
    • ๐Ÿ›  Fix private boost icon not being used on public pages (OmmyZhang)
    • ๐Ÿ›  Fix audio player on Safari in web UI (ThibG, ThibG)
    • ๐Ÿ›  Fix dereferencing remote statuses not using the correct account for signature when receiving a targeted inbox delivery (ThibG)
    • ๐Ÿ›  Fix nil error in tootctl media remove (noellabo)
    • ๐Ÿ›  Fix videos with near-60 fps being rejected (Gargron)
    • ๐Ÿ›  Fix reported statuses not being included in warning e-mail (Gargron)
    • ๐Ÿ›  Fix Reject activities of Follow objects not correctly destroying a follow relationship (ThibG)
    • ๐Ÿ›  Fix inefficiencies in fan-out-on-write service (Gargron, noellabo)
    • ๐Ÿ›  Fix timeout errors when trying to webfinger some IPv6 configurations (Gargron)
    • ๐Ÿ›  Fix files served as application/octet-stream being rejected without attempting mime type detection (ThibG)

    โฌ†๏ธ Upgrade notes

    Because this is a backport, it is not available with git pull. Use git fetch && git checkout v3.2.1

    ๐Ÿณ Non-Docker only:

    • Install dependencies: bundle install

    ๐Ÿณ Both Docker and non-Docker:

    ๐Ÿฑ 1. Precompile the assets:

    • Non-Docker: RAILS_ENV=production bundle exec rails assets:precompile
    • Docker: The assets are already precompiled during the build step
      1. Restart all Mastodon processes
  • v3.2.0 Changes

    July 27, 2020

    Mastodon

    ๐Ÿ”„ Changelog

    โž• Added

    • โž• Add SMTP_SSL environment variable (OmmyZhang)
    • โž• Add hotkey for toggling content warning input in web UI (ThibG)
    • โž• Add e-mail-based sign in challenge for users with disabled 2FA (Gargron)
      • If user tries signing in after:
      • Being inactive for a while
      • With a previously unknown IP
      • Without 2FA being enabled
      • Require to enter a token sent via e-mail before sigining in
    • โž• Add limit param to RSS feeds (noellabo)
    • โž• Add visibility param to share page (noellabo)
    • โž• Add blurhash to link previews (ThibG, ThibG, ThibG, Sasha-Sorokin, Sasha-Sorokin, ThibG, ThibG, ThibG)
      • In web UI, toots cannot be marked as sensitive unless there is media attached
      • However, it's possible to do via API or ActivityPub
      • Thumnails of link previews of such posts now use blurhash in web UI
      • The Card entity in REST API has a new blurhash attribute
    • โž• Add support for summary field for media description in ActivityPub (ThibG)
    • โž• Add hints about incomplete remote content to web UI (Gargron, noellabo)
    • โž• Add personal notes for accounts (ThibG, Gargron, Sasha-Sorokin)
      • To clarify, these are notes only you can see, to help you remember details
      • Notes can be viewed and edited from profiles in web UI
      • New REST API: POST /api/v1/accounts/:id/note with comment param
      • The Relationship entity in REST API has a new note attribute
    • โž• Add Helm chart (dunn, dunn, dunn)
    • โž• Add customizable thumbnails for audio and video attachments (Gargron, Gargron, Gargron, Gargron, ThibG, ThibG, noellabo, noellabo)
      • Metadata (album, artist, etc) is no longer stripped from audio files
      • Album art is automatically extracted from audio files
      • Thumbnail can be manually uploaded for both audio and video attachments
      • Media upload APIs now support thumbnail param
      • On POST /api/v1/media and POST /api/v2/media
      • And on PUT /api/v1/media/:id
      • ActivityPub representation of media attachments represents custom thumbnails with an icon attribute
      • The Media Attachment entity in REST API now has a preview_remote_url to its preview_url, equivalent to remote_url to its url
    • โž• Add color extraction for thumbnails (Gargron, ThibG)
      • The meta attribute on the Media Attachment entity in REST API can now have a colors attribute which in turn contains three hex colors: background, foreground, and accent
      • The background color is chosen from the most dominant color around the edges of the thumbnail
      • The foreground and accent colors are chosen from the colors that are the most different from the background color using the CIEDE2000 algorithm
      • The most satured color of the two is designated as the accent color
      • The one with the highest W3C contrast is designated as the foreground color
      • If there are not enough colors in the thumbnail, new ones are generated using a monochrome pattern
    • โž• Add a visibility indicator to toots in web UI (noellabo, highemerly)
    • Add tootctl email_domain_blocks (tateisu, Gargron)
    • โž• Add "Add new domain block" to header of federation page in admin UI (ariasuni)
    • โž• Add ability to keep emoji picker open with ctrl+click in web UI (bclindner, noellabo)
    • โž• Add custom icon for private boosts in web UI (ThibG)
    • โž• Add support for Create and Update activities that don't inline objects in ActivityPub (ThibG)
    • โž• Add support for Undo activities that don't inline activities in ActivityPub (ThibG)

    ๐Ÿ”„ Changed

    • ๐Ÿ”„ Change .env.production.sample to be leaner and cleaner (Gargron)
      • It was overloaded as de-facto documentation and getting quite crowded
      • Defer to the actual documentation while still giving a minimal example
    • ๐Ÿš€ Change tootctl search deploy to work faster and display progress (Gargron)
    • ๐Ÿ”„ Change User-Agent of link preview fetching service to include "Bot" (Gargron)
      • Some websites may not render OpenGraph tags into HTML if that's not the case
    • ๐Ÿ”„ Change behaviour to carry blocks over when someone migrates their followers (ThibG)
    • ๐Ÿ”„ Change volume control and download buttons in web UI (Gargron)
    • ๐Ÿ”„ Change design of audio players in web UI (Gargron, ThibG, Gargron, ThibG, Gargron, ThibG)
    • ๐Ÿ”„ Change reply filter to never filter own toots in web UI (ThibG)
    • ๐Ÿ”„ Change boost button to no longer serve as visibility indicator in web UI (noellabo, ThibG)
    • ๐Ÿ”„ Change contrast of flash messages (cchoi12)
    • ๐Ÿ”„ Change wording from "Hide media" to "Hide image/images" in web UI (ariasuni)
    • ๐Ÿ”„ Change appearence of settings pages to be more consistent (ariasuni)
    • ๐Ÿ”„ Change "Add media" tooltip to not include long list of formats in web UI (ariasuni)
    • ๐Ÿ”„ Change how badly contrasting emoji are rendered in web UI (leo60228, ThibG, mfmfuyu, ThibG)
    • ๐Ÿ”„ Change structure of unavailable content section on about page (ariasuni)
    • ๐Ÿ”„ Change behaviour to accept ActivityPub activities relayed through group actor (noellabo)
    • ๐Ÿ”„ Change amount of processing retries for ActivityPub activities (noellabo)

    โœ‚ Removed

    • โœ‚ Remove the terms "blacklist" and "whitelist" from UX (Gargron, mayaeh)
      • Environment variables changed (old versions continue to work):
      • WHITELIST_MODE โ†’ LIMITED_FEDERATION_MODE
      • EMAIL_DOMAIN_BLACKLIST โ†’ EMAIL_DOMAIN_DENYLIST
      • EMAIL_DOMAIN_WHITELIST โ†’ EMAIL_DOMAIN_ALLOWLIST
      • CLI option changed:
      • tootctl domains purge --whitelist-mode โ†’ tootctl domains purge --limited-federation-mode
    • โœ‚ Remove some unnecessary database indices (lfuelling, noellabo)
    • โœ‚ Remove unnecessary Node.js version upper bound (ykzts)

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fix following param not working when exact match is found in account search (noellabo)
    • ๐Ÿ›  Fix sometimes occuring duplicate mention notifications (noellabo)
    • ๐Ÿ›  Fix RSS feeds not being cachable (ThibG)
    • ๐Ÿ›  Fix lack of locking around processing of Announce activities in ActivityPub (noellabo)
    • ๐Ÿ›  Fix boosted toots from blocked account not being retroactively removed from TL (ThibG)
    • ๐Ÿ›  Fix large shortened numbers (like 1.2K) using incorrect pluralization (Sasha-Sorokin)
    • ๐Ÿ›  Fix streaming server trying to use empty password to connect to Redis when REDIS_PASSWORD is given but blank (ThibG)
    • ๐Ÿ›  Fix being unable to unboost posts when blocked by their author (ThibG)
    • ๐Ÿ›  Fix account domain block not properly unfollowing accounts from domain (Gargron)
    • ๐Ÿ›  Fix removing a domain allow wiping known accounts in open federation mode (ThibG)
    • ๐Ÿ›  Fix blocks and mutes pagination in web UI (ThibG)
    • ๐Ÿ›  Fix new posts pushing down origin of opened dropdown in web UI (ThibG, ThibG)
    • ๐Ÿ›  Fix timeline markers not being saved sometimes (ThibG, ThibG, ThibG)
    • ๐Ÿ›  Fix CSV uploads being rejected (noellabo)
    • ๐Ÿ›  Fix incompatibility with ElasticSearch 7.x (noellabo)
    • ๐Ÿ›  Fix being able to search posts where you're in the target audience but not actively mentioned (noellabo)
    • ๐Ÿ›  Fix non-local posts appearing on local-only hashtag timelines in web UI (noellabo)
    • ๐Ÿ›  Fix tootctl media remove-orphans choking on unknown files in storage (Gargron)
    • ๐Ÿ›  Fix tootctl upgrade storage-schema misbehaving (Gargron, angristan)
      • Fix it marking records as upgraded even though no files were moved
      • Fix it not working with S3 storage
      • Fix it not working with custom emojis
    • ๐Ÿ›  Fix GIF reader raising incorrect exceptions (ThibG)
    • ๐Ÿ›  Fix hashtag search performing account search as well (ThibG)
    • ๐Ÿ›  Fix Webfinger returning wrong status code on malformed or missing param (ThibG)
    • ๐Ÿ›  Fix rake mastodon:setup error when some environment variables are set (ThibG)
    • ๐Ÿ›  Fix admin page crashing when trying to block an invalid domain name in admin UI (ThibG)
    • ๐Ÿ›  Fix unsent toot confirmation dialog not popping up in single column mode in web UI (ThibG)
    • ๐Ÿ›  Fix performance of follow import (noellabo)
      • Reduce timeout of Webfinger requests to that of other requests
      • Use circuit breakers to stop hitting unresponsive servers
      • Avoid hitting servers that are already known to be generally unavailable
    • ๐Ÿ›  Fix filters ignoring media descriptions (BenLubar)
    • ๐Ÿ›  Fix some actions on custom emojis leading to cryptic errors in admin UI (ThibG)
    • ๐Ÿ›  Fix ActivityPub serialization of replies when some of them are URIs (ThibG)
    • ๐Ÿ›  Fix rake mastodon:setup choking on environment variables containing % (ThibG)
    • ๐Ÿ›  Fix account redirect confirmation message talking about moved followers (ThibG)
    • ๐Ÿ›  Fix avatars having the wrong size on public detailed status pages (ThibG)
    • ๐Ÿ›  Fix various issues around OpenGraph representation of media (Gargron)
      • Pages containing audio no longer say "Attached: 1 image" in description
      • Audio attachments now represented as OpenGraph og:audio
      • The twitter:player page now uses Mastodon's proper audio/video player
      • Audio/video buffered bars now display correctly in audio/video player
      • Volume and progress bars now respond to movement/move smoother
    • ๐Ÿ›  Fix audio/video/images/cards not reacting to window resizes in web UI (Gargron)
    • ๐Ÿ›  Fix very wide media attachments resulting in too thin a thumbnail in web UI (ThibG)
    • ๐Ÿ›  Fix crash when merging posts into home feed after following someone (ThibG)
    • ๐Ÿ›  Fix unique username constraint for local users not being enforced in database (ThibG)
    • ๐Ÿ›  Fix unnecessary gap under video modal in web UI (mfmfuyu)
    • ๐Ÿ›  Fix 2FA and sign in token pages not respecting user locale (mfmfuyu)
    • Fix unapproved users being able to view profiles when in limited-federation mode and requiring approval for sign-ups (ThibG)
    • ๐Ÿ›  Fix initial audio volume not corresponding to what's displayed in audio player in web UI (ThibG)
    • ๐Ÿ›  Fix timelines sometimes jumping when closing modals in web UI (ThibG)
    • ๐Ÿ›  Fix memory usage of downloading remote files (Gargron, Gargron, noellabo)
      • Don't read entire file (up to 40 MB) into memory
      • Read and write it to temp file in small chunks
    • ๐Ÿ›  Fix inconsistent account header padding in web UI (trwnh)
    • ๐Ÿ›  Fix Thai being skipped from language detection (Sasha-Sorokin)
      • Since Thai has its own alphabet, it can be detected more reliably
    • ๐Ÿ›  Fix broken hashtag column options styling in web UI (ThibG)
    • ๐Ÿ›  Fix pointer cursor being shown on toots that are not clickable in web UI (arielrodrigues)
    • ๐Ÿ›  Fix lock icon not being shown when locking account in profile settings (ThibG)
    • ๐Ÿ›  Fix domain blocks doing work the wrong way around (ThibG)
      • Instead of suspending accounts one by one, mark all as suspended first (quick)
      • Only then proceed to start removing their data (slow)
      • Clear out media attachments in a separate worker (slow)

    โฌ†๏ธ Upgrade notes

    โฌ†๏ธ > As always, make sure you have backups of the database before performing any upgrades. If you are using docker-compose, this is how a backup command might look: docker exec mastodon_db_1 pg_dump -Fc -U postgres postgres > name_of_the_backup.dump

    ๐Ÿณ Non-Docker only:

    • Install dependencies: bundle install and yarn install
    • โšก๏ธ โš ๏ธ No longer compatible with ElasticSearch <6.8 due to an upstream library update

    ๐Ÿณ Both Docker and non-Docker:

    ๐Ÿฑ โš ๏ธ If you are serving user-uploaded files from a differet domain/subdomain than the one the Mastodon web UI is served from, please keep in mind that you need to return CORS headers on those files, otherwise the new audio player will not work. Here is an example of nginx directives for returning the appropriate CORS headers:

    add\_header 'Access-Control-Allow-Origin''\*';
    

    Some object storage providers may have preferences for such CORS headers in their control panels.

    1. Run database migrations:
      • Non-Docker: RAILS_ENV=production bundle exec rails db:migrate
      • Docker: docker-compose run --rm web rails db:migrate ๐Ÿฑ 2. Precompile the assets:
      • Non-Docker: RAILS_ENV=production bundle exec rails assets:precompile
      • Docker: The assets are already precompiled during the build step
    2. Restart all Mastodon processes
    3. Clear cache:
      • Non-Docker: RAILS_ENV=production bin/tootctl cache clear
      • Docker: docker-compose run --rm web bin/tootctl cache clear

    Troubleshooting

    LoadError: cannot load such file -- tty-command

    โฌ†๏ธ If you are upgrading on a DigitalOcean 1-click-install image of Mastodon, delete the first-time setup wizard:

    rm /home/mastodon/live/lib/tasks/digitalocean.rake
    

    ๐Ÿšš Multiple migrations have the name RemoveUnusedIndexes

    You have previously created a database migration following advice in the pgHero control panel. Find the oldest file in the db/migrations directory that ends with remove_unused_indexes.rb and delete it.

    Translators

    • Duy (Vietnamese)
    • stan ionut (Romanian)
    • Besnik_b (Albanian)
    • Emanuel Pina (Portuguese)
    • regulartranslator (Portuguese, Brazilian)
    • ButterflyOfFire (Arabic; Kabyle; French)
    • adrmzz (Sardinian)
    • FรฉdiQuรฉbec (French)
    • GiorgioHerbie (Italian)
    • ๐Ÿ’… Marcin Mikoล‚ajczak (Polish)
    • ariasuni (French; Esperanto)
    • Thai Localization (Thai)
    • ๅฅˆๅœๆ‹‰ (Chinese Simplified)
    • Mentor Gashi (Albanian)
    • Xosรฉ M. (Galician)
    • axi (Finnish)
    • Selyan Slimane AMIRI (Kabyle)
    • Alix Rossi (Corsican)
    • Jeroen (Dutch)
    • SteinarK (Norwegian Nynorsk)
    • ThonyVezbe (Breton)
    • Hrach Mkrtchyan (Armenian)
    • Gwenn (Breton)
    • แฆแแŽขแŽตแซ ๐Ÿ˜ท (Spanish, Argentina)
    • Danial Behzadi (Persian)
    • spla (Catalan)
    • Rafael H L Moretti (Portuguese, Brazilian)
    • Jeong Arm (Korean; Esperanto)
    • koyu (German)
    • Yi-Jyun Pan (Chinese Traditional)
    • norayr (Armenian)
    • Alessandro Levati (Italian)
    • Sasha Sorokin (Russian; Catalan; Greek; Hungarian; Armenian; Albanian; Galician)
    • gagik_ (Armenian)
    • lamnatos (Greek)
    • Sveinn รญ Felli (Icelandic)
    • Zoltรกn Gera (Hungarian)
    • cybergene (Japanese)
    • Tagomago (Spanish)
    • Michal Stanke (Czech)
    • borys_sh (Ukrainian)
    • Ramdziana F Y (Indonesian)
    • Osoitz (Basque)
    • Maya Minatsuki (Japanese)
    • William(ั•)โฟ (Spanish)
    • BurekzFinezt (Serbian)
    • Evert Prants (Estonian)
    • ThibG (French)
    • Dewi (Breton)
    • Emyn-Russell Nt Nefydd (Welsh)
    • vishnuvaratharajan (Tamil)
    • tolstoevsky (Russian)
    • Diluns (Occitan)
    • Falling Snowdin (Vietnamese)
    • Marek ฤฝach (Slovak)
    • Balรกzs Meskรณ (Hungarian)
    • Ryo (Korean)
    • Roboron (Spanish)
    • StanleyFrew (French)
    • PPNplus (Thai)
    • Heimen Stoffels (Dutch)
    • Andrew (Romanian)
    • Ivรกns (Galician)
    • Carlos Solรญs (Esperanto)
    • Sokratis Alichanidis (Greek)
    • TS (Finnish)
    • SensDeViata (Ukrainian)
    • AzureNya (Chinese Simplified)
    • OctolinGamer (Portuguese, Brazilian)
    • ๅŒ—ไ‘“ๅฆ‚ๆณ• (Japanese)
    • ๐Ÿ’… Laura (Polish)
    • Imre Kristoffer Eilertsen (Norwegian)
    • Rikard Linde (Swedish)
    • Ali DemirtaลŸ (Turkish)
    • diorama (Italian)
    • Daniele Lira Mereb (Portuguese, Brazilian)
    • Goudarz Jafari (Persian)
    • psymyn (Hebrew)
    • v4vachan (Malayalam)
    • Sebastiรกn Andil (Slovak)
    • Khรณo (Chinese Traditional)
    • ZiriSut (Kabyle)
    • strubbl (German)
    • Reg3xp (Persian)
    • AlexKoala (Korean)
    • VSx86 (Russian)
    • Mo_der Steven (Chinese Simplified)
    • musix (Persian)
    • ใ‚ฎใƒฃใƒฉ (Chinese Simplified; Japanese)
    • Saederup92 (Danish)
    • mynameismonkey (Welsh)
    • omquylzu (Latvian)
    • Miro Rauhala (Finnish)
    • ็กซ้…ธ้ถ (Japanese)
    • siamano (Thai; Esperanto)
    • Viorel-Cฤƒtฤƒlin Rฤƒpiศ›eanu (Romanian)
    • Pachara Chantawong (Thai)
    • Balรกzs Meskรณ (Hungarian)
    • Steven Tappert (German)
    • Unmual (Spanish)
    • Zijian Zhao (Chinese Simplified)
    • Skew (French)
    • enolp (Asturian)
    • Yann Aguettaz (French)
    • Mick Onio (Asturian)
    • r3dsp1 (Chinese Traditional, Hong Kong)
    • Tianqi Zhang (Chinese Simplified)
    • piupiupiudiu (Chinese Simplified)
    • Padraic Calpin (Slovenian)
    • ใ‚‹ใ„ใƒผใญ (Japanese)
    • Belkacem Mohammed (Kabyle)
    • Miquel Sabatรฉ Solร  (Catalan)
    • serubeena (Swedish)
    • Solid Rhino (Dutch)
    • Rintan (Japanese)
    • ๆž—ๆฐดๆบถ (Chinese Simplified)
    • Tagada (French)
    • shafouz (Portuguese, Brazilian)
    • Tom_ (Czech)
    • OminousCry (Russian)
    • ALEM FARID (Kabyle)
    • Nathaรซl Noguรจs (French)
    • Robin van der Vliet (Esperanto)
    • twpenguin (Chinese Traditional)
    • Paz Galindo (Spanish)
    • ๅคœๆฅ“Yoka (Chinese Simplified)
    • ๐Ÿ’… mkljczk (Polish)
    • kiwi0 (Italian)
    • Esther (Portuguese)
    • Renato "Lond" Cerqueira (Portuguese, Brazilian)
    • ๐Ÿ’… igordrozniak (Polish)
    • Philipp Fischbeck (German)
    • GaggiX (Italian)
    • Allen Zhong (Chinese Simplified)
    • Albatroz Jeremias (Portuguese)
    • Nocta (French)
    • pezcurrel (Italian)
    • Aditoo17 (Czech)
    • ๆฃฎใฎๅญใƒชใ‚นใฎใƒŸใƒผใ‚ณใฎๅคงๅ†’้™บ (Japanese)
    • Doug (Portuguese, Brazilian)
    • Fleva (Sardinian)
  • v3.2.0.rc2 Changes

    July 24, 2020

    Mastodon

    Note: This is a release candidate. It is intended to be stable, but not guaranteed.

    ๐Ÿ”„ Changelog

    โž• Added

    • โž• Add SMTP_SSL environment variable (OmmyZhang)
    • โž• Add hotkey for toggling content warning input in web UI (ThibG)
    • โž• Add e-mail-based sign in challenge for users with disabled 2FA (Gargron)
      • If user tries signing in after:
      • Being inactive for a while
      • With a previously unknown IP
      • Without 2FA being enabled
      • Require to enter a token sent via e-mail before sigining in
    • โž• Add limit param to RSS feeds (noellabo)
    • โž• Add visibility param to share page (noellabo)
    • โž• Add blurhash to link previews (ThibG, ThibG, ThibG, Sasha-Sorokin, Sasha-Sorokin, ThibG, ThibG, ThibG)
      • In web UI, toots cannot be marked as sensitive unless there is media attached
      • However, it's possible to do via API or ActivityPub
      • Thumnails of link previews of such posts now use blurhash in web UI
      • The Card entity in REST API has a new blurhash attribute
    • โž• Add support for summary field for media description in ActivityPub (ThibG)
    • โž• Add hints about incomplete remote content to web UI (Gargron, noellabo)
    • โž• Add personal notes for accounts (ThibG, Gargron, Sasha-Sorokin)
      • To clarify, these are notes only you can see, to help you remember details
      • Notes can be viewed and edited from profiles in web UI
      • New REST API: POST /api/v1/accounts/:id/note with comment param
      • The Relationship entity in REST API has a new note attribute
    • โž• Add Helm chart (dunn, dunn, dunn)
    • โž• Add customizable thumbnails for audio and video attachments (Gargron, Gargron, Gargron, Gargron, ThibG, ThibG, noellabo, noellabo)
      • Metadata (album, artist, etc) is no longer stripped from audio files
      • Album art is automatically extracted from audio files
      • Thumbnail can be manually uploaded for both audio and video attachments
      • Media upload APIs now support thumbnail param
      • On POST /api/v1/media and POST /api/v2/media
      • And on PUT /api/v1/media/:id
      • ActivityPub representation of media attachments represents custom thumbnails with an icon attribute
      • The Media Attachment entity in REST API now has a preview_remote_url to its preview_url, equivalent to remote_url to its url
    • โž• Add color extraction for thumbnails (Gargron, ThibG)
      • The meta attribute on the Media Attachment entity in REST API can now have a colors attribute which in turn contains three hex colors: background, foreground, and accent
      • The background color is chosen from the most dominant color around the edges of the thumbnail
      • The foreground and accent colors are chosen from the colors that are the most different from the background color using the CIEDE2000 algorithm
      • The most satured color of the two is designated as the accent color
      • The one with the highest W3C contrast is designated as the foreground color
      • If there are not enough colors in the thumbnail, new ones are generated using a monochrome pattern
    • โž• Add a visibility indicator to toots in web UI (noellabo, highemerly)
    • Add tootctl email_domain_blocks (tateisu, Gargron)
    • โž• Add "Add new domain block" to header of federation page in admin UI (ariasuni)
    • โž• Add ability to keep emoji picker open with ctrl+click in web UI (bclindner, noellabo)
    • โž• Add custom icon for private boosts in web UI (ThibG)
    • โž• Add support for Create and Update activities that don't inline objects in ActivityPub (ThibG)
    • โž• Add support for Undo activities that don't inline activities in ActivityPub (ThibG)

    ๐Ÿ”„ Changed

    • ๐Ÿ”„ Change .env.production.sample to be leaner and cleaner (Gargron)
      • It was overloaded as de-facto documentation and getting quite crowded
      • Defer to the actual documentation while still giving a minimal example
    • ๐Ÿš€ Change tootctl search deploy to work faster and display progress (Gargron)
    • ๐Ÿ”„ Change User-Agent of link preview fetching service to include "Bot" (Gargron)
      • Some websites may not render OpenGraph tags into HTML if that's not the case
    • ๐Ÿ”„ Change behaviour to carry blocks over when someone migrates their followers (ThibG)
    • ๐Ÿ”„ Change volume control and download buttons in web UI (Gargron)
    • ๐Ÿ”„ Change design of audio players in web UI (Gargron, ThibG, Gargron, ThibG, Gargron, ThibG)
    • ๐Ÿ”„ Change reply filter to never filter own toots in web UI (ThibG)
    • ๐Ÿ”„ Change boost button to no longer serve as visibility indicator in web UI (noellabo, ThibG)
    • ๐Ÿ”„ Change contrast of flash messages (cchoi12)
    • ๐Ÿ”„ Change wording from "Hide media" to "Hide image/images" in web UI (ariasuni)
    • ๐Ÿ”„ Change appearence of settings pages to be more consistent (ariasuni)
    • ๐Ÿ”„ Change "Add media" tooltip to not include long list of formats in web UI (ariasuni)
    • ๐Ÿ”„ Change how badly contrasting emoji are rendered in web UI (leo60228, ThibG, mfmfuyu, ThibG)
    • ๐Ÿ”„ Change structure of unavailable content section on about page (ariasuni)
    • ๐Ÿ”„ Change behaviour to accept ActivityPub activities relayed through group actor (noellabo)
    • ๐Ÿ”„ Change amount of processing retries for ActivityPub activities (noellabo)

    โœ‚ Removed

    • โœ‚ Remove the terms "blacklist" and "whitelist" from UX (Gargron, mayaeh)
      • Environment variables changed (old versions continue to work):
      • WHITELIST_MODE โ†’ LIMITED_FEDERATION_MODE
      • EMAIL_DOMAIN_BLACKLIST โ†’ EMAIL_DOMAIN_DENYLIST
      • EMAIL_DOMAIN_WHITELIST โ†’ EMAIL_DOMAIN_ALLOWLIST
      • CLI option changed:
      • tootctl domains purge --whitelist-mode โ†’ tootctl domains purge --limited-federation-mode
    • โœ‚ Remove some unnecessary database indices (lfuelling, noellabo)
    • โœ‚ Remove unnecessary Node.js version upper bound (ykzts)

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fix sometimes occuring duplicate mention notifications (noellabo)
    • ๐Ÿ›  Fix RSS feeds not being cachable (ThibG)
    • ๐Ÿ›  Fix lack of locking around processing of Announce activities in ActivityPub (noellabo)
    • ๐Ÿ›  Fix boosted toots from blocked account not being retroactively removed from TL (ThibG)
    • ๐Ÿ›  Fix large shortened numbers (like 1.2K) using incorrect pluralization (Sasha-Sorokin)
    • ๐Ÿ›  Fix streaming server trying to use empty password to connect to Redis when REDIS_PASSWORD is given but blank (ThibG)
    • ๐Ÿ›  Fix being unable to unboost posts when blocked by their author (ThibG)
    • ๐Ÿ›  Fix account domain block not properly unfollowing accounts from domain (Gargron)
    • ๐Ÿ›  Fix removing a domain allow wiping known accounts in open federation mode (ThibG)
    • ๐Ÿ›  Fix blocks and mutes pagination in web UI (ThibG)
    • ๐Ÿ›  Fix new posts pushing down origin of opened dropdown in web UI (ThibG, ThibG)
    • ๐Ÿ›  Fix timeline markers not being saved sometimes (ThibG, ThibG, ThibG)
    • ๐Ÿ›  Fix CSV uploads being rejected (noellabo)
    • ๐Ÿ›  Fix incompatibility with ElasticSearch 7.x (noellabo)
    • ๐Ÿ›  Fix being able to search posts where you're in the target audience but not actively mentioned (noellabo)
    • ๐Ÿ›  Fix non-local posts appearing on local-only hashtag timelines in web UI (noellabo)
    • ๐Ÿ›  Fix tootctl media remove-orphans choking on unknown files in storage (Gargron)
    • ๐Ÿ›  Fix tootctl upgrade storage-schema misbehaving (Gargron, angristan)
      • Fix it marking records as upgraded even though no files were moved
      • Fix it not working with S3 storage
      • Fix it not working with custom emojis
    • ๐Ÿ›  Fix GIF reader raising incorrect exceptions (ThibG)
    • ๐Ÿ›  Fix hashtag search performing account search as well (ThibG)
    • ๐Ÿ›  Fix Webfinger returning wrong status code on malformed or missing param (ThibG)
    • ๐Ÿ›  Fix rake mastodon:setup error when some environment variables are set (ThibG)
    • ๐Ÿ›  Fix admin page crashing when trying to block an invalid domain name in admin UI (ThibG)
    • ๐Ÿ›  Fix unsent toot confirmation dialog not popping up in single column mode in web UI (ThibG)
    • ๐Ÿ›  Fix performance of follow import (noellabo)
      • Reduce timeout of Webfinger requests to that of other requests
      • Use circuit breakers to stop hitting unresponsive servers
      • Avoid hitting servers that are already known to be generally unavailable
    • ๐Ÿ›  Fix filters ignoring media descriptions (BenLubar)
    • ๐Ÿ›  Fix some actions on custom emojis leading to cryptic errors in admin UI (ThibG)
    • ๐Ÿ›  Fix ActivityPub serialization of replies when some of them are URIs (ThibG)
    • ๐Ÿ›  Fix rake mastodon:setup choking on environment variables containing % (ThibG)
    • ๐Ÿ›  Fix account redirect confirmation message talking about moved followers (ThibG)
    • ๐Ÿ›  Fix avatars having the wrong size on public detailed status pages (ThibG)
    • ๐Ÿ›  Fix various issues around OpenGraph representation of media (Gargron)
      • Pages containing audio no longer say "Attached: 1 image" in description
      • Audio attachments now represented as OpenGraph og:audio
      • The twitter:player page now uses Mastodon's proper audio/video player
      • Audio/video buffered bars now display correctly in audio/video player
      • Volume and progress bars now respond to movement/move smoother
    • ๐Ÿ›  Fix audio/video/images/cards not reacting to window resizes in web UI (Gargron)
    • ๐Ÿ›  Fix very wide media attachments resulting in too thin a thumbnail in web UI (ThibG)
    • ๐Ÿ›  Fix crash when merging posts into home feed after following someone (ThibG)
    • ๐Ÿ›  Fix unique username constraint for local users not being enforced in database (ThibG)
    • ๐Ÿ›  Fix unnecessary gap under video modal in web UI (mfmfuyu)
    • ๐Ÿ›  Fix 2FA and sign in token pages not respecting user locale (mfmfuyu)
    • Fix unapproved users being able to view profiles when in limited-federation mode and requiring approval for sign-ups (ThibG)
    • ๐Ÿ›  Fix initial audio volume not corresponding to what's displayed in audio player in web UI (ThibG)
    • ๐Ÿ›  Fix timelines sometimes jumping when closing modals in web UI (ThibG)
    • ๐Ÿ›  Fix memory usage of downloading remote files (Gargron, Gargron, noellabo)
      • Don't read entire file (up to 40 MB) into memory
      • Read and write it to temp file in small chunks
    • ๐Ÿ›  Fix inconsistent account header padding in web UI (trwnh)
    • ๐Ÿ›  Fix Thai being skipped from language detection (Sasha-Sorokin)
      • Since Thai has its own alphabet, it can be detected more reliably
    • ๐Ÿ›  Fix broken hashtag column options styling in web UI (ThibG)
    • ๐Ÿ›  Fix pointer cursor being shown on toots that are not clickable in web UI (arielrodrigues)
    • ๐Ÿ›  Fix lock icon not being shown when locking account in profile settings (ThibG)
    • ๐Ÿ›  Fix domain blocks doing work the wrong way around (ThibG)
      • Instead of suspending accounts one by one, mark all as suspended first (quick)
      • Only then proceed to start removing their data (slow)
      • Clear out media attachments in a separate worker (slow)

    โฌ†๏ธ Upgrade notes

    โฌ†๏ธ > As always, make sure you have backups of the database before performing any upgrades. If you are using docker-compose, this is how a backup command might look: docker exec mastodon_db_1 pg_dump -Fc -U postgres postgres > name_of_the_backup.dump

    ๐Ÿณ Non-Docker only:

    • Install dependencies: bundle install and yarn install
    • โšก๏ธ โš ๏ธ No longer compatible with ElasticSearch <6.8 due to an upstream library update

    ๐Ÿณ Both Docker and non-Docker:

    ๐Ÿฑ โš ๏ธ If you are serving user-uploaded files from a differet domain/subdomain than the one the Mastodon web UI is served from, please keep in mind that you need to return CORS headers on those files, otherwise the new audio player will not work. Here is an example of nginx directives for returning the appropriate CORS headers:

    add\_header 'Access-Control-Allow-Origin''\*';
    

    Some object storage providers may have preferences for such CORS headers in their control panels.

    1. Run database migrations:
      • Non-Docker: RAILS_ENV=production bundle exec rails db:migrate
      • Docker: docker-compose run --rm web rails db:migrate ๐Ÿฑ 2. Precompile the assets:
      • Non-Docker: RAILS_ENV=production bundle exec rails assets:precompile
      • Docker: The assets are already precompiled during the build step
    2. Restart all Mastodon processes
    3. Clear cache:
      • Non-Docker: RAILS_ENV=production bin/tootctl cache clear
      • Docker: docker-compose run --rm web bin/tootctl cache clear

    Translators

    • Duy (Vietnamese)
    • stan ionut (Romanian)
    • Besnik_b (Albanian)
    • Emanuel Pina (Portuguese)
    • regulartranslator (Portuguese, Brazilian)
    • ButterflyOfFire (Arabic; Kabyle; French)
    • adrmzz (Sardinian)
    • FรฉdiQuรฉbec (French)
    • GiorgioHerbie (Italian)
    • ๐Ÿ’… Marcin Mikoล‚ajczak (Polish)
    • ariasuni (French; Esperanto)
    • Thai Localization (Thai)
    • ๅฅˆๅœๆ‹‰ (Chinese Simplified)
    • Mentor Gashi (Albanian)
    • Xosรฉ M. (Galician)
    • axi (Finnish)
    • Selyan Slimane AMIRI (Kabyle)
    • Alix Rossi (Corsican)
    • Jeroen (Dutch)
    • SteinarK (Norwegian Nynorsk)
    • ThonyVezbe (Breton)
    • Hrach Mkrtchyan (Armenian)
    • Gwenn (Breton)
    • แฆแแŽขแŽตแซ ๐Ÿ˜ท (Spanish, Argentina)
    • Danial Behzadi (Persian)
    • spla (Catalan)
    • Rafael H L Moretti (Portuguese, Brazilian)
    • Jeong Arm (Korean; Esperanto)
    • koyu (German)
    • Yi-Jyun Pan (Chinese Traditional)
    • norayr (Armenian)
    • Alessandro Levati (Italian)
    • Sasha Sorokin (Russian; Catalan; Greek; Hungarian; Armenian; Albanian; Galician)
    • gagik_ (Armenian)
    • lamnatos (Greek)
    • Sveinn รญ Felli (Icelandic)
    • Zoltรกn Gera (Hungarian)
    • cybergene (Japanese)
    • Tagomago (Spanish)
    • Michal Stanke (Czech)
    • borys_sh (Ukrainian)
    • Ramdziana F Y (Indonesian)
    • Osoitz (Basque)
    • Maya Minatsuki (Japanese)
    • William(ั•)โฟ (Spanish)
    • BurekzFinezt (Serbian)
    • Evert Prants (Estonian)
    • ThibG (French)
    • Dewi (Breton)
    • Emyn-Russell Nt Nefydd (Welsh)
    • vishnuvaratharajan (Tamil)
    • tolstoevsky (Russian)
    • Diluns (Occitan)
    • Falling Snowdin (Vietnamese)
    • Marek ฤฝach (Slovak)
    • Balรกzs Meskรณ (Hungarian)
    • Ryo (Korean)
    • Roboron (Spanish)
    • StanleyFrew (French)
    • PPNplus (Thai)
    • Heimen Stoffels (Dutch)
    • Andrew (Romanian)
    • Ivรกns (Galician)
    • Carlos Solรญs (Esperanto)
    • Sokratis Alichanidis (Greek)
    • TS (Finnish)
    • SensDeViata (Ukrainian)
    • AzureNya (Chinese Simplified)
    • OctolinGamer (Portuguese, Brazilian)
    • ๅŒ—ไ‘“ๅฆ‚ๆณ• (Japanese)
    • ๐Ÿ’… Laura (Polish)
    • Imre Kristoffer Eilertsen (Norwegian)
    • Rikard Linde (Swedish)
    • Ali DemirtaลŸ (Turkish)
    • diorama (Italian)
    • Daniele Lira Mereb (Portuguese, Brazilian)
    • Goudarz Jafari (Persian)
    • psymyn (Hebrew)
    • v4vachan (Malayalam)
    • Sebastiรกn Andil (Slovak)
    • Khรณo (Chinese Traditional)
    • ZiriSut (Kabyle)
    • strubbl (German)
    • Reg3xp (Persian)
    • AlexKoala (Korean)
    • VSx86 (Russian)
    • Mo_der Steven (Chinese Simplified)
    • musix (Persian)
    • ใ‚ฎใƒฃใƒฉ (Chinese Simplified; Japanese)
    • Saederup92 (Danish)
    • mynameismonkey (Welsh)
    • omquylzu (Latvian)
    • Miro Rauhala (Finnish)
    • ็กซ้…ธ้ถ (Japanese)
    • siamano (Thai; Esperanto)
    • Viorel-Cฤƒtฤƒlin Rฤƒpiศ›eanu (Romanian)
    • Pachara Chantawong (Thai)
    • Balรกzs Meskรณ (Hungarian)
    • Steven Tappert (German)
    • Unmual (Spanish)
    • Zijian Zhao (Chinese Simplified)
    • Skew (French)
    • enolp (Asturian)
    • Yann Aguettaz (French)
    • Mick Onio (Asturian)
    • r3dsp1 (Chinese Traditional, Hong Kong)
    • Tianqi Zhang (Chinese Simplified)
    • piupiupiudiu (Chinese Simplified)
    • Padraic Calpin (Slovenian)
    • ใ‚‹ใ„ใƒผใญ (Japanese)
    • Belkacem Mohammed (Kabyle)
    • Miquel Sabatรฉ Solร  (Catalan)
    • serubeena (Swedish)
    • Solid Rhino (Dutch)
    • Rintan (Japanese)
    • ๆž—ๆฐดๆบถ (Chinese Simplified)
    • Tagada (French)
    • shafouz (Portuguese, Brazilian)
    • Tom_ (Czech)
    • OminousCry (Russian)
    • ALEM FARID (Kabyle)
    • Nathaรซl Noguรจs (French)
    • Robin van der Vliet (Esperanto)
    • twpenguin (Chinese Traditional)
    • Paz Galindo (Spanish)
    • ๅคœๆฅ“Yoka (Chinese Simplified)
    • ๐Ÿ’… mkljczk (Polish)
    • kiwi0 (Italian)
    • Esther (Portuguese)
    • Renato "Lond" Cerqueira (Portuguese, Brazilian)
    • ๐Ÿ’… igordrozniak (Polish)
    • Philipp Fischbeck (German)
    • GaggiX (Italian)
    • Allen Zhong (Chinese Simplified)
    • Albatroz Jeremias (Portuguese)
    • Nocta (French)
    • pezcurrel (Italian)
    • Aditoo17 (Czech)
    • ๆฃฎใฎๅญใƒชใ‚นใฎใƒŸใƒผใ‚ณใฎๅคงๅ†’้™บ (Japanese)
    • Doug (Portuguese, Brazilian)
    • Fleva (Sardinian)
  • v3.2.0.rc1 Changes

    July 15, 2020

    Mastodon

    Note: This is a release candidate. It is intended to be stable, but not guaranteed.

    ๐Ÿ”„ Changelog

    โž• Added

    • โž• Add SMTP_SSL environment variable (OmmyZhang)
    • โž• Add hotkey for toggling content warning input in web UI (ThibG)
    • โž• Add e-mail-based sign in challenge for users with disabled 2FA (Gargron)
      • If user tries signing in after:
      • Being inactive for a while
      • With a previously unknown IP
      • Without 2FA being enabled
      • Require to enter a token sent via e-mail before sigining in
    • โž• Add limit param to RSS feeds (noellabo)
    • โž• Add visibility param to share page (noellabo)
    • โž• Add blurhash to link previews (ThibG, ThibG, ThibG, Sasha-Sorokin, Sasha-Sorokin, ThibG, ThibG, ThibG)
      • In web UI, toots cannot be marked as sensitive unless there is media attached
      • However, it's possible to do via API or ActivityPub
      • Thumnails of link previews of such posts now use blurhash in web UI
      • The Card entity in REST API has a new blurhash attribute
    • โž• Add support for summary field for media description in ActivityPub (ThibG)
    • โž• Add hints about incomplete remote content to web UI (Gargron, noellabo)
    • โž• Add personal notes for accounts (ThibG, Gargron, Sasha-Sorokin)
      • To clarify, these are notes only you can see, to help you remember details
      • Notes can be viewed and edited from profiles in web UI
      • New REST API: POST /api/v1/accounts/:id/note with comment param
      • The Relationship entity in REST API has a new note attribute
    • โž• Add Helm chart (dunn, dunn, dunn)
    • โž• Add customizable thumbnails for audio and video attachments (Gargron, Gargron, Gargron, Gargron, ThibG, ThibG)
      • Metadata (album, artist, etc) is no longer stripped from audio files
      • Album art is automatically extracted from audio files
      • Thumbnail can be manually uploaded for both audio and video attachments
      • Media upload APIs now support thumbnail param
      • On POST /api/v1/media and POST /api/v2/media
      • And on PUT /api/v1/media/:id
      • ActivityPub representation of media attachments represents custom thumbnails with an icon attribute
    • โž• Add color extraction for thumbnails (Gargron, ThibG)
      • The meta attribute on the Media Attachment entity in REST API can now have a colors attribute which in turn contains three hex colors: background, foreground, and accent
      • The background color is chosen from the most dominant color around the edges of the thumbnail
      • The foreground and accent colors are chosen from the colors that are the most different from the background color using the CIEDE2000 algorithm
      • The most satured color of the two is designated as the accent color
      • The one with the highest W3C contrast is designated as the foreground color
      • If there are not enough colors in the thumbnail, new ones are generated using a monochrome pattern
    • โž• Add a visibility indicator to toots in web UI (noellabo, highemerly)
    • Add tootctl email_domain_blocks (tateisu, Gargron)
    • โž• Add "Add new domain block" to header of federation page in admin UI (ariasuni)
    • โž• Add ability to keep emoji picker open with ctrl+click in web UI (bclindner, noellabo)

    ๐Ÿ”„ Changed

    • ๐Ÿ”„ Change .env.production.sample to be leaner and cleaner (Gargron)
      • It was overloaded as de-facto documentation and getting quite crowded
      • Defer to the actual documentation while still giving a minimal example
    • ๐Ÿš€ Change tootctl search deploy to work faster and display progress (Gargron)
    • ๐Ÿ”„ Change User-Agent of link preview fetching service to include "Bot" (Gargron)
      • Some websites may not render OpenGraph tags into HTML if that's not the case
    • ๐Ÿ”„ Change behaviour to carry blocks over when someone migrates their followers (ThibG)
    • ๐Ÿ”„ Change volume control and download buttons in web UI (Gargron)
    • ๐Ÿ”„ Change design of audio players in web UI (Gargron, ThibG, Gargron, ThibG, Gargron)
    • ๐Ÿ”„ Change reply filter to never filter own toots in web UI (ThibG)
    • ๐Ÿ”„ Change boost button to no longer serve as visibility indicator in web UI (noellabo)
    • ๐Ÿ”„ Change contrast of flash messages (cchoi12)
    • ๐Ÿ”„ Change wording from "Hide media" to "Hide image/images" in web UI (ariasuni)
    • ๐Ÿ”„ Change appearence of settings pages to be more consistent (ariasuni)
    • ๐Ÿ”„ Change "Add media" tooltip to not include long list of formats in web UI (ariasuni)
    • ๐Ÿ”„ Change how badly contrasting emoji are rendered in web UI (leo60228, ThibG, mfmfuyu, ThibG)
    • ๐Ÿ”„ Change structure of unavailable content section on about page (ariasuni)
    • ๐Ÿ”„ Change behaviour to accept ActivityPub activities relayed through group actor (noellabo)

    โœ‚ Removed

    • โœ‚ Remove the terms "blacklist" and "whitelist" from UX (Gargron, mayaeh)
      • Environment variables changed (old versions continue to work):
      • WHITELIST_MODE โ†’ LIMITED_FEDERATION_MODE
      • EMAIL_DOMAIN_BLACKLIST โ†’ EMAIL_DOMAIN_DENYLIST
      • EMAIL_DOMAIN_WHITELIST โ†’ EMAIL_DOMAIN_ALLOWLIST
      • CLI option changed:
      • tootctl domains purge --whitelist-mode โ†’ tootctl domains purge --limited-federation-mode
    • โœ‚ Remove some unnecessary database indices (lfuelling, noellabo)
    • โœ‚ Remove unnecessary Node.js version upper bound (ykzts)

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fix large shortened numbers (like 1.2K) using incorrect pluralization (Sasha-Sorokin)
    • ๐Ÿ›  Fix streaming server trying to use empty password to connect to Redis when REDIS_PASSWORD is given but blank (ThibG)
    • ๐Ÿ›  Fix being unable to unboost posts when blocked by their author (ThibG)
    • ๐Ÿ›  Fix account domain block not properly unfollowing accounts from domain (Gargron)
    • ๐Ÿ›  Fix removing a domain allow wiping known accounts in open federation mode (ThibG)
    • ๐Ÿ›  Fix blocks and mutes pagination in web UI (ThibG)
    • ๐Ÿ›  Fix new posts pushing down origin of opened dropdown in web UI (ThibG)
    • ๐Ÿ›  Fix timeline markers not being saved sometimes (ThibG, ThibG, ThibG)
    • ๐Ÿ›  Fix CSV uploads being rejected (noellabo)
    • ๐Ÿ›  Fix incompatibility with ElasticSearch 7.x (noellabo)
    • ๐Ÿ›  Fix being able to search posts where you're in the target audience but not actively mentioned (noellabo)
    • ๐Ÿ›  Fix non-local posts appearing on local-only hashtag timelines in web UI (noellabo)
    • ๐Ÿ›  Fix tootctl media remove-orphans choking on unknown files in storage (Gargron)
    • ๐Ÿ›  Fix tootctl upgrade storage-schema misbehaving (Gargron, angristan)
      • Fix it marking records as upgraded even though no files were moved
      • Fix it not working with S3 storage
      • Fix it not working with custom emojis
    • ๐Ÿ›  Fix GIF reader raising incorrect exceptions (ThibG)
    • ๐Ÿ›  Fix hashtag search performing account search as well (ThibG)
    • ๐Ÿ›  Fix Webfinger returning wrong status code on malformed or missing param (ThibG)
    • ๐Ÿ›  Fix rake mastodon:setup error when some environment variables are set (ThibG)
    • ๐Ÿ›  Fix admin page crashing when trying to block an invalid domain name in admin UI (ThibG)
    • ๐Ÿ›  Fix unsent toot confirmation dialog not popping up in single column mode in web UI (ThibG)
    • ๐Ÿ›  Fix performance of follow import (noellabo)
      • Reduce timeout of Webfinger requests to that of other requests
      • Use circuit breakers to stop hitting unresponsive servers
      • Avoid hitting servers that are already known to be generally unavailable
    • ๐Ÿ›  Fix filters ignoring media descriptions (BenLubar)
    • ๐Ÿ›  Fix soem actions on custom emojis leading to cryptic errors in admin UI (ThibG)
    • ๐Ÿ›  Fix ActivityPub serialization of replies when some of them are URIs (ThibG)
    • ๐Ÿ›  Fix rake mastodon:setup choking on environment variables containing % (ThibG)
    • ๐Ÿ›  Fix account redirect confirmation message talking about moved followers (ThibG)
    • ๐Ÿ›  Fix avatars having the wrong size on public detailed status pages (ThibG)
    • ๐Ÿ›  Fix various issues around OpenGraph representation of media (Gargron)
      • Pages containing audio no longer say "Attached: 1 image" in description
      • Audio attachments now represented as OpenGraph og:audio
      • The twitter:player page now uses Mastodon's proper audio/video player
      • Audio/video buffered bars now display correctly in audio/video player
      • Volume and progress bars now respond to movement/move smoother
    • ๐Ÿ›  Fix audio/video/images/cards not reacting to window resizes in web UI (Gargron)
    • ๐Ÿ›  Fix very wide media attachments resulting in too thin a thumbnail in web UI (ThibG)
    • ๐Ÿ›  Fix crash when merging posts into home feed after following someone (ThibG)
    • ๐Ÿ›  Fix unique username constraint for local users not being enforced in database (ThibG)
    • ๐Ÿ›  Fix unnecessary gap under video modal in web UI (mfmfuyu)
    • ๐Ÿ›  Fix 2FA and sign in token pages not respecting user locale (mfmfuyu)
    • Fix unapproved users being able to view profiles when in limited-federation mode and requiring approval for sign-ups (ThibG)
    • ๐Ÿ›  Fix initial audio volume not corresponding to what's displayed in audio player in web UI (ThibG)
    • ๐Ÿ›  Fix timelines sometimes jumping when closing modals in web UI (ThibG)
    • ๐Ÿ›  Fix memory usage of downloading remote files (Gargron, Gargron)
      • Don't read entire file (up to 40 MB) into memory
      • Read and write it to temp file in small chunks
    • ๐Ÿ›  Fix inconsistent account header padding in web UI (trwnh)
    • ๐Ÿ›  Fix Thai being skipped from language detection (Sasha-Sorokin)
      • Since Thai has its own alphabet, it can be detected more reliably
    • ๐Ÿ›  Fix broken hashtag column options styling in web UI (ThibG)
    • ๐Ÿ›  Fix pointer cursor being shown on toots that are not clickable in web UI (arielrodrigues)
    • ๐Ÿ›  Fix lock icon not being shown when locking account in profile settings (ThibG)
    • ๐Ÿ›  Fix domain blocks doing work the wrong way around (ThibG)
      • Instead of suspending accounts one by one, mark all as suspended first (quick)
      • Only then proceed to start removing their data (slow)
      • Clear out media attachments in a separate worker (slow)

    โฌ†๏ธ Upgrade notes

    โฌ†๏ธ > As always, make sure you have backups of the database before performing any upgrades. If you are using docker-compose, this is how a backup command might look: docker exec mastodon_db_1 pg_dump -Fc -U postgres postgres > name_of_the_backup.dump

    ๐Ÿณ Non-Docker only:

    • Install dependencies: bundle install and yarn install

    ๐Ÿณ Both Docker and non-Docker:

    1. Run database migrations:
      • Non-Docker: RAILS_ENV=production bundle exec rails db:migrate
      • Docker: docker-compose run --rm web rails db:migrate ๐Ÿฑ 2. Precompile the assets:
      • Non-Docker: RAILS_ENV=production bundle exec rails assets:precompile
      • Docker: The assets are already precompiled during the build step
    2. Restart all Mastodon processes

    Translators

    TBA

  • v3.1.5 Changes

    July 07, 2020

    Mastodon

    ๐Ÿ”„ Changelog

    ๐Ÿ”’ Security

    • ๐Ÿ›  Fix media attachment enumeration (ThibG)
    • ๐Ÿ”„ Change rate limits for various paths (Gargron)
    • ๐Ÿ›  Fix other sessions not being logged out on password change (Gargron)

    โฌ†๏ธ Upgrade notes

    Because this is a backport, it is not available with git pull. Use git fetch && git checkout v3.1.5

    ๐Ÿณ Both Docker and non-Docker:

    1. Restart all Mastodon processes