From 00bc24be7c45bf8a8daee7d0874d7d9b802c15b2 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Mon, 1 Jun 2026 19:43:35 +0300 Subject: [PATCH 1/8] default webp compression to false since there's so much complaints about it --- src/modules/default_config_state.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/default_config_state.js b/src/modules/default_config_state.js index 208dc548b..233e15ca1 100644 --- a/src/modules/default_config_state.js +++ b/src/modules/default_config_state.js @@ -631,7 +631,7 @@ export const LOCAL_DEFAULT_CONFIG_DEFINITIONS = { }, imageCompression: { description: 'Image compression (WebP/JPEG)', - default: true, + default: false, }, alwaysUseJpeg: { description: 'Compress images using JPEG only', From 63bbe79b2d97a5f1cfe6c085ef10ef1988595054 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Mon, 1 Jun 2026 19:46:53 +0300 Subject: [PATCH 2/8] use milder scrollbar color --- src/App.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/App.scss b/src/App.scss index 41fea782b..56fef9d11 100644 --- a/src/App.scss +++ b/src/App.scss @@ -50,7 +50,7 @@ body { // have a cursor/pointer to operate them @media (any-pointer: fine) { * { - scrollbar-color: var(--text) transparent; + scrollbar-color: var(--icon) transparent; &::-webkit-scrollbar { background: transparent; @@ -130,7 +130,7 @@ body { } // Body should have background to scrollbar otherwise it will use white (body color?) html { - scrollbar-color: var(--text) var(--wallpaper); + scrollbar-color: var(--icon) var(--wallpaper); background: var(--wallpaper); } } From b9121d9e364d61a4b1f50660866db11984100ba3 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Mon, 1 Jun 2026 19:54:12 +0300 Subject: [PATCH 3/8] remove extraneous emoji size override --- src/components/status_body/status_body.scss | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/components/status_body/status_body.scss b/src/components/status_body/status_body.scss index a8a7d662a..ff35bde58 100644 --- a/src/components/status_body/status_body.scss +++ b/src/components/status_body/status_body.scss @@ -138,8 +138,6 @@ align-items: start; flex-direction: row; - --emoji-size: calc(var(--emojiSize, 32px) / 2); - & .body, & .attachments { max-height: 3.25em; From ad4d178199f92eeee3929be10243bcd68140b6c0 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Mon, 1 Jun 2026 20:00:06 +0300 Subject: [PATCH 4/8] admin settings styles --- .../settings_modal/helpers/vertical_tab_switcher.scss | 1 + src/components/settings_modal/settings_modal.scss | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/components/settings_modal/helpers/vertical_tab_switcher.scss b/src/components/settings_modal/helpers/vertical_tab_switcher.scss index f98d2d78f..67da9305b 100644 --- a/src/components/settings_modal/helpers/vertical_tab_switcher.scss +++ b/src/components/settings_modal/helpers/vertical_tab_switcher.scss @@ -41,6 +41,7 @@ .tab-slot-wrapper { flex: 1 1 auto; height: 100%; + padding: 0 1em; overflow-y: auto; display: grid; grid-template-columns: minmax(1em, 1fr) minmax(min-content, 45em) minmax(1em, 1fr); diff --git a/src/components/settings_modal/settings_modal.scss b/src/components/settings_modal/settings_modal.scss index 313ed71b0..7d6e17244 100644 --- a/src/components/settings_modal/settings_modal.scss +++ b/src/components/settings_modal/settings_modal.scss @@ -38,6 +38,7 @@ p { line-height: 1.5; + margin-left: 2em; } .sidenote { @@ -49,6 +50,7 @@ .setting-description { margin-top: 0.2em; margin-bottom: 0; + margin-left: 0; font-size: 80%; } From caa49744b21b52e2ccaac4fcda9e668634b54819 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Mon, 1 Jun 2026 20:05:25 +0300 Subject: [PATCH 5/8] lint --- .../settings_modal/admin_tabs/emoji_tab.js | 31 ++++++++++--------- .../status_action_buttons/action_button.js | 2 +- .../still-image/still-image-emoji-popover.js | 16 +++++----- .../user_list_popover/user_list_popover.js | 4 +-- src/stores/emoji.js | 28 ++++++++--------- 5 files changed, 42 insertions(+), 39 deletions(-) diff --git a/src/components/settings_modal/admin_tabs/emoji_tab.js b/src/components/settings_modal/admin_tabs/emoji_tab.js index 6afd0be5c..78f71934b 100644 --- a/src/components/settings_modal/admin_tabs/emoji_tab.js +++ b/src/components/settings_modal/admin_tabs/emoji_tab.js @@ -11,8 +11,8 @@ import ModifiedIndicator from '../helpers/modified_indicator.vue' import SharedComputedObject from '../helpers/shared_computed_object.js' import StringSetting from '../helpers/string_setting.vue' -import { useInstanceStore } from 'src/stores/instance.js' import { useEmojiStore } from 'src/stores/emoji.js' +import { useInstanceStore } from 'src/stores/instance.js' import { useInterfaceStore } from 'src/stores/interface.js' import { library } from '@fortawesome/fontawesome-svg-core' @@ -176,21 +176,24 @@ const EmojiTab = { }, refreshPackList() { - useEmojiStore().getAdminPacks( - this.remotePackInstance, - this.$store.state.api.backendInteractor.listEmojiPacks, - ).then((allPacks) => { - this.knownLocalPacks = allPacks - for (const name of Object.keys(this.knownLocalPacks)) { - this.sortPackFiles(name) - } - }) + useEmojiStore() + .getAdminPacks( + this.remotePackInstance, + this.$store.state.api.backendInteractor.listEmojiPacks, + ) + .then((allPacks) => { + this.knownLocalPacks = allPacks + for (const name of Object.keys(this.knownLocalPacks)) { + this.sortPackFiles(name) + } + }) }, listRemotePacks() { - useEmojiStore().getAdminPacks( - this.remotePackInstance, - this.$store.state.api.backendInteractor.listRemoteEmojiPacks, - ) + useEmojiStore() + .getAdminPacks( + this.remotePackInstance, + this.$store.state.api.backendInteractor.listRemoteEmojiPacks, + ) .then((allPacks) => { let inst = this.remotePackInstance if (!inst.startsWith('http')) { diff --git a/src/components/status_action_buttons/action_button.js b/src/components/status_action_buttons/action_button.js index 73eab7d90..7abce5420 100644 --- a/src/components/status_action_buttons/action_button.js +++ b/src/components/status_action_buttons/action_button.js @@ -14,8 +14,8 @@ import { import { faBookmark, faCheck, - faChevronRight, faChevronDown, + faChevronRight, faExternalLinkAlt, faEyeSlash, faHistory, diff --git a/src/components/still-image/still-image-emoji-popover.js b/src/components/still-image/still-image-emoji-popover.js index 74d6a002f..979a67b1e 100644 --- a/src/components/still-image/still-image-emoji-popover.js +++ b/src/components/still-image/still-image-emoji-popover.js @@ -1,11 +1,11 @@ import Popover from 'components/popover/popover.vue' import SelectComponent from 'components/select/select.vue' - -import StillImage from './still-image.vue' import { mapState } from 'pinia' -import { useInterfaceStore } from 'src/stores/interface' +import StillImage from './still-image.vue' + import { useEmojiStore } from 'src/stores/emoji' +import { useInterfaceStore } from 'src/stores/interface' export default { components: { StillImage, Popover, SelectComponent }, @@ -28,7 +28,7 @@ export default { isUserAdmin() { return this.$store.state.users.currentUser?.rights.admin }, - ...mapState(useEmojiStore, ['adminPacksLocal', 'adminPacksLocalLoading']) + ...mapState(useEmojiStore, ['adminPacksLocal', 'adminPacksLocalLoading']), }, methods: { displayError(msg) { @@ -64,9 +64,11 @@ export default { }, fetchEmojiPacksIfAdmin() { - useEmojiStore().getAdminPacksLocal().then(() => { - this.$refs.emojiPopover.updateStyles() - }) + useEmojiStore() + .getAdminPacksLocal() + .then(() => { + this.$refs.emojiPopover.updateStyles() + }) }, }, } diff --git a/src/components/user_list_popover/user_list_popover.js b/src/components/user_list_popover/user_list_popover.js index 440fe7694..3d15f3ed4 100644 --- a/src/components/user_list_popover/user_list_popover.js +++ b/src/components/user_list_popover/user_list_popover.js @@ -3,8 +3,8 @@ import { defineAsyncComponent } from 'vue' import RichContent from 'src/components/rich_content/rich_content.jsx' import UnicodeDomainIndicator from '../unicode_domain_indicator/unicode_domain_indicator.vue' -import { useMergedConfigStore } from 'src/stores/merged_config.js' import { useInstanceStore } from 'src/stores/instance.js' +import { useMergedConfigStore } from 'src/stores/merged_config.js' import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator' @@ -40,7 +40,7 @@ const UserListPopover = { useInstanceStore().restrictedNicknames, ) }, - } + }, } export default UserListPopover diff --git a/src/stores/emoji.js b/src/stores/emoji.js index b7f8262a6..e28143300 100644 --- a/src/stores/emoji.js +++ b/src/stores/emoji.js @@ -1,6 +1,6 @@ +import { merge } from 'lodash' import { defineStore } from 'pinia' -import { merge } from 'lodash' import { useInstanceStore } from 'src/stores/instance.js' import { ensureFinalFallback } from 'src/i18n/languages.js' @@ -187,7 +187,10 @@ export const useEmojiStore = defineStore('emoji', { const listFunction = backendInteractor.listEmojiPacks this.adminPacksLocalLoading = true - this.adminPacksLocal = await this.getAdminPacks(useInstanceStore().server, listFunction) + this.adminPacksLocal = await this.getAdminPacks( + useInstanceStore().server, + listFunction, + ) this.adminPacksLocalLoading = false }, @@ -197,8 +200,6 @@ export const useEmojiStore = defineStore('emoji', { if (!currentUser.rights.admin) return const pageSize = 25 - const allPacks = {} - return await listFunction({ instance, @@ -222,25 +223,22 @@ export const useEmojiStore = defineStore('emoji', { }) .then((data) => data.json()) .then((pageData) => { - if (pageData.error !== undefined) { - return Promise.reject(pageData.error) - } + if (pageData.error !== undefined) { + return Promise.reject(pageData.error) + } return pageData.packs - }) + }), ) } - return Promise - .all(promises) - .then((results) => { - return merge({}, ...results) - }) + return Promise.all(promises).then((results) => { + return merge({}, ...results) + }) }) .then((allPacks) => { // Sort by key - return Object - .keys(allPacks) + return Object.keys(allPacks) .sort() .reduce((acc, key) => { if (key.length === 0) return acc From 4f3c20f38851daf56d3c9a655ea37fa68df6d8b3 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Mon, 1 Jun 2026 20:12:40 +0300 Subject: [PATCH 6/8] lint --- src/components/status/status.vue | 5 ++++- src/components/status_action_buttons/action_button.vue | 3 +-- src/components/user_list_popover/user_list_popover.vue | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/components/status/status.vue b/src/components/status/status.vue index a9312c8e6..5cd2de3ab 100644 --- a/src/components/status/status.vue +++ b/src/components/status/status.vue @@ -169,7 +169,10 @@ - + diff --git a/src/components/user_list_popover/user_list_popover.vue b/src/components/user_list_popover/user_list_popover.vue index 4e4ea41a5..02fa5a2d2 100644 --- a/src/components/user_list_popover/user_list_popover.vue +++ b/src/components/user_list_popover/user_list_popover.vue @@ -12,8 +12,8 @@ diff --git a/src/components/status_action_buttons/action_button_container.js b/src/components/status_action_buttons/action_button_container.js index 0f236b0a9..a5a070dde 100644 --- a/src/components/status_action_buttons/action_button_container.js +++ b/src/components/status_action_buttons/action_button_container.js @@ -20,6 +20,7 @@ export default { UserTimedFilterModal, }, props: ['button', 'status'], + emits: ['emojiPickerShown'], mounted() { if (this.button.name === 'mute') { this.$store.dispatch('fetchDomainMutes') diff --git a/src/components/status_action_buttons/action_button_container.vue b/src/components/status_action_buttons/action_button_container.vue index 9c4e84c00..348b158a7 100644 --- a/src/components/status_action_buttons/action_button_container.vue +++ b/src/components/status_action_buttons/action_button_container.vue @@ -79,6 +79,7 @@ :button="button" :status="status" v-bind="$attrs" + @emojiPickerShown="e => $emit('emojiPickerShown', e)" /> true, - active: () => false, + active: ({ emojiPickerShown }) => emojiPickerShown, toggleable: true, anonLink: true, }, diff --git a/src/components/status_action_buttons/status_action_buttons.js b/src/components/status_action_buttons/status_action_buttons.js index 8bdd87277..05809bbe9 100644 --- a/src/components/status_action_buttons/status_action_buttons.js +++ b/src/components/status_action_buttons/status_action_buttons.js @@ -28,6 +28,7 @@ const StatusActionButtons = { /* no-op */ }, randomSeed: genRandomSeed(), + emojiPickerShown: false, } }, components: { @@ -56,6 +57,7 @@ const StatusActionButtons = { return { status: this.status, replying: this.replying, + emojiPickerShown: this.emojiPickerShown, emit: this.$emit, dispatch: this.$store.dispatch, state: this.$store.state, @@ -107,6 +109,9 @@ const StatusActionButtons = { onExtraClose() { this.showPin = false }, + onEmojiPickerShown(state) { + this.emojiPickerShown = state + }, isPinned(button) { return this.pinnedItems.has(button.name) }, diff --git a/src/components/status_action_buttons/status_action_buttons.vue b/src/components/status_action_buttons/status_action_buttons.vue index 3837e6ae5..7017a8cf0 100644 --- a/src/components/status_action_buttons/status_action_buttons.vue +++ b/src/components/status_action_buttons/status_action_buttons.vue @@ -20,6 +20,7 @@ :get-component="getComponent" :close="() => { /* no-op */ }" :do-action="doAction" + @emojiPickerShown="onEmojiPickerShown" />