Mastodon 3.0 Released
Verified
This commit was created on GitHub.com and signed with a verified signature using GitHub’s key.
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:
- 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
- Clear cache:
- Non-Docker:
RAILS_ENV=production bin/tootctl cache clear
- Docker:
docker-compose run --rm web bin/tootctl cache clear
- Non-Docker:
- 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
- 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
- Non-Docker:
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)
You can’t perform that action at this time.
from Hacker News https://ift.tt/2OfclRA