@Gargron Gargron released this Jul 11, 2018 · 119 commits to master since this release

Assets 2

Mastodon

Features:

Add more granular OAuth scopes (#7929)

Additionally to existing read, write, follow and push scopes, there are now read and write scopes limited to particular areas of the API, so an app could request to manage your blocks for you without gaining access to posting from your account or following other people. See the PR for details.

Keyword/phrase filtering (#7905)

A better alternative to the old client-side regex filter function: You can now define keywords or phrases to be hidden, choose which contexts (like home timeline vs notifications vs public timelines) the filter should be active in, and whether it should expire after a time. Comes with a new REST API so apps can manage filters and streaming API updates for client-side filtering.

GET|POST /api/v1/filters
GET|PUT|DELETE /api/v1/filters/:id

Follow recommendations API (#7918)

Interaction data is technically already in Mastodon in the form of status and favourite records, but costly to query. Mastodon will now denormalize such interaction data specifically for interactions with people you are not following (colloquially: "here is a list of people I often reblog/fave but am not following yet"). The idea is that you may have lots of positive interactions with someone, but forget to click follow on their profile. The new API method will return such results. No user interface yet.

GET /api/v1/suggestions
DELETE /api/v1/suggestions/:account_id

Other:

  • Add admin setting to enable OpenGraph previews for sensitive media (#7962)
  • Allow the media modal to be closed by pressing back (#7934)

Fixes:

  • Fix broken single column getting-started menu (#7862)
  • Fix CW field still having animation in when reduce motion is enabled (#7872)
  • Disable reverted index changes (#7871)
  • Fix jpeg files sometimes being returned with a .jpe extension (#7881)
  • Fix Chrome issue with sizes="0px" (#7886)
  • Add /mastodon/bin to $PATH (#7889)
  • Add .bundle to .dockerignore (#7895)
  • Add symbolic link for yarnpkg (#7894)
  • On the mobile UI, move the search column to the right (#7877)
  • Typo in signature verification failure logging (#7916)
  • Improve embeds (#7919)
  • Display full username in tooltip on search and autosuggest (#7920)
  • Fix style of attachment list on /about (#7930)
  • Fix M hotkey inserting @undefined when in detailed status (#7931)
  • Fix unknown addon provider in scalingo.json (#7928)
  • Restore support to Ruby 2.3 (#7935)
  • Disable service worker media cache and IndexedDB storage (#7932)
  • What is on your mind -> What's on your mind (#7938)
  • Respect noindex rule in remote follow view (#7939)
  • Add white outline to dark emojis (#7936)
  • Fix dark background error on user-mention autosuggest in light theme (#7937)
  • Fix overlapping profile name and domain (#7927)
  • Crush PNGs to reduce overall size (#7954)
  • Check reblogged status for blocked/muted mentions (#7957)
  • In e-mail validator, fallback from MX to A record (#7955)
  • If signed in, redirect autofollow invite to profile page (#7956)
  • Send undo of boost to original poster if reblog (#7959)
  • Update Twemoji to v11 (#7911)
  • Example for TOR federation in docker-compose.yml (#7875)
  • Remove .p-name microformat class (#7961)
  • Add follow button to detailed status, add gradient to mask bio cut-off (#7979)

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:

  • 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:

@ariasuni
@d6rkaiz
@Dryusdan
@fvh-P
@Gargron
@hcmiya
@hinaloe
@kedamaDQ
@m4sk1n
@MaciekBaron
@mareklach
@martymcguire
@NecroTechno
@lynlynlynx
@Quenty31
@renatolond
@SerCom-KC
@shuheiktgw
@takayamaki
@ThibG
@u1-liquid
@usbsnowcrash
@ykzts
@zunda

Pre-release
Pre-release

@Gargron Gargron released this Jul 10, 2018 · 121 commits to master since this release

Assets 2

Mastodon

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

Fixes:

  • Add option to not consider word boundaries when processing keyword filtering (#7975)
  • Add link to filters in web UI dropdown (#7990)

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

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:

@Gargron
@ThibG
@ykzts

Pre-release
Pre-release

@Gargron Gargron released this Jul 7, 2018 · 126 commits to master since this release

Assets 2

Mastodon

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

Fixes:

  • Fix gradient, regression from #7927 (#7963)
  • Fix missing irreversible in filters API, expires_in param (#7976)
  • Remove .p-name microformat class (#7961)
  • Fix filters not affecting notifications in web UI (#7977)
  • Fix french translation of “Keyword or phrase” (#7980)
  • Add API method to remove a suggestion (#7978)
  • Add follow button to detailed status, add gradient to mask bio cut-off (#7979)

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

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
@lynlynlynx
@m4sk1n
@ThibG
@ykzts

Pre-release
Pre-release

@Gargron Gargron released this Jul 6, 2018 · 136 commits to master since this release

Assets 2

Mastodon

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

Features:

Add more granular OAuth scopes (#7929)

Additionally to existing read, write, follow and push scopes, there are now read and write scopes limited to particular areas of the API, so an app could request to manage your blocks for you without gaining access to posting from your account or following other people. See the PR for details.

Keyword/phrase filtering (#7905)

A better alternative to the old client-side regex filter function: You can now define keywords or phrases to be hidden, choose which contexts (like home timeline vs notifications vs public timelines) the filter should be active in, and whether it should expire after a time. Comes with a new REST API so apps can manage filters and streaming API updates for client-side filtering.

Follow recommendations API (#7918)

Interaction data is technically already in Mastodon in the form of status and favourite records, but costly to query. Mastodon will now denormalize such interaction data specifically for interactions with people you are not following. The idea is that you may have lots of positive interactions with someone, but forget to click follow on their profile. The new API method will show such results. No user interface yet.

Other:

  • Add admin setting to enable OpenGraph previews for sensitive media (#7962)
  • Allow the media modal to be closed by pressing back (#7934)

Fixes:

  • Fix broken single column getting-started menu (#7862)
  • Fix CW field still having animation in when reduce motion is enabled (#7872)
  • Disable reverted index changes (#7871)
  • Fix jpeg files sometimes being returned with a .jpe extension (#7881)
  • Fix Chrome issue with sizes="0px" (#7886)
  • Add /mastodon/bin to $PATH (#7889)
  • Add .bundle to .dockerignore (#7895)
  • Add symbolic link for yarnpkg (#7894)
  • On the mobile UI, move the search column to the right (#7877)
  • Typo in signature verification failure logging (#7916)
  • Improve embeds (#7919)
  • Display full username in tooltip on search and autosuggest (#7920)
  • Fix style of attachment list on /about (#7930)
  • Fix M hotkey inserting @undefined when in detailed status (#7931)
  • Fix unknown addon provider in scalingo.json (#7928)
  • Restore support to ruby 2.3 (#7935)
  • Disable service worker media cache and IndexedDB storage (#7932)
  • What is on your mind -> What's on your mind (#7938)
  • Respect noindex rule in remote follow view (#7939)
  • Add white outline to dark emojis (#7936)
  • Fix dark background error on user-mention autosuggest in light theme (#7937)
  • Fix overlapping profile name and domain (#7927)
  • Crush PNGs to reduce overall size (#7954)
  • Check reblogged status for blocked/muted mentions (#7957)
  • In e-mail validator, fallback from MX to A record (#7955)
  • If signed in, redirect autofollow invite to profile page (#7956)
  • Send undo of boost to original poster if reblog (#7959)
  • Update Twemoji to v11 (#7911)
  • Example for TOR federation in docker-compose.yml (#7875)

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:

  • 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:

@ariasuni
@d6rkaiz
@Dryusdan
@fvh-P
@Gargron
@hcmiya
@hinaloe
@kedamaDQ
@m4sk1n
@MaciekBaron
@mareklach
@martymcguire
@NecroTechno
@Quenty31
@renatolond
@SerCom-KC
@shuheiktgw
@takayamaki
@ThibG
@u1-liquid
@usbsnowcrash
@ykzts
@zunda

@Gargron Gargron released this Jun 19, 2018 · 189 commits to master since this release

Assets 2

Mastodon

Features:

Add autofollow option to invites (#7805)

When creating an invite link, you can choose to make it personal: People who will sign up using the link will automatically follow you upon account activation. The sign-up screen will show this, and of course they can unfollow you later. Useful for bringing followers over from other platforms!

Change language opt-out to language opt-in (#7823)

The previous approach was a mistake: People don't speak more than a handful of languages most of the time, and making everyone tick more than 20 checkboxes just to remove everything they don't know was not user-friendly. This is a turn-around: Now you only have to select languages you want to see, everything else will be hidden. If you don't select anything, all languages will be shown to you, like before.

Allow selecting default posting language instead of auto-detect (#7828)

Language detection is guess-work and often gives inaccurate results, especially on very short messages. In 2.4.0, an option was added to the REST API to specify the language of a single toot manually. Now we're adding a preference to override auto-detection with some particular language.

Other:

  • Remove placeholder text for media-only toots (#7806)
  • Add "find friends", "invite people", and more to getting started footer (#7803)
  • Add profile options on compose form (#7789)
  • Add dat, dweb, ipfs, ipns, ssb, gopher protocols to URL extractor (#7810)

Fixes:

  • Remove rack-timeout (#7809)
  • Fix regression where CW is focused on reply (#7811)
  • Hide status content when spoiler text is not empty (#7797)
  • Put "Media only" option in column settings instead of content area headline (#7801)
  • Do not pre-emojify note HTML in accounts REST API (#7821)
  • Remove unused indexes (#7829)
  • DataTransfer.types may Array-like object (#7827)
  • Adjust account__action-bar contents (#7818)
  • Fix autosuggest-textarea backgrounds and some minor adjustments (#7817)
  • Make list icons different from the getting-started icons (#7838)
  • Create special case to prefer "jpeg" over "jpe" file extension (#7841)
  • Serialize language into ActivityPub JSON (#7840)
  • Update bcrypt to 3.1.12 fix issue with Fedora (#7845)

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:

  • 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:

@chr-1x
@Gargron
@hinaloe
@Kjwon15
@lynlynlynx
@mabkenar
@SerCom-KC
@shuheiktgw
@ykzts

Pre-release
Pre-release

@Gargron Gargron released this Jun 18, 2018 · 191 commits to master since this release

Assets 2

Mastodon

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

Fixes:

  • Always send content for backwards-compatibility (#7844)
  • Update bcrypt to 3.1.12 fix issue with Fedora (#7845)

Upgrade notes:

Non-Docker only:

  • Dependency updates: bundle install

Contributors to this release:

TBA

Pre-release
Pre-release

@Gargron Gargron released this Jun 18, 2018 · 194 commits to master since this release

Assets 2

Mastodon

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

Fixes:

  • Make list icons different from the getting-started icons (#7838)
  • Create special case to prefer "jpeg" over "jpe" file extension (#7841)
  • Serialize language into ActivityPub JSON (#7840)

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:

TBA

Pre-release
Pre-release

@Gargron Gargron released this Jun 17, 2018 · 201 commits to master since this release

Assets 2

Mastodon

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

Features:

Add autofollow option to invites (#7805)

When creating an invite link, you can choose to make it personal: People who will sign up using the link will automatically follow you upon account activation. The sign-up screen will show this, and of course they can unfollow you later. Useful for bringing followers over from other platforms!

Change language opt-out to language opt-in (#7823)

The previous approach was a mistake: People don't speak more than a handful of languages most of the time, and making everyone tick more than 20 checkboxes just to remove everything they don't know was not user-friendly. This is a turn-around: Now you only have to select languages you want to see, everything else will be hidden. If you don't select anything, all languages will be shown to you, like before.

Allow selecting default posting language instead of auto-detect (#7828)

Language detection is guess-work and often gives inaccurate results, especially on very short messages. In 2.4.0, an option was added to the REST API to specify the language of a single toot manually. Now we're adding a preference to override auto-detection with some particular language.

Other:

  • Remove placeholder text for media-only toots (#7806)
  • Add "find friends", "invite people", and more to getting started footer (#7803)
  • Add profile options on compose form (#7789)
  • Add dat, dweb, ipfs, ipns, ssb, gopher protocols to URL extractor (#7810)

Fixes:

  • Remove rack-timeout (#7809)
  • Fix regression where CW is focused on reply (#7811)
  • Hide status content when spoiler text is not empty (#7797)
  • Put "Media only" option in column settings instead of content area headline (#7801)
  • Do not pre-emojify note HTML in accounts REST API (#7821)
  • Remove unused indexes (#7829)
  • DataTransfer.types may Array-like object (#7827)
  • Adjust account__action-bar contents (#7818)
  • Fix autosuggest-textarea backgrounds and some minor adjustments (#7817)

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:

  • 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:

@chr-1x
@Gargron
@hinaloe
@Kjwon15
@lynlynlynx
@mabkenar
@SerCom-KC
@shuheiktgw
@ykzts

@Gargron Gargron released this Jun 10, 2018 · 228 commits to master since this release

Assets 2

Mastodon

Note: There is an important database migration in this release. Please read the upgrade notes carefully.

Features:

Add delete & redraft function (#7735)

If you noticed a typo or missing word on a toot that's already been sent, you can now choose to "delete & redraft" that toot. It pre-fills the compose area with all the data from your toot, including attached files, allowing you to edit and re-send it. It becomes a new toot, so boosts, favourites and replies to it will be reset.

Improved getting started column (#7676)

On mobile, the getting started column more prominently displays a link to your profile, preferences and security settings, and omits linking to timelines or columns that are anyway listed in the tab bar above.

On desktop, the getting started column now categorizes links into "Discovery" and "Personal" which should help new users orient themselves in the app. Links to blocked users, muted users and domain blocks have been moved to the dropdown menu on your own profile.

On both layouts, the bottom of the column has been restyled. Links to the FAQ, user guide and apps list have been replaced with links to "Hotkeys", "About this instance", "Terms of Service", "Documentation" and "Logout". Documentation, in turn, contains the FAQ, user guide and apps list.

Improved e-mail validation (#7631)

On sign up, entered e-mail address will be checked for the presence of an MX record, which indicates that it's potentially a real e-mail address. Furthermore, the MX record is checked against the e-mail domains blacklist, which allows blocking spammers who have many alias domains pointing to the same e-mail server.

Improve "Hide everything from {domain}" behaviour (#7765, #7773)

The confirmation dialog now explains what will happen when you block a domain. It will remove your followers from that domain, prevent new followers or follow requests from that domain, hide toots from the domain in public timelines, hide boosts of toots from the domain in your home timeline, and hide any mentions or notifications from that domain. It will not make you unfollow someone from that domain you've already been following, and those people will be able to appear in your home feed and notifications.

Filter out blocked/muted people from profile timelines (#7747)

Due to popular demand, boosts of blocked/muted people will no longer appear on profiles you view.

Other:

UI/UX additions:

  • Public timelines now have a tab bar for choosing between all toots and only ones that contain media attachments (#7598)
  • Submit report with ctrl+enter (#7729)
  • Emoji pack upgraded, new unicode emojis available in the picker (#7746)
  • Add "Edit profile" link to public profile page (#7754)

REST API additions:

  • New API endpoint: GET /api/v2/search, which returns the same results as v1, except the hashtags are returned as objects with trend data instead of mere strings (#7661)

Performance improvements:

  • Optimize direct timeline (#7614)
  • Reduce wasted work in RemoveStatusService due to inactive followers (#7672)
  • Improve counter caches on Status and Account (#7644)

Fixes:

Backend:

  • Disable AMS logging (#7623)
  • Catch ActionController::UnknownFormat and return HTTP 406 (#7621)
  • Rescue Mastodon::DimensionsValidationError in Remoteable (#7662)
  • Fix error when unmuting a domain without listing muted domains first (#7670)
  • Deduplicate accounts and make unique username/domain index case-insensitive (#7658)
  • Skip processing when HEAD method returns 501 (#7730)
  • Detect file extension from Content-Type header in Remoteable (#7733)
  • Migrate old web push subscriptions to ensure deliveries (#7764)

Deployments:

  • Remove Puma pidfile before boot if container receives SIGTERM (#7052)
  • Speed up some rake tasks by moving execution to Sidekiq (#7678)

ActivityPub:

  • Ignore multiple occurrences of a hashtag within a status (#7606)
  • Do not mark remote status as sensitive even if spoiler text is present (only apply that logic locally) (#7395)
  • Do not accept ActivityPub follow requests from blocked user (#7756)

OStatus:

  • Fix N+1 on AtomSerializer (#7669)

UI/UX:

  • Fix caret position after selected suggestion and media upload (#7595)
  • Fix lock icon position in account card (#7630)
  • Don't use Object.assign with Notification, only display actions for mentions (#7632)
  • Redirect / to home on mobile layout, to getting started on desktop (#7677)
  • Put the CW field between the toot we are replying to and the toot field (#7508)
  • Control the focus when clicking the CW button. (#7776)
  • Display numbers in account header using shortNumberFormat for consistency (#7723)
  • Remove unnecessary underline on admin accounts table (#7728)
  • Preserve newlines in delete & redraft and desktop notifications (#7750)
  • Improve emoji picker design in light theme (#7772, #7768)
  • Fix some colors in light theme (#7722)

Other:

  • Added the law requirements for the EU/EEA into the default privacy policy (#7605)

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

Please read: So far, Mastodon had been missing a database constraint for case-insensitivity (e.g. capital A vs lowercase a) due to an early mistake. Mostly it's been fine due to code outside of the database ensuring integrity, but that code has not always been perfect, and among other things sometimes failed due to race conditions. Long story short, your database may contain account records which share the same username/domain combination and are therefore unreachable by mentions, URLs, etc, and which sometimes lead to unexpected behaviour.

This release contains a fix for that situation. The database migrations will find affected accounts and either merge them (when possible and applicable) or delete them without trace, after which the database constraint will be created to ensure no data integrity issues of this nature occur in the future.

For remote accounts, the most recently active one will be the reference account into which others will be merged (but only as long as they have the same public key, which is definitive proof that it's really the same account).

For local accounts, the oldest account will be kept and others deleted. For people behind those duplicate accounts, Mastodon has never been fully functional, because they could never open their profile or receive mentions. However, if you want to manually deal with those accounts instead of having the migration delete them, before running the migration, you can use the rake mastodon:maintenance:find_duplicate_usernames task.

Non-Docker only:

  • Dependency updates: 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)

Contributors to this release:

@abcang
@akihikodaki
@ariasuni
@Gargron
@imbsky
@kedamaDQ
@kibitan
@lynlynlynx
@m4sk1n
@nightpool
@renatolond
@Reverite
@SerCom-KC
@shuheiktgw
@takayamaki
@tateisu
@ThibG
@unarist
@ykzts

Pre-release
Pre-release

@Gargron Gargron released this Jun 9, 2018 · 233 commits to master since this release

Assets 2

Mastodon

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

Features:

  • Emoji pack upgraded (#7746)

Fixes:

  • Add "Edit profile" link to public profile page (#7754)
  • Do not accept ActivityPub follow requests from blocked user (#7756)
  • Migrate old web push subscriptions to ensure deliveries (#7764)
  • Fix has_one association on Web::PushSubscription (#7767)
  • Improve "Hide everything from {domain}" behaviour (#7765, #7773)
  • Improve emoji picker design in light theme (#7772, #7768)

Upgrade notes:

If you are upgrading from anything other than v2.4.1rc1, see the upgrade instructions for that release first.

Non-Docker only:

  • Dependency updates: 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)

Contributors to this release:

TBA