Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
a95dedd
chore(deps): update dependency stoplight to v5.3.8 (#36191)
renovate[bot] Sep 22, 2025
a42258e
New Crowdin Translations (automated) (#36198)
github-actions[bot] Sep 22, 2025
9bd1518
Fix line break in Read more button (#36216)
diondiondion Sep 22, 2025
6689040
Renovate config improvements (#36209)
renchap Sep 22, 2025
66afc13
Left-align boost/quote menu to prevent shift based on descriptions (#…
diondiondion Sep 22, 2025
b1c91d8
Remove Renovate postUpgrade commands (#36223)
renchap Sep 22, 2025
187afea
chore(deps): update dependency nokogiri to v1.18.10 (#36120)
renovate[bot] Sep 22, 2025
00cc6c4
chore(deps): update dependency annotaterb to v4.19.0 (#35943)
renovate[bot] Sep 22, 2025
1f2a84b
chore(deps): update dependency net-ldap to v0.20.0 (#35871)
renovate[bot] Sep 22, 2025
4abc442
Refer to pinnable visibilities constant from status serializer `pinna…
mjankowski Sep 22, 2025
5398dd9
fix(deps): update dependency pino to v9.11.0 (#35767)
renovate[bot] Sep 22, 2025
4a99025
chore(deps): update docker/dockerfile docker tag to v1.18 (#36213)
renovate[bot] Sep 22, 2025
e473583
Add quote-related info to a post's `aria-label` (#36169)
diondiondion Sep 22, 2025
5f2091d
fix(deps): update dependency vite to v7.1.7 (#36177)
renovate[bot] Sep 22, 2025
0ac2d11
fix(deps): update dependency @vitejs/plugin-react to v5.0.3 (#36146)
renovate[bot] Sep 22, 2025
28264c5
fix(deps): update dependency sass to v1.93.0 (#36199)
renovate[bot] Sep 22, 2025
da272d1
fix(deps): update dependency react-swipeable-views to v0.14.1 (#36208)
renovate[bot] Sep 22, 2025
91e666b
fix(deps): update dependency postcss-preset-env to v10.4.0 (#35873)
renovate[bot] Sep 22, 2025
63a2ef6
Force `playwright-ruby-client` version to keep it in sync with the NP…
renchap Sep 22, 2025
45a044c
fix(deps): update dependency debug to v4.4.3 (#36058)
renovate[bot] Sep 22, 2025
99d5af9
Add Traditional Mongolian to posting languages (#36196)
shimon1024 Sep 22, 2025
6c2c485
chore(deps): update storybook (non-major) (#36221)
renovate[bot] Sep 22, 2025
107d2a9
chore(deps): update playwright to v1.55.0 (#36222)
renovate[bot] Sep 22, 2025
4b1d749
chore(deps): update devdependencies (non-major) (#35889)
renovate[bot] Sep 22, 2025
dc80805
chore(deps): update opentelemetry-ruby (non-major) (#35831)
renovate[bot] Sep 22, 2025
64895e5
Add support for `has:quote` in search (#36217)
ClearlyClaire Sep 22, 2025
bdadfe6
chore(deps): update dependency ffmpeg to v8 (#35886)
renovate[bot] Sep 22, 2025
8e6c0fd
chore(deps): update dependency simplecov-lcov to v0.9.0 (#35884)
renovate[bot] Sep 22, 2025
24ddf80
Revert "Add compatibility hack for GoToSocial interaction policies (#…
ClearlyClaire Sep 23, 2025
6bd9094
Refactor emoji GIF animation (#36165)
ChaosExAnima Sep 23, 2025
82f5901
New Crowdin Translations (automated) (#36228)
github-actions[bot] Sep 23, 2025
37cec63
Update to puma 7 (#36238)
oneiros Sep 23, 2025
8bc5e85
Merge remote-tracking branch 'parent/main' into upstream-20250924
kmycode Sep 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions .github/renovate.json5
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
':labels(dependencies)',
':prConcurrentLimitNone', // Remove limit for open PRs at any time.
':prHourlyLimit2', // Rate limit PR creation to a maximum of two per hour.
':enableVulnerabilityAlertsWithLabel(security)',
],
rebaseWhen: 'conflicted',
minimumReleaseAge: '3', // Wait 3 days after the package has been published before upgrading it
Expand Down Expand Up @@ -93,6 +94,19 @@
matchUpdateTypes: ['patch', 'minor'],
groupName: 'eslint (non-major)',
},
{
// Group all Storybook-related packages in the same PR
matchManagers: ['npm'],
matchPackageNames: [
'chromatic',
'storybook',
'@storybook/*',
'msw',
'msw-storybook-addon',
],
matchUpdateTypes: ['patch', 'minor'],
groupName: 'storybook (non-major)',
},
{
// Group actions/*-artifact in the same PR
matchManagers: ['github-actions'],
Expand Down Expand Up @@ -141,6 +155,12 @@
matchUpdateTypes: ['patch', 'minor'],
groupName: 'opentelemetry-ruby (non-major)',
},
{
// Group Playwright Ruby & JS deps in the same PR, as they need to be in sync
matchManagers: ['bundler', 'npm'],
matchPackageNames: ['playwright-ruby-client', 'playwright'],
groupName: 'Playwright',
},
// Add labels depending on package manager
{ matchManagers: ['npm', 'nvm'], addLabels: ['javascript'] },
{ matchManagers: ['bundler', 'ruby-version'], addLabels: ['ruby'] },
Expand Down
28 changes: 16 additions & 12 deletions .storybook/static/mockServiceWorker.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
* - Please do NOT modify this file.
*/

const PACKAGE_VERSION = '2.10.4'
const INTEGRITY_CHECKSUM = 'f5825c521429caf22a4dd13b66e243af'
const PACKAGE_VERSION = '2.11.3'
const INTEGRITY_CHECKSUM = '4db4a41e972cec1b64cc569c66952d82'
const IS_MOCKED_RESPONSE = Symbol('isMockedResponse')
const activeClientIds = new Set()

Expand Down Expand Up @@ -71,11 +71,6 @@ addEventListener('message', async function (event) {
break
}

case 'MOCK_DEACTIVATE': {
activeClientIds.delete(clientId)
break
}

case 'CLIENT_CLOSED': {
activeClientIds.delete(clientId)

Expand All @@ -94,6 +89,8 @@ addEventListener('message', async function (event) {
})

addEventListener('fetch', function (event) {
const requestInterceptedAt = Date.now()

// Bypass navigation requests.
if (event.request.mode === 'navigate') {
return
Expand All @@ -110,23 +107,29 @@ addEventListener('fetch', function (event) {

// Bypass all requests when there are no active clients.
// Prevents the self-unregistered worked from handling requests
// after it's been deleted (still remains active until the next reload).
// after it's been terminated (still remains active until the next reload).
if (activeClientIds.size === 0) {
return
}

const requestId = crypto.randomUUID()
event.respondWith(handleRequest(event, requestId))
event.respondWith(handleRequest(event, requestId, requestInterceptedAt))
})

/**
* @param {FetchEvent} event
* @param {string} requestId
* @param {number} requestInterceptedAt
*/
async function handleRequest(event, requestId) {
async function handleRequest(event, requestId, requestInterceptedAt) {
const client = await resolveMainClient(event)
const requestCloneForEvents = event.request.clone()
const response = await getResponse(event, client, requestId)
const response = await getResponse(
event,
client,
requestId,
requestInterceptedAt,
)

// Send back the response clone for the "response:*" life-cycle events.
// Ensure MSW is active and ready to handle the message, otherwise
Expand Down Expand Up @@ -204,7 +207,7 @@ async function resolveMainClient(event) {
* @param {string} requestId
* @returns {Promise<Response>}
*/
async function getResponse(event, client, requestId) {
async function getResponse(event, client, requestId, requestInterceptedAt) {
// Clone the request because it might've been already used
// (i.e. its body has been read and sent to the client).
const requestClone = event.request.clone()
Expand Down Expand Up @@ -255,6 +258,7 @@ async function getResponse(event, client, requestId) {
type: 'REQUEST',
payload: {
id: requestId,
interceptedAt: requestInterceptedAt,
...serializedRequest,
},
},
Expand Down
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# syntax=docker/dockerfile:1.12
# syntax=docker/dockerfile:1.18

# This file is designed for production server deployment, not local development work
# For a containerized local dev environment, see: https://github.com/mastodon/mastodon/blob/main/docs/DEVELOPMENT.md#docker
Expand Down Expand Up @@ -206,7 +206,7 @@ FROM build AS ffmpeg

# ffmpeg version to compile, change with [--build-arg FFMPEG_VERSION="7.0.x"]
# renovate: datasource=repology depName=ffmpeg packageName=openpkg_current/ffmpeg
ARG FFMPEG_VERSION=7.1.1
ARG FFMPEG_VERSION=8.0
# ffmpeg download URL, change with [--build-arg FFMPEG_URL="https://ffmpeg.org/releases"]
ARG FFMPEG_URL=https://ffmpeg.org/releases

Expand Down
11 changes: 6 additions & 5 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ source 'https://rubygems.org'
ruby '>= 3.2.0', '< 3.5.0'

gem 'propshaft'
gem 'puma', '~> 6.3'
gem 'puma', '~> 7.0'
gem 'rails', '~> 8.0'
gem 'thor', '~> 1.2'

Expand Down Expand Up @@ -102,7 +102,7 @@ gem 'rdf-normalize', '~> 0.5'

gem 'prometheus_exporter', '~> 2.2', require: false

gem 'opentelemetry-api', '~> 1.6.0'
gem 'opentelemetry-api', '~> 1.7.0'

group :opentelemetry do
gem 'opentelemetry-exporter-otlp', '~> 0.30.0', require: false
Expand All @@ -113,10 +113,10 @@ group :opentelemetry do
gem 'opentelemetry-instrumentation-faraday', '~> 0.28.0', require: false
gem 'opentelemetry-instrumentation-http', '~> 0.25.0', require: false
gem 'opentelemetry-instrumentation-http_client', '~> 0.24.0', require: false
gem 'opentelemetry-instrumentation-net_http', '~> 0.23.0', require: false
gem 'opentelemetry-instrumentation-net_http', '~> 0.24.0', require: false
gem 'opentelemetry-instrumentation-pg', '~> 0.30.0', require: false
gem 'opentelemetry-instrumentation-rack', '~> 0.26.0', require: false
gem 'opentelemetry-instrumentation-rails', '~> 0.36.0', require: false
gem 'opentelemetry-instrumentation-rack', '~> 0.27.0', require: false
gem 'opentelemetry-instrumentation-rails', '~> 0.37.0', require: false
gem 'opentelemetry-instrumentation-redis', '~> 0.26.0', require: false
gem 'opentelemetry-instrumentation-sidekiq', '~> 0.26.0', require: false
gem 'opentelemetry-sdk', '~> 1.4', require: false
Expand All @@ -138,6 +138,7 @@ group :test do
# Browser integration testing
gem 'capybara', '~> 3.39'
gem 'capybara-playwright-driver'
gem 'playwright-ruby-client', '1.55.0', require: false # Pinning the exact version as it needs to be kept in sync with the installed npm package

# Used to reset the database between system tests
gem 'database_cleaner-active_record'
Expand Down
45 changes: 24 additions & 21 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ GEM
public_suffix (>= 2.0.2, < 7.0)
aes_key_wrap (1.1.0)
android_key_attestation (0.3.0)
annotaterb (4.18.0)
annotaterb (4.19.0)
activerecord (>= 6.0.0)
activesupport (>= 6.0.0)
ast (2.4.3)
Expand Down Expand Up @@ -438,7 +438,7 @@ GEM
mime-types (3.7.0)
logger
mime-types-data (~> 3.2025, >= 3.2025.0507)
mime-types-data (3.2025.0729)
mime-types-data (3.2025.0916)
mini_mime (1.1.5)
mini_portile2 (2.8.9)
minitest (5.25.5)
Expand All @@ -450,15 +450,17 @@ GEM
net-imap (0.5.9)
date
net-protocol
net-ldap (0.19.0)
net-ldap (0.20.0)
base64
ostruct
net-pop (0.1.2)
net-protocol
net-protocol (0.2.2)
timeout
net-smtp (0.5.1)
net-protocol
nio4r (2.7.4)
nokogiri (1.18.9)
nokogiri (1.18.10)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
oj (3.16.11)
Expand Down Expand Up @@ -497,7 +499,7 @@ GEM
openssl (3.3.0)
openssl-signature_algorithm (1.3.0)
openssl (> 2.0)
opentelemetry-api (1.6.0)
opentelemetry-api (1.7.0)
opentelemetry-common (0.22.0)
opentelemetry-api (~> 1.0)
opentelemetry-exporter-otlp (0.30.0)
Expand All @@ -515,7 +517,7 @@ GEM
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-active_support (~> 0.7)
opentelemetry-instrumentation-base (~> 0.23.0)
opentelemetry-instrumentation-action_pack (0.12.3)
opentelemetry-instrumentation-action_pack (0.13.0)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.23.0)
opentelemetry-instrumentation-rack (~> 0.21)
Expand Down Expand Up @@ -559,21 +561,21 @@ GEM
opentelemetry-instrumentation-http_client (0.24.0)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.23.0)
opentelemetry-instrumentation-net_http (0.23.1)
opentelemetry-instrumentation-net_http (0.24.0)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.23.0)
opentelemetry-instrumentation-pg (0.30.1)
opentelemetry-api (~> 1.0)
opentelemetry-helpers-sql
opentelemetry-helpers-sql-obfuscation
opentelemetry-instrumentation-base (~> 0.23.0)
opentelemetry-instrumentation-rack (0.26.0)
opentelemetry-instrumentation-rack (0.27.1)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.23.0)
opentelemetry-instrumentation-rails (0.36.0)
opentelemetry-instrumentation-rails (0.37.0)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-action_mailer (~> 0.4.0)
opentelemetry-instrumentation-action_pack (~> 0.12.0)
opentelemetry-instrumentation-action_pack (~> 0.13.0)
opentelemetry-instrumentation-action_view (~> 0.9.0)
opentelemetry-instrumentation-active_job (~> 0.8.0)
opentelemetry-instrumentation-active_record (~> 0.9.0)
Expand All @@ -589,12 +591,12 @@ GEM
opentelemetry-instrumentation-base (~> 0.23.0)
opentelemetry-registry (0.4.0)
opentelemetry-api (~> 1.1)
opentelemetry-sdk (1.8.1)
opentelemetry-sdk (1.9.0)
opentelemetry-api (~> 1.1)
opentelemetry-common (~> 0.20)
opentelemetry-registry (~> 0.2)
opentelemetry-semantic_conventions
opentelemetry-semantic_conventions (1.11.0)
opentelemetry-semantic_conventions (1.36.0)
opentelemetry-api (~> 1.0)
orm_adapter (0.5.0)
ostruct (0.6.3)
Expand All @@ -610,7 +612,7 @@ GEM
pg (1.6.2)
pghero (3.7.0)
activerecord (>= 7.1)
playwright-ruby-client (1.54.1)
playwright-ruby-client (1.55.0)
concurrent-ruby (>= 1.1.6)
mime-types (>= 3.0)
pp (0.6.2)
Expand All @@ -635,7 +637,7 @@ GEM
date
stringio
public_suffix (6.0.2)
puma (6.6.1)
puma (7.0.3)
nio4r (~> 2.0)
pundit (2.5.1)
activesupport (>= 3.0.0)
Expand Down Expand Up @@ -848,12 +850,12 @@ GEM
simplecov-html (~> 0.11)
simplecov_json_formatter (~> 0.1)
simplecov-html (0.13.2)
simplecov-lcov (0.8.0)
simplecov-lcov (0.9.0)
simplecov_json_formatter (0.1.4)
stackprof (0.2.27)
starry (0.2.0)
base64
stoplight (5.3.5)
stoplight (5.3.8)
zeitwerk
stringio (3.1.7)
strong_migrations (2.5.0)
Expand Down Expand Up @@ -1025,7 +1027,7 @@ DEPENDENCIES
omniauth-rails_csrf_protection (~> 1.0)
omniauth-saml (~> 2.0)
omniauth_openid_connect (~> 0.8.0)
opentelemetry-api (~> 1.6.0)
opentelemetry-api (~> 1.7.0)
opentelemetry-exporter-otlp (~> 0.30.0)
opentelemetry-instrumentation-active_job (~> 0.8.0)
opentelemetry-instrumentation-active_model_serializers (~> 0.22.0)
Expand All @@ -1034,22 +1036,23 @@ DEPENDENCIES
opentelemetry-instrumentation-faraday (~> 0.28.0)
opentelemetry-instrumentation-http (~> 0.25.0)
opentelemetry-instrumentation-http_client (~> 0.24.0)
opentelemetry-instrumentation-net_http (~> 0.23.0)
opentelemetry-instrumentation-net_http (~> 0.24.0)
opentelemetry-instrumentation-pg (~> 0.30.0)
opentelemetry-instrumentation-rack (~> 0.26.0)
opentelemetry-instrumentation-rails (~> 0.36.0)
opentelemetry-instrumentation-rack (~> 0.27.0)
opentelemetry-instrumentation-rails (~> 0.37.0)
opentelemetry-instrumentation-redis (~> 0.26.0)
opentelemetry-instrumentation-sidekiq (~> 0.26.0)
opentelemetry-sdk (~> 1.4)
ox (~> 2.14)
parslet
pg (~> 1.5)
pghero
playwright-ruby-client (= 1.55.0)
premailer-rails
prometheus_exporter (~> 2.2)
propshaft
public_suffix (~> 6.0)
puma (~> 6.3)
puma (~> 7.0)
pundit (~> 2.3)
rack-attack (~> 6.6)
rack-cors
Expand Down
1 change: 1 addition & 0 deletions app/helpers/languages_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ module LanguagesHelper
mk: ['Macedonian', 'македонски јазик'].freeze,
ml: ['Malayalam', 'മലയാളം'].freeze,
mn: ['Mongolian', 'Монгол хэл'].freeze,
'mn-Mong': ['Traditional Mongolian', 'ᠮᠣᠩᠭᠣᠯ ᠬᠡᠯᠡ'].freeze,
mr: ['Marathi', 'मराठी'].freeze,
ms: ['Malay', 'Bahasa Melayu'].freeze,
'ms-Arab': ['Jawi Malay', 'بهاس ملايو'].freeze,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,10 @@ export const DisplayNameWithoutDomain: FC<
ComponentPropsWithoutRef<'span'>
> = ({ account, className, children, ...props }) => {
return (
<span {...props} className={classNames('display-name', className)}>
<span
{...props}
className={classNames('display-name animate-parent', className)}
>
<bdi>
{account ? (
<EmojiHTML
Expand Down
3 changes: 2 additions & 1 deletion app/javascript/mastodon/components/dropdown_menu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -334,6 +334,7 @@ interface DropdownProps<Item extends object | null = MenuItem> {
scrollable?: boolean;
active?: boolean;
placement?: Placement;
offset?: OffsetValue;
/**
* Prevent the `ScrollableList` with this scrollKey
* from being scrolled while the dropdown is open
Expand All @@ -349,7 +350,6 @@ interface DropdownProps<Item extends object | null = MenuItem> {
onItemClick?: ItemClickFn<Item>;
}

const offset = [5, 5] as OffsetValue;
const popperConfig = { strategy: 'fixed' } as UsePopperOptions;

export const Dropdown = <Item extends object | null = MenuItem>({
Expand All @@ -363,6 +363,7 @@ export const Dropdown = <Item extends object | null = MenuItem>({
scrollable,
active,
placement = 'bottom',
offset = [5, 5],
status,
forceDropdown = false,
renderItem,
Expand Down
Loading