github mastodon/mastodon v4.0.0rc1

latest releases: v4.1.16, v4.2.8, v3.5.19...
pre-release18 months ago

Mastodon

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

Upgrade overview

This release contains upgrade notes that deviate from the norm:

ℹ️ Requires two-step database migration process for zero-downtime deployment
ℹ️ Some migrations may take a long time to run
ℹ️ Behaviour of AUTHORIZED_FETCH changed

For more information, scroll down to the upgrade instructions section.

Changelog

Some of the features in this release have been funded through the NGI0 Discovery Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 825322.

Added

Changed

Removed

  • Remove setting that disables account deletes (Gargron)
  • Remove digest e-mails (Gargron)
  • Remove unnecessary sections from welcome e-mail (Gargron)
  • Remove item titles from RSS feeds (Gargron)
  • Remove volume number from hashtags in web UI (Gargron)
  • Remove Nanobox configuration (tonyjiang)

Fixed

  • Fix featured tags not saving preferred casing (Gargron)
  • Fix language not being saved when editing status (Gargron)
  • Fix not being able to input featured tag with hash symbol (Gargron)
  • Fix user clean-up scheduler crash when an unconfirmed account has a moderation note (ClearlyClaire)
  • Fix being unable to withdraw follow request when confirmation modal is disabled in web UI (ClearlyClaire)
  • Fix inaccurate admin log entry for re-sending confirmation e-mails (ClearlyClaire)
  • Fix edits not being immediately reflected (ClearlyClaire)
  • Fix bookmark import stopping at the first failure (ClearlyClaire)
  • Fix account action type validation (Gargron)
  • Fix upload progress not communicating processing phase in web UI (Gargron)
  • Fix wrong host being used for custom.css when asset host configured (Gargron)
  • Fix account migration form ever using outdated account data (Gargron)
  • Fix error when uploading malformed CSV import (Gargron)
  • Fix avatars not using image tags in web UI (Gargron)
  • Fix handling of duplicate and out-of-order notifications in web UI (ClearlyClaire)
  • Fix reblogs being discarded after the reblogged status (ClearlyClaire)
  • Fix indexing scheduler trying to index when Elasticsearch is disabled (Gargron)
  • Fix n+1 queries when rendering initial state JSON (Gargron)
  • Fix n+1 query during status removal (Gargron)
  • Fix OCR not working due to Content Security Policy in web UI (prplecake)
  • Fix nofollow rel being removed in web UI (Gargron)
  • Fix language dropdown causing zoom on mobile devices in web UI (Gargron)
  • Fix button to dismiss suggestions not showing up in search results in web UI (ClearlyClaire)
  • Fix language dropdown sometimes not appearing in web UI (Gargron)
  • Fix quickly switching notification filters resulting in empty or incorrect list in web UI (ClearlyClaire, ClearlyClaire)
  • Fix media modal link button in web UI (ClearlyClaire)
  • Fix error upon successful account migration (Gargron)
  • Fix negatives values in search index causing queries to fail (Gargron, Gargron)
  • Fix error when searching for invalid URL (ClearlyClaire)
  • Fix IP blocks not having a unique index (Gargron)
  • Fix remote account in contact account setting not being used (Gargron)
  • Fix swallowing mentions of unconfirmed/unapproved users (ClearlyClaire)
  • Fix incorrect and slow cache invalidation when blocking domain and removing media attachments (ClearlyClaire)
  • Fix HTTPs redirect behaviour when running as I2P service (gi-yt)
  • Fix deleted pinned posts potentially counting towards the pinned posts limit (ClearlyClaire)
  • Fix compatibility with OpenSSL 3.0 (ClearlyClaire)
  • Fix error when a remote report includes a private post the server has no access to (ClearlyClaire)
  • Fix suspicious sign-in mails never being sent (ClearlyClaire)
  • Fix fallback locale when somehow user's locale is an empty string (tribela)
  • Fix avatar/header not being deleted locally when deleted on remote account (tribela)
  • Fix missing , in Blurhash validation (noellabo)
  • Fix order by most recent not working for relationships page in admin UI (tribela)
  • Fix uncaught error when invalid date is supplied to API (Gargron)
  • Fix REST API sometimes returning HTML on error (ClearlyClaire)
  • Fix ambiguous column names in tootctl media refresh (tribela)
  • Fix ambiguous column names in tootctl search deploy (mashirozx)
  • Fix CDN_HOST not being used in some asset URLs (tribela)
  • Fix CAS_DISPLAY_NAME, SAML_DISPLAY_NAME and OIDC_DISPLAY_NAME being ignored (ClearlyClaire)
  • Fix various typos in comments throughout the codebase (luzpaz)

Upgrade notes

To get the code for v4.0.0rc1, use git fetch && git checkout v4.0.0rc1.

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

Update steps

The following instructions are for updating from 3.5.3.

If you are upgrading directly from an earlier release, please carefully read the upgrade notes for the skipped releases as well, as they often require extra steps such as database migrations.

Non-Docker only:

  • The recommended Ruby version has been bumped to 3.0.4. You can upgrade, or you can continue using the old version by overwriting the ``.ruby-version file with e.g. 3.0.3 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
  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

Don't miss a new mastodon release

NewReleases is sending notifications on new releases.