Merge pull request #1272 from ThibG/glitch-soc/merge-upstream
Merge upstream changes
This commit is contained in:
		
						commit
						93f1edd430
					
				
					 14 changed files with 280 additions and 43 deletions
				
			
		|  | @ -69,7 +69,12 @@ aliases: | ||||||
|         - *install_system_dependencies |         - *install_system_dependencies | ||||||
|         - run: ruby -e 'puts RUBY_VERSION' | tee /tmp/.ruby-version |         - run: ruby -e 'puts RUBY_VERSION' | tee /tmp/.ruby-version | ||||||
|         - *restore_ruby_dependencies |         - *restore_ruby_dependencies | ||||||
|         - run: bundle install --clean --jobs 16 --path ./vendor/bundle/ --retry 3 --with pam_authentication --without development production && bundle clean |         - run: bundle config set clean 'true' | ||||||
|  |         - run: bundle config set deployment 'true' | ||||||
|  |         - run: bundle config set with 'pam_authentication' | ||||||
|  |         - run: bundle config set without 'development production' | ||||||
|  |         - run: bundle config set frozen 'true' | ||||||
|  |         - run: bundle install --jobs 16 --retry 3 && bundle clean | ||||||
|         - save_cache: |         - save_cache: | ||||||
|             key: v2-ruby-dependencies-{{ checksum "/tmp/.ruby-version" }}-{{ checksum "Gemfile.lock" }} |             key: v2-ruby-dependencies-{{ checksum "/tmp/.ruby-version" }}-{{ checksum "Gemfile.lock" }} | ||||||
|             paths: |             paths: | ||||||
|  |  | ||||||
							
								
								
									
										156
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										156
									
								
								CHANGELOG.md
									
									
									
									
									
								
							|  | @ -3,6 +3,162 @@ Changelog | ||||||
| 
 | 
 | ||||||
| All notable changes to this project will be documented in this file. | All notable changes to this project will be documented in this file. | ||||||
| 
 | 
 | ||||||
|  | ## Unreleased | ||||||
|  | ### Added | ||||||
|  | 
 | ||||||
