Mastodon v3.0.0 Release Notes
Release Date: 2019-10-03 // over 4 years ago-
๐ฅ Breaking changes
- โ Remove OStatus support
- Please use ActivityPub instead
- โ Remove deprecated REST API
GET /api/v1/search
API- Please use
GET /api/v2/search
instead
- Please use
- โ Remove deprecated REST API
GET /api/v1/statuses/:id/card
- Please use the
card
attribute on statuses instead
- Please use the
- โ Remove deprecated REST API
POST /api/v1/notifications/dismiss?id=:id
- Please use
POST /api/v1/notifications/:id/dismiss
instead
- Please use
- โ Remove deprecated REST API
GET /api/v1/timelines/direct
- Please use
GET /api/v1/conversations
instead
- Please use
๐ Changelog
โ Added
- โ Add "not available" label to unloaded media attachments in web UI (Gargron, Gargron)
- โ Add profile directory to web UI (Gargron, mayaeh)
- Add profile directory opt-in federation
- Add profile directory REST API
- โ Add special alert for throttled requests in web UI (ThibG)
- โ Add confirmation modal when logging out from the web UI (ThibG)
- โ Add audio player in web UI (Gargron, Gargron, Gargron, ThibG, Gargron)
- โ Add autosuggestions for hashtags in web UI (Gargron, ThibG, Gargron, Gargron, Gargron)
- โ Add media editing modal with OCR tool in web UI (Gargron, Gargron, ThibG, ThibG, Gargron, Gargron, Gargron)
- โ Add indicator of unread notifications to window title when web UI is out of focus (Gargron, Gargron)
- โ Add indicator for which options you voted for in a poll in web UI (ThibG)
- โ Add search results pagination to web UI (Gargron, ThibG)
- โ Add option to disable real-time updates in web UI ("slow mode") (Gargron, ykzts, ThibG, Gargron, ThibG)
- โ Add option to disable blurhash previews in web UI (ThibG)
- โ Add native smooth scrolling when supported in web UI (ThibG)
- โ Add scrolling to the search bar on focus in web UI (Kjwon15)
- โ Add refresh button to list of rebloggers/favouriters in web UI (Gargron)
- โ Add error description and button to copy stack trace to web UI (Gargron)
- โ Add search and sort functions to hashtag admin UI (mayaeh, Gargron, mayaeh)
- โ Add setting for default search engine indexing in admin UI (brortao)
- โ Add account bio to account view in admin UI (ThibG)
- โ Add option to include reported statuses in warning e-mail from admin UI (Gargron, Gargron, Gargron, Gargron, mayaeh)
- โ Add number of pending accounts and pending hashtags to dashboard in admin UI (Gargron)
- โ Add account migration UI (Gargron, noellabo, noellabo, noellabo, noellabo)
- โ Add table of contents to about page (Gargron, ykzts, ykzts, Kjwon15)
- โ Add password challenge to 2FA settings, e-mail notifications (Gargron)
- โ Add optional public list of domain blocks with comments (ThibG, ThibG, Gargron)
- โ Add an RSS feed for featured hashtags (noellabo)
- โ Add explanations to featured hashtags UI and profile (Gargron)
- โ Add hashtag trends with admin and user settings (Gargron, Gargron, Gargron, Gargron, Gargron, mayaeh, Gargron, Gargron, Gargron, Gargron, Gargron, Gargron, ThibG, Sasha-Sorokin, Gargron, Gargron)
- Add hashtag usage breakdown to admin UI
- Add batch actions for hashtags to admin UI
- Add trends to web UI
- Add trends to public pages
- Add user preference to hide trends
- Add admin setting to disable trends
- โ Add categories for custom emojis (Gargron, Gargron, Gargron, highemerly)
- Add custom emoji categories to emoji picker in web UI
- Add
category
to custom emojis in REST API - Add batch actions for custom emojis in admin UI
- โ Add max image dimensions to error message (raboof)
- โ Add aac, m4a, 3gp, amr, wma to allowed audio formats (Gargron, umonaca)
- โ Add search syntax for operators and phrases (Gargron)
- โ Add REST API for managing featured hashtags (noellabo)
- โ Add REST API for managing timeline read markers (Gargron)
- โ Add
exclude_unreviewed
param toGET /api/v2/search
REST API (Gargron) - โ Add
reason
param toPOST /api/v1/accounts
REST API (Gargron) - โ Add ActivityPub secure mode (Gargron, ThibG, ThibG)
- โ Add HTTP signatures to all outgoing ActivityPub GET requests (Gargron, ThibG)
- โ Add support for ActivityPub Audio activities (ThibG)
- โ Add ActivityPub actor representing the entire server (ThibG, rtucker, ThibG, Gargron)
- โ Add whitelist mode (Gargron, mayaeh)
- โ Add config of multipart threshold for S3 (ykzts, ykzts)
- โ Add health check endpoint for web (ykzts, ykzts)
- โ Add HTTP signature keyId to request log (Gargron)
- Add
SMTP_REPLY_TO
environment variable (hugogameiro) - โ Add
tootctl preview_cards remove
command (mayaeh) - โ Add
tootctl media refresh
command (Gargron) - โ Add
tootctl cache recount
command (Gargron) - โ Add option to exclude suspended domains from
tootctl domains crawl
(dariusk) - โ Add parallelization to
tootctl search deploy
(noellabo) - โ Add soft delete for statuses for instant deletes through API (Gargron, Gargron)
- โ Add rails-level JSON caching (Gargron, Gargron)
- โ Add request pool to improve delivery performance (Gargron, ykzts)
- โ Add concurrent connection attempts to resolved IP addresses (ThibG)
- โ Add index for remember_token to improve login performance (abcang)
- โ Add more accurate hashtag search (Gargron, Gargron, Gargron)
- โ Add more accurate account search (Gargron, Gargron)
- โ Add a spam check (Gargron, Gargron, ThibG)
- โ Add new languages (Gargron)
- Breton
- Spanish (Argentina)
- Estonian
- Macedonian
- New Norwegian
- โ Add NodeInfo endpoint (Gargron, Gargron)
๐ Changed
- ๐ Change conversations UI (Gargron)
- ๐ Change dashboard to short number notation (noellabo, noellabo)
- ๐ Change REST API
GET /api/v1/timelines/public
to require authentication when public preview is off (ThibG) - ๐ Change REST API
POST /api/v1/follow_requests/:id/(approve|reject)
to return relationship (ThibG) - ๐ Change rate limit for media proxy (ykzts)
- ๐ Change unlisted custom emoji to not appear in autosuggestions (Gargron)
- ๐ Change max length of media descriptions from 420 to 1500 characters (Gargron, ThibG)
- ๐ Change deletes to preserve soft-deleted statuses in unresolved reports (Gargron)
- ๐ Change tootctl to use inline parallelization instead of Sidekiq (Gargron)
- ๐ Change account deletion page to have better explanations (Gargron, Gargron)
- ๐ Change hashtag component in web UI to show numbers for 2 last days (Gargron, Gargron, Gargron)
- ๐ Change OpenGraph description on sign-up page to reflect invite (Gargron)
- ๐ Change layout of public profile directory to be the same as in web UI (Gargron)
- ๐ Change detailed status child ordering to sort self-replies on top (ThibG)
- ๐ Change window resize handler to switch to/from mobile layout as soon as needed (ThibG)
- ๐ Change icon button styles to make hover/focus states more obvious (ThibG)
- ๐ Change contrast of status links that are not mentions or hashtags (ThibG)
- ๐ Change hashtags to preserve first-used casing (Gargron, Gargron, Gargron, Gargron, Gargron)
- ๐ Change unconfirmed user login behaviour (Gargron, ThibG, Gargron)
- ๐ Change single-column mode to scroll the whole page (Gargron, Gargron, Gargron, ThibG, Gargron, Gargron, ThibG, Gargron)
- ๐ Change
tootctl accounts follow
to only work with local accounts (angristan) - ๐ Change Dockerfile (Shleeble, ykzts, Shleeble)
- ๐ Change supported Node versions to include v12 (abcang)
- ๐ Change Portuguese language from
pt
topt-PT
(Gargron) - ๐ Change domain block silence to always require approval on follow (ThibG)
- ๐ Change link preview fetcher to not perform a HEAD request first (Gargron)
- ๐ Change
tootctl domains purge
to accept multiple domains at once (Gargron)
โ Removed
- โ Remove OStatus support (Gargron, Gargron, Gargron, ThibG, ThibG)
- โ Remove Atom feeds and old URLs in the form of
GET /:username/updates/:id
(Gargron) - โ Remove WebP support (angristan)
- โ Remove deprecated config options from Heroku and Scalingo (ykzts)
- โ Remove deprecated REST API
GET /api/v1/search
API (Gargron) - โ Remove deprecated REST API
GET /api/v1/statuses/:id/card
(Gargron) - โ Remove deprecated REST API
POST /api/v1/notifications/dismiss?id=:id
(Gargron) - โ Remove deprecated REST API
GET /api/v1/timelines/direct
(Gargron)
๐ Fixed
- ๐ Fix manifest warning (ykzts)
- ๐ Fix admin UI for custom emoji not respecting GIF autoplay preference (ThibG)
- ๐ Fix page body not being scrollable in admin/settings layout (Gargron)
- ๐ Fix placeholder colors for inputs not being explicitly defined (Gargron)
- ๐ Fix incorrect enclosure length in RSS (tsia)
- ๐ Fix TOTP codes not being filtered from logs during enabling/disabling (Gargron)
- ๐ Fix webfinger response not returning 410 when account is suspended (Gargron)
- ๐ Fix ActivityPub Move handler queuing jobs that will fail if account is suspended (Gargron)
- ๐ Fix SSO login not using existing account when e-mail is verified (Gargron)
- ๐ Fix web UI allowing uploads past status limit via drag & drop (Gargron)
- ๐ Fix expiring polls not being displayed as such in web UI (ThibG)
- ๐ Fix 2FA challenge and password challenge for non-database users (Gargron, Gargron)
- ๐ Fix profile fields overflowing page width in web UI (Gargron)
- ๐ Fix web push subscriptions being deleted on rate limit or timeout (Gargron)
- ๐ Fix display of long poll options in web UI (ThibG, ThibG)
- ๐ Fix search API not resolving URL when
type
is given (Gargron) - ๐ Fix hashtags being split by ZWNJ character (Gargron)
- ๐ Fix scroll position resetting when opening media modals in web UI (Gargron)
- ๐ Fix duplicate HTML IDs on about page (ThibG)
- ๐ Fix admin UI showing superfluous reject media/reports on suspended domain blocks (ThibG)
- ๐ Fix ActivityPub context not being dynamically computed (ThibG)
- ๐ Fix Mastodon logo style on hover on public pages' footer (ThibG)
- ๐ Fix height of dashboard counters (ThibG)
- ๐ Fix custom emoji animation on hover in web UI directory bios (ThibG)
- ๐ Fix non-numbers being passed to Redis and causing an error (Gargron)
- ๐ Fix error in REST API for an account's statuses (Gargron)
- ๐ Fix uncaught error when resource param is missing in Webfinger request (Gargron)
- ๐ Fix uncaught domain normalization error in remote follow (Gargron)
- ๐ Fix uncaught 422 and 500 errors (Gargron, Gargron)
- ๐ Fix uncaught parameter missing exceptions and missing error templates (Gargron)
- ๐ Fix encoding error when checking e-mail MX records (Gargron)
- ๐ Fix items in StatusContent render list not all having a key (ThibG)
- ๐ Fix remote and staff-removed statuses leaving media behind for a day (Gargron)
- ๐ Fix CSP needlessly allowing blob URLs in script-src (ThibG)
- ๐ Fix ignoring whole status because of one invalid hashtag (Gargron)
- ๐ Fix hidden statuses losing focus (ThibG)
- ๐ Fix loading bar being obscured by other elements in web UI (Gargron)
- ๐ Fix multiple issues with replies collection for pages further than self-replies (ThibG)
- ๐ Fix blurhash and autoplay not working on public pages (Gargron)
- ๐ Fix 422 being returned instead of 404 when POSTing to unmatched routes (Gargron, Gargron)
- ๐ Fix client-side resizing of image uploads (ThibG)
- ๐ Fix short number formatting for numbers above million in web UI (Gargron)
- ๐ Fix ActivityPub and REST API queries setting cookies and preventing caching (ThibG, ThibG, ThibG, ThibG)
- ๐ Fix some emojis in profile metadata labels are not emojified. (kedamaDQ)
- ๐ Fix account search always returning exact match on paginated results (Gargron)
- ๐ Fix acct URIs with IDN domains not being resolved (Gargron)
- ๐ Fix admin dashboard missing latest features (Gargron)
- ๐ Fix jumping of toot date when clicking spoiler button (ariasuni)
- ๐ Fix boost to original audience not working on mobile in web UI (ThibG)
- ๐ Fix handling of webfinger redirects in ResolveAccountService (ThibG)
- ๐ Fix URLs appearing twice in errors of ActivityPub::DeliveryWorker (Gargron)
- ๐ Fix support for HTTP proxies (ThibG)
- ๐ Fix HTTP requests to IPv6 hosts (ThibG)
- ๐ Fix error in ElasticSearch index import (mayaeh)
- ๐ Fix duplicate account error when seeding development database (ysksn)
- ๐ Fix performance of session clean-up scheduler (abcang)
- ๐ Fix older migrations not running (zunda)
- ๐ Fix URLs counting towards RTL detection (ahangarha)
- ๐ Fix unnecessary status re-rendering in web UI (ThibG)
- ๐ Fix http_parser.rb gem not being compiled when no network available (petabyteboy)
- ๐ Fix muted text color not applying to all text (trwnh)
- ๐ Fix follower/following lists resetting on back-navigation in web UI (Gargron)
- ๐ Fix n+1 query when approving multiple follow requests (abcang)
- ๐ Fix records not being indexed into ElasticSearch sometimes (Gargron)
- ๐ Fix needlessly indexing unsearchable statuses into ElasticSearch (Gargron)
- ๐ Fix new user bootstrapping crashing when to-be-followed accounts are invalid (ThibG)
- ๐ Fix featured hashtag URL being interpreted as media or replies tab (Gargron)
- ๐ Fix account counters being overwritten by parallel writes (Gargron)
๐ Security
- ๐ Fix performance of GIF re-encoding and always strip EXIF data from videos (Gargron)
โฌ๏ธ 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.5. You can upgrade, or you can continue using the old version by overwriting the
.ruby-version
file with e.g.2.6.1
or2.5.3
which were recommended previously - Install dependencies:
bundle install
andyarn 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
- Restart all Mastodon processes
- Clear cache:
- Non-Docker:
RAILS_ENV=production bin/tootctl cache clear
- Docker:
docker-compose run --rm web bin/tootctl cache clear
๐ 5. 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
- Restart all Mastodon processes
- If you are using ElasticSearch, there are new indices to be deployed ( this step is likely to take a considerable amount of time , so running it through
screen
ortmux
is advisable):
- Non-Docker:
RAILS_ENV=production bin/tootctl search deploy
- Docker:
docker-compose run --rm web bin/tootctl search deploy
Translators
- Zoltรกn Gera (Hungarian)
- Kristijan Tkalec (Slovenian)
- Evert Prants (Estonian)
- borys_sh (Ukrainian)
- Muha Aliss (Turkish)
- ๅๅฎๅ (Chinese Simplified)
- oษนสuส (Spanish, Argentina)
- Jeong Arm (Korean; Esperanto; Japanese)
- ButterflyOfFire (French; Arabic)
- Roboron (Spanish)
- Osoitz (Basque)
- Ramdziana F Y (Indonesian)
- Alix Rossi (Corsican; French)
- Aditoo17 (Czech)
- Masoud Abkenar (Persian)
- koyu (German)
- spla (Catalan)
- Maya Minatsuki (Japanese)
- Oguz Ersen (Turkish)
- Xosรฉ M. (Galician)
- Jeroen (Dutch)
- ๐ Marek ฤฝach (Slovak; Polish)
- d5Ziif3K (Ukrainian)
- Thai Localization (Thai)
- lamnatos (Greek)
- Diluns (Occitan)
- atarashiako (Chinese Simplified)
- ๐ 101010 (Polish)
- Yi-Jyun Pan (Chinese Traditional)
- silkevicious (Italian)
- FรฉdiQuรฉbec (French)
- Jaz-Michael King (Welsh)
- tykayn(French)
- Alessandro Levati (Italian)
- carolinagiorno (Portuguese, Brazilian)
- taoxvx (Danish)
- shioko (Chinese Simplified)
- Emyn Nant Nefydd (Welsh)
- Sasha Sorokin (Russian)
- Tiago Epifรขnio (Portuguese)
- dxwc (Bengali)
- liffon (Swedish)
- Evgeny Petrov (Russian)
- Vanege (Esperanto)
- Johan Schiff (Swedish)
- kat (Ukrainian; Russian)
- oti4500 (Hungarian; Ukrainian)
- Juan Josรฉ Salvador Piedra (Spanish)
- diazepan (Spanish)
- SHeija (Finnish)
- christalleras (Norwegian Nynorsk)
- Jack R (Spanish)
- Saederup92 (Danish)
- sabri (Spanish)
- ๐ Stasiek Michalski (Polish)
- Dewi (Breton; French)
- ariasuni (French; Esperanto)
- AW Unad (Indonesian)
- cybergene (Japanese)
- Andrea Lo Iacono (Italian)
- Ray (Spanish)
- Unmual (Spanish)
- Ryo (Korean)
- juanda097 (Spanish)
- Anunnakey (Macedonian)
- Cutls (Japanese)
- ruine (Japanese)
- MadeInSteak (Finnish)
- Sokratis Alichanidis (Greek)
- dragnucs2 (Arabic)
- frumble (German)
- erikstl (Esperanto)
- Rikard Linde (Swedish)
- PPNplus (Thai)
- EPEMA YT (German)
- Rhys Harrison (Esperanto)
- KEINOS (Japanese)
- JzshAC (Chinese Simplified)
- Rintan1 (Japanese)
- hiphipvargas (Portuguese)
- Ch. (Korean)
- tctovsli (Norwegian Nynorsk)
- ๐ vjasiegd (Polish)
- SamitiMed (Thai)
- umelard (Hebrew)
- ็กซ้ ธ้ถ (Japanese)
- Adriรกn Lattes (Spanish)
- Hinaloe (Japanese)
- Renato "Lond" Cerqueira (Portuguese, Brazilian)
- ๐ Marcin Mikoลajczak (Polish)
- filippodb (Italian)
- ๆฃฎใฎๅญใชในใฎใใผใณใฎๅคงๅ้บ (Japanese)
- Sahak Petrosyan (Armenian)
- Marcepanek_ (Polish)
- Daniel Dimitrov (Bulgarian)
- Hugh Liu (Chinese Simplified)
- Rakino (Chinese Simplified)
- hussama (Portuguese, Brazilian)
- eichkat3r (German)
- SnDer (Dutch)
- ๐ Karol Kosek (Polish)
- Akarshan Biswas (Bengali)
- Tradjincal (French)
- sergioaraujo1 (Portuguese, Brazilian)
- mmokhi (Persian)
- skaaarrr (German)
- Lukas Fรผlling (German)
- JackXu (Chinese Simplified)
- Zoรฉ Bลle (German)
- Dremski (Bulgarian)
- OpenAlgeria (Arabic)
- waweic (German)
- Benjamin Cobb (German)
- ใใฃใใใใซใผใใ (Japanese)
- Abijeet Patro (Basque)
- โ Remove OStatus support