diff --git a/Gemfile.lock b/Gemfile.lock index afc7f00a5d..037b3b1ee6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -384,7 +384,7 @@ GEM activesupport (>= 4) railties (>= 4) request_store (~> 1.0) - loofah (2.19.0) + loofah (2.19.1) crass (~> 1.0.2) nokogiri (>= 1.5.9) mail (2.7.1) @@ -483,7 +483,7 @@ GEM pry (>= 0.13, < 0.15) pry-rails (0.3.9) pry (>= 0.10.4) - public_suffix (5.0.0) + public_suffix (5.0.1) puma (5.6.5) nio4r (~> 2.0) pundit (2.2.0) @@ -527,8 +527,8 @@ GEM rails-dom-testing (2.0.3) activesupport (>= 4.2.0) nokogiri (>= 1.6) - rails-html-sanitizer (1.4.3) - loofah (~> 2.3) + rails-html-sanitizer (1.4.4) + loofah (~> 2.19, >= 2.19.1) rails-i18n (6.0.0) i18n (>= 0.7, < 2) railties (>= 6.0.0, < 7) diff --git a/app/javascript/flavours/glitch/features/account/components/header.js b/app/javascript/flavours/glitch/features/account/components/header.js index 9a5f2fd62d..d261c6ea54 100644 --- a/app/javascript/flavours/glitch/features/account/components/header.js +++ b/app/javascript/flavours/glitch/features/account/components/header.js @@ -345,7 +345,9 @@ class Header extends ImmutablePureComponent {

{badge} - @{acct} {lockedIcon} + + @{acct} {lockedIcon} +

diff --git a/app/javascript/flavours/glitch/reducers/compose.js b/app/javascript/flavours/glitch/reducers/compose.js index 9b50ec23a9..ddc3fa41e3 100644 --- a/app/javascript/flavours/glitch/reducers/compose.js +++ b/app/javascript/flavours/glitch/reducers/compose.js @@ -421,8 +421,10 @@ export default function compose(state = initialState, action) { map.set('preselectDate', new Date()); map.set('idempotencyKey', uuid()); - if (action.status.get('language')) { + if (action.status.get('language') && !action.status.has('translation')) { map.set('language', action.status.get('language')); + } else { + map.set('language', state.get('default_language')); } if (action.status.get('spoiler_text').length > 0) { diff --git a/app/javascript/flavours/glitch/styles/admin.scss b/app/javascript/flavours/glitch/styles/admin.scss index c2426944be..7d5b28a12c 100644 --- a/app/javascript/flavours/glitch/styles/admin.scss +++ b/app/javascript/flavours/glitch/styles/admin.scss @@ -1681,6 +1681,15 @@ a.sparkline { box-sizing: border-box; min-height: 100%; + a { + color: $highlight-text-color; + text-decoration: none; + + &:hover { + text-decoration: underline; + } + } + p { margin-bottom: 20px; unicode-bidi: plaintext; diff --git a/app/javascript/flavours/glitch/styles/components/accounts.scss b/app/javascript/flavours/glitch/styles/components/accounts.scss index ac2d642a8d..ed1d3d660f 100644 --- a/app/javascript/flavours/glitch/styles/components/accounts.scss +++ b/app/javascript/flavours/glitch/styles/components/accounts.scss @@ -593,6 +593,10 @@ font-weight: 400; overflow: hidden; text-overflow: ellipsis; + + span { + user-select: all; + } } } } diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.js index 5eb89c0ea0..f117412be8 100644 --- a/app/javascript/mastodon/features/account/components/header.js +++ b/app/javascript/mastodon/features/account/components/header.js @@ -342,7 +342,9 @@ class Header extends ImmutablePureComponent {

{badge} - @{acct} {lockedIcon} + + @{acct} {lockedIcon} +

diff --git a/app/javascript/mastodon/reducers/compose.js b/app/javascript/mastodon/reducers/compose.js index 1dafb07fd2..9496b56f87 100644 --- a/app/javascript/mastodon/reducers/compose.js +++ b/app/javascript/mastodon/reducers/compose.js @@ -330,8 +330,10 @@ export default function compose(state = initialState, action) { map.set('preselectDate', new Date()); map.set('idempotencyKey', uuid()); - if (action.status.get('language')) { + if (action.status.get('language') && !action.status.has('translation')) { map.set('language', action.status.get('language')); + } else { + map.set('language', state.get('default_language')); } if (action.status.get('spoiler_text').length > 0) { diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index 2372573d54..77a837e21a 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -1681,6 +1681,15 @@ a.sparkline { box-sizing: border-box; min-height: 100%; + a { + text: &highlight-text-color; + text-decoration: none; + + &:hover { + text-decoration: underline; + } + } + p { margin-bottom: 20px; unicode-bidi: plaintext; diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 3650e3ec80..44aef6f4e7 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -7092,6 +7092,10 @@ noscript { font-weight: 400; overflow: hidden; text-overflow: ellipsis; + + span { + user-select: all; + } } } } diff --git a/app/mailers/user_mailer.rb b/app/mailers/user_mailer.rb index 09e2b7c534..2889d13b53 100644 --- a/app/mailers/user_mailer.rb +++ b/app/mailers/user_mailer.rb @@ -11,7 +11,7 @@ class UserMailer < Devise::Mailer helper RoutingHelper - def confirmation_instructions(user, token, **) + def confirmation_instructions(user, token, *, **) @resource = user @token = token @instance = Rails.configuration.x.local_domain @@ -25,7 +25,7 @@ class UserMailer < Devise::Mailer end end - def reset_password_instructions(user, token, **) + def reset_password_instructions(user, token, *, **) @resource = user @token = token @instance = Rails.configuration.x.local_domain @@ -37,7 +37,7 @@ class UserMailer < Devise::Mailer end end - def password_change(user, **) + def password_change(user, *, **) @resource = user @instance = Rails.configuration.x.local_domain @@ -48,7 +48,7 @@ class UserMailer < Devise::Mailer end end - def email_changed(user, **) + def email_changed(user, *, **) @resource = user @instance = Rails.configuration.x.local_domain @@ -59,7 +59,7 @@ class UserMailer < Devise::Mailer end end - def two_factor_enabled(user, **) + def two_factor_enabled(user, *, **) @resource = user @instance = Rails.configuration.x.local_domain @@ -70,7 +70,7 @@ class UserMailer < Devise::Mailer end end - def two_factor_disabled(user, **) + def two_factor_disabled(user, *, **) @resource = user @instance = Rails.configuration.x.local_domain @@ -81,7 +81,7 @@ class UserMailer < Devise::Mailer end end - def two_factor_recovery_codes_changed(user, **) + def two_factor_recovery_codes_changed(user, *, **) @resource = user @instance = Rails.configuration.x.local_domain @@ -92,7 +92,7 @@ class UserMailer < Devise::Mailer end end - def webauthn_enabled(user, **) + def webauthn_enabled(user, *, **) @resource = user @instance = Rails.configuration.x.local_domain @@ -103,7 +103,7 @@ class UserMailer < Devise::Mailer end end - def webauthn_disabled(user, **) + def webauthn_disabled(user, *, **) @resource = user @instance = Rails.configuration.x.local_domain diff --git a/lib/mastodon/domains_cli.rb b/lib/mastodon/domains_cli.rb index a7c78c4a7a..77364ffbbe 100644 --- a/lib/mastodon/domains_cli.rb +++ b/lib/mastodon/domains_cli.rb @@ -97,7 +97,7 @@ module Mastodon failed = Concurrent::AtomicFixnum.new(0) start_at = Time.now.to_f seed = start ? [start] : Instance.pluck(:domain) - blocked_domains = Regexp.new('\\.?' + DomainBlock.where(severity: 1).pluck(:domain).join('|') + '$') + blocked_domains = /\.?(#{DomainBlock.where(severity: 1).pluck(:domain).map { |domain| Regexp.escape(domain) }.join('|')})$/ progress = create_progress_bar pool = Concurrent::ThreadPoolExecutor.new(min_threads: 0, max_threads: options[:concurrency], idletime: 10, auto_terminate: true, max_queue: 0) diff --git a/package.json b/package.json index ee2cc79c99..3c182b3081 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,7 @@ "object.values": "^1.1.6", "path-complete-extname": "^1.0.0", "pg": "^8.5.0", - "postcss": "^8.4.19", + "postcss": "^8.4.20", "postcss-loader": "^3.0.0", "postcss-object-fit-images": "^1.1.2", "promise.prototype.finally": "^3.1.4", @@ -120,7 +120,7 @@ "requestidlecallback": "^0.3.0", "reselect": "^4.1.7", "rimraf": "^3.0.2", - "sass": "^1.56.1", + "sass": "^1.56.2", "sass-loader": "^10.2.0", "stacktrace-js": "^2.0.2", "stringz": "^2.1.0", @@ -158,7 +158,7 @@ "jest": "^29.3.1", "jest-environment-jsdom": "^29.3.1", "postcss-scss": "^4.0.6", - "prettier": "^2.8.0", + "prettier": "^2.8.1", "raf": "^3.4.1", "react-intl-translations-manager": "^5.0.3", "react-test-renderer": "^16.14.0", diff --git a/yarn.lock b/yarn.lock index 9e52345bae..8ad955c994 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8593,10 +8593,10 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.27, postcss@^7.0.32: source-map "^0.6.1" supports-color "^6.1.0" -postcss@^8.2.15, postcss@^8.4.17, postcss@^8.4.19: - version "8.4.19" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.19.tgz#61178e2add236b17351897c8bcc0b4c8ecab56fc" - integrity sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA== +postcss@^8.2.15, postcss@^8.4.17, postcss@^8.4.20: + version "8.4.20" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.20.tgz#64c52f509644cecad8567e949f4081d98349dc56" + integrity sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g== dependencies: nanoid "^3.3.4" picocolors "^1.0.0" @@ -8634,10 +8634,10 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -prettier@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.0.tgz#c7df58393c9ba77d6fba3921ae01faf994fb9dc9" - integrity sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA== +prettier@^2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.1.tgz#4e1fd11c34e2421bc1da9aea9bd8127cd0a35efc" + integrity sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg== pretty-bytes@^5.3.0, pretty-bytes@^5.4.1: version "5.6.0" @@ -9603,10 +9603,10 @@ sass-loader@^10.2.0: schema-utils "^3.0.0" semver "^7.3.2" -sass@^1.56.1: - version "1.56.1" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.56.1.tgz#94d3910cd468fd075fa87f5bb17437a0b617d8a7" - integrity sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ== +sass@^1.56.2: + version "1.56.2" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.56.2.tgz#9433b345ab3872996c82a53a58c014fd244fd095" + integrity sha512-ciEJhnyCRwzlBCB+h5cCPM6ie/6f8HrhZMQOf5vlU60Y1bI1rx5Zb0vlDZvaycHsg/MqFfF1Eq2eokAa32iw8w== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0"