2
0

Compare commits

...

4 Commits

Author SHA1 Message Date
Nicolas Dextraze
b7258f6d06 fix max chars to 1024 2025-10-19 16:37:19 -04:00
Claire
8965e1bfa9 Bump version to v4.4.7 (#36473) 2025-10-15 10:12:23 +02:00
Claire
1e27ab0885 Fix moderation warning e-mails that include posts (#36462) 2025-10-14 17:15:58 +02:00
Jonathan de Jong
cef2c50a71 Fix allow_referrer_origin typo (#36460) 2025-10-14 17:15:58 +02:00
10 changed files with 29 additions and 13 deletions

View File

@@ -2,6 +2,14 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
## [4.4.7] - 2025-10-15
### Fixed
- Fix forwarder being called with `nil` status when quote post is soft-deleted (#36463 by @ClearlyClaire)
- Fix moderation warning e-mails that include posts (#36462 by @ClearlyClaire)
- Fix allow_referrer_origin typo (#36460 by @ShadowJonathan)
## [4.4.6] - 2025-10-13 ## [4.4.6] - 2025-10-13
### Security ### Security

View File

@@ -59,9 +59,11 @@ class ActivityPub::Activity::Delete < ActivityPub::Activity
@quote = Quote.find_by(approval_uri: object_uri, quoted_account: @account) @quote = Quote.find_by(approval_uri: object_uri, quoted_account: @account)
return if @quote.nil? return if @quote.nil?
ActivityPub::Forwarder.new(@account, @json, @quote.status).forward! ActivityPub::Forwarder.new(@account, @json, @quote.status).forward! if @quote.status.present?
@quote.reject! @quote.reject!
DistributionWorker.perform_async(@quote.status_id, { 'update' => true })
DistributionWorker.perform_async(@quote.status_id, { 'update' => true }) if @quote.status.present?
end end
def forwarder def forwarder

View File

@@ -12,7 +12,7 @@ class REST::InstanceSerializer < ActiveModel::Serializer
attributes :domain, :title, :version, :source_url, :description, attributes :domain, :title, :version, :source_url, :description,
:usage, :thumbnail, :icon, :languages, :configuration, :usage, :thumbnail, :icon, :languages, :configuration,
:registrations, :api_versions :registrations, :api_versions, :max_toot_chars
has_one :contact, serializer: ContactSerializer has_one :contact, serializer: ContactSerializer
has_many :rules, serializer: REST::RuleSerializer has_many :rules, serializer: REST::RuleSerializer
@@ -119,6 +119,10 @@ class REST::InstanceSerializer < ActiveModel::Serializer
Mastodon::Version.api_versions Mastodon::Version.api_versions
end end
def max_toot_chars
StatusLengthValidator::MAX_CHARS
end
private private
def registrations_enabled? def registrations_enabled?

View File

@@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
class StatusLengthValidator < ActiveModel::Validator class StatusLengthValidator < ActiveModel::Validator
MAX_CHARS = 500 MAX_CHARS = 1024
URL_PLACEHOLDER_CHARS = 23 URL_PLACEHOLDER_CHARS = 23
URL_PLACEHOLDER = 'x' * 23 URL_PLACEHOLDER = 'x' * 23

View File

@@ -11,7 +11,7 @@
%table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
%tr %tr
%td.email-status-content %td.email-status-content
= render 'status_content', status: status = render 'notification_mailer/status_content', status: status
%p.email-status-footer %p.email-status-footer
= link_to l(status.created_at.in_time_zone(time_zone.presence), format: :with_time_zone), web_url("@#{status.account.pretty_acct}/#{status.id}") = link_to l(status.created_at.in_time_zone(time_zone.presence), format: :with_time_zone), web_url("@#{status.account.pretty_acct}/#{status.id}")

View File

@@ -11,12 +11,12 @@
%table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
%tr %tr
%td.email-status-content %td.email-status-content
= render 'status_content', status: status = render 'notification_mailer/status_content', status: status
- if status.local? && status.quote - if status.local? && status.quote
%table.email-inner-card-table{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %table.email-inner-card-table{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
%tr %tr
%td.email-inner-nested-card-td %td.email-inner-nested-card-td
= render 'nested_quote', status: status.quote.quoted_status, time_zone: time_zone = render 'notification_mailer/nested_quote', status: status.quote.quoted_status, time_zone: time_zone
%p.email-status-footer %p.email-status-footer
= link_to l(status.created_at.in_time_zone(time_zone.presence), format: :with_time_zone), web_url("@#{status.account.pretty_acct}/#{status.id}") = link_to l(status.created_at.in_time_zone(time_zone.presence), format: :with_time_zone), web_url("@#{status.account.pretty_acct}/#{status.id}")

View File

@@ -51,7 +51,7 @@ defaults: &defaults
require_invite_text: false require_invite_text: false
backups_retention_period: 7 backups_retention_period: 7
captcha_enabled: false captcha_enabled: false
allow_referer_origin: false allow_referrer_origin: false
development: development:
<<: *defaults <<: *defaults

View File

@@ -59,7 +59,7 @@ services:
web: web:
# You can uncomment the following line if you want to not use the prebuilt image, for example if you have local code changes # You can uncomment the following line if you want to not use the prebuilt image, for example if you have local code changes
# build: . # build: .
image: ghcr.io/mastodon/mastodon:v4.4.6 image: ghcr.io/mastodon/mastodon:v4.4.7
restart: always restart: always
env_file: .env.production env_file: .env.production
command: bundle exec puma -C config/puma.rb command: bundle exec puma -C config/puma.rb
@@ -83,7 +83,7 @@ services:
# build: # build:
# dockerfile: ./streaming/Dockerfile # dockerfile: ./streaming/Dockerfile
# context: . # context: .
image: ghcr.io/mastodon/mastodon-streaming:v4.4.6 image: ghcr.io/mastodon/mastodon-streaming:v4.4.7
restart: always restart: always
env_file: .env.production env_file: .env.production
command: node ./streaming/index.js command: node ./streaming/index.js
@@ -102,7 +102,7 @@ services:
sidekiq: sidekiq:
# You can uncomment the following line if you want to not use the prebuilt image, for example if you have local code changes # You can uncomment the following line if you want to not use the prebuilt image, for example if you have local code changes
# build: . # build: .
image: ghcr.io/mastodon/mastodon:v4.4.6 image: ghcr.io/mastodon/mastodon:v4.4.7
restart: always restart: always
env_file: .env.production env_file: .env.production
command: bundle exec sidekiq command: bundle exec sidekiq

View File

@@ -13,7 +13,7 @@ module Mastodon
end end
def patch def patch
6 7
end end
def default_prerelease def default_prerelease

View File

@@ -141,7 +141,9 @@ RSpec.describe UserMailer do
end end
describe '#warning' do describe '#warning' do
let(:strike) { Fabricate(:account_warning, target_account: receiver.account, text: 'dont worry its just the testsuite', action: 'suspend') } let(:status) { Fabricate(:status, account: receiver.account) }
let(:quote) { Fabricate(:quote, state: :accepted, status: status) }
let(:strike) { Fabricate(:account_warning, target_account: receiver.account, text: 'dont worry its just the testsuite', action: 'suspend', status_ids: [quote.status_id]) }
let(:mail) { described_class.warning(receiver, strike) } let(:mail) { described_class.warning(receiver, strike) }
it 'renders warning notification' do it 'renders warning notification' do