v4.0.0rc1
版本发布时间: 2022-11-06 06:39:32
mastodon/mastodon最新发布版本:v4.3.0-beta.2(2024-09-17 23:53:19)
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
- Add ability to filter followed accounts' posts by language (Gargron, ClearlyClaire)
- Add ability to follow hashtags (Gargron, Gargron, Gargron, noellabo)
- Add ability to filter individual posts (ClearlyClaire)
- Add ability to translate posts (Gargron, ClearlyClaire, Gargron, ClearlyClaire, Gargron, ykzts, Gargron)
- Add featured tags to web UI (noellabo, noellabo, noellabo, noellabo, Gargron, ykzts, noellabo, noellabo, Gargron, Gargron)
-
Add support for language preferences for trending statuses and links (Gargron, Gargron, ykzts)
- Previously, you could only see trends in your current language
- For less popular languages, that meant empty trends
- Now, trends in your preferred languages' are shown on top, with others beneath
- Add server rules to sign-up flow (Gargron)
- Add privacy icons to report modal in web UI (ClearlyClaire)
- Add
noopener
to links to remote profiles in web UI (shleeable) - Add warning for sensitive audio posts in web UI (rgroothuijsen)
- Add language attribute to posts in web UI (tribela)
- Add support for uploading WebP files (Saiv46)
- Add support for uploading
audio/vnd.wave
files (tribela) - Add support for uploading AVIF files (txt-file)
- Add support for uploading HEIC files (Gargron)
- Add more debug information when processing remote accounts (ClearlyClaire, ClearlyClaire)
-
Add retention policy for cached content and media (Gargron, zunda, Gargron, Gargron)
- Set for how long remote posts or media should be cached on your server
- Hands-off alternative to
tootctl
commands
-
Add customizable user roles (Gargron, ClearlyClaire, Gargron, tribela, tribela, ClearlyClaire, ClearlyClaire, unextro, tribela, ClearlyClaire)
- Previously, there were 3 hard-coded roles, user, moderator, and admin
- Create your own roles and decide which permissions they should have
- Add notifications for new reports (Gargron, Gargron)
- Add ability to select all accounts matching search for batch actions in admin UI (Gargron, Gargron)
- Add ability to view previous edits of a status in admin UI (Gargron)
- Add ability to block sign-ups from IP (Gargron)
- Add webhooks to admin UI (Gargron)
- Add admin API for managing domain allows (ClearlyClaire)
- Add admin API for managing domain blocks (ClearlyClaire)
- Add admin API for managing e-mail domain blocks (Gargron)
- Add admin API for managing canonical e-mail blocks (Gargron)
- Add admin API for managing IP blocks (Gargron)
- Add
services
andmetadata
to the NodeInfo endpoint (MFTabriz) - Add
--remove-role
option totootctl accounts modify
(Gargron) - Add
--days
option totootctl media refresh
(tribela) - Add
EMAIL_DOMAIN_LISTS_APPLY_AFTER_CONFIRMATION
environment variable (ClearlyClaire) - Add
IP_RETENTION_PERIOD
andSESSION_RETENTION_PERIOD
environment variables (kescherCode) - Add
http_hidden_proxy
environment variable (tribela) - Add caching for payload serialization during fan-out (ClearlyClaire, Gargron, ClearlyClaire, ClearlyClaire)
- Add assets from Twemoji 14.0 (Gargron)
- Add reputation and followers score boost to SQL-only account search (Gargron)
Changed
- Change brand color and logotypes (Gargron, Gargron, Gargron, ClearlyClaire, Gargron, mayaeh)
- Change post editing to be enabled in web UI (Gargron)
-
Change web UI to work for logged-out users (Gargron, Gargron, Gargron, Gargron, Gargron, ykzts, Gargron, ClearlyClaire, ClearlyClaire, Gargron, Gargron, Gargron, ClearlyClaire, Gargron, Gargron, Gargron, Gargron, Gargron, ykzts, ykzts, ykzts, ykzts, ykzts, Gargron, Gargron, Gargron, Gargron, Gargron, Gargron, Gargron, Gargron, Gargron, Gargron, Gargron, ykzts, ykzts, Gargron, Gargron, Gargron, Gargron, trwnh, ykzts, Gargron, Gargron, ClearlyClaire, Gargron, ClearlyClaire, Gargron, Gargron, Gargron)
- The web app can now be accessed without being logged in
- No more
/web
prefix on web app paths - Profiles, posts, and other public pages now use the same interface for logged in and logged out users
- The web app displays a server information banner
- Pop-up windows for remote interaction have been replaced with a modal window
- No need to type in your username for remote interaction, copy-paste-to-search method explained
- Various hints throughout the app explain what the different timelines are
- New about page design
- New privacy policy page design shows when the policy was last updated
- All sections of the web app now have appropriate window titles
- The layout of the interface has been streamlined between different screen sizes
- Posts now use more horizontal space
- Change label of publish button to be "Publish" again in web UI (Gargron)
- Change language to be carried over on reply in web UI (ClearlyClaire)
- Change "Unfollow" to "Cancel follow request" when request still pending in web UI (prplecake)
-
Change post filtering system (ClearlyClaire, ClearlyClaire, ClearlyClaire, ClearlyClaire, noellabo, ClearlyClaire, ClearlyClaire)
- Filtered keywords and phrases can now be grouped into named categories
- Filtered posts show which exact filter was hit
- Individual posts can be added to a filter
- You can peek inside filtered posts anyway
- Change path of privacy policy page from
/terms
to/privacy-policy
(Gargron) - Change how hashtags are normalized (Gargron, Gargron, ClearlyClaire)
- Change public (but not hashtag) timelines to be filtered by current locale by default (Gargron, Gargron)
- Change settings area to be separated into categories in admin UI (Gargron, Gargron)
- Change "No accounts selected" errors to use the appropriate noun in admin UI (prplecake)
- Change e-mail domain blocks to match subdomains of blocked domains (Gargron)
- Change custom emoji file size limit from 50 KB to 256 KB (Gargron)
- Change "Allow trends without prior review" setting to also work for trending posts (Gargron)
- Change admin announcements form to use single inputs for date and time in admin UI (ClearlyClaire)
- Change search API to be accessible without being logged in (Gargron, Gargron)
- Change following and followers API to be accessible without being logged in (Gargron)
- Change
AUTHORIZED_FETCH
to not block unauthenticated REST API access (Gargron) - Change Helm configuration (deepy, jgsmith, deepy)
- Change mentions of blocked users to not be processed (ClearlyClaire)
- Change max. thumbnail dimensions to 640x360px (360p) (Gargron)
- Change post-processing to be deferred only for large media types (Gargron)
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
andOIDC_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
andyarn install
Both Docker and non-Docker:
- 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
- Non-Docker:
- Precompile the assets:
- Non-Docker:
RAILS_ENV=production bundle exec rails assets:precompile
- Docker: The assets are already precompiled during the build step
- Non-Docker:
- Restart all Mastodon processes
- 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
- Non-Docker:
- Restart all Mastodon processes