Skip to content

Releases: mastodon/mastodon

v2.1.0rc1

06 Dec 23:39
Compare
Choose a tag to compare
v2.1.0rc1 Pre-release
Pre-release

Mastodon

Note: This is a release candidate. It is intended to be stable, but not guaranteed.

Features:

Memorial accounts (#5615)

Admins can now disable logins of accounts without suspending. Separately, an account can be turned into a memorial page. That automatically disables the login and displays a note on the profile.

Moderator role (#5635)

The permission system in Mastodon has been expanded. Between users and admins there is a new role, moderator, which can handle reports and some other moderation-related functions but nothing like site settings. Admin navigation has been reworked.

Audit log for staff actions (#5757)

All actions performed by admins and moderators are now logged into an audit log, visible to admins and moderators.

Invite system (#5814)

The invite system allows you to generate an invite link that lets people sign up even if registrations are closed. Each invite link can have an optional time limit or maximum uses limit. The minimum role required for creating invites can be adjusted in admin settings, by default this function is exposed to admins only.

Account migration: profile moved note (#5746)

If you move from one account to another in the Mastodon network, you can now configure your old account to display a prominent link to the new profile. While this isn't quite the automated follower migration yet, it's a step above having to do it manually. When this is setup, the profile avatar is also greyed out and the follow button is hidden to make it more obvious.

Lists (#5703)

Lists allow you to categorize your home feed for easier digestion. You can sort people you are following into arbitrary lists, and mount those lists in your web UI as separate columns. Lists are private and cannot include people you are not following.

Improved muting (#5087)

Over the course of the project's lifetime the mute function has gone through various changes following user feedback. The last iteration essentially equalized it with block, with stealth being the only difference. However, the initial use case of mutes was missed by some. As a result, when muting someone, you can now choose whether you want to mute notifications from them or not. If not, they can still talk to you.

Hide boosts from people you are following (#5762)

You can now do this.

Block direct messages from people you don't follow (#5669)

You can now do this.

Integration with PeerTube (#5848)

PeerTube is a decentralized alternative to YouTube that is also based on ActivityPub, like Mastodon. With some minor adjustments we ensured that PeerTube users can be followed from Mastodon and you can properly receive updates from them.

Other:

  • Ability to hide some custom emoji without disabling them (#5485)
  • Add ServiceWorker caching for static assets (#5524)
  • Show the local couterpart of emoji when it exists in admin UI (#5467)
  • Show confirmation dialog on leaving Web UI while composing (#5616)
  • Allow to open a modal for embedded photo (#5777)
  • Add keyboard shortcuts legend (#5823)

Upgrade notes:

Non-Docker only:

  • Dependency updates: bundle install and yarn install

Both Docker and non-Docker:

  • This release includes database migrations, that means you need to run RAILS_ENV=production bundle exec rails db:migrate (in Docker: docker-compose run --rm web rails db:migrate).
  • This release includes changes to assets, that means you need to run RAILS_ENV=production bundle exec rails assets:precompile (in Docker: docker-compose run --rm web rails assets:precompile)

Troubleshooting

TBA

Fixes:

  • Remove unnecessary translateZ(0) when doing scale() (#5473)
  • Remove translateZ(0) on modal overlay (#5478)
  • Fix Cocaine::ExitStatusError when upload small non-animated GIF (#5489)
  • Fix column design broken with very long title (#5493)
  • Fix copying emojos: redirect to the page you were on (#5509)
  • Allow ActivityPub Note's tag and attachment to be single objects (#5534)
  • Add artist, title, and date metadata to boop.{mp3,ogg} (#5531)
  • Instantiate service classes for each call (fixes #5540) (#5543)
  • Separate Follow/Unfollow and back buttons (#5496)
  • Avoid modifying emoji data inline (#5548)
  • Update remote ActivityPub users when fetching their toots (#5545)
  • refactor(features/ui): Avoid useless renders in WrappedSwitch (#5580)
  • add account search condition (instance domain) (#5577)
  • don't display any descendants of .invisible (#5567)
  • Hide disabled custom emojis from emoji picker and emoji auto suggestions. (#5613)
  • Make fullscreen video in detailed status plays in fullscreen (Partly Fix #5160) (#5611)
  • Unify file upload to using fog (#5604)
  • Resolve remote accounts when mentioned even if they are already known (#5539)
  • Do not process undeliverable mentions (#5598)
  • Avoid emojifying on invisible text (#5558)
  • Twidere mention workaround (#5552)
  • Eliminate space around emoji (#5474)
  • In remove_remote, exclude removed media attachments. (#5626)
  • Fix focused background color of direct toots (#5642)
  • Retry thread resolving (#5599)
  • Fix #5632 - Reset column loading status after fetch fail (#5659)
  • Allow specifying STATSD_NAMESPACE (#5700)
  • Filter searched toots to be consistent with blocking behaviors (#5383)
  • Fix N+1 at notification (#5752)
  • Fix NoMethodError at ActivityPub::FetchRemoteStatusService (#5753)
  • Fixed duplicating URL of photo type of oEmbed (#5763)
  • Add index of account and reblog to statuses (#5785)
  • Don't remove originals of boosted toots from timeline (#5479)
  • Fix unnecessary order (#5807)
  • Do not filter the status collection after muting and blocking (#5815)
  • Use account.display_name for og:title single toot pages (#5821)
  • Merge indexes for reblog on statuses table (#5831)
  • add index on stream_entries table (#5793)
  • Fix too many forwards (#5854)
  • Remove rabl dependency (#5894)

Contributors to this release:

@abcang
@akihikodaki
@Aldarone
@alxrcs
@aschmitz
@barzamin
@Bat41
@clworld
@contraexemplo
@cormojs
@crakaC
@danhunsaker
@dblandin
@ekiru
@Gargron
@Habu-Kagumba
@hcmiya
@jmontane
@joshuap
@kaniini
@kedamaDQ
@KEINOS
@lynlynlynx
@m4sk1n
@masarakki
@matt-auckland
@mayaeh
@minacle
@MitarashiDango
@Nanamachi
@neetshin
@nightpool
@nolanlawson
@nullkal
@OlivierNicole
@puckipedia
@Quenty31
@renatolond
@rinsuki
@rkarabut
@salvadorpla
@sdukhovni
@SerCom-KC
@sorin-davidoi
@takayamaki
@ThibG
@unarist
@voidsatisfaction
@yipdw
@ykzts
@ysksn
@yukimochi

v2.0.0

18 Oct 16:16
Compare
Choose a tag to compare

Mastodon

Breaking changes:

  • All id attributes in the REST API responses, including attributes that end in _id, are now returned as strings instead of integers. This is because large integers cannot be encoded in JSON losslessly, and all IDs in Mastodon are now bigint. Some apps will not work with this release until they are updated
  • Mastodon will no longer deliver private and direct statuses to OStatus-based recipients (that means pre-1.6.0 Mastodon, too)
  • Stylesheet customizations now work differently due to the new theme feature. See upgrade notes for details.

Features:

Custom emoji (#4988, #5243, #5258, #5002)

Admins may upload 50KB PNG images and assign them shortcodes. These images act as custom emojis that can be embedded inline in statuses using those shortcodes, like :example:. The emojis display correctly between different instances, but users can only use their local emojis. However, it is simple enough to make a local copy of a desired emoji.

Admins may disable individual remote emojis from being displayed on their instance. The domain block reject media option also works on them.

Add support for multiple themes (#4959, #5336)

Besides the old custom.scss way, admins may install additional themes. When more than one theme is installed, the option to select your preference appears in user's preferences.

Replace EmojiOne emoji pack with Twemoji (#5046)

The newer releases of EmojiOne have switched their license and availability. To get access to all the latest standard emojis, we switched packs to Twemoji, which has a more permissive license, which is used by Twitter and Discord.

Add emoji autosuggestions (#5053)

When beginning to type a shortcode, an autosuggestion appears instantly, like for usernames. Upon selection it inserts the unicode character into the text. Entering a standard emoji's shortcode and leaving it as such now is interpreted as you meaning to leave it as plain text, it will not be converted to unicode server-side to avoid garbling code and IPv6 addresses that contain syntax that is similar to shortcodes.

New emoji picker (#5046, #5275)

The emoji picker has been improved. It will display your instances's custom emojis as well as keep track of the emojis you use frequently and your selected skin tone modifier.

New error page graphic. Other error page improvements (#5067, #5099)

The 500 error page is now generated during the assets:precompile rake task, meaning that it can use the same stylesheets and assets as the rest of the application. The loading of external Google Fonts was removed from the page. Custom style adjustments will also work on it now. And there's a new elephant graphic on it.

Better primary ID generation (#4801, #5260)

The so-called Snowflake algorithm of generating primary IDs for statuses is used now. It includes timestamps in the ID, making it possible to sort items chronologically regardless of when they were actually inserted into the database, without giving up performance or the uniqueness required for keyset pagination. It also makes it harder to guess how large someone's database table truly is. When resolving old statuses from other instances, such as for boosts, search or thread resolving, this means that newly resolved old statuses will no longer appear at the top of public timelines.

Hotkeys in web UI (#5164)

The web UI can now be navigated and controlled with a variety of hotkeys.

For example, 1-9 will focus a corresponding column (skipping the compose drawer, that is). n will focus the compose textarea, while alt+n will not only focus it but also reset it. s will focus the search form.

When a timeline is focused, j/down-arrow and k/up-arrow move the focus down/up; o/enter expands the status, p opens the author's profile, r to reply, m to mention author, f to favourite, b to boost.

In terms of general navigation, backspace is bound to navigating backward. A quick combination of g and certain letters will take you to a particular page: s to start, h to home, n to notifications, l to local timeline, t to federated timeline, f to your favourites, u to your own profile, p to your pinned toots, b to your blocked users, m to your muted users.

Add ability to specify alternative text for media attachments (#5123)

After uploading a media attachment but before submitting the toot, the description of the upload can be specified to allow people who use screen readers to enjoy the upload, too. Up to 420 characters can be used.

Redesign public hashtag pages (#5237)

The public hashtag pages are used almost exclusively by non-logged-in users, so they should act more like landing pages. The updated design uses the same embedded timeline component as the frontpage, meaning there are auto-updates and infinite scroll and it looks more like what you get if you sign up. It also displays login and sign-up buttons on the side, as well as a few benefits of Mastodon.

Implement dynamic e-mail blacklist for admins (#5109)

Previously the only way to prevent an e-mail domain from being used by new sign-ups was to specify an environment variable and restart Mastodon. This does not work well enough. Now this setting can be changed inside the admin UI without restarting Mastodon, instead.

Other:

  • After 7 days of repeated delivery failures, give up on inbox delivery to reduce wasted effort (#5131)
  • Send streaming API delete to people mentioned in status, so they would get it even if they don't follow the author (#5103)
  • In detailed status view, display the attachment uncropped if there's only one of it (#5054)
  • When a streaming API status arrives, sort it into conversations live so you don't have to reload the conversation to see it (#5206)
  • New Material app icon for Chrome, new icons for iOS, Microsoft (#5291, #5321)
  • New API: GET /api/v1/apps/verify_credentials to confirm app works (#5112)
  • Reorganize preferences page (#5161, #4447)
  • Admins can now add moderation notes to accounts (#5240)
  • New preference for reducing animations in web UI to prevent motion sickness (#5393)

Upgrade notes:

Non-Docker only:

  • The recommended Ruby version has been bumped to 2.4.2. However, it is only a recommendation. If you would like to stay with 2.4.1, simply overwrite the value in .ruby-version
  • Dependency updates: bundle install and yarn install

Both Docker and non-Docker:

  • This release includes database migrations, that means you need to run RAILS_ENV=production bundle exec rails db:migrate (in Docker: docker-compose run --rm web rails db:migrate). Depending on your database size, this migration may take a long while! It may also lead to some downtime. Make sure you have backups. This is because we are upgrading a multitude of database columns from int to bigint to make sure they're future-proof.
  • This release includes changes to assets, that means you need to run RAILS_ENV=production bundle exec rails assets:precompile (in Docker: docker-compose run --rm web rails assets:precompile)

Optionally:

  • custom.scss is no longer automatically loaded because the feature has been reworked into themes. Change to default: styles/custom.scss in config/themes.yml to restore old behaviour

Troubleshooting

  • If you have upgraded to the master branch before v2.0.0rc1 and your custom emoji now fail to load, perform this rake task: RAILS_ENV=production bundle exec rake paperclip:refresh:thumbnails CLASS=CustomEmoji

Fixes:

  • Web UI: Make sure formatted numbers don't contain insignificant zeroes (#4993)
  • Bump recommended Ruby version to 2.4.2 (#4958)
  • Fix performance on stats queries (#4996)
  • OpenGraph: Fix error when generating OpenGraph tags for images without metadata (#4995)
  • ActivityPub: Add published property to activity for reblogs (#5000)
  • Re-allow final underscore in parsed URLs (#4999)
  • Web UI: Improve scrolling performance on Chrome (#5001)
  • Remove ubuntu-toolchain-r-test dependency (#5005)
  • Fix account records being read before processing finished (#4998)
  • Web UI: Hide sensitive image by default on the public pages (#5009)
  • ActivityPub: Use OrderedCollectionPage to return followers/following list (#4949)
  • Web UI: Improve scrolling performance in general (#5011, #5152)
  • Web UI: Fix remote statuses being html_encoded in public pages (#5012)
  • Fix race condition when processing incoming OStatus messages (#5013)
  • API: Change IDs to strings rather than numbers in API JSON output (#5019)
  • Web UI: Use file extensions in addition to MIME types for file picker (#5029)
  • Disable private status federation over OStatus (#5027)
  • Web UI: Reduce wasted renders (#5021, #5036)
  • Web UI: Improve mobile style of /about/more (#5034)
  • Web UI: Make dropdowns render into portal, expand animation (#5018, #5140)
  • Document REDIS_NAMESPACE (#5038)
  • Do not filter statuses with unknown languages (#5045)
  • Web UI: Fix overflowing tabs in account__action-bar (#5056)
  • Web UI: Fix media gallery CSS (#5064)
  • Web UI: Change mobile layout breakpoint from 1024px to 630px (#5063)
  • Suppress backtrace when failed to communicate with a remote instance (#5076)
  • Thread notification e-mails for mentions by conversation (#5061)
  • Web UI: Increase max height of preview card image (#5092)
  • Stop processing of payload if it originates from a local account (#5100)
  • API: When OAuth password verification fails, return 401 instead of redirect to login (#5111)
  • Web UI: Remove now redundant warnings about OStatus privacy (#5102)
  • Improve worker performance by flushing body when performing POST requests (#5128)
  • ActivityPub: If HTTP signature is wrong and webfinger cache is stale, retry with resolve (#5129)
  • Web UI: Improve performance of modal and swipe animations (#5135...
Read more

v2.0.0rc4

17 Oct 21:58
Compare
Choose a tag to compare
v2.0.0rc4 Pre-release
Pre-release

Mastodon

Note: This is a release candidate. It is intended to be stable, but not guaranteed.

Fixes:

  • Fix React warning about tabIndex on status with CW (#5432)
  • Don't capture scheme-less URLs in the status (#5435)
  • When status is fetched instead of delivered, do not stream it (#5437)
  • Fix unwanted content warning gap in CSS (#5436)
  • Fix scrolling of dropdown when offscreen (#5434)
  • When unreblog arrives over streaming API, just delete in UI (#5439)
  • Make theme directory and rename application.scss (#5336)

Upgrade notes:

Both Docker and non-Docker:

  • This release includes changes to assets, that means you need to run RAILS_ENV=production bundle exec rails assets:precompile (in Docker: docker-compose run --rm web rails assets:precompile)

v2.0.0rc3

17 Oct 10:14
Compare
Choose a tag to compare
v2.0.0rc3 Pre-release
Pre-release

Mastodon

Note: This is a release candidate. It is intended to be stable, but not guaranteed.

Fixes:

  • Fix some failure cases when fetching link preview cards (#5347)
  • Reduce discrepancies between server and client-side character count (#5360)
  • Fix reblog count increasing without reason (#5363)
  • Fix crash on registration validation errors (#5366)
  • Fix remote status fetching for ActivityPub-only WEB_ACCOUNT users (#5372)
  • Avoid confusing messaging: When unfollowing, remove toots from home in web UI immediately (#5369)
  • Avoid confusing messaging: Do not try to guess why home timeline is empty in web UI (#5370)
  • Fix user sign in count updating on every request, optimize some queries (#5368)
  • Optimize Status#permitted_for 500x (account timeline) (#5373)
  • Make HTTP deliveries faster by closing connection right after posting (#5390)
  • Redirect back to the right page after copying emoji (#5387)
  • Replace newlines in desktop notifications with spaces instead of removing them (#5361)
  • Allow unreblogging pre-ActivityPub reblogs (#5376)
  • Adjust CSS of public hashtag pages (#5357)
  • Fix JS crash: Clear timer when unmounting RelativeTimestamp components (#5408)
  • Fix JS crash: Filter out duplicate IDs in timelines reducer (#5417)
  • Fix offline-plugin warning in dev mode (#5411)
  • Disable reblog counter for private toots (#5397)
  • Fix unreblogged toot being at wrong position in the home timeline (#5418)
  • Ensure that home feed regeneration after inactivity restores non-zero items (#5409)
  • Properly remove unreblogged toots from timelines by keeping references of all reblogs (#5419)

Features:

  • Add option to reduce motion in UI (#5393)

Upgrade notes:

Non-Docker only:

  • Dependency updates: bundle install and yarn install

Both Docker and non-Docker:

  • This release includes changes to assets, that means you need to run RAILS_ENV=production bundle exec rails assets:precompile (in Docker: docker-compose run --rm web rails assets:precompile)

v2.0.0rc2

11 Oct 23:21
Compare
Choose a tag to compare
v2.0.0rc2 Pre-release
Pre-release

Mastodon

Note: This is a release candidate. It is intended to be stable, but not guaranteed.

Fixes:

  • Remove prop types from external libraries to reduce JS size (#5304)
  • Pre-fill frequently used emojis to avoid emoji picker crash (#5305)
  • OpenGraph tags on sign in and sign up pages (#5308)
  • Fix tooltip/custom emoji/search interaction resulting in emoji picker crash (#5310)
  • Fix an error when ancestors get loaded before the status itself (#5312)
  • Fully disable hotkeys when an input element is focused (#5324)
  • Add padding to Android icon, change Apple and MS icons (#5321)
  • Only preload JS on /web pages (#5325)
  • In thread view, only scroll on first update, and scroll to replied-to post (#5322)
  • Fix styles of error pages (#5335)

Upgrade notes:

Non-Docker only:

  • Dependency updates: yarn install

Both Docker and non-Docker:

  • This release includes changes to assets, that means you need to run RAILS_ENV=production bundle exec rails assets:precompile (in Docker: docker-compose run --rm web rails assets:precompile)

v2.0.0rc1

10 Oct 13:30
Compare
Choose a tag to compare
v2.0.0rc1 Pre-release
Pre-release

Mastodon

Note: This is a release candidate. It is intended to be stable, but not guaranteed.

Breaking changes:

  • All id attributes in the REST API responses, including attributes that end in _id, are now returned as strings instead of integers. This is because large integers cannot be encoded in JSON losslessly, and all IDs in Mastodon are now bigint. Some apps will not work with this release until they are updated
  • Mastodon will no longer deliver private and direct statuses to OStatus-based recipients (that means pre-1.6.0 Mastodon, too)
  • Stylesheet customizations now work differently due to the new theme feature. See upgrade notes for details.

Fixes:

  • Web UI: Make sure formatted numbers don't contain insignificant zeroes (#4993)
  • Bump recommended Ruby version to 2.4.2 (#4958)
  • Fix performance on stats queries (#4996)
  • OpenGraph: Fix error when generating OpenGraph tags for images without metadata (#4995)
  • ActivityPub: Add published property to activity for reblogs (#5000)
  • Re-allow final underscore in parsed URLs (#4999)
  • Web UI: Improve scrolling performance on Chrome (#5001)
  • Remove ubuntu-toolchain-r-test dependency (#5005)
  • Fix account records being read before processing finished (#4998)
  • Web UI: Hide sensitive image by default on the public pages (#5009)
  • ActivityPub: Use OrderedCollectionPage to return followers/following list (#4949)
  • Web UI: Improve scrolling performance in general (#5011, #5152)
  • Web UI: Fix remote statuses being html_encoded in public pages (#5012)
  • Fix race condition when processing incoming OStatus messages (#5013)
  • API: Change IDs to strings rather than numbers in API JSON output (#5019)
  • Web UI: Use file extensions in addition to MIME types for file picker (#5029)
  • Disable private status federation over OStatus (#5027)
  • Web UI: Reduce wasted renders (#5021, #5036)
  • Web UI: Improve mobile style of /about/more (#5034)
  • Web UI: Make dropdowns render into portal, expand animation (#5018, #5140)
  • Document REDIS_NAMESPACE (#5038)
  • Do not filter statuses with unknown languages (#5045)
  • Web UI: Fix overflowing tabs in account__action-bar (#5056)
  • Web UI: Fix media gallery CSS (#5064)
  • Web UI: Change mobile layout breakpoint from 1024px to 630px (#5063)
  • Suppress backtrace when failed to communicate with a remote instance (#5076)
  • Thread notification e-mails for mentions by conversation (#5061)
  • Web UI: Increase max height of preview card image (#5092)
  • Stop processing of payload if it originates from a local account (#5100)
  • API: When OAuth password verification fails, return 401 instead of redirect to login (#5111)
  • Web UI: Remove now redundant warnings about OStatus privacy (#5102)
  • Improve worker performance by flushing body when performing POST requests (#5128)
  • ActivityPub: If HTTP signature is wrong and webfinger cache is stale, retry with resolve (#5129)
  • Web UI: Improve performance of modal and swipe animations (#5135)
  • Change max redirects followed to 2 (#5136)
  • When using statsd to track Mastodon performance, it will now get more useful metrics (#5118)
  • Web UI: Upgrade to React 16 (#5119)
  • Web UI: Make emoji autosuggestions immediate, usernames appear sooner (#5149)
  • Fix bug with OpenStack v2 (#5155)
  • Fix order of paginated accounts on authorized followers page (#3357)
  • Mobile: Make Chrome splash screen the same color as web UI's background color for smoother transition (#5169)
  • Web UI: Toggle contain:strict on fullscreen (#5159)
  • Append confirmation link as plain text in e-mails (#5146)
  • Web UI: When muting someone, clear web UI of their content like for blocks (#5172)
  • Web UI: Fix emoji sequence bug in substring-trie (#5191)
  • Web UI: Compress and combine emoji data (#5201, #5229)
  • Improve HTTP responses for Salmon and ActivityPub inbox processing (#5200)
  • ActivityPub: Fix possible acct URI usurpation in account discovery (#5208)
  • Use separate workers to process imports, retry failures (#5207)
  • ActivityPub: Validate id of objects (#5114)
  • Web UI: Use own, shorter relative timestamps in web UI to save space (#5171)
  • OpenGraph: Use summary_large_image card only when media attachments present (#5219)
  • Web UI: Fix remote profile being displayed as HTML on remote follow page (#5249)
  • Improve error handling in LinkCrawlWorker (#5250)
  • Web UI: Fix overflowing (#5246)
  • Web UI: Show buffering in video player (#5261)
  • Web UI: Dynamically calculate card height for embeds instead of using CSS padding trick (#5265)
  • ActivityPub: Use object URI only in Announce, instead of embedding (#5266)
  • Fix pagination in blocks API (#5285)
  • Web UI: Center error layout (#5289)

Features:

Custom emoji (#4988, #5243, #5258, #5002)

Admins may upload 50KB PNG images and assign them shortcodes. These images act as custom emojis that can be embedded inline in statuses using those shortcodes, like :example:. The emojis display correctly between different instances, but users can only use their local emojis. However, it is simple enough to make a local copy of a desired emoji.

Admins may disable individual remote emojis from being displayed on their instance. The domain block reject media option also works on them.

Add support for multiple themes (#4959)

Besides the old custom.scss way, admins may install additional themes. When more than one theme is installed, the option to select your preference appears in user's preferences.

Replace EmojiOne emoji pack with Twemoji (#5046)

The newer releases of EmojiOne have switched their license and availability. To get access to all the latest standard emojis, we switched packs to Twemoji, which has a more permissive license, which is used by Twitter and Discord.

Add emoji autosuggestions (#5053)

When beginning to type a shortcode, an autosuggestion appears instantly, like for usernames. Upon selection it inserts the unicode character into the text. Entering a standard emoji's shortcode and leaving it as such now is interpreted as you meaning to leave it as plain text, it will not be converted to unicode server-side to avoid garbling code and IPv6 addresses that contain syntax that is similar to shortcodes.

New emoji picker (#5046, #5275)

The emoji picker has been improved. It will display your instances's custom emojis as well as keep track of the emojis you use frequently and your selected skin tone modifier.

New error page graphic. Other error page improvements (#5067, #5099)

The 500 error page is now generated during the assets:precompile rake task, meaning that it can use the same stylesheets and assets as the rest of the application. The loading of external Google Fonts was removed from the page. Custom style adjustments will also work on it now. And there's a new elephant graphic on it.

Better primary ID generation (#4801, #5260)

The so-called Snowflake algorithm of generating primary IDs for statuses is used now. It includes timestamps in the ID, making it possible to sort items chronologically regardless of when they were actually inserted into the database, without giving up performance or the uniqueness required for keyset pagination. It also makes it harder to guess how large someone's database table truly is. When resolving old statuses from other instances, such as for boosts, search or thread resolving, this means that newly resolved old statuses will no longer appear at the top of public timelines.

Hotkeys in web UI (#5164)

The web UI can now be navigated and controlled with a variety of hotkeys.

For example, 1-9 will focus a corresponding column (skipping the compose drawer, that is). n will focus the compose textarea, while alt+n will not only focus it but also reset it. s will focus the search form.

When a timeline is focused, j/down-arrow and k/up-arrow move the focus down/up; o/enter expands the status, p opens the author's profile, r to reply, m to mention author, f to favourite, b to boost.

In terms of general navigation, backspace is bound to navigating backward. A quick combination of g and certain letters will take you to a particular page: s to start, h to home, n to notifications, l to local timeline, t to federated timeline, f to your favourites, u to your own profile, p to your pinned toots, b to your blocked users, m to your muted users.

Add ability to specify alternative text for media attachments (#5123)

After uploading a media attachment but before submitting the toot, the description of the upload can be specified to allow people who use screen readers to enjoy the upload, too. Up to 420 characters can be used.

Redesign public hashtag pages (#5237)

The public hashtag pages are used almost exclusively by non-logged-in users, so they should act more like landing pages. The updated design uses the same embedded timeline component as the frontpage, meaning there are auto-updates and infinite scroll and it looks more like what you get if you sign up. It also displays login and sign-up buttons on the side, as well as a few benefits of Mastodon.

Implement dynamic e-mail blacklist for admins (#5109)

Previously the only way to prevent an e-mail domain from being used by new sign-ups was to specify an environment variable and restart Mastodon. This does not work well enough. Now this setting can be changed inside the admin UI without restarting Mastodon, instead.

Other:

  • After 7 days of repeated delivery failures, give up on inbox delivery to reduce wasted effort (#5131)
  • Send streaming API delete to people mentioned in status, so they would get it even if they don't follow the author (#5103)
  • In detailed status view, display the attachment uncropped if there's only one of it (#5054)
  • When a streaming API status arrives, sort it into conversations live so you ...
Read more

v1.6.1

17 Sep 19:25
Compare
Choose a tag to compare

Mastodon

Fixes:

  • Reset preview image if avatar/header image selection was cancelled (#4893)
  • Fix error when following locked accounts (#4896)
  • Fix count numbers from ActivityPub not being saved (#4899)
  • Merge context hash into final JSON hash after key transform (#4898)
  • Fix nil error for old toots that don't have a conversation (#4900)
  • Clean up and improve generated OpenGraph tags (#4901)
  • Whenever a remote keypair changes, unfollow them and re-subscribe to them (#4907)
  • Specify libicu explicitly in Aptfile (#4920)
  • Fix height cache (#4909)
  • Limit pinned toots to 5 (#4923)
  • Add missing suspend checks (#4921)
  • Fix ActivityPub handling of replies with WEB_DOMAIN (#4904)
  • Fix share intent (#4926)
  • Do not keep remote file names, generate random (#4934)
  • Enable to recognize most kinds of characters as URL paths (#4941, #4968, #4975)
  • Fix race condition when receiving an ActivityPub Create multiple times (#4930)
  • Remove redundant width/height values from SVGs to fix Safari bug (#4956)
  • Fix invisible load more button (#4962)
  • Fix filterable_languages method of SettingsHelper (#4966)
  • Fix hasSize condition in secSet and sizes. (#4969)
  • Fix AP serialization error when thread is missing (#4970)
  • Fix an error in ReplyDistributionWorker when replied status was deleted (#4974)
  • Adjust landing pages 2 (#4967)
  • Fix an error when actor json couldn't be fetched in ResolveRemoteAccountService (#4979)
  • Randomize sidekiq-scheduler cron schedule (#4980)
  • Fix cancellation of scroll to the right (#4978)
  • Raise an error on getting activity uri for remote status (#4984)
  • Validate uri presence for remote status (#4985)
  • Oauth code in input form and add description message (#4986)

Features:

  • Add OpenStack Keystone V3 support (#4889)
  • Add section for protocol specific information on the admin page (#4910)
  • Admin UI: Make instance names in into links to user list in the instance (#4924)
  • Admin UI: Add instance search feature (#4925)
  • Admin UI: Uploads for admin site settings (#4913)
    You can now upload your own OpenGraph thumbnail for your instance
  • Redesign video player (#4911)
  • Support OpenGraph video embeds (e.g. Twitch clips) (#4897)
  • Include requested URL into the message on network errors (#4945)
  • Add scheduled worker to purge old user IPs (#4951)
  • When web UI URL used while logged out, redirect to corresponding static page (#4954)
  • When accessing uncached media attachment, redownload it (#4955)

Upgrade notes:

Non-Docker only:

  • Dependency updates: bundle install

Both Docker and non-Docker:

  • This release includes database migrations, that means you need to run RAILS_ENV=production bundle exec rails db:migrate (in Docker: docker-compose run --rm web rails db:migrate).
  • This release includes changes to assets, that means you need to run RAILS_ENV=production bundle exec rails assets:precompile (in Docker: docker-compose run --rm web rails assets:precompile)

Contributors to this release:

@abcang
@akihikodaki
@Artoria2e5
@bounshi
@bruwalfas
@contraexemplo
@fvh-P
@Gargron
@greysteil
@jeroenpraat
@lynlynlynx
@m4sk1n
@mabkenar
@MitarashiDango
@nullkal
@PatF
@Quent-in
@sdukhovni
@ThibG
@unarist
@ykzts
@yukimochi
@zunda

v1.6.0

10 Sep 13:43
Compare
Choose a tag to compare

Mastodon

ActivityPub is a new federated web protocol. From this release onward it is the primary protocol of Mastodon. We will remain compatible with OStatus for the foreseeable future, but version 2.0 of Mastodon will stop sending private toots over it. After installation, accounts in the database will slowly start upgrading. One of the immediate and obvious perks of this new protocol is more complete conversation views on every instance (presuming all participants are upgraded). For more, see this blog post.

Fixes:

  • During Docker build: Use multiple cores in bundler and make (#4544)
  • Web perf: Cache status height (#4439)
  • Fixes to the about page (#4554, #4548, #4682)
  • Add missing content type on throttled responses (#4558)
  • Add coalesce option to avatar and header convert processor (#4552)
  • Add missing @ to the onboarding modal (#4560)
  • Add missing scroll to top to some column headers (#4563)
  • Add favourited toot to favourites column (#4562)
  • Remove toot from favorites column when unfavorited (#4597)
  • Fix emoji picker scrollbar style (#4572)
  • Extend Devise remember_me longevity to 1 year instead of 2 weeks (#4587)
  • Fix search (regression from #4589) (#4594)
  • Fix require_user! behavior when not logged in (#4604)
  • Don't send Link header when prev and next links are empty (#4633)
  • Re-add missing token authorization for /api/v1/verify_credentials (#4650)
  • Refactored streaming connections (#4645)
  • Do not try to re-subscribe to unsubscribed accounts (#4653)
  • Fix visual line-break glitch with .invisible parts of links (#4655)
  • Increase contrast in landing pages (#4567)
  • Periodically remove expired PuSH subscribers (#4654)
  • Disable babel-loader cache when in development environment (#4684)
  • Don't load Roboto webfont when system font is used in the app (#4591)
  • Automatically authorize pending incoming follow requests after unlocking account (#4658)
  • Adjust RTL styles (#4712)
  • Do not scroll the columns area due to redirection (#4541)
  • Remove unnecessary indices (#4738)
  • Add close tag of iframe for OEmbed response (#4745)
  • Docker: Update to Alpine 3.6 (#4747)
  • Make first use less overwhelming with browser permissions: Ask for desktop notifications after 1 minute, ask to register protocol handler after 5 minutes (#4760)
  • Use system's default font (when selected) on non web UI pages too (#4553)
  • Link previews storage and fetching reworked/optimized (#4642)
  • Fix text position of "sensitive content" spoiler in Safari (Mac/iPhone) (#4570)
  • Make "unfollow" remove pending outgoing follow requests too (#4781)
  • Validate presence of data in imports (#4782)
  • Fix short number locales (#4790)
  • Fix a problem that notification column goes to top (#4792)
  • Use correct syntax for content preloading (#4798)
  • Fix streaming url to lowercase (#4804)
  • Show pinned statuses only in the top of the profile page (#4803)
  • Fix some ActivityPub JSON bugs (#4796)
  • Add new index on notifications to make filtering faster (#4750)
  • Adjust status embeds (#4808)
  • Restore instant follow in API response when account is unlocked (#4799)
  • Fix mentions in direct statuses not being delivered via AP (#4806)
  • Do not execute the job with the same arguments as the retry job (#4814)
  • Fix text position of NSFW for video file (#4819)
  • Fix scroll position (#4821)
  • Add Smartphone screen favourite back button and adjust styles (#4813)
  • Make new statuses use the same URI format in both ActivityPub and OStatus (fixes threading issue in OStatus) (#4815)
  • Fix rake task compatibility with Ruby 2.3.x (#4832)
  • Report comment: limit to 1000 characters (#4833)
  • Enable UniqueRetryJobMiddleware even when called from sidekiq worker (#4836)
  • Fix counting of local statuses for stats (#4839)
  • Fix language filter codes (#4841)
  • Handle stream_entry URL correctly in ActivityPub (#4854)
  • Refresh timeline after toot while the timeline is disconnected (#4858)
  • When visibility missing from API call to toot, fallback to user preference (#4861)
  • Check if already follow-requested from FollowService to avoid error (#4855)
  • Scrollable tables in settings pages (#4857)
  • Add missing reject_media check before avatar download via ActivityPub (#4862)
  • Fix errors preventing UnsubscribeService from working (#4866)
  • Set fallback address when empty notification address (#4868)
  • Fix dimensions of loading component for compose drawer (#4872)
  • Hide modal loading screen for media/video/boost/confirm/actions modals (#4873)

Features:

  • 🎉 🎉 ActivityPub 🎉 🎉
  • Include the stats from the /about/more page in API response about instance (#4074)
  • Add protocol handler. Mastodon can now respond to URLs that begin with web+mastodon://, e.g. specially crafted "follow me" buttons would automatically open your correct instance from any webpage (#4511)
    • web+mastodon://follow?uri=alice@example.com opens follow dialog for alice
    • web+mastodon://share?text=Lorem+ipsum opens new toot dialog with preset text "Lorem ipsum"
  • Redesign public profiles. Add no-replies, with-replies, only-media filters (#4608, #4711, #4713)
  • Developer UI for OAuth applications (#2758, #4664, #4671)
  • Add Mastodon::Source.url for forks (#4643)
  • Pinned statuses (#4675, #4690, #4817)
  • Update status embeds with better URLs, better design, branded follow button using protocol handler (#4742)
  • "Embed" modal in web UI (#4748, #4759, #4773)
  • Add script to make embedded iframes autosize (#4853)
  • OpenStack Swift support as alternative to S3 📎 (#2322, #4816)
  • "Mute conversation" option on all own toots, not just in notifications (#4844)
  • Default follows for new users (#4871)
    New users automatically follow certain accounts upon e-mail confirmation. Configurable with admin site setting. When nothing else set, defaults to admins.

Upgrade notes:

Non-Docker only:

  • Dependency updates: bundle install and yarn install

Both Docker and non-Docker:

  • This release includes database migrations, that means you need to run RAILS_ENV=production bundle exec rails db:migrate (in Docker: docker-compose run --rm web rails db:migrate).
  • This release includes changes to assets, that means you need to run RAILS_ENV=production bundle exec rails assets:precompile (in Docker: docker-compose run --rm web rails assets:precompile)
  • After database migrations, clean out old preview cards thumbnails with RAILS_ENV=production bundle exec rails mastodon:maintenance:remove_deprecated_preview_cards (in Docker: docker-compose run --rm web rails mastodon:maintenance:remove_deprecated_preview_cards)

Contributors to this release:

@abcang
@akihikodaki
@algernon
@AndyDrop
@anneau
@BoFFire
@clworld
@contraexemplo
@cygnan
@diomed
@ekiru
@eramdam
@Gargron
@Jehops
@lynlynlynx
@m4sk1n
@mabkenar
@masarakki
@mayaeh
@MightyPork
@MitarashiDango
@miuchan
@muffinista
@nightpool
@nullkal
@pfm-eyesightjp
@Quent-in
@rkarabut
@salvadorpla
@sorin-davidoi
@Sylvhem
@takayamaki
@TheInventrix
@ThomasLeister
@thurloat
@trebmuh
@treyssatvincent
@unarist
@vahnj
@voidsatisfaction
@Wonderfall
@ykzts
@yoshi-pc
@yukimochi
@zunda

v1.6.0rc5

10 Sep 08:52
Compare
Choose a tag to compare
v1.6.0rc5 Pre-release
Pre-release

Mastodon

Fixes:

  • Set fallback address when empty notification address (#4868)
  • Fix dimensions of loading component for compose drawer (#4872)
  • Hide modal loading screen for media/video/boost/confirm/actions modals (#4873)

Features:

  • Default follows for new users (#4871)
    New users automatically follow certain accounts upon e-mail confirmation. Configurable with admin site setting. When nothing else set, defaults to admins.

Upgrade notes:

Both Docker and non-Docker:

  • This release includes changes to assets, that means you need to run RAILS_ENV=production bundle exec rails assets:precompile (in Docker: docker-compose run --rm web rails assets:precompile)

Contributors to this release:

@Gargron
@Quent-in
@ykzts

v1.6.0rc4

09 Sep 15:51
Compare
Choose a tag to compare
v1.6.0rc4 Pre-release
Pre-release

Mastodon

Fixes:

  • Fix rake task compatibility with Ruby 2.3.x (#4832)
  • Report comment: limit to 1000 characters (#4833)
  • Enable UniqueRetryJobMiddleware even when called from sidekiq worker (#4836)
  • Fix counting of local statuses for stats (#4839)
  • Fix language filter codes (#4841)
  • Handle stream_entry URL correctly in ActivityPub (#4854)
  • Refresh timeline after toot while the timeline is disconnected (#4858)
  • When visibility missing from API call to toot, fallback to user preference (#4861)
  • Check if already follow-requested from FollowService to avoid error (#4855)
  • Scrollable tables in settings pages (#4857)
  • Add missing reject_media check before avatar download via ActivityPub (#4862)
  • Fix errors preventing UnsubscribeService from working (#4866)

Features:

  • Add column for managing your pinned toots (#4817)
  • Fetch statuses/following/followers numbers from ActivityPub (#4840)
  • "Mute conversation" option on all own toots, not just in notifications (#4844)
  • Add script to make embedded iframes autosize (#4853)

Upgrade notes:

Non-Docker only:

  • Dependency updates: bundle install and yarn install

Both Docker and non-Docker:

  • This release includes changes to assets, that means you need to run RAILS_ENV=production bundle exec rails assets:precompile (in Docker: docker-compose run --rm web rails assets:precompile)

Contributors to this release:

@abcang
@Gargron
@Jehops
@lynlynlynx
@m4sk1n
@pfm-eyesightjp
@Quent-in
@trebmuh
@unarist
@voidsatisfaction
@ykzts