Mastodon v3.0.0 Release Notes

Release Date: 2019-10-03 // 19 days ago
  • 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
      1. Restart all Mastodon processes
      2. 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
      1. Restart all Mastodon processes
      2. 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)