|  | - Add bookmarks ([ThibG](https://github.com/tootsuite/mastodon/pull/7107), [Gargron](https://github.com/tootsuite/mastodon/pull/12494), [Gomasy](https://github.com/tootsuite/mastodon/pull/12381)) | ||||||
|  | - Add announcements ([Gargron](https://github.com/tootsuite/mastodon/pull/12662), [Gargron](https://github.com/tootsuite/mastodon/pull/12967), [Gargron](https://github.com/tootsuite/mastodon/pull/12970), [Gargron](https://github.com/tootsuite/mastodon/pull/12963), [Gargron](https://github.com/tootsuite/mastodon/pull/12950), [Gargron](https://github.com/tootsuite/mastodon/pull/12990), [Gargron](https://github.com/tootsuite/mastodon/pull/12949), [Gargron](https://github.com/tootsuite/mastodon/pull/12989), [Gargron](https://github.com/tootsuite/mastodon/pull/12964), [Gargron](https://github.com/tootsuite/mastodon/pull/12965), [ThibG](https://github.com/tootsuite/mastodon/pull/12958), [ThibG](https://github.com/tootsuite/mastodon/pull/12957), [Gargron](https://github.com/tootsuite/mastodon/pull/12955), [ThibG](https://github.com/tootsuite/mastodon/pull/12946), [ThibG](https://github.com/tootsuite/mastodon/pull/12954)) | ||||||
|  | - Add number animations in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/12948), [Gargron](https://github.com/tootsuite/mastodon/pull/12971)) | ||||||
|  | - Add `kab`, `is`, `kn`, `mr`, `ur` to available locales ([Gargron](https://github.com/tootsuite/mastodon/pull/12882), [BoFFire](https://github.com/tootsuite/mastodon/pull/12962), [Gargron](https://github.com/tootsuite/mastodon/pull/12379)) | ||||||
|  | - Add profile filter category ([ThibG](https://github.com/tootsuite/mastodon/pull/12918)) | ||||||
|  | - Add ability to add oneself to lists ([ThibG](https://github.com/tootsuite/mastodon/pull/12271)) | ||||||
|  | - Add hint how to contribute translations to preferences page ([Sasha-Sorokin](https://github.com/tootsuite/mastodon/pull/12736)) | ||||||
|  | - Add signatures to statuses in archive takeout ([noellabo](https://github.com/tootsuite/mastodon/pull/12649)) | ||||||
|  | - Add support for `magnet:` and `xmpp` links ([ThibG](https://github.com/tootsuite/mastodon/pull/12905), [ThibG](https://github.com/tootsuite/mastodon/pull/12709)) | ||||||
|  | - Add `follow_request` notification type ([ThibG](https://github.com/tootsuite/mastodon/pull/12198)) | ||||||
|  | - Add ability to filter reports by account domain in admin UI ([ThibG](https://github.com/tootsuite/mastodon/pull/12154)) | ||||||
|  | - Add link to search for users connected from the same IP address to admin UI ([ThibG](https://github.com/tootsuite/mastodon/pull/12157)) | ||||||
|  | - Add link to reports targeting a specific domain in admin view ([ThibG](https://github.com/tootsuite/mastodon/pull/12513)) | ||||||
|  | - Add support for EventSource streaming in web UI ([BenLubar](https://github.com/tootsuite/mastodon/pull/12887)) | ||||||
|  | - Add hotkey for opening media attachments in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/12498), [Kjwon15](https://github.com/tootsuite/mastodon/pull/12546)) | ||||||
|  | - Add relationship-based options to status dropdowns in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/12377), [ThibG](https://github.com/tootsuite/mastodon/pull/12535), [Gargron](https://github.com/tootsuite/mastodon/pull/12430)) | ||||||
|  | - Add support for submitting media description with `ctrl`+`enter` in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/12272)) | ||||||
|  | - Add download button to audio and video players in web UI ([NimaBoscarino](https://github.com/tootsuite/mastodon/pull/12179)) | ||||||
|  | - Add setting for whether to crop images in timelines in web UI ([duxovni](https://github.com/tootsuite/mastodon/pull/12126)) | ||||||
|  | - Add support for `Event` activities ([tcitworld](https://github.com/tootsuite/mastodon/pull/12637)) | ||||||
|  | - Add basic support for `Group` actors ([noellabo](https://github.com/tootsuite/mastodon/pull/12071)) | ||||||
|  | - Add `S3_OVERRIDE_PATH_STYLE` environment variable ([Gargron](https://github.com/tootsuite/mastodon/pull/12594)) | ||||||
|  | - Add `S3_OPEN_TIMEOUT` environment variable ([tateisu](https://github.com/tootsuite/mastodon/pull/12459)) | ||||||
|  | - Add `LDAP_MAIL` environment variable ([madmath03](https://github.com/tootsuite/mastodon/pull/12053)) | ||||||
|  | - Add `LDAP_UID_CONVERSION_ENABLED` environment variable ([madmath03](https://github.com/tootsuite/mastodon/pull/12461)) | ||||||
|  | - Add `--remote-only` option to `tootctl emoji purge` ([ThibG](https://github.com/tootsuite/mastodon/pull/12810)) | ||||||
|  | - Add `tootctl media remove-orphans` ([Gargron](https://github.com/tootsuite/mastodon/pull/12568), [Gargron](https://github.com/tootsuite/mastodon/pull/12571)) | ||||||
|  | - Add `tootctl media lookup` command ([irlcatgirl](https://github.com/tootsuite/mastodon/pull/12283)) | ||||||
|  | - Add cache for OEmbed endpoints to avoid extra HTTP requests ([Gargron](https://github.com/tootsuite/mastodon/pull/12403)) | ||||||
|  | - Add support for KaiOS arrow navigation to public pages ([nolanlawson](https://github.com/tootsuite/mastodon/pull/12251)) | ||||||
|  | - Add `discoverable` to accounts in REST API ([trwnh](https://github.com/tootsuite/mastodon/pull/12508)) | ||||||
|  | - Add admin setting to disable default follows ([ArisuOngaku](https://github.com/tootsuite/mastodon/pull/12566)) | ||||||
|  | - Add support for LDAP and PAM in the OAuth password grant strategy ([ntl-purism](https://github.com/tootsuite/mastodon/pull/12390)) | ||||||
|  | - Allow support for `Accept`/`Reject` activities with a non-embedded object ([puckipedia](https://github.com/tootsuite/mastodon/pull/12199)) | ||||||
|  | 
 | ||||||
|  | ### Changed | ||||||
|  | 
 | ||||||
|  | - Change `last_status_at` to be a date, not datetime in REST API ([ThibG](https://github.com/tootsuite/mastodon/pull/12966)) | ||||||
|  | - Change followers page to relationships page in admin UI ([Gargron](https://github.com/tootsuite/mastodon/pull/12927), [Gargron](https://github.com/tootsuite/mastodon/pull/12934)) | ||||||
|  | - Change reported media attachments to always be hidden in admin UI ([Gargron](https://github.com/tootsuite/mastodon/pull/12879), [ThibG](https://github.com/tootsuite/mastodon/pull/12907)) | ||||||
|  | - Change string from "Disable" to "Disable login" in admin UI ([nileshkumar](https://github.com/tootsuite/mastodon/pull/12201)) | ||||||
|  | - Change report page structure in admin UI ([Sasha-Sorokin](https://github.com/tootsuite/mastodon/pull/12615)) | ||||||
|  | - Change swipe sensitivity to be lower on small screens in web UI ([umonaca](https://github.com/tootsuite/mastodon/pull/12168)) | ||||||
|  | - Change audio/video playback to stop playback when out of view in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/12486)) | ||||||
|  | - Change media description label based on upload type in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/12270)) | ||||||
|  | - Change large numbers to render without decimal units in web UI ([noellabo](https://github.com/tootsuite/mastodon/pull/12706)) | ||||||
|  | - Change "Add a choice" button to be disabled rather than hidden when poll limit reached in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/12319), [hinaloe](https://github.com/tootsuite/mastodon/pull/12544)) | ||||||
|  | - Change `tootctl statuses remove` to keep statuses favourited or bookmarked by local users ([ThibG](https://github.com/tootsuite/mastodon/pull/11267), [Gomasy](https://github.com/tootsuite/mastodon/pull/12818)) | ||||||
|  | - Change domain block behavior to update user records (fast) before deleting data (slower) ([ThibG](https://github.com/tootsuite/mastodon/pull/12247)) | ||||||
|  | - Change behaviour to strip audio metadata on uploads ([hugogameiro](https://github.com/tootsuite/mastodon/pull/12171)) | ||||||
|  | - Change accepted length of remote media descriptions from 420 to 1,500 characters ([ThibG](https://github.com/tootsuite/mastodon/pull/12262)) | ||||||
|  | - Change preferences pages structure ([Sasha-Sorokin](https://github.com/tootsuite/mastodon/pull/12497), [mayaeh](https://github.com/tootsuite/mastodon/pull/12517), [Sasha-Sorokin](https://github.com/tootsuite/mastodon/pull/12801), [Sasha-Sorokin](https://github.com/tootsuite/mastodon/pull/12797), [Sasha-Sorokin](https://github.com/tootsuite/mastodon/pull/12799), [Sasha-Sorokin](https://github.com/tootsuite/mastodon/pull/12793)) | ||||||
|  | - Change format of titles in RSS ([devkral](https://github.com/tootsuite/mastodon/pull/8596)) | ||||||
|  | - Change favourite icon animation from spring-based motion to CSS animation in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/12175)) | ||||||
|  | - Change minimum required Node.js version to 10, and default to 12 ([Shleeble](https://github.com/tootsuite/mastodon/pull/12791), [mkody](https://github.com/tootsuite/mastodon/pull/12906), [Shleeble](https://github.com/tootsuite/mastodon/pull/12703)) | ||||||
|  | - Change spam check to exempt server staff ([ThibG](https://github.com/tootsuite/mastodon/pull/12874)) | ||||||
|  | - Change to fallback to to `Create` audience when `object` has no defined audience ([ThibG](https://github.com/tootsuite/mastodon/pull/12249)) | ||||||
|  | - Change Twemoji library to 12.1.3 in web UI ([koyuawsmbrtn](https://github.com/tootsuite/mastodon/pull/12342)) | ||||||
|  | - Change blocked users to be hidden from following/followers lists ([ThibG](https://github.com/tootsuite/mastodon/pull/12733)) | ||||||
|  | 
 | ||||||
|  | ### Removed | ||||||
|  | 
 | ||||||
|  | - Remove unused dependencies ([ykzts](https://github.com/tootsuite/mastodon/pull/12861), [mayaeh](https://github.com/tootsuite/mastodon/pull/12826), [ThibG](https://github.com/tootsuite/mastodon/pull/12822), [ykzts](https://github.com/tootsuite/mastodon/pull/12533)) | ||||||
|  | 
 | ||||||
|  | ### Fixed | ||||||
|  | 
 | ||||||
|  | - Fix some translatable strings being used wrongly ([Sasha-Sorokin](https://github.com/tootsuite/mastodon/pull/12569), [Sasha-Sorokin](https://github.com/tootsuite/mastodon/pull/12589), [Sasha-Sorokin](https://github.com/tootsuite/mastodon/pull/12502), [mayaeh](https://github.com/tootsuite/mastodon/pull/12231)) | ||||||
|  | - Fix headline of public timeline page when set to local-only ([ykzts](https://github.com/tootsuite/mastodon/pull/12224)) | ||||||
|  | - Fix space between tabs not being spread evenly in web UI ([Sasha-Sorokin](https://github.com/tootsuite/mastodon/pull/12944), [Sasha-Sorokin](https://github.com/tootsuite/mastodon/pull/12961), [Sasha-Sorokin](https://github.com/tootsuite/mastodon/pull/12446)) | ||||||
|  | - Fix interactive delays in database migrations with no TTY ([Gargron](https://github.com/tootsuite/mastodon/pull/12969)) | ||||||
|  | - Fix status overflowing in report dialog in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/12959)) | ||||||
|  | - Fix unlocalized dropdown button title in web UI ([Sasha-Sorokin](https://github.com/tootsuite/mastodon/pull/12947)) | ||||||
|  | - Fix media attachments without file being uploadable ([Gargron](https://github.com/tootsuite/mastodon/pull/12562)) | ||||||
|  | - Fix unfollow confirmations in profile directory in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/12922)) | ||||||
|  | - Fix duplicate `description` meta tag on accounts public pages ([ThibG](https://github.com/tootsuite/mastodon/pull/12923)) | ||||||
|  | - Fix slow query of federated timeline ([notozeki](https://github.com/tootsuite/mastodon/pull/12886)) | ||||||
|  | - Fix not all of account's active IPs showing up in admin UI ([Gargron](https://github.com/tootsuite/mastodon/pull/12909), [Gargron](https://github.com/tootsuite/mastodon/pull/12943)) | ||||||
|  | - Fix search by IP not using alternative browser sessions in admin UI ([Gargron](https://github.com/tootsuite/mastodon/pull/12904)) | ||||||
|  | - Fix “X new items” not showing up for slow mode on empty timelines in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/12875)) | ||||||
|  | - Fix OEmbed endpoint being inaccessible in secure mode ([Gargron](https://github.com/tootsuite/mastodon/pull/12864)) | ||||||
|  | - Fix proofs API being inaccessible in secure mode ([Gargron](https://github.com/tootsuite/mastodon/pull/12495)) | ||||||
|  | - Fix Ruby 2.7 incompatibilities ([ThibG](https://github.com/tootsuite/mastodon/pull/12831), [ThibG](https://github.com/tootsuite/mastodon/pull/12824), [Shleeble](https://github.com/tootsuite/mastodon/pull/12759), [zunda](https://github.com/tootsuite/mastodon/pull/12769)) | ||||||
|  | - Fix invalid poll votes being accepted in REST API ([ThibG](https://github.com/tootsuite/mastodon/pull/12601)) | ||||||
|  | - Fix old migrations failing because of strong migrations update ([ThibG](https://github.com/tootsuite/mastodon/pull/12787), [ThibG](https://github.com/tootsuite/mastodon/pull/12692)) | ||||||
|  | - Fix reuse of detailed status components in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/12792)) | ||||||
|  | - Fix base64-encoded file uploads not being possible in REST API ([Gargron](https://github.com/tootsuite/mastodon/pull/12748), [Gargron](https://github.com/tootsuite/mastodon/pull/12857)) | ||||||
|  | - Fix resource_owner_from_credentials in Doorkeeper initializer ([Gargron](https://github.com/tootsuite/mastodon/pull/12743)) | ||||||
|  | - Fix error due to missing authentication call in filters controller ([Gargron](https://github.com/tootsuite/mastodon/pull/12746)) | ||||||
|  | - Fix uncaught unknown format error in host meta controller ([Gargron](https://github.com/tootsuite/mastodon/pull/12747)) | ||||||
|  | - Fix URL search not returning private toots user has access to ([ThibG](https://github.com/tootsuite/mastodon/pull/12742), [ThibG](https://github.com/tootsuite/mastodon/pull/12336)) | ||||||
|  | - Fix cache digesting log noise on status embeds ([Gargron](https://github.com/tootsuite/mastodon/pull/12750)) | ||||||
|  | - Fix slowness due to layout thrashing when reloading a large set of statuses in web UI ([panarom](https://github.com/tootsuite/mastodon/pull/12661), [panarom](https://github.com/tootsuite/mastodon/pull/12744), [Gargron](https://github.com/tootsuite/mastodon/pull/12712)) | ||||||
|  | - Fix error when fetching followers/following from REST API when user has network hidden ([Gargron](https://github.com/tootsuite/mastodon/pull/12716)) | ||||||
|  | - Fix IDN mentions not being processed, IDN domains not being rendered ([Gargron](https://github.com/tootsuite/mastodon/pull/12715)) | ||||||
|  | - Fix error when searching for empty phrase ([Gargron](https://github.com/tootsuite/mastodon/pull/12711)) | ||||||
|  | - Fix backups stopping due to read timeouts ([chr-1x](https://github.com/tootsuite/mastodon/pull/12281)) | ||||||
|  | - Fix batch actions on non-pending tags in admin UI ([ThibG](https://github.com/tootsuite/mastodon/pull/12537)) | ||||||
|  | - Fix sample `SAML_ACS_URL`, `SAML_ISSUER` ([orlea](https://github.com/tootsuite/mastodon/pull/12669)) | ||||||
|  | - Fix manual scrolling issue on Firefox/Windows in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/12648)) | ||||||
|  | - Fix archive takeout failing if total dump size exceeds 2GB ([scd31](https://github.com/tootsuite/mastodon/pull/12602), [Gargron](https://github.com/tootsuite/mastodon/pull/12653)) | ||||||
|  | - Fix custom emoji category creation silently erroring out on duplicate category ([ThibG](https://github.com/tootsuite/mastodon/pull/12647)) | ||||||
|  | - Fix link crawler not specifying preferred content type ([ThibG](https://github.com/tootsuite/mastodon/pull/12646)) | ||||||
|  | - Fix featured hashtag setting page erroring out instead of rejecting invalid tags ([ThibG](https://github.com/tootsuite/mastodon/pull/12436)) | ||||||
|  | - Fix tooltip messages of single/multiple-choice polls switcher being reversed in web UI ([acid-chicken](https://github.com/tootsuite/mastodon/pull/12616)) | ||||||
|  | - Fix typo in help text of `tootctl statuses remove` ([trwnh](https://github.com/tootsuite/mastodon/pull/12603)) | ||||||
|  | - Fix generic HTTP 500 error on duplicate records ([Gargron](https://github.com/tootsuite/mastodon/pull/12563)) | ||||||
|  | - Fix old migration failing with new status default scope ([ThibG](https://github.com/tootsuite/mastodon/pull/12493)) | ||||||
|  | - Fix errors when using search API with no query ([Gargron](https://github.com/tootsuite/mastodon/pull/12541), [trwnh](https://github.com/tootsuite/mastodon/pull/12549)) | ||||||
|  | - Fix poll options not being selectable via keyboard in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/12538)) | ||||||
|  | - Fix conversations not having an unread indicator in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/12506)) | ||||||
|  | - Fix lost focus when modals open/close in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/12437)) | ||||||
|  | - Fix pending upload count not being decremented on error in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/12499)) | ||||||
|  | - Fix empty poll options not being removed on remote poll update ([ThibG](https://github.com/tootsuite/mastodon/pull/12484)) | ||||||
|  | - Fix OCR with delete & redraft in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/12465)) | ||||||
|  | - Fix blur behind closed registration message ([ThibG](https://github.com/tootsuite/mastodon/pull/12442)) | ||||||
|  | - Fix OEmbed discovery not handling different URL variants in query ([Gargron](https://github.com/tootsuite/mastodon/pull/12439)) | ||||||
|  | - Fix link crawler crashing on `<a>` tags without `href` ([ThibG](https://github.com/tootsuite/mastodon/pull/12159)) | ||||||
|  | - Fix whitelisted subdomains being ignored in whitelist mode ([noiob](https://github.com/tootsuite/mastodon/pull/12435)) | ||||||
|  | - Fix broken audit log in whitelist mode in admin UI ([ThibG](https://github.com/tootsuite/mastodon/pull/12303)) | ||||||
|  | - Fix unread indicator not honoring "Only media" option in local and federated timelines in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/12330)) | ||||||
|  | - Fix error when rebuilding home feeds ([dariusk](https://github.com/tootsuite/mastodon/pull/12324)) | ||||||
|  | - Fix relationship caches being broken as result of a follow request ([ThibG](https://github.com/tootsuite/mastodon/pull/12299)) | ||||||
|  | - Fix more items than the limit being uploadable in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/12300)) | ||||||
|  | - Fix various issues with account migration ([ThibG](https://github.com/tootsuite/mastodon/pull/12301)) | ||||||
|  | - Fix filtered out items being counted as pending items in slow mode in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/12266)) | ||||||
|  | - Fix notification filters not applying to poll options ([ThibG](https://github.com/tootsuite/mastodon/pull/12269)) | ||||||
|  | - Fix notification message for user's own poll saying it's a poll they voted on in web UI ([ykzts](https://github.com/tootsuite/mastodon/pull/12219)) | ||||||
|  | - Fix polls with an expiration not showing up as expired in web UI ([noellabo](https://github.com/tootsuite/mastodon/pull/12222)) | ||||||
|  | - Fix volume slider having an offset between cursor and slider in Chromium in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/12158)) | ||||||
|  | - Fix Vagrant image not accepting connections ([shrft](https://github.com/tootsuite/mastodon/pull/12180)) | ||||||
|  | - Fix batch actions being hidden on small screens in admin UI ([ThibG](https://github.com/tootsuite/mastodon/pull/12183)) | ||||||
|  | - Fix incoming federation not working in whitelist mode ([ThibG](https://github.com/tootsuite/mastodon/pull/12185)) | ||||||
|  | - Fix error when passing empty `source` param to `PUT /api/v1/accounts/update_credentials` ([jglauche](https://github.com/tootsuite/mastodon/pull/12259)) | ||||||
|  | - Fix HTTP-based streaming API being cacheable by proxies ([BenLubar](https://github.com/tootsuite/mastodon/pull/12945)) | ||||||
|  | - Fix users being able to register while `tootctl self-destruct` is in progress ([Kjwon15](https://github.com/tootsuite/mastodon/pull/12877)) | ||||||
|  | - Fix microformats detection in link crawler not ignoring `h-card` links ([nightpool](https://github.com/tootsuite/mastodon/pull/12189)) | ||||||
|  | - Fix outline on full-screen video in web UI ([hinaloe](https://github.com/tootsuite/mastodon/pull/12176)) | ||||||
|  | - Fix TLD domain blocks not being editable ([ThibG](https://github.com/tootsuite/mastodon/pull/12805)) | ||||||
|  | - Fix Nanobox deploy hooks ([danhunsaker](https://github.com/tootsuite/mastodon/pull/12663)) | ||||||
|  | - Fix needlessly complicated SQL query when performing account search amongst followings ([ThibG](https://github.com/tootsuite/mastodon/pull/12302)) | ||||||
|  | - Fix favourites count not updating when unfavouriting in web UI ([NimaBoscarino](https://github.com/tootsuite/mastodon/pull/12140)) | ||||||
|  | - Fix occasional crash on scroll in Chromium in web UI ([hinaloe](https://github.com/tootsuite/mastodon/pull/12274)) | ||||||
|  | - Fix intersection observer not working in single-column mode web UI ([panarom](https://github.com/tootsuite/mastodon/pull/12735)) | ||||||
|  | - Fix voting issue with remote polls that contain trailing spaces ([ThibG](https://github.com/tootsuite/mastodon/pull/12515)) | ||||||
|  | - Fix dynamic elements not working in pgHero due to CSP rules ([ykzts](https://github.com/tootsuite/mastodon/pull/12489)) | ||||||
|  | - Fix overly verbose backtraces when delivering ActivityPub payloads ([zunda](https://github.com/tootsuite/mastodon/pull/12798)) | ||||||
|  | 
 | ||||||
|  | ### Security | ||||||
|  | 
 | ||||||
|  | - Fix OEmbed leaking information about existence of non-public statuses ([Gargron](https://github.com/tootsuite/mastodon/pull/12930)) | ||||||
|  | - Fix password change/reset not immediately invalidating other sessions ([Gargron](https://github.com/tootsuite/mastodon/pull/12928)) | ||||||
|  | - Fix settings pages being cacheable by the browser ([Gargron](https://github.com/tootsuite/mastodon/pull/12714)) | ||||||
|  | 
 | ||||||
| ## [3.0.1] - 2019-10-10 | ## [3.0.1] - 2019-10-10 | ||||||
| ### Added | ### Added | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										2
									
								
								Gemfile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Gemfile
									
									
									
									
									
								
							|  | @ -9,7 +9,7 @@ gem 'puma', '~> 4.3' | ||||||
| gem 'rails', '~> 5.2.4' | gem 'rails', '~> 5.2.4' | ||||||
| gem 'sprockets', '~> 3.7.2' | gem 'sprockets', '~> 3.7.2' | ||||||
| gem 'thor', '~> 0.20' | gem 'thor', '~> 0.20' | ||||||
| gem 'rack', '2.0.8' | gem 'rack', '~> 2.1.2' | ||||||
| 
 | 
 | ||||||
| gem 'thwait', '~> 0.1.0' | gem 'thwait', '~> 0.1.0' | ||||||
| gem 'e2mmap', '~> 0.1.0' | gem 'e2mmap', '~> 0.1.0' | ||||||
|  |  | ||||||
|  | @ -443,7 +443,7 @@ GEM | ||||||
|     pundit (2.1.0) |     pundit (2.1.0) | ||||||
|       activesupport (>= 3.0.0) |       activesupport (>= 3.0.0) | ||||||
|     raabro (1.1.6) |     raabro (1.1.6) | ||||||
|     rack (2.0.8) |     rack (2.1.2) | ||||||
|     rack-attack (6.2.2) |     rack-attack (6.2.2) | ||||||
|       rack (>= 1.0, < 3) |       rack (>= 1.0, < 3) | ||||||
|     rack-cors (1.1.1) |     rack-cors (1.1.1) | ||||||
|  | @ -753,7 +753,7 @@ DEPENDENCIES | ||||||
|   pry-rails (~> 0.3) |   pry-rails (~> 0.3) | ||||||
|   puma (~> 4.3) |   puma (~> 4.3) | ||||||
|   pundit (~> 2.1) |   pundit (~> 2.1) | ||||||
|   rack (= 2.0.8) |   rack (~> 2.1.2) | ||||||
|   rack-attack (~> 6.2) |   rack-attack (~> 6.2) | ||||||
|   rack-cors (~> 1.1) |   rack-cors (~> 1.1) | ||||||
|   rails (~> 5.2.4) |   rails (~> 5.2.4) | ||||||
|  |  | ||||||
|  | @ -376,7 +376,7 @@ class Announcements extends ImmutablePureComponent { | ||||||
|         <img className='announcements__mastodon' alt='' draggable='false' src={mascot || elephantUIPlane} /> |         <img className='announcements__mastodon' alt='' draggable='false' src={mascot || elephantUIPlane} /> | ||||||
| 
 | 
 | ||||||
|         <div className='announcements__container'> |         <div className='announcements__container'> | ||||||
|           <ReactSwipeableViews animateHeight index={index} onChangeIndex={this.handleChangeIndex}> |           <ReactSwipeableViews animateHeight={!reduceMotion} adjustHeight={reduceMotion} index={index} onChangeIndex={this.handleChangeIndex}> | ||||||
|             {announcements.map(announcement => ( |             {announcements.map(announcement => ( | ||||||
|               <Announcement |               <Announcement | ||||||
|                 key={announcement.get('id')} |                 key={announcement.get('id')} | ||||||
|  |  | ||||||
|  | @ -16,7 +16,7 @@ import { Map as ImmutableMap, List as ImmutableList, Set as ImmutableSet, fromJS | ||||||
| const initialState = ImmutableMap({ | const initialState = ImmutableMap({ | ||||||
|   items: ImmutableList(), |   items: ImmutableList(), | ||||||
|   isLoading: false, |   isLoading: false, | ||||||
|   show: true, |   show: false, | ||||||
|   unread: ImmutableSet(), |   unread: ImmutableSet(), | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  | @ -84,10 +84,11 @@ export default function announcementsReducer(state = initialState, action) { | ||||||
|       const items = fromJS(action.announcements); |       const items = fromJS(action.announcements); | ||||||
| 
 | 
 | ||||||
|       map.set('unread', ImmutableSet()); |       map.set('unread', ImmutableSet()); | ||||||
|       map.set('items', items); |  | ||||||
|       map.set('isLoading', false); |  | ||||||
| 
 | 
 | ||||||
|       addUnread(map, items); |       addUnread(map, items); | ||||||
|  | 
 | ||||||
|  |       map.set('items', items); | ||||||
|  |       map.set('isLoading', false); | ||||||
|     }); |     }); | ||||||
|   case ANNOUNCEMENTS_FETCH_FAIL: |   case ANNOUNCEMENTS_FETCH_FAIL: | ||||||
|     return state.set('isLoading', false); |     return state.set('isLoading', false); | ||||||
|  |  | ||||||
|  | @ -903,3 +903,46 @@ a.name-tag, | ||||||
| .center-text { | .center-text { | ||||||
|   text-align: center; |   text-align: center; | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | .announcements-list { | ||||||
|  |   border: 1px solid lighten($ui-base-color, 4%); | ||||||
|  |   border-radius: 4px; | ||||||
|  | 
 | ||||||
|  |   &__item { | ||||||
|  |     padding: 15px 0; | ||||||
|  |     background: $ui-base-color; | ||||||
|  |     border-bottom: 1px solid lighten($ui-base-color, 4%); | ||||||
|  | 
 | ||||||
|  |     &__title { | ||||||
|  |       padding: 0 15px; | ||||||
|  |       display: block; | ||||||
|  |       font-weight: 500; | ||||||
|  |       font-size: 18px; | ||||||
|  |       line-height: 1.5; | ||||||
|  |       color: $secondary-text-color; | ||||||
|  |       text-decoration: none; | ||||||
|  |       margin-bottom: 10px; | ||||||
|  | 
 | ||||||
|  |       &:hover, | ||||||
|  |       &:focus, | ||||||
|  |       &:active { | ||||||
|  |         color: $primary-text-color; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     &__meta { | ||||||
|  |       padding: 0 15px; | ||||||
|  |       color: $dark-text-color; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     &__action-bar { | ||||||
|  |       display: flex; | ||||||
|  |       justify-content: space-between; | ||||||
|  |       align-items: center; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     &:last-child { | ||||||
|  |       border-bottom: 0; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -376,7 +376,7 @@ class Announcements extends ImmutablePureComponent { | ||||||
|         <img className='announcements__mastodon' alt='' draggable='false' src={mascot || elephantUIPlane} /> |         <img className='announcements__mastodon' alt='' draggable='false' src={mascot || elephantUIPlane} /> | ||||||
| 
 | 
 | ||||||
|         <div className='announcements__container'> |         <div className='announcements__container'> | ||||||
|           <ReactSwipeableViews animateHeight index={index} onChangeIndex={this.handleChangeIndex}> |           <ReactSwipeableViews animateHeight={!reduceMotion} adjustHeight={reduceMotion} index={index} onChangeIndex={this.handleChangeIndex}> | ||||||
|             {announcements.map(announcement => ( |             {announcements.map(announcement => ( | ||||||
|               <Announcement |               <Announcement | ||||||
|                 key={announcement.get('id')} |                 key={announcement.get('id')} | ||||||
|  |  | ||||||
|  | @ -16,7 +16,7 @@ import { Map as ImmutableMap, List as ImmutableList, Set as ImmutableSet, fromJS | ||||||
| const initialState = ImmutableMap({ | const initialState = ImmutableMap({ | ||||||
|   items: ImmutableList(), |   items: ImmutableList(), | ||||||
|   isLoading: false, |   isLoading: false, | ||||||
|   show: true, |   show: false, | ||||||
|   unread: ImmutableSet(), |   unread: ImmutableSet(), | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  | @ -84,10 +84,11 @@ export default function announcementsReducer(state = initialState, action) { | ||||||
|       const items = fromJS(action.announcements); |       const items = fromJS(action.announcements); | ||||||
| 
 | 
 | ||||||
|       map.set('unread', ImmutableSet()); |       map.set('unread', ImmutableSet()); | ||||||
|       map.set('items', items); |  | ||||||
|       map.set('isLoading', false); |  | ||||||
| 
 | 
 | ||||||
|       addUnread(map, items); |       addUnread(map, items); | ||||||
|  | 
 | ||||||
|  |       map.set('items', items); | ||||||
|  |       map.set('isLoading', false); | ||||||
|     }); |     }); | ||||||
|   case ANNOUNCEMENTS_FETCH_FAIL: |   case ANNOUNCEMENTS_FETCH_FAIL: | ||||||
|     return state.set('isLoading', false); |     return state.set('isLoading', false); | ||||||
|  |  | ||||||
|  | @ -919,3 +919,46 @@ a.name-tag, | ||||||
| .center-text { | .center-text { | ||||||
|   text-align: center; |   text-align: center; | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | .announcements-list { | ||||||
|  |   border: 1px solid lighten($ui-base-color, 4%); | ||||||
|  |   border-radius: 4px; | ||||||
|  | 
 | ||||||
|  |   &__item { | ||||||
|  |     padding: 15px 0; | ||||||
|  |     background: $ui-base-color; | ||||||
|  |     border-bottom: 1px solid lighten($ui-base-color, 4%); | ||||||
|  | 
 | ||||||
|  |     &__title { | ||||||
|  |       padding: 0 15px; | ||||||
|  |       display: block; | ||||||
|  |       font-weight: 500; | ||||||
|  |       font-size: 18px; | ||||||
|  |       line-height: 1.5; | ||||||
|  |       color: $secondary-text-color; | ||||||
|  |       text-decoration: none; | ||||||
|  |       margin-bottom: 10px; | ||||||
|  | 
 | ||||||
|  |       &:hover, | ||||||
|  |       &:focus, | ||||||
|  |       &:active { | ||||||
|  |         color: $primary-text-color; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     &__meta { | ||||||
|  |       padding: 0 15px; | ||||||
|  |       color: $dark-text-color; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     &__action-bar { | ||||||
|  |       display: flex; | ||||||
|  |       justify-content: space-between; | ||||||
|  |       align-items: center; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     &:last-child { | ||||||
|  |       border-bottom: 0; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -5761,8 +5761,8 @@ a.status-card.compact:hover { | ||||||
|     text-align: center; |     text-align: center; | ||||||
|     text-decoration: none; |     text-decoration: none; | ||||||
|     position: relative; |     position: relative; | ||||||
|     overflow: hidden; |  | ||||||
|     width: 100%; |     width: 100%; | ||||||
|  |     white-space: nowrap; | ||||||
| 
 | 
 | ||||||
|     &.active { |     &.active { | ||||||
|       color: $secondary-text-color; |       color: $secondary-text-color; | ||||||
|  |  | ||||||
|  | @ -1,21 +1,19 @@ | ||||||
| %tr | .announcements-list__item | ||||||
|   %td |   = link_to edit_admin_announcement_path(announcement), class: 'announcements-list__item__title' do | ||||||
|     = truncate(announcement.text) |     = truncate(announcement.text) | ||||||
|   %td | 
 | ||||||
|     = time_range(announcement) if announcement.time_range? |   .announcements-list__item__action-bar | ||||||
|   %td |     .announcements-list__item__meta | ||||||
|       - if announcement.scheduled_at.present? |       - if announcement.scheduled_at.present? | ||||||
|       = fa_icon('clock-o') if announcement.scheduled_at > Time.now.utc |         = t('admin.announcements.scheduled_for', time: l(announcement.scheduled_at)) | ||||||
|       = l(announcement.scheduled_at) |  | ||||||
|       - else |       - else | ||||||
|         = l(announcement.created_at) |         = l(announcement.created_at) | ||||||
|   %td | 
 | ||||||
|  |     %div | ||||||
|       - if can?(:update, announcement) |       - if can?(:update, announcement) | ||||||
|         - if announcement.published? |         - if announcement.published? | ||||||
|         = table_link_to 'pause', t('admin.announcements.unpublish'), unpublish_admin_announcement_path(announcement), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } |           = table_link_to 'toggle-off', t('admin.announcements.unpublish'), unpublish_admin_announcement_path(announcement), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } | ||||||
|         - else |         - else | ||||||
|         = table_link_to 'play', t('admin.announcements.publish'), publish_admin_announcement_path(announcement), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } |           = table_link_to 'toggle-on', t('admin.announcements.publish'), publish_admin_announcement_path(announcement), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } | ||||||
| 
 |  | ||||||
|       = table_link_to 'pencil', t('generic.edit'), edit_admin_announcement_path(announcement) |  | ||||||
| 
 | 
 | ||||||
|       = table_link_to 'trash', t('generic.delete'), admin_announcement_path(announcement), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') } if can?(:destroy, announcement) |       = table_link_to 'trash', t('generic.delete'), admin_announcement_path(announcement), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') } if can?(:destroy, announcement) | ||||||
|  |  | ||||||
|  | @ -15,15 +15,7 @@ | ||||||
|   %div.muted-hint.center-text |   %div.muted-hint.center-text | ||||||
|     = t 'admin.announcements.empty' |     = t 'admin.announcements.empty' | ||||||
| - else | - else | ||||||
|   .table-wrapper |   .announcements-list | ||||||
|     %table.table |  | ||||||
|       %thead |  | ||||||
|         %tr |  | ||||||
|           %th= t('simple_form.labels.announcement.text') |  | ||||||
|           %th= t('admin.announcements.time_range') |  | ||||||
|           %th= t('admin.announcements.published') |  | ||||||
|           %th |  | ||||||
|       %tbody |  | ||||||
|     = render partial: 'announcement', collection: @announcements |     = render partial: 'announcement', collection: @announcements | ||||||
| 
 | 
 | ||||||
| = paginate @announcements | = paginate @announcements | ||||||
|  |  | ||||||
|  | @ -240,10 +240,9 @@ en: | ||||||
|       new: |       new: | ||||||
|         create: Create announcement |         create: Create announcement | ||||||
|         title: New announcement |         title: New announcement | ||||||
|       published: Published |  | ||||||
|       published_msg: Announcement successfully published! |       published_msg: Announcement successfully published! | ||||||
|  |       scheduled_for: Scheduled for %{time} | ||||||
|       scheduled_msg: Announcement scheduled for publication! |       scheduled_msg: Announcement scheduled for publication! | ||||||
|       time_range: Time range |  | ||||||
|       title: Announcements |       title: Announcements | ||||||
|       unpublished_msg: Announcement successfully unpublished! |       unpublished_msg: Announcement successfully unpublished! | ||||||
|       updated_msg: Announcement successfully updated! |       updated_msg: Announcement successfully updated! | ||||||
|  | @ -794,7 +793,6 @@ en: | ||||||
|     changes_saved_msg: Changes successfully saved! |     changes_saved_msg: Changes successfully saved! | ||||||
|     copy: Copy |     copy: Copy | ||||||
|     delete: Delete |     delete: Delete | ||||||
|     edit: Edit |  | ||||||
|     no_batch_actions_available: No batch actions available on this page |     no_batch_actions_available: No batch actions available on this page | ||||||
|     order_by: Order by |     order_by: Order by | ||||||
|     save_changes: Save changes |     save_changes: Save changes | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue