Skip to content

@Gargron Gargron released this Sep 10, 2017 · 5659 commits to master since this release


ActivityPub is a new federated web protocol. From this release onward it is the primary protocol of Mastodon. We will remain compatible with OStatus for the foreseeable future, but version 2.0 of Mastodon will stop sending private toots over it. After installation, accounts in the database will slowly start upgrading. One of the immediate and obvious perks of this new protocol is more complete conversation views on every instance (presuming all participants are upgraded). For more, see this blog post.


  • During Docker build: Use multiple cores in bundler and make (#4544)
  • Web perf: Cache status height (#4439)
  • Fixes to the about page (#4554, #4548, #4682)
  • Add missing content type on throttled responses (#4558)
  • Add coalesce option to avatar and header convert processor (#4552)
  • Add missing @ to the onboarding modal (#4560)
  • Add missing scroll to top to some column headers (#4563)
  • Add favourited toot to favourites column (#4562)
  • Remove toot from favorites column when unfavorited (#4597)
  • Fix emoji picker scrollbar style (#4572)
  • Extend Devise remember_me longevity to 1 year instead of 2 weeks (#4587)
  • Fix search (regression from #4589) (#4594)
  • Fix require_user! behavior when not logged in (#4604)
  • Don't send Link header when prev and next links are empty (#4633)
  • Re-add missing token authorization for /api/v1/verify_credentials (#4650)
  • Refactored streaming connections (#4645)
  • Do not try to re-subscribe to unsubscribed accounts (#4653)
  • Fix visual line-break glitch with .invisible parts of links (#4655)
  • Increase contrast in landing pages (#4567)
  • Periodically remove expired PuSH subscribers (#4654)
  • Disable babel-loader cache when in development environment (#4684)
  • Don't load Roboto webfont when system font is used in the app (#4591)
  • Automatically authorize pending incoming follow requests after unlocking account (#4658)
  • Adjust RTL styles (#4712)
  • Do not scroll the columns area due to redirection (#4541)
  • Remove unnecessary indices (#4738)
  • Add close tag of iframe for OEmbed response (#4745)
  • Docker: Update to Alpine 3.6 (#4747)
  • Make first use less overwhelming with browser permissions: Ask for desktop notifications after 1 minute, ask to register protocol handler after 5 minutes (#4760)
  • Use system's default font (when selected) on non web UI pages too (#4553)
  • Link previews storage and fetching reworked/optimized (#4642)
  • Fix text position of "sensitive content" spoiler in Safari (Mac/iPhone) (#4570)
  • Make "unfollow" remove pending outgoing follow requests too (#4781)
  • Validate presence of data in imports (#4782)
  • Fix short number locales (#4790)
  • Fix a problem that notification column goes to top (#4792)
  • Use correct syntax for content preloading (#4798)
  • Fix streaming url to lowercase (#4804)
  • Show pinned statuses only in the top of the profile page (#4803)
  • Fix some ActivityPub JSON bugs (#4796)
  • Add new index on notifications to make filtering faster (#4750)
  • Adjust status embeds (#4808)
  • Restore instant follow in API response when account is unlocked (#4799)
  • Fix mentions in direct statuses not being delivered via AP (#4806)
  • Do not execute the job with the same arguments as the retry job (#4814)
  • Fix text position of NSFW for video file (#4819)
  • Fix scroll position (#4821)
  • Add Smartphone screen favourite back button and adjust styles (#4813)
  • Make new statuses use the same URI format in both ActivityPub and OStatus (fixes threading issue in OStatus) (#4815)
  • Fix rake task compatibility with Ruby 2.3.x (#4832)
  • Report comment: limit to 1000 characters (#4833)
  • Enable UniqueRetryJobMiddleware even when called from sidekiq worker (#4836)
  • Fix counting of local statuses for stats (#4839)
  • Fix language filter codes (#4841)
  • Handle stream_entry URL correctly in ActivityPub (#4854)
  • Refresh timeline after toot while the timeline is disconnected (#4858)
  • When visibility missing from API call to toot, fallback to user preference (#4861)
  • Check if already follow-requested from FollowService to avoid error (#4855)
  • Scrollable tables in settings pages (#4857)
  • Add missing reject_media check before avatar download via ActivityPub (#4862)
  • Fix errors preventing UnsubscribeService from working (#4866)
  • Set fallback address when empty notification address (#4868)
  • Fix dimensions of loading component for compose drawer (#4872)
  • Hide modal loading screen for media/video/boost/confirm/actions modals (#4873)


  • 🎉 🎉 ActivityPub 🎉 🎉
  • Include the stats from the /about/more page in API response about instance (#4074)
  • Add protocol handler. Mastodon can now respond to URLs that begin with web+mastodon://, e.g. specially crafted "follow me" buttons would automatically open your correct instance from any webpage (#4511)
    • web+mastodon://follow? opens follow dialog for alice
    • web+mastodon://share?text=Lorem+ipsum opens new toot dialog with preset text "Lorem ipsum"
  • Redesign public profiles. Add no-replies, with-replies, only-media filters (#4608, #4711, #4713)
  • Developer UI for OAuth applications (#2758, #4664, #4671)
  • Add Mastodon::Source.url for forks (#4643)
  • Pinned statuses (#4675, #4690, #4817)
  • Update status embeds with better URLs, better design, branded follow button using protocol handler (#4742)
  • "Embed" modal in web UI (#4748, #4759, #4773)
  • Add script to make embedded iframes autosize (#4853)
  • OpenStack Swift support as alternative to S3 📎 (#2322, #4816)
  • "Mute conversation" option on all own toots, not just in notifications (#4844)
  • Default follows for new users (#4871)
    New users automatically follow certain accounts upon e-mail confirmation. Configurable with admin site setting. When nothing else set, defaults to admins.

Upgrade notes:

Non-Docker only:

  • Dependency updates: bundle install and yarn install

Both Docker and non-Docker:

  • This release includes database migrations, that means you need to run RAILS_ENV=production bundle exec rails db:migrate (in Docker: docker-compose run --rm web rails db:migrate).
  • This release includes changes to assets, that means you need to run RAILS_ENV=production bundle exec rails assets:precompile (in Docker: docker-compose run --rm web rails assets:precompile)
  • After database migrations, clean out old preview cards thumbnails with RAILS_ENV=production bundle exec rails mastodon:maintenance:remove_deprecated_preview_cards (in Docker: docker-compose run --rm web rails mastodon:maintenance:remove_deprecated_preview_cards)

Contributors to this release:


Assets 2
You can’t perform that action at this time.