github mastodon/mastodon v4.6.0-beta.1

pre-release4 hours ago

Mastodon

Warning

This is a pre-release! This has not been as widely tested as regular releases, although it is still tested on mastodon.social and some other servers. If you update to this release, you will not be able to safely downgrade to the existing stable releases. You will, however, be able to upgrade to later nightly releases or pre-releases, as well as the upcoming 4.6.0 stable release.

Upgrade overview

This release contains upgrade notes that deviate from the norm:

⚠️ The minimum supported version for Ruby has been bumped to 3.3
⚠️ The minimum supported version for Node.JS has been bumped to 22
⚠️ The minimum supported version for FFMpeg has been bumped to 5.1
⚠️ ImageMagick support has been dropped, libvips is required
⚠️ Custom themes need to be updated
ℹ️ Requires assets recompilation
ℹ️ Requires streaming server restart
ℹ️ Requires database migrations

For more information, view the complete release notes and scroll down to the upgrade instructions section.

Changelog

Added

Changed

Removed

  • Remove support for EOL Node version 20 (#38926 by @mjankowski)
  • Remove support for Ruby 3.2 (#37476 by @mjankowski)
  • Remove support for ENABLE_SIDEKIQ_UNIQUE_JOBS_UI (#38340 by @ClearlyClaire)
  • Remove support for ImageMagick (#37488 by @mjankowski)

Fixed

  • Fix accessibility issues in web UI (#37250, #38006, #38033, #38188, #38230, #38252, #38257, #38285, #38293, #38362, #38387, #38459, #38796, #38801, #39098, #39111, #39120, #39129, #39133, #39134, #39144, #39145, #39149, #39164, #39165, #39169, and #39181 by @ChaosExAnima and @diondiondion)
  • Fix processing some link previews where text is language-tagged (#39190 by @zunda)
  • Fix error when “New trends” email is sent at the same time trends are recomputed (#39122 by @arte7)
  • Fix hover card opening even when not preceded by mouse movement in web UI (#39166 by @diondiondion)
  • Fix ominous "Moments remaining" timestamp in web UI (#38488 and #38689 by @ChaosExAnima and @MitarashiDango)
  • Fix filters not being applied to search results in web UI (#36346 by @ClearlyClaire)
  • Fix error when visiting non-public hashtag timelines (#36961 by @diondiondion)
  • Fix duplicate favourite/boost counters in some languages (#36844 by @ChaosExAnima)
  • Fix unblocking domain from blocked domains column not updating the list in web UI (#38882 by @tribela)
  • Fix profile dropdown menu sometimes ending with a separator in web UI (#38481 by @mkljczk)
  • Fix short numbers rounding up instead of truncating in web UI (#38114 by @serranodfm)
  • Fix directory showing load more button when no more profiles exist in web UI (#37465 by @heathdutton)
  • Fix focus restoration after closing some modals in web UI (#37424 by @MegaManSec)
  • Fix video modals being pushed down on mobile in web UI (#37421 by @ChaosExAnima)
  • Fix outer page margins when viewport width equals content width in web UI (#36733 by @diondiondion)
  • Fix announcement margin when in advanced web UI (#36714 by @ChaosExAnima)
  • Fix navigation overflow issue in advanced web UI (#39178 by @diondiondion)
  • Fix stale merging stale account from cached instance API response in web UI (#37666 by @ChaosExAnima)
  • Fix HTML lang attribute being stripped out of remote posts (#39114 by @artemist)
  • Fix remote posts with large media descriptions being rejected (#39135 by @ClearlyClaire)
  • Fix some occurrence of PostgreSQL log pollution when processing new hashtags (#35792 by @oelison)
  • Fix replica database not being used when REPLICA_DB_HOST is used but neither REPLICA_DB_NAME nor REPLICA_DATABASE_URL (#37240 by @smiba)
  • Fix remote media attachment thumbnails not being stored in the cache/ directory (#36911 by @shugo)
  • Fix race condition when processing posts twice with the same idempotency key (#37879 by @ClearlyClaire)
  • Fix various missing translation strings (#37671, #37838, #37078, #37371, and #37827 by @ClearlyClaire, @mjankowski, and @valtlai)
  • Fix last post time for remote accounts not being accurately tracked (#37619 by @ClearlyClaire)
  • Fix filtering of mentions from filtered-on-their-origin-server accounts (#37583 by @ClearlyClaire)
  • Fix irrelevant remote accounts being passed through to local fan-out worker (#37589 by @ClearlyClaire)
  • Fix required field markers being displayed on fields that cannot be empty anyway in settings (#37291 by @diondiondion)
  • Fix thumbnails for links from The Guardian (and possibly other CDNs that check URL hashes) not showing up (#36139 by @phocks)
  • Fix mastodon-async-refresh response header not being exposed through CORS (#38914 by @mkljczk)
  • Fix FASP availability being incorrectly updated (#38818 by @oneiros)
  • Fix use of deprecated vsync FFmpeg option, using fps_mode instead (FFmpeg >= 5.1 now required) (#38198 by @mjankowski)
  • Fix unnecessary downcasing of some words in admin UI (#37364 by @ClearlyClaire)
  • Fix delivery worker counting unsalvageable HTTP errors as successes (#37235 by @shleeable)
  • Fix streaming heartbeat comment not being its own event (#37389 by @ClearlyClaire)
  • Fix posts with edited out media attachments being returned in GET /api/v1/accounts/:id/statuses?only_media=true (#37363 by @ClearlyClaire)
  • Fix wrong media attachment URLs being returned from DELETE /api/v1/statuses/:id (#35880 by @dbarabashh)
  • Fix hashtag matching by replacing negative look-behind with positive look-behind (#37684 and #38212 by @ClearlyClaire)
  • Fix discovery of ActivityPub representation from HTML tags in presence of a non-ActivityPub alternate Link header (#37439 by @shleeable)
  • Fix Webfinger endpoint not handling new ActivityPub ID scheme (#38391 by @ClearlyClaire)
  • Fix error when admin-selected theme does not exist by falling back to default theme (#38703 by @shleeable)
  • Fix wrong endonyms for Divehi and Latvian in languages list (#36254 and #36876 by @cuu508 and @shimon1024)
  • Fix Accept headers when fetching ActivityPub resources not including JSON-LD profile (#30354 by @TheOneric)
  • Fix wrong hover indicators on unclickable items in admin UI (#38782 by @diondiondion)
  • Fix streaming server using deprecated url.parse instead of WHATWG URL API (#36973 by @Exagone313)

Upgrade notes

To get the code for v4.6.0-beta.1, use git fetch && git checkout v4.6.0-beta.1.

Note

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

Dependencies

External dependencies have changed since v4.5.0, with new Ruby, Node and FFMpeg version requirements.

  • Ruby: 3.3 or newer
  • PostgreSQL: 14 or newer
  • Elasticsearch (recommended, for full-text search): 7.x (OpenSearch should also work)
  • LibreTranslate (optional, for translations): 1.3.3 or newer
  • Redis: 7.0 or newer
  • Node: 22 or newer
  • libvips: 8.13 or newer
  • FFMpeg: 5.1 or newer

ImageMagick removal and libvips replacement

ImageMagick has been deprecated since Mastodon 4.4.0 and is now unsupported. If you used MASTODON_USE_LIBVIPS=false, this will be ignored and you will need to install libvips.

Theming system changes

The theming system has changed substantially, changing how light and dark themes work, as well as high-contrast. We also overhauled the whole theme to use design tokens and CSS variables.

Custom themes will most likely require significant changes to work with Mastodon 4.6.0.

If you are a theme author, please see our documentation at https://docs.joinmastodon.org/dev/frontend/theming/ and https://docs.joinmastodon.org/dev/frontend/design-tokens/

Update steps

The following instructions are for updating from 4.5.11.

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. In particular, it is very important to read the 4.5.0 release notes.

Non-Docker

Tip

The charlock_holmes gem may fail to build on some systems with recent versions of gcc.
If you run into this issue, try BUNDLE_BUILD__CHARLOCK_HOLMES="--with-cxxflags=-std=c++17" bundle install.

  1. If you are using rbenv, update the list of available versions and install the proper Ruby version by doing RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install in the Mastodon install directory (e.g. /home/mastodon/live)
  2. Install dependencies with bundle install and yarn install --immutable
  3. Precompile the assets: RAILS_ENV=production bundle exec rails assets:precompile
  4. Run the pre-deployment database migrations by specifying the SKIP_POST_DEPLOYMENT_MIGRATIONS=true environment variable: SKIP_POST_DEPLOYMENT_MIGRATIONS=true RAILS_ENV=production bundle exec rails db:migrate
  5. Restart all Mastodon processes.
  6. Run the post-deployment database migrations: RAILS_ENV=production bundle exec rails db:migrate

When using Docker

  1. Run the pre-deployment database migrations by specifying the SKIP_POST_DEPLOYMENT_MIGRATIONS=true environment variable: docker-compose run --rm -e SKIP_POST_DEPLOYMENT_MIGRATIONS=true web bundle exec rails db:migrate
  2. Restart all Mastodon processes.
  3. Run the post-deployment database migrations: docker-compose run --rm web bundle exec rails db:migrate

Don't miss a new mastodon release

NewReleases is sending notifications on new releases.