Mastodon 3.0 Released

Verified

This commit was created on GitHub.com and signed with a verified signature using GitHub’s key.

Mastodon

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
  • Remove deprecated REST API GET /api/v1/statuses/:id/card
    • Please use the card attribute on statuses instead
  • Remove deprecated REST API POST /api/v1/notifications/dismiss?id=:id
    • Please use POST /api/v1/notifications/:id/dismiss instead
  • Remove deprecated REST API GET /api/v1/timelines/direct
    • Please use GET /api/v1/conversations instead

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 to GET /api/v2/search REST API (Gargron)
  • Add reason param to POST /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 to pt-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 or 2.5.3 which were 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. 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
  6. Restart all Mastodon processes
  7. 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 or tmux 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)

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.


from Hacker News https://ift.tt/2OfclRA