Skip to content

@Gargron Gargron released this Jan 20, 2019 · 3364 commits to master since this release




  • Add link for adding a user to a list from their profile (namelessGonbai)
  • Add joining several hashtags in a single column (gdpelican)
  • Add volume sliders for videos (sumdog)
  • Add a tooltip explaining what a locked account is (pawelngei)
  • Add preloaded cache for common JSON-LD contexts (ThibG)
  • Add profile directory (Gargron)
  • Add setting to not group reblogs in home feed (ThibG)
  • Add admin ability to remove a user's header image (ThibG)
  • Add account hashtags to ActivityPub actor JSON (Gargron)
  • Add error message for avatar image that's too large (sumdog)
  • Add notification quick-filter bar (pawelngei)
  • Add new first-time tutorial (Gargron)
  • Add moderation warnings (Gargron)
  • Add emoji codepoint mappings for v11.0 (Gargron)
  • Add REST API for creating an account (Gargron)
  • Add support for Malayalam in language filter (tachyons)
  • Add exclude_reblogs option to account statuses API (Gargron)
  • Add local followers page to admin account UI (chr-1x)
  • Add healthcheck commands to docker-compose.yml (BenLubar)
  • Add handler for Move activity to migrate followers (Gargron)
  • Add CSV export for lists and domain blocks (Gargron)
  • Add tootctl accounts follow ACCT (Gargron)
  • Add scheduled statuses (Gargron)
  • Add immutable caching for S3 objects (nolanlawson)
  • Add cache to custom emojis API (Gargron)
  • Add preview cards to non-detailed statuses on public pages (Gargron)
  • Add mod and moderator to list of default reserved usernames (Gargron)
  • Add quick links to the admin interface in the web UI (ThibG)
  • Add tootctl domains crawl (Gargron)
  • Add attachment list fallback to public pages (ThibG)
  • Add tootctl --version (Gargron)
  • Add information about how to opt-in to the directory on the directory (Gargron)
  • Add timeouts for S3 (Gargron)
  • Add support for non-public reblogs from ActivityPub (Gargron)
  • Add sending of Reject activity when sending a Block activity (ThibG)


  • Temporarily pause timeline if mouse moved recently (lmorchard)
  • Change the password form order (mayaeh)
  • Redesign admin UI for accounts (Gargron, Gargron)
  • Redesign admin UI for instances/domain blocks (Gargron)
  • Swap avatar and header input fields in profile page (ThibG)
  • When posting in mobile mode, go back to previous history location (ThibG)
  • Split out is_changing_upload from is_submitting (ThibG)
  • Back to the getting-started when pins the timeline. (kedamaDQ)
  • Allow unauthenticated REST API access to GET /api/v1/accounts/:id/statuses (Gargron)
  • Limit maximum visibility of local silenced users to unlisted (ThibG)
  • Change API error message for unconfirmed accounts (noellabo)
  • Change the icon to "reply-all" when it's a reply to other accounts (mayaeh)
  • Do not ignore federated reports targetting already-reported accounts (ThibG)
  • Upgrade default Ruby version to 2.6.0 (Gargron)
  • Change e-mail digest frequency (Gargron)
  • Change Docker images for Tor support in docker-compose.yml (Sir-Boops)
  • Display fallback link card thumbnail when none is given (Gargron)
  • Change account bio length validation to ignore mention domains and URLs (Gargron)
  • Use configured contact user for "anonymous" federation activities (yukimochi)
  • Change remote interaction dialog to use specific actions instead of generic "interact" (Gargron)
  • Always re-fetch public key when signature verification fails to support blind key rotation (ThibG)
  • Make replies to boosts impossible, connect reply to original status instead (valerauko)
  • Change e-mail MX validation to check both A and MX records against blacklist (Gargron)
  • Hide floating action button on search and getting started pages (tmm576)
  • Redesign public hashtag page to use a masonry layout (Gargron)
  • Use summary as summary instead of content warning for converted ActivityPub objects (Gargron)
  • Display a double reply arrow on public pages for toots that are replies (ThibG)
  • Change admin UI right panel size to be wider (Kjwon15)


  • Remove links to (non-functional) (Gargron)
  • Remove LD-Signatures from activities that do not need them (ThibG)


  • Remove unused computation of reblog references from updateTimeline (ThibG)
  • Fix loaded embeds resetting if a status arrives from API again (ThibG)
  • Fix race condition causing shallow status with only a "favourited" attribute (ThibG)
  • Remove intermediary arrays when creating hash maps from results (Gargron)
  • Extract counters from accounts table to account_stats table to improve performance (Gargron)
  • Change identities id column to a bigint (Gargron)
  • Fix conversations API pagination (ThibG)
  • Improve account suspension speed and completeness (Gargron)
  • Fix thread depth computation in statuses_controller (ThibG)
  • Fix database deadlocks by moving account stats update outside transaction (ThibG)
  • Escape HTML in profile name preview in profile settings (pawelngei)
  • Use same CORS policy for /@:username and /users/:username (ThibG)
  • Make custom emoji domains case insensitive (Esteth)
  • Various fixes to scrollable lists and media gallery (ThibG)
  • Fix bootsnap cache directory being declared relatively (Gargron)
  • Fix timeline pagination in the web UI (ThibG)
  • Fix padding on dropdown elements in preferences (ThibG)
  • Make avatar and headers respect GIF autoplay settings (ThibG)
  • Do no retry Web Push workers if the server returns a 4xx response (Gargron)
  • Minor scrollable list fixes (ThibG)
  • Ignore low-confidence CharlockHolmes guesses when parsing link cards (ThibG)
  • Fix tootctl accounts rotate not updating public keys (Gargron)
  • Fix CSP / X-Frame-Options for media players (jomo)
  • Fix unnecessary loadMore calls when the end of a timeline has been reached (ThibG)
  • Skip mailer job retries when a record no longer exists (Gargron)
  • Fix composer not getting focus after reply confirmation dialog (ThibG)
  • Fix signature verification stoplight triggering on non-timeout errors (Gargron)
  • Fix ThreadResolveWorker getting queued with invalid URLs (Gargron)
  • Fix crash when clearing uninitialized timeline (ThibG)
  • Avoid duplicate work by merging ReplyDistributionWorker into DistributionWorker (ThibG)
  • Skip full text search if it fails, instead of erroring out completely (Kjwon15)
  • Fix profile metadata links not verifying correctly sometimes (shrft)
  • Ensure blocked user unfollows blocker if Block/Undo-Block activities are processed out of order (ThibG)
  • Fix unreadable text color in report modal for some statuses (Gargron)
  • Stop GIFV timeline preview explicitly when it's opened in modal (kedamaDQ)
  • Fix scrollbar width compensation (ThibG)
  • Fix race conditions when processing deleted toots (ThibG)
  • Fix SSO issues on WebKit browsers by disabling Same-Site cookie again (moritzheiber)
  • Fix empty OEmbed error (renatolond)
  • Fix drag & drop modal not disappearing sometimes (hinaloe)
  • Fix statuses with content warnings being displayed in web push notifications sometimes (ThibG)
  • Fix scroll-to-detailed status not working on public pages (ThibG)
  • Fix media modal loading indicator (ThibG)
  • Fix hashtag search results not having a permalink fallback in web UI (ThibG)
  • Fix slightly cropped font on settings page dropdowns when using system font (ariasuni)
  • Fix not being able to drag & drop text into forms (tmm576)


  • Sanitize and sandbox toot embeds in web UI (ThibG)
  • Add tombstones for remote statuses to prevent replay attacks (ThibG)

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.6.0. You can upgrade, or you can continue using the old version by overwriting the .ruby-version file with e.g. 2.5.3 or 2.5.1 which were recommended previously
  • Update rubygems: gem update --system
  • 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
  3. Restart all Mastodon processes
  4. 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
  5. Restart all Mastodon processes

Why? These migrations are cumbersome but are intended to improve performance and slow down database growth long-term. 🙏


If your PostgreSQL version is below 9.5, it is by now very old, and is missing features that would make the database migrations included in this release run fast. A much slower fallback is included, but you might want to consider upgrading your PostgreSQL database instead. If you choose to manually skip the migration, all account-related counters will be reset to zero, which is not advised.


Contributors to this release: 0xflotus, Aditoo17, ariasuni, ashleyhull-versent, BenLubar, chr-1x, Esteth, fwenzel, Gargron, hinaloe, jomo, kedamaDQ, Kjwon15, m4sk1n, mayaeh, mbugowski, moritzheiber, noellabo, nolanlawson, pawelngei, pointlessone, Quenty31, remram44, renatolond, Reverite, shrft, Sir-Boops, sumdog, tachyons, ThibG, tmm576, ykzts, ysksn, yukimochi, zunda

Translators for this release: adrianbblk, Alix D. R., Antonis, avndp, azenet, Branko Kokanovic, Burekz Finezt, ButterflyOfFire, carl morris, codl, Daniel, Eirworks, Enol P., Ivan Pleva, Jaz-Michael King, Jeong Arm, jeroenpraat, koyu, Kristijan Tkalec, Kumasun Morino, lilo, Lorem Ipsum, Marcin Mikołajczak, Marek Ľach, Masoud Abkenar, mayaeh, Muhammad Nur Hidayat (MNH48), Mélanie Chauvel, osapon, Osoitz, Quenti2, Quentí, Ranjith Tellakula, Rasmus Sæderup, Renato "Lond" Cerqueira, rscmbbng, spla, Vanege, Xose M., 小鳥遊まりあ

Assets 2