Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
114 commits
Select commit Hold shift + click to select a range
e147947
Add wrapstodon page spec (#37168)
mjankowski Dec 9, 2025
9063c3b
Remove yarn patch for `babel-plugin-lodash`, removed during Vite upgr…
mjankowski Dec 9, 2025
eef40ba
Update dependency hiredis-client to v0.26.2 (#37137)
renovate[bot] Dec 9, 2025
5347cab
Update dependency oj to v3.16.13 (#37135)
renovate[bot] Dec 9, 2025
ea768c1
Add counter cache to collections (#37176)
oneiros Dec 9, 2025
9702cbb
Fix emoji on Wrapstodon (#37177)
ChaosExAnima Dec 9, 2025
4cdcdaa
Fix streaming image build after removal of `.yarn` (#37181)
ClearlyClaire Dec 9, 2025
697569e
Add `account_id` attribute to `AnnualReport` entity (#37182)
ClearlyClaire Dec 9, 2025
ac71771
Fix misc comment typos (#37183)
mjankowski Dec 9, 2025
9d81561
Update Wrapstodon design (#37169)
diondiondion Dec 9, 2025
91500a7
Minor Wrapstodon tweaks, add stub Storybook page (#37186)
diondiondion Dec 10, 2025
7b8a5d4
Remove unused time series details from 2025 annual report (#37187)
ClearlyClaire Dec 10, 2025
6838497
Add title and description to Opengraph data for Wrapstodon share page…
ClearlyClaire Dec 10, 2025
801fee7
Update dependency test-prof to v1.5.0 (#37127)
renovate[bot] Dec 10, 2025
3742628
Update dependency postcss-preset-env to v10.5.0 (#37132)
renovate[bot] Dec 10, 2025
8137ce8
Fix Wrapstodon Storybook & other Wrapstodon issues (#37189)
diondiondion Dec 10, 2025
76184c9
Fix issue where Wrapstodon was pushed to the bottom of the feed (#37190)
ChaosExAnima Dec 10, 2025
c42b9f6
Implement custom font for Wrapstodon heading (#37193)
diondiondion Dec 10, 2025
d6f2a3a
Bump version to v4.5.3 (#37166)
ClearlyClaire Dec 10, 2025
adf8a36
Add service to add item to a collection (#37192)
oneiros Dec 10, 2025
da2b75b
Change `build-releases` workflow to tag images `latest` based on late…
ClearlyClaire Dec 10, 2025
d1f690f
Update dependency stoplight to v5.7.0 (#37151)
renovate[bot] Dec 11, 2025
da1505a
Update dependency @vitejs/plugin-react to v5.1.2 (#37155)
renovate[bot] Dec 11, 2025
15c9088
Update dependency vite to v7.2.7 (#37156)
renovate[bot] Dec 11, 2025
d25f672
Update dependency active_model_serializers to v0.10.16 (#37167)
renovate[bot] Dec 11, 2025
37d309b
Fix Wrapstodon font loading by disabling inlining of fonts in Vite (#…
ClearlyClaire Dec 11, 2025
fed26a4
Update dependency jsdom to v27.3.0 (#37165)
renovate[bot] Dec 11, 2025
d1b996b
Update dependency omniauth-rails_csrf_protection to v2.0.1 (#37199)
renovate[bot] Dec 11, 2025
5651900
Wrapstodon design QA tweaks (#37201)
diondiondion Dec 11, 2025
4323963
Fix Wrapstodon modal scrolling not working on iOS (#37203)
diondiondion Dec 11, 2025
5e33875
Add image to Wrapstodon OpenGraph banner (#37205)
ClearlyClaire Dec 11, 2025
addeb28
Change wrapstodon 2025 to allow unlisted posts in top statuses (#37206)
ClearlyClaire Dec 11, 2025
d730f6b
Add spec for client_credentials being used with /api/v1/apps/verify_c…
ThisIsMissEm Dec 11, 2025
c06eb37
Add Wrapstodon footer links (#37207)
diondiondion Dec 11, 2025
dfbf908
Fix wrapstodon modal closing on any click (#37209)
ClearlyClaire Dec 11, 2025
10f232c
Wrapstodon: Allow dismissing banner (#37202)
ChaosExAnima Dec 12, 2025
571c93c
Change Wrapstodon 'About' link to point to joinmastodon.org (#37216)
diondiondion Dec 12, 2025
e206b0d
Wrapstodon: Add nav modal (#37210)
ChaosExAnima Dec 12, 2025
8748f08
Convert Settings class to TS (#37218)
diondiondion Dec 12, 2025
b72b507
Remember revealed archetype on future Wrapstodon visits (#37219)
diondiondion Dec 12, 2025
1e67567
Change HTTP Signature verification status from 401 to 503 on temporar…
ClearlyClaire Dec 12, 2025
3cc4b59
First draft of API to add items to a collection (#37222)
oneiros Dec 12, 2025
6821b70
Add secondary Wrapstodon share button (#37224)
diondiondion Dec 12, 2025
861202f
Change Emoji in Wrapstodon footer 🐘 (#37226)
diondiondion Dec 12, 2025
4af8e83
Fix wrapstodon not falling back to username when display name is not …
ClearlyClaire Dec 12, 2025
1766616
Refactor relation preloading (#37217)
oneiros Dec 15, 2025
372de34
Update dependency sass to v1.96.0 (#37175)
renovate[bot] Dec 15, 2025
bb72ecd
Add simple API to remove item from collection (#37225)
oneiros Dec 15, 2025
ffba47a
Update dependency ruby-vips to v2.3.0 (#37194)
renovate[bot] Dec 15, 2025
c112c6d
Update Node.js to 24.12 (#37196)
renovate[bot] Dec 15, 2025
dc4fb51
Increase cache duration on public shared wrapstodon page (#37249)
ClearlyClaire Dec 15, 2025
d7f632f
Update dependency tesseract.js to v7 (#37246)
renovate[bot] Dec 15, 2025
a9e2283
Fix badly visible focus outlines in composer (#37250)
diondiondion Dec 15, 2025
2984f37
Update devDependencies (non-major) (#37074)
renovate[bot] Dec 15, 2025
5fa7654
Fixes display names not rendering with emojis (#37251)
ChaosExAnima Dec 15, 2025
09ab282
Upgrade `rubocop-rails` from `2.33.4` to `2.34.2` and address related…
larouxn Dec 15, 2025
9d18df4
Add REPLICA_DB_HOST to replica_enabled helper (#37240)
smiba Dec 15, 2025
807e125
Prevent "invalid access token" error when opening Mastodon while logg…
diondiondion Dec 15, 2025
a3fa441
Check "featureable" policy on creation of collections (#37254)
oneiros Dec 15, 2025
cbe1352
Emoji: Import and use shortcode data (#37178)
ChaosExAnima Dec 15, 2025
0801104
Fix mentions of domain-blocked users being processed (#37257)
ClearlyClaire Dec 16, 2025
71821eb
Update dependency tzinfo-data to v1.2025.3 (#37242)
renovate[bot] Dec 16, 2025
4c679c6
Update dependency vite-tsconfig-paths to v6 (#37247)
renovate[bot] Dec 16, 2025
550a6d4
Add wrapstodon to initial state and show wrapstodon sidebar item on l…
ClearlyClaire Dec 16, 2025
c8f6088
Use bundler version 4.0.1 (#37191)
mjankowski Dec 16, 2025
7230c20
Add coverage for "domain variants" consumers (#35995)
mjankowski Dec 16, 2025
8c28459
Improve Redux Storybook (#37227)
ChaosExAnima Dec 16, 2025
9e97ad0
Fix bad contrast on disabled dropdown menu items (#37268)
diondiondion Dec 16, 2025
a9c8452
Wrapstodon: Load report data only on display (#37269)
ChaosExAnima Dec 16, 2025
92df1c4
Add coverage for `Account.representative` from finder concern (#35996)
mjankowski Dec 16, 2025
7e81e03
Reduce factory creation across `spec/helpers` (#35527)
mjankowski Dec 16, 2025
e6b0cdc
Updates Wrapstodon footer with dedicated local server info (#37270)
diondiondion Dec 16, 2025
dbf8d77
Add spec for missing username value in create account API (#37057)
mjankowski Dec 16, 2025
95432b4
Add coverage for user model registration time validation (#35993)
mjankowski Dec 16, 2025
f118d61
Emojis: Show in embedded statuses (#37272)
ChaosExAnima Dec 16, 2025
53be839
Add coverage for blocked account scenario in following/followers (#36…
mjankowski Dec 16, 2025
3ee5bfa
Merge remote-tracking branch 'parent/main' into upstream-20251217
kmycode Dec 17, 2025
a292162
Mark `Form::AdminSettings#persisted?` as true (#35872)
mjankowski Dec 17, 2025
db62d70
Change Wrapstodon switch from feature flag to admin setting (#37273)
ClearlyClaire Dec 17, 2025
5e8b8f9
Extract interaction policy class (#37277)
oneiros Dec 17, 2025
8debc57
New Crowdin Translations (automated) (#37174)
github-actions[bot] Dec 17, 2025
42d4753
Update dependency vite-tsconfig-paths to v6.0.2 (#37279)
renovate[bot] Dec 17, 2025
a5362a4
Upgrade Bundler from 4.0.1 to 4.0.2 (#37283)
larouxn Dec 17, 2025
d6a40c2
Fix hashtag autocomplete replacing suggestion's first characters with…
ClearlyClaire Dec 17, 2025
71af094
Fix notifications page error in Tor browser (#37285)
diondiondion Dec 17, 2025
dbc5af6
Remove rendering of custom emoji using the database (#37284)
ChaosExAnima Dec 17, 2025
c4a760d
Improve search menu keyboard navigation (#37255)
diondiondion Dec 17, 2025
7e817f2
Extract `filter_keywords` helper method for listing filter keyword gr…
mjankowski Dec 17, 2025
3d55dcd
Emoji: Refresh custom emoji on new (#37271)
ChaosExAnima Dec 17, 2025
009275e
Use `link_to` for contribute translation link (#36011)
mjankowski Dec 17, 2025
830ffbe
Remove required field markers from unclearable fields in user prefere…
diondiondion Dec 18, 2025
ed2a8c3
New Crowdin Translations (automated) (#37293)
github-actions[bot] Dec 18, 2025
38bc7d2
Use HTTPS when downloading unicode.org's emoji-test.txt (#37290)
MegaManSec Dec 18, 2025
ffdf56b
Fix default `Admin` role not including `view_feeds` permission (#37301)
ClearlyClaire Dec 18, 2025
787b008
Update dependency ruby to v3.4.8 (#37278)
renovate[bot] Dec 18, 2025
8bc0170
Update docker.io/ruby Docker tag to v3.4.8 (#37297)
renovate[bot] Dec 18, 2025
2a7e5fb
Skip followers synchronization for accounts with 25k followers or mor…
ClearlyClaire Dec 18, 2025
a8109e5
Fix custom emojis not displaying in CWs and fav/boost notifications (…
ClearlyClaire Dec 18, 2025
ba4710d
Emoji loading fixes (#37300)
ChaosExAnima Dec 18, 2025
ff20ab7
Fixes CDN domain loading (#37310)
ChaosExAnima Dec 18, 2025
6480e16
Update dependency sass to v1.97.0 (#37266)
renovate[bot] Dec 19, 2025
a505c2e
Fix mobile admin sidebar displaying under batch table toolbar (#37307)
diondiondion Dec 19, 2025
77b685e
Update dependency vite-tsconfig-paths to v6.0.3 (#37303)
renovate[bot] Dec 19, 2025
ff005ba
New Crowdin Translations (automated) (#37312)
github-actions[bot] Dec 19, 2025
06a5199
Update dependency storybook to v10.1.10 [SECURITY] (#37314)
renovate[bot] Dec 19, 2025
f254b47
Remove trailing variation selector code for legacy emojis (#37320)
ChaosExAnima Dec 19, 2025
4e63958
Federated "featureable in collections" preference (#37298)
oneiros Dec 19, 2025
8d91928
Add stub story for `StatusQuoteManager` / `Status` component (#37321)
diondiondion Dec 19, 2025
0231b6d
Expose feature policy in API (#37322)
oneiros Dec 19, 2025
a0ce776
Add dedicated user preferences for theme mode & contrast (#37288)
diondiondion Dec 19, 2025
4bae3da
Prevents swiping when zoomed in (#37323)
ChaosExAnima Dec 19, 2025
73ac783
Fix test
kmycode Dec 26, 2025
1fa02c1
Merge remote-tracking branch 'parent/main' into upstream-20251217
kmycode Dec 26, 2025
5db2e09
Fix test
kmycode Dec 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
24.11
24.12
2 changes: 1 addition & 1 deletion .ruby-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.4.7
3.4.8
1 change: 1 addition & 0 deletions .storybook/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ const config: StorybookConfig = {
'oops.gif',
'oops.png',
].map((path) => ({ from: `../public/${path}`, to: `/${path}` })),
{ from: '../app/javascript/images/logo.svg', to: '/custom-emoji/logo.svg' },
],
viteFinal(config) {
// For an unknown reason, Storybook does not use the root
Expand Down
37 changes: 33 additions & 4 deletions .storybook/preview.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,11 @@ import type { Preview } from '@storybook/react-vite';
import { initialize, mswLoader } from 'msw-storybook-addon';
import { action } from 'storybook/actions';

import {
importCustomEmojiData,
importLegacyShortcodes,
importEmojiData,
} from '@/mastodon/features/emoji/loader';
import type { LocaleData } from '@/mastodon/locales';
import { reducerWithInitialState } from '@/mastodon/reducers';
import { defaultMiddleware } from '@/mastodon/store/store';
Expand Down Expand Up @@ -50,12 +55,31 @@ const preview: Preview = {
locale: 'en',
},
decorators: [
(Story, { parameters, globals, args }) => {
(Story, { parameters, globals, args, argTypes }) => {
// Get the locale from the global toolbar
// and merge it with any parameters or args state.
const { locale } = globals as { locale: string };
const { state = {} } = parameters;
const { state: argsState = {} } = args;

const argsState: Record<string, unknown> = {};
for (const [key, value] of Object.entries(args)) {
const argType = argTypes[key];
if (argType?.reduxPath) {
const reduxPath = Array.isArray(argType.reduxPath)
? argType.reduxPath.map((p) => p.toString())
: argType.reduxPath.split('.');

reduxPath.reduce((acc, key, i) => {
if (acc[key] === undefined) {
acc[key] = {};
}
if (i === reduxPath.length - 1) {
acc[key] = value;
}
return acc[key] as Record<string, unknown>;
}, argsState);
}
}

const reducer = reducerWithInitialState(
{
Expand All @@ -64,7 +88,7 @@ const preview: Preview = {
},
},
state as Record<string, unknown>,
argsState as Record<string, unknown>,
argsState,
);

const store = configureStore({
Expand Down Expand Up @@ -127,7 +151,12 @@ const preview: Preview = {
</MemoryRouter>
),
],
loaders: [mswLoader],
loaders: [
mswLoader,
importCustomEmojiData,
importLegacyShortcodes,
({ globals: { locale } }) => importEmojiData(locale as string),
],
parameters: {
layout: 'centered',

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,20 @@
// The addon package.json incorrectly exports types, so we need to override them here.

import type { RootState } from '@/mastodon/store';

// See: https://github.com/storybookjs/storybook/blob/v9.0.4/code/addons/vitest/package.json#L70-L76
declare module '@storybook/addon-vitest/vitest-plugin' {
export * from '@storybook/addon-vitest/dist/vitest-plugin/index';
}

type RootPathKeys = keyof RootState;

declare module 'storybook/internal/csf' {
export interface InputType {
reduxPath?:
| `${RootPathKeys}.${string}`
| [RootPathKeys, ...(string | number)[]];
}
}

export {};
13 changes: 0 additions & 13 deletions .yarn/patches/babel-plugin-lodash-npm-3.3.4-c7161075b6.patch

This file was deleted.

20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,26 @@

All notable changes to this project will be documented in this file.

## [4.5.3] - 2025-12-08

### Security

- Fix inconsistent error handling leaking information on existence of private posts ([GHSA-gwhw-gcjx-72v8](https://github.com/mastodon/mastodon/security/advisories/GHSA-gwhw-gcjx-72v8))

### Fixed

- Fix “Delete and Redraft” on a non-quote being treated as a quote post in some cases (#37140 by @ClearlyClaire)
- Fix YouTube embeds by sending referer (#37126 by @ChaosExAnima)
- Fix streamed quoted polls not being hydrated correctly (#37118 by @ClearlyClaire)
- Fix creation of duplicate conversations (#37108 by @oneiros)
- Fix extraneous `noreferrer` in external links (#37107 by @ChaosExAnima)
- Fix edge case error handling in some database migrations (#37079 by @ClearlyClaire)
- Fix error handling when re-fetching already-known statuses (#37077 by @ClearlyClaire)
- Fix post navigation in single-column mode when Advanced UI is enabled (#37044 by @diondiondion)
- Fix `tootctl status remove` removing quoted posts and remote quotes of local posts (#37009 by @ClearlyClaire)
- Fix known expensive S3 batch delete operation failing because of short timeouts (#37004 by @ClearlyClaire)
- Fix compose autosuggest always lowercasing input token (#36995 by @ClearlyClaire)

## [4.5.2] - 2025-11-20

### Changed
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ ARG BASE_REGISTRY="docker.io"

# Ruby image to use for base image, change with [--build-arg RUBY_VERSION="3.4.x"]
# renovate: datasource=docker depName=docker.io/ruby
ARG RUBY_VERSION="3.4.7"
ARG RUBY_VERSION="3.4.8"
# # Node.js version to use in base image, change with [--build-arg NODE_MAJOR_VERSION="22"]
# renovate: datasource=node-version depName=node
ARG NODE_MAJOR_VERSION="24"
Expand Down
2 changes: 1 addition & 1 deletion Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ group :test do
# Browser integration testing
gem 'capybara', '~> 3.39'
gem 'capybara-playwright-driver'
gem 'playwright-ruby-client', '1.56.0', require: false # Pinning the exact version as it needs to be kept in sync with the installed npm package
gem 'playwright-ruby-client', '1.57.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
Loading
Loading