diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml index 96bd0bb4e5..4e6179bc77 100644 --- a/.github/workflows/chromatic.yml +++ b/.github/workflows/chromatic.yml @@ -20,6 +20,7 @@ jobs: chromatic: name: Run Chromatic runs-on: ubuntu-latest + if: github.repository == 'mastodon/mastodon' steps: - name: Checkout code uses: actions/checkout@v4 diff --git a/app/javascript/mastodon/features/compose/components/search.tsx b/app/javascript/mastodon/features/compose/components/search.tsx index 2186ff36ab..30a7a84db6 100644 --- a/app/javascript/mastodon/features/compose/components/search.tsx +++ b/app/javascript/mastodon/features/compose/components/search.tsx @@ -1,4 +1,4 @@ -import { useCallback, useState, useRef } from 'react'; +import { useCallback, useState, useRef, useEffect } from 'react'; import { defineMessages, @@ -72,6 +72,10 @@ export const Search: React.FC<{ const [expanded, setExpanded] = useState(false); const [selectedOption, setSelectedOption] = useState(-1); const [quickActions, setQuickActions] = useState([]); + useEffect(() => { + setValue(initialValue ?? ''); + setQuickActions([]); + }, [initialValue]); const searchOptions: SearchOption[] = []; if (searchEnabled) { diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 0122b81b8b..d31b6f0e3d 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -1882,16 +1882,18 @@ body > [data-popper-placement] { } .status__quote { + --quote-margin: 36px; + position: relative; margin-block-start: 16px; - margin-inline-start: 36px; + margin-inline-start: calc(var(--quote-margin) + var(--thread-margin, 0px)); border-radius: 8px; color: var(--nested-card-text); background: var(--nested-card-background); border: var(--nested-card-border); - @media screen and (min-width: $mobile-breakpoint) { - margin-inline-start: 56px; + @container (width > 460px) { + --quote-margin: 56px; } } @@ -1951,7 +1953,7 @@ body > [data-popper-placement] { transform: translateY(-50%); } - @media screen and (min-width: $mobile-breakpoint) { + @container (width > 460px) { inset-inline-start: -50px; } } @@ -2878,6 +2880,7 @@ a.account__display-name { display: flex; flex-direction: column; contain: inline-size layout paint style; + container: column / inline-size; @media screen and (min-width: $no-gap-breakpoint) { max-width: 600px; diff --git a/app/lib/admin/system_check/sidekiq_process_check.rb b/app/lib/admin/system_check/sidekiq_process_check.rb index d577b3bf3c..f55cb7a2f0 100644 --- a/app/lib/admin/system_check/sidekiq_process_check.rb +++ b/app/lib/admin/system_check/sidekiq_process_check.rb @@ -8,6 +8,7 @@ class Admin::SystemCheck::SidekiqProcessCheck < Admin::SystemCheck::BaseCheck pull scheduler ingress + fasp ).freeze def skip? diff --git a/app/models/concerns/status/safe_reblog_insert.rb b/app/models/concerns/status/safe_reblog_insert.rb index 48d585ea18..94bed5b39a 100644 --- a/app/models/concerns/status/safe_reblog_insert.rb +++ b/app/models/concerns/status/safe_reblog_insert.rb @@ -16,7 +16,7 @@ module Status::SafeReblogInsert # The code is kept similar to ActiveRecord::Persistence code and calls it # directly when we are not handling a reblog. # - # https://github.com/rails/rails/blob/v7.2.1.1/activerecord/lib/active_record/persistence.rb#L238-L263 + # https://github.com/rails/rails/blob/v8.0.2/activerecord/lib/active_record/persistence.rb#L238-L261 def _insert_record(connection, values, returning) return super unless values.is_a?(Hash) && values['reblog_of_id']&.value.present? @@ -36,15 +36,13 @@ module Status::SafeReblogInsert # Instead, we use a custom builder when a reblog is happening: im = _compile_reblog_insert(values) - with_connection do |_c| - connection.insert( - im, "#{self} Create", primary_key || false, primary_key_value, - returning: returning - ).tap do |result| - # Since we are using SELECT instead of VALUES, a non-error `nil` return is possible. - # For our purposes, it's equivalent to a foreign key constraint violation - raise ActiveRecord::InvalidForeignKey, "(reblog_of_id)=(#{values['reblog_of_id'].value}) is not present in table \"statuses\"" if result.nil? - end + connection.insert( + im, "#{self} Create", primary_key || false, primary_key_value, + returning: returning + ).tap do |result| + # Since we are using SELECT instead of VALUES, a non-error `nil` return is possible. + # For our purposes, it's equivalent to a foreign key constraint violation + raise ActiveRecord::InvalidForeignKey, "(reblog_of_id)=(#{values['reblog_of_id'].value}) is not present in table \"statuses\"" if result.nil? end end diff --git a/spec/lib/admin/system_check/sidekiq_process_check_spec.rb b/spec/lib/admin/system_check/sidekiq_process_check_spec.rb index 992fd7aee0..c32f4d736c 100644 --- a/spec/lib/admin/system_check/sidekiq_process_check_spec.rb +++ b/spec/lib/admin/system_check/sidekiq_process_check_spec.rb @@ -35,11 +35,11 @@ RSpec.describe Admin::SystemCheck::SidekiqProcessCheck do describe 'message' do it 'sends values to message instance' do - allow(Admin::SystemCheck::Message).to receive(:new).with(:sidekiq_process_check, 'default, push, mailers, pull, scheduler, ingress') + allow(Admin::SystemCheck::Message).to receive(:new).with(:sidekiq_process_check, 'default, push, mailers, pull, scheduler, ingress, fasp') check.message - expect(Admin::SystemCheck::Message).to have_received(:new).with(:sidekiq_process_check, 'default, push, mailers, pull, scheduler, ingress') + expect(Admin::SystemCheck::Message).to have_received(:new).with(:sidekiq_process_check, 'default, push, mailers, pull, scheduler, ingress, fasp') end end end