diff --git a/Gemfile.lock b/Gemfile.lock
index afc7f00a5..037b3b1ee 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 9a5f2fd62..d261c6ea5 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 9b50ec23a..ddc3fa41e 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 c2426944b..7d5b28a12 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 ac2d642a8..ed1d3d660 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 5eb89c0ea..f117412be 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 1dafb07fd..9496b56f8 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 2372573d5..77a837e21 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 3650e3ec8..44aef6f4e 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 09e2b7c53..2889d13b5 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 a7c78c4a7..77364ffbb 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 ee2cc79c9..3c182b308 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 9e52345ba..8ad955c99 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"