From 8e33252ed1158d0fd883c3e99e199864677634fb Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Tue, 5 May 2026 11:25:45 +0300 Subject: [PATCH 01/16] add margin to bottom-left buttons for more consistent spacing --- src/components/post_status_form/post_status_form.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/post_status_form/post_status_form.scss b/src/components/post_status_form/post_status_form.scss index 684a92267..c8a1f78dc 100644 --- a/src/components/post_status_form/post_status_form.scss +++ b/src/components/post_status_form/post_status_form.scss @@ -42,6 +42,7 @@ .form-bottom-left { display: flex; gap: 1.5em; + margin-right: 1em; button { padding: 0.5em; From eed89f2165030836e84acda8ecf875ef064759f9 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Tue, 5 May 2026 11:40:49 +0300 Subject: [PATCH 02/16] added about section for version, cleaned up about tab --- src/components/about/about.js | 9 +++++ src/components/about/about.vue | 36 ++++++++++++++++++- .../settings_modal/tabs/developer_tab.js | 10 ++---- 3 files changed, 46 insertions(+), 9 deletions(-) diff --git a/src/components/about/about.js b/src/components/about/about.js index 404843e8b..dc6733491 100644 --- a/src/components/about/about.js +++ b/src/components/about/about.js @@ -1,3 +1,5 @@ +import { mapState } from 'pinia' + import FeaturesPanel from '../features_panel/features_panel.vue' import InstanceSpecificPanel from '../instance_specific_panel/instance_specific_panel.vue' import MRFTransparencyPanel from '../mrf_transparency_panel/mrf_transparency_panel.vue' @@ -7,6 +9,9 @@ import TermsOfServicePanel from '../terms_of_service_panel/terms_of_service_pane import { useInstanceStore } from 'src/stores/instance.js' import { useMergedConfigStore } from 'src/stores/merged_config.js' +const pleromaFeCommitUrl = + 'https://git.pleroma.social/pleroma/pleroma-fe/commit/' + const About = { components: { InstanceSpecificPanel, @@ -19,6 +24,10 @@ const About = { showFeaturesPanel() { return useInstanceStore().instanceIdentity.showFeaturesPanel }, + frontendVersionLink() { + return pleromaFeCommitUrl + this.frontendVersion + }, + ...mapState(useInstanceStore, ['backendVersion', 'backendRepository', 'frontendVersion']), showInstanceSpecificPanel() { return ( useInstanceStore().instanceIdentity.showInstanceSpecificPanel && diff --git a/src/components/about/about.vue b/src/components/about/about.vue index 8a551485f..df395c7dd 100644 --- a/src/components/about/about.vue +++ b/src/components/about/about.vue @@ -1,11 +1,45 @@ + diff --git a/src/components/settings_modal/tabs/developer_tab.js b/src/components/settings_modal/tabs/developer_tab.js index b500d2f03..7558785f5 100644 --- a/src/components/settings_modal/tabs/developer_tab.js +++ b/src/components/settings_modal/tabs/developer_tab.js @@ -1,3 +1,4 @@ +import { mapState } from 'pinia' import BooleanSetting from '../helpers/boolean_setting.vue' import SharedComputedObject from '../helpers/shared_computed_object.js' @@ -9,14 +10,6 @@ const pleromaFeCommitUrl = 'https://git.pleroma.social/pleroma/pleroma-fe/commit/' const VersionTab = { - data() { - const instance = useInstanceStore() - return { - backendVersion: instance.backendVersion, - backendRepository: instance.backendRepository, - frontendVersion: instance.frontendVersion, - } - }, components: { BooleanSetting, }, @@ -24,6 +17,7 @@ const VersionTab = { frontendVersionLink() { return pleromaFeCommitUrl + this.frontendVersion }, + ...mapState(useInstanceStore, ['backendVersion', 'backendRepository', 'frontendVersion']), ...SharedComputedObject(), }, methods: { From bf0403e330e4a8cd2ddaddb6caa44afc42ba5eef Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Tue, 5 May 2026 11:51:24 +0300 Subject: [PATCH 03/16] add mrf tags display on user profile --- src/components/user_card/user_card.vue | 6 ++++++ src/i18n/en.json | 10 +++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/components/user_card/user_card.vue b/src/components/user_card/user_card.vue index 1c3a91282..dfe6df6b5 100644 --- a/src/components/user_card/user_card.vue +++ b/src/components/user_card/user_card.vue @@ -212,6 +212,12 @@ > {{ $t('user_card.group') }} + + {{ $t('user_card.tags.' + tag) }} + diff --git a/src/i18n/en.json b/src/i18n/en.json index 7851c297c..9f5e4e1c7 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -1737,7 +1737,15 @@ }, "personal_note": "Personal note", "note_blank_click": "Click to add note", - "highlight_header": "Highlight user's posts and mentions" + "highlight_header": "Highlight user's posts and mentions", + "tags": { + "mrf_tag:media-force-nsfw": "Mark as sensitive", + "mrf_tag:media-strip": "Remove attachments", + "mrf_tag:force-unlisted": "Force unlisted", + "mrf_tag:sandbox": "Remove from public timelines", + "mrf_tag:disable-remote-subscription": "Reject non-local follow requests", + "mrf_tag:disable-any-subscription": "Reject any follow requests" + } }, "user_profile": { "timeline_title": "User timeline", From a79484a4c6b7c8afcbe620920e4f3f80f40dba83 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Tue, 5 May 2026 11:54:28 +0300 Subject: [PATCH 04/16] boost personal note size --- src/components/user_note/user_note.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/user_note/user_note.vue b/src/components/user_note/user_note.vue index 8c4ec3662..faa8ecf54 100644 --- a/src/components/user_note/user_note.vue +++ b/src/components/user_note/user_note.vue @@ -8,7 +8,7 @@ v-model="localNote" class="input note-text" :class="{ unstyled: !editing }" - rows="1" + rows="3" :placeholder="$t('user_card.note_blank_click')" @focus="startEditing" @blur="finalizeEditing" From bbe09158ce1cb99c9c9fa68864cb5e66517f2df4 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Tue, 5 May 2026 12:05:22 +0300 Subject: [PATCH 05/16] make bottom-left button toggled --- src/components/post_status_form/post_status_form.scss | 5 +---- src/components/post_status_form/post_status_form.vue | 10 +++++----- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/components/post_status_form/post_status_form.scss b/src/components/post_status_form/post_status_form.scss index c8a1f78dc..f7fe582db 100644 --- a/src/components/post_status_form/post_status_form.scss +++ b/src/components/post_status_form/post_status_form.scss @@ -145,10 +145,7 @@ justify-content: right; } - .media-upload-icon, - .poll-icon, - .quote-icon, - .emoji-icon { + .bottom-left-button { font-size: 1.85em; line-height: 1.1; flex: 1; diff --git a/src/components/post_status_form/post_status_form.vue b/src/components/post_status_form/post_status_form.vue index 5fdde4784..b3288b78a 100644 --- a/src/components/post_status_form/post_status_form.vue +++ b/src/components/post_status_form/post_status_form.vue @@ -292,7 +292,7 @@
Date: Tue, 5 May 2026 13:30:04 +0300 Subject: [PATCH 08/16] fix missing email setting label --- src/components/settings_modal/tabs/general_tab.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/settings_modal/tabs/general_tab.vue b/src/components/settings_modal/tabs/general_tab.vue index 19800e0dd..76710bec9 100644 --- a/src/components/settings_modal/tabs/general_tab.vue +++ b/src/components/settings_modal/tabs/general_tab.vue @@ -9,6 +9,7 @@ class="lang-selector" @update="val => language = val" /> +
{{ $t('settings.email_language') }}
Date: Tue, 5 May 2026 13:40:26 +0300 Subject: [PATCH 09/16] fix reply popover for muted posts --- src/components/status/status.js | 3 +++ src/components/status_popover/status_popover.vue | 1 + 2 files changed, 4 insertions(+) diff --git a/src/components/status/status.js b/src/components/status/status.js index 7b4a31561..0266ff1a0 100644 --- a/src/components/status/status.js +++ b/src/components/status/status.js @@ -152,6 +152,7 @@ const Status = { 'simpleTree', 'showOtherRepliesAsButton', 'dive', + 'ignoreMute', 'controlledThreadDisplayStatus', 'controlledToggleThreadDisplay', @@ -345,6 +346,7 @@ const Status = { } }, muted() { + if (this.ignoreMute) return false if (this.statusoid.user.id === this.currentUser.id) return false return !this.unmuted && !this.shouldNotMute && this.muteReasons.length > 0 }, @@ -366,6 +368,7 @@ const Status = { ) }, shouldNotMute() { + if (this.ignoreMute) return true if (this.isFocused) return true const { status } = this const { reblog } = status diff --git a/src/components/status_popover/status_popover.vue b/src/components/status_popover/status_popover.vue index 839f82e90..ccfb06c02 100644 --- a/src/components/status_popover/status_popover.vue +++ b/src/components/status_popover/status_popover.vue @@ -16,6 +16,7 @@ :is-preview="true" :statusoid="status" :compact="true" + :ignore-mute="true" />
Date: Tue, 5 May 2026 14:05:41 +0300 Subject: [PATCH 10/16] fix repeater name overflowing --- src/components/status/status.scss | 75 ++++++++++++++++--------------- src/components/status/status.vue | 15 ++++--- 2 files changed, 46 insertions(+), 44 deletions(-) diff --git a/src/components/status/status.scss b/src/components/status/status.scss index 2a40f0dde..fd4d68b9f 100644 --- a/src/components/status/status.scss +++ b/src/components/status/status.scss @@ -23,6 +23,7 @@ .status-container { display: flex; padding: var(--status-margin); + gap: var(--status-margin); > * { min-width: 0; @@ -50,12 +51,11 @@ } .left-side { - margin-right: var(--status-margin); + flex: 0 0 auto; } .right-side { - flex: 1; - min-width: 0; + flex: 1 1 auto; } .usercard { @@ -230,29 +230,47 @@ } .repeat-info { + display: flex; + align-items: center; padding: 0.4em var(--status-margin); - .repeat-icon { - color: var(--cGreen); + .repeater-avatar { + flex: 0 0 1.5em; + border-radius: var(--roundness); + margin-left: 2em; // 3.5 (poster avatar size) - 1.5 (repeater avatar size) + width: 1.5em; + height: 1.5em; } - } - .repeater-avatar { - border-radius: var(--roundness); - margin-left: 2em; // 3.5 (poster avatar size) - 1.5 (repeater avatar size) - width: 1.5em; - height: 1.5em; - } + .right-side { + display: flex; + flex: 1 1 auto; + overflow-x: hidden; + text-overflow: ellipsis; + margin-right: 0; + gap: 0.5em; - .repeater-name { - text-overflow: ellipsis; - margin-right: 0; + .repeater-name { + flex: 0 1 auto; + margin: 0; + } - .emoji { - width: 1em; - height: 1em; - vertical-align: middle; - object-fit: contain; + .repeat-label { + white-space: nowrap; + flex: 0 0 auto; + + .repeat-icon { + vertical-align: middle; + color: var(--cGreen); + } + } + + .emoji { + width: 1em; + height: 1em; + vertical-align: middle; + object-fit: contain; + } } } @@ -371,21 +389,4 @@ text-decoration: underline; } } - - @media all and (width <= 800px) { - .repeater-avatar { - margin-left: 20px; - } - - .post-avatar { - width: 40px; - height: 40px; - - // TODO define those other way somehow? - &.-compact { - width: 32px; - height: 32px; - } - } - } } diff --git a/src/components/status/status.vue b/src/components/status/status.vue index 015a7017c..1e990c9c3 100644 --- a/src/components/status/status.vue +++ b/src/components/status/status.vue @@ -88,13 +88,14 @@ :to="retweeterProfileLink" >{{ retweeter }} - {{ ' ' }} - - {{ $t('timeline.repeated') }} +
+ + {{ $t('timeline.repeated') }} +
From 0e1cfaeb398efe6c855c45a842ce09850d9cfc89 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Tue, 5 May 2026 14:06:58 +0300 Subject: [PATCH 11/16] remove duplicate setting --- src/components/settings_modal/admin_tabs/federation_tab.vue | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/components/settings_modal/admin_tabs/federation_tab.vue b/src/components/settings_modal/admin_tabs/federation_tab.vue index 29a19e0b7..aea16d045 100644 --- a/src/components/settings_modal/admin_tabs/federation_tab.vue +++ b/src/components/settings_modal/admin_tabs/federation_tab.vue @@ -24,9 +24,6 @@

{{ $t('admin_dash.federation.activitypub') }}

    -
  • - -
  • From e9b125a6a1ae54f5bfad0169547cb93ff42294a8 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Tue, 5 May 2026 14:26:40 +0300 Subject: [PATCH 12/16] fix importing theme file from old editor --- .../tabs/old_theme_tab/old_theme_tab.js | 24 +++++++------------ 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/src/components/settings_modal/tabs/old_theme_tab/old_theme_tab.js b/src/components/settings_modal/tabs/old_theme_tab/old_theme_tab.js index d46ddcb52..83f993c86 100644 --- a/src/components/settings_modal/tabs/old_theme_tab/old_theme_tab.js +++ b/src/components/settings_modal/tabs/old_theme_tab/old_theme_tab.js @@ -509,22 +509,14 @@ export default { } }, setCustomTheme() { - useInterfaceStore().setThemeV2({ - customTheme: { - ignore: true, - themeFileVersion: this.selectedVersion, - themeEngineVersion: CURRENT_VERSION, - ...this.previewTheme, - }, - customThemeSource: { - themeFileVersion: this.selectedVersion, - themeEngineVersion: CURRENT_VERSION, - shadows: this.shadowsLocal, - fonts: this.fontsLocal, - opacity: this.currentOpacity, - colors: this.currentColors, - radii: this.currentRadii, - }, + useInterfaceStore().setTheme({ + themeFileVersion: this.selectedVersion, + themeEngineVersion: CURRENT_VERSION, + shadows: this.shadowsLocal, + fonts: this.fontsLocal, + opacity: this.currentOpacity, + colors: this.currentColors, + radii: this.currentRadii, }) }, updatePreviewColors() { From 7e2dd215e486b58099a1a69e8d60bcfd28143850 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Tue, 5 May 2026 14:49:49 +0300 Subject: [PATCH 13/16] fix user background upload fail + display them --- src/App.scss | 13 +++++++++++++ .../settings_modal/tabs/appearance_tab.js | 9 ++++++++- .../settings_modal/tabs/appearance_tab.vue | 17 +++++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/App.scss b/src/App.scss index b36e702d5..f556a7d9d 100644 --- a/src/App.scss +++ b/src/App.scss @@ -787,6 +787,19 @@ option { padding: 0 0.25em; border-radius: var(--roundness); border: 1px solid var(--border); + + &.-dismissible { + display: flex; + padding-left: 0.5em; + margin: 0; + align-items: baseline; + line-height: 2; + + span { + display: block; + flex: 1 0 auto; + } + } } .faint { diff --git a/src/components/settings_modal/tabs/appearance_tab.js b/src/components/settings_modal/tabs/appearance_tab.js index 99e267d8b..68d2b923a 100644 --- a/src/components/settings_modal/tabs/appearance_tab.js +++ b/src/components/settings_modal/tabs/appearance_tab.js @@ -67,6 +67,7 @@ const AppearanceTab = { })), backgroundUploading: false, background: null, + backgroundError: null, backgroundPreview: null, } }, @@ -474,6 +475,9 @@ const AppearanceTab = { resetUploadedBackground() { this.backgroundPreview = null }, + clearBackgroundError() { + this.backgroundError = null + }, submitBackground(background) { if (!this.backgroundPreview && background !== '') { return @@ -486,8 +490,11 @@ const AppearanceTab = { this.$store.commit('addNewUsers', [data]) this.$store.commit('setCurrentUser', data) this.backgroundPreview = null + this.backgroundError = null + }) + .catch((e) => { + this.backgroundError = e }) - .catch(this.displayUploadError) .finally(() => { this.backgroundUploading = false }) diff --git a/src/components/settings_modal/tabs/appearance_tab.vue b/src/components/settings_modal/tabs/appearance_tab.vue index a0439ed4a..2a58e1104 100644 --- a/src/components/settings_modal/tabs/appearance_tab.vue +++ b/src/components/settings_modal/tabs/appearance_tab.vue @@ -208,6 +208,23 @@ {{ $t('settings.reset') }} +
    + + {{ backgroundError }} + + +
diff --git a/src/components/user_card/user_card.js b/src/components/user_card/user_card.js index adc061f02..41b6d315d 100644 --- a/src/components/user_card/user_card.js +++ b/src/components/user_card/user_card.js @@ -114,6 +114,12 @@ export default { type: Boolean, default: false, }, + // Disable forced 3:1 aspect ratio + compact: { + required: false, + type: Boolean, + default: false, + } }, components: { DialogModal, diff --git a/src/components/user_card/user_card.scss b/src/components/user_card/user_card.scss index a821b4af1..93a9ed2e7 100644 --- a/src/components/user_card/user_card.scss +++ b/src/components/user_card/user_card.scss @@ -165,12 +165,15 @@ .user-identity { position: relative; - aspect-ratio: 3; min-height: 6em; display: flex; align-items: flex-end; container: user-card / inline-size; + &:not(.-compact) { + aspect-ratio: 3; + } + > * { min-width: 0; } diff --git a/src/components/user_card/user_card.vue b/src/components/user_card/user_card.vue index 053c09f0a..1120b86c3 100644 --- a/src/components/user_card/user_card.vue +++ b/src/components/user_card/user_card.vue @@ -2,7 +2,10 @@