diff --git a/src/components/status_body/status_body.js b/src/components/status_body/status_body.js
index 7a46a1a3b..e6752cb1a 100644
--- a/src/components/status_body/status_body.js
+++ b/src/components/status_body/status_body.js
@@ -59,6 +59,12 @@ const StatusBody = {
allowNonSquareEmoji() {
return this.mergedConfig.nonSquareEmoji
},
+ pauseMfm() {
+ return this.mergedConfig.pauseMfm
+ },
+ scaleMfm() {
+ return this.mergedConfig.scaleMfm
+ },
// This is a bit hacky, but we want to approximate post height before rendering
// so we count newlines (masto uses
for paragraphs, GS uses between them)
// as well as approximate line count by counting characters and approximating ~80
diff --git a/src/components/status_body/status_body.vue b/src/components/status_body/status_body.vue
index b611d69b8..e8994180a 100644
--- a/src/components/status_body/status_body.vue
+++ b/src/components/status_body/status_body.vue
@@ -16,6 +16,8 @@
:emoji="status.emojis"
:is-local="status.isLocal"
:allow-non-square-emoji="allowNonSquareEmoji"
+ :pause-mfm="pauseMfm"
+ :scale-mfm="scaleMfm"
/>
@@ -542,6 +546,8 @@
:html="field.name"
:emoji="editable ? emoji : user.emoji"
:allow-non-square-emoji="allowNonSquareEmoji"
+ :pause-mfm="pauseMfm"
+ :scale-mfm="scaleMfm"
/>
diff --git a/src/components/user_list_popover/user_list_popover.js b/src/components/user_list_popover/user_list_popover.js
index 7f9ba4ffb..84107d6b1 100644
--- a/src/components/user_list_popover/user_list_popover.js
+++ b/src/components/user_list_popover/user_list_popover.js
@@ -27,6 +27,12 @@ const UserListPopover = {
allowNonSquareEmoji() {
return useMergedConfigStore().mergedConfig.nonSquareEmoji
},
+ pauseMfm() {
+ return useMergedConfigStore().mergedConfig.pauseMfm
+ },
+ scaleMfm() {
+ return useMergedConfigStore().mergedConfig.scaleMfm
+ },
},
methods: {
generateProfileLink(user) {
diff --git a/src/components/user_list_popover/user_list_popover.vue b/src/components/user_list_popover/user_list_popover.vue
index 02fa5a2d2..ddeb6f6f6 100644
--- a/src/components/user_list_popover/user_list_popover.vue
+++ b/src/components/user_list_popover/user_list_popover.vue
@@ -29,6 +29,8 @@
:html="user.name_html"
:emoji="user.emoji"
:allow-non-square-emoji="allowNonSquareEmoji"
+ :pause-mfm="pauseMfm"
+ :scale-mfm="scaleMfm"
/>
{{ user.screen_name_ui }}
diff --git a/src/i18n/en.json b/src/i18n/en.json
index 4a35b48f5..025f7ad8b 100644
--- a/src/i18n/en.json
+++ b/src/i18n/en.json
@@ -807,6 +807,8 @@
"sensitive_by_default": "Mark posts as sensitive by default",
"stop_gifs": "Pause animated images until you hover on them",
"non_square_emoji": "Allow non-square emoji",
+ "pause_mfm": "Pause MFM animations until you hover on them",
+ "scale_mfm": "Scale MFM animations with emoji size",
"streaming": "Automatically show new posts when scrolled to the top",
"auto_update": "Show new posts automatically",
"user_mutes": "Users",
diff --git a/src/modules/default_config_state.js b/src/modules/default_config_state.js
index ec190af28..d9a2ba247 100644
--- a/src/modules/default_config_state.js
+++ b/src/modules/default_config_state.js
@@ -237,6 +237,14 @@ export const INSTANCE_DEFAULT_CONFIG_DEFINITIONS = {
description: 'Allow emoji to be non-square (max 3:1 aspect)',
default: true,
},
+ pauseMfm: {
+ description: 'Pause MFM animations',
+ default: true,
+ },
+ scaleMfm: {
+ description: 'Scale MFM animation with emoji size',
+ default: false,
+ },
replyVisibility: {
description: 'Type of replies to show',
default: 'all',