enhance(frontend): アイコンのスクロール追従を無効化してパフォーマンス向上できるように

This commit is contained in:
syuilo 2025-03-29 20:56:59 +09:00
parent 1b776a7e7e
commit d9012740a1
8 changed files with 167 additions and 118 deletions

View File

@ -38,6 +38,7 @@
- Enhance: プラグインの管理が強化されました - Enhance: プラグインの管理が強化されました
- インストール/アンインストール/設定の変更時にリロード不要になりました - インストール/アンインストール/設定の変更時にリロード不要になりました
- Enhance: ログアウト時、ブラウザに保存されたWebクライアントのデータを全て消去するように - Enhance: ログアウト時、ブラウザに保存されたWebクライアントのデータを全て消去するように
- Enhance: アイコンのスクロール追従を無効化してパフォーマンス向上できるように
- Enhance: CWの注釈テキストが入力されていない場合, Postボタンを非アクティブに - Enhance: CWの注釈テキストが入力されていない場合, Postボタンを非アクティブに
- Enhance: CWを無効にした場合, 注釈テキストが最大入力文字数を超えていても投稿できるように - Enhance: CWを無効にした場合, 注釈テキストが最大入力文字数を超えていても投稿できるように
- Enhance: テーマ設定画面のデザインを改善 - Enhance: テーマ設定画面のデザインを改善

4
locales/index.d.ts vendored
View File

@ -5634,6 +5634,10 @@ export interface Locale extends ILocale {
* *
*/ */
"makeEveryTextElementsSelectable_description": string; "makeEveryTextElementsSelectable_description": string;
/**
*
*/
"useStickyIcons": string;
/** /**
* *
*/ */

View File

@ -1409,6 +1409,7 @@ _settings:
timelineAndNote: "タイムラインとノート" timelineAndNote: "タイムラインとノート"
makeEveryTextElementsSelectable: "全てのテキスト要素を選択可能にする" makeEveryTextElementsSelectable: "全てのテキスト要素を選択可能にする"
makeEveryTextElementsSelectable_description: "有効にすると、一部のシチュエーションでのユーザビリティが低下する場合があります。" makeEveryTextElementsSelectable_description: "有効にすると、一部のシチュエーションでのユーザビリティが低下する場合があります。"
useStickyIcons: "アイコンをスクロールに追従させる"
showNavbarSubButtons: "ナビゲーションバーに副ボタンを表示" showNavbarSubButtons: "ナビゲーションバーに副ボタンを表示"
ifOn: "オンのとき" ifOn: "オンのとき"
ifOff: "オフのとき" ifOff: "オフのとき"

View File

@ -45,7 +45,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div> </div>
<article v-else :class="$style.article" @contextmenu.stop="onContextmenu"> <article v-else :class="$style.article" @contextmenu.stop="onContextmenu">
<div v-if="appearNote.channel" :class="$style.colorBar" :style="{ background: appearNote.channel.color }"></div> <div v-if="appearNote.channel" :class="$style.colorBar" :style="{ background: appearNote.channel.color }"></div>
<MkAvatar :class="$style.avatar" :user="appearNote.user" :link="!mock" :preview="!mock"/> <MkAvatar :class="[$style.avatar, prefer.s.useStickyIcons ? $style.useSticky : null]" :user="appearNote.user" :link="!mock" :preview="!mock"/>
<div :class="$style.main"> <div :class="$style.main">
<MkNoteHeader :note="appearNote" :mini="true"/> <MkNoteHeader :note="appearNote" :mini="true"/>
<MkInstanceTicker v-if="showTicker" :host="appearNote.user.host" :instance="appearNote.user.instance"/> <MkInstanceTicker v-if="showTicker" :host="appearNote.user.host" :instance="appearNote.user.instance"/>
@ -850,10 +850,13 @@ function emitUpdReaction(emoji: string, delta: number) {
margin: 0 14px 0 0; margin: 0 14px 0 0;
width: 58px; width: 58px;
height: 58px; height: 58px;
&.useSticky {
position: sticky !important; position: sticky !important;
top: calc(22px + var(--MI-stickyTop, 0px)); top: calc(22px + var(--MI-stickyTop, 0px));
left: 0; left: 0;
} }
}
.main { .main {
flex: 1; flex: 1;
@ -1039,9 +1042,12 @@ function emitUpdReaction(emoji: string, delta: number) {
margin: 0 10px 0 0; margin: 0 10px 0 0;
width: 46px; width: 46px;
height: 46px; height: 46px;
&.useSticky {
top: calc(14px + var(--MI-stickyTop, 0px)); top: calc(14px + var(--MI-stickyTop, 0px));
} }
} }
}
@container (max-width: 400px) { @container (max-width: 400px) {
.root:not(.showActionsOnlyHover) { .root:not(.showActionsOnlyHover) {

View File

@ -13,6 +13,8 @@ import type { ComponentProps as CP } from 'vue-component-type-helpers';
import type { Form, GetFormResultType } from '@/utility/form.js'; import type { Form, GetFormResultType } from '@/utility/form.js';
import type { MenuItem } from '@/types/menu.js'; import type { MenuItem } from '@/types/menu.js';
import type { PostFormProps } from '@/types/post-form.js'; import type { PostFormProps } from '@/types/post-form.js';
import type MkRoleSelectDialog_TypeReferenceOnly from '@/components/MkRoleSelectDialog.vue';
import type MkEmojiPickerDialog_TypeReferenceOnly from '@/components/MkEmojiPickerDialog.vue';
import { misskeyApi } from '@/utility/misskey-api.js'; import { misskeyApi } from '@/utility/misskey-api.js';
import { prefer } from '@/preferences.js'; import { prefer } from '@/preferences.js';
import { i18n } from '@/i18n.js'; import { i18n } from '@/i18n.js';
@ -23,8 +25,6 @@ import MkToast from '@/components/MkToast.vue';
import MkDialog from '@/components/MkDialog.vue'; import MkDialog from '@/components/MkDialog.vue';
import MkPopupMenu from '@/components/MkPopupMenu.vue'; import MkPopupMenu from '@/components/MkPopupMenu.vue';
import MkContextMenu from '@/components/MkContextMenu.vue'; import MkContextMenu from '@/components/MkContextMenu.vue';
import type MkRoleSelectDialog_TypeReferenceOnly from '@/components/MkRoleSelectDialog.vue';
import type MkEmojiPickerDialog_TypeReferenceOnly from '@/components/MkEmojiPickerDialog.vue';
import { copyToClipboard } from '@/utility/copy-to-clipboard.js'; import { copyToClipboard } from '@/utility/copy-to-clipboard.js';
import { pleaseLogin } from '@/utility/please-login.js'; import { pleaseLogin } from '@/utility/please-login.js';
import { showMovedDialog } from '@/utility/show-moved-dialog.js'; import { showMovedDialog } from '@/utility/show-moved-dialog.js';

View File

@ -42,22 +42,6 @@ SPDX-License-Identifier: AGPL-3.0-only
</SearchMarker> </SearchMarker>
<div class="_gaps_s"> <div class="_gaps_s">
<SearchMarker :keywords="['blur']">
<MkPreferenceContainer k="useBlurEffect">
<MkSwitch v-model="useBlurEffect">
<template #label><SearchLabel>{{ i18n.ts.useBlurEffect }}</SearchLabel></template>
</MkSwitch>
</MkPreferenceContainer>
</SearchMarker>
<SearchMarker :keywords="['blur', 'modal']">
<MkPreferenceContainer k="useBlurEffectForModal">
<MkSwitch v-model="useBlurEffectForModal">
<template #label><SearchLabel>{{ i18n.ts.useBlurEffectForModal }}</SearchLabel></template>
</MkSwitch>
</MkPreferenceContainer>
</SearchMarker>
<SearchMarker :keywords="['avatar', 'icon', 'decoration', 'show']"> <SearchMarker :keywords="['avatar', 'icon', 'decoration', 'show']">
<MkPreferenceContainer k="showAvatarDecorations"> <MkPreferenceContainer k="showAvatarDecorations">
<MkSwitch v-model="showAvatarDecorations"> <MkSwitch v-model="showAvatarDecorations">
@ -395,40 +379,6 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkFolder> </MkFolder>
</SearchMarker> </SearchMarker>
<SearchMarker :keywords="['datasaver']">
<MkFolder>
<template #label><SearchLabel>{{ i18n.ts.dataSaver }}</SearchLabel></template>
<template #icon><i class="ti ti-antenna-bars-3"></i></template>
<div class="_gaps_m">
<MkInfo>{{ i18n.ts.reloadRequiredToApplySettings }}</MkInfo>
<div class="_buttons">
<MkButton inline @click="enableAllDataSaver">{{ i18n.ts.enableAll }}</MkButton>
<MkButton inline @click="disableAllDataSaver">{{ i18n.ts.disableAll }}</MkButton>
</div>
<div class="_gaps_m">
<MkSwitch v-model="dataSaver.media">
{{ i18n.ts._dataSaver._media.title }}
<template #caption>{{ i18n.ts._dataSaver._media.description }}</template>
</MkSwitch>
<MkSwitch v-model="dataSaver.avatar">
{{ i18n.ts._dataSaver._avatar.title }}
<template #caption>{{ i18n.ts._dataSaver._avatar.description }}</template>
</MkSwitch>
<MkSwitch v-model="dataSaver.urlPreview">
{{ i18n.ts._dataSaver._urlPreview.title }}
<template #caption>{{ i18n.ts._dataSaver._urlPreview.description }}</template>
</MkSwitch>
<MkSwitch v-model="dataSaver.code">
{{ i18n.ts._dataSaver._code.title }}
<template #caption>{{ i18n.ts._dataSaver._code.description }}</template>
</MkSwitch>
</div>
</div>
</MkFolder>
</SearchMarker>
<SearchMarker :keywords="['chat', 'messaging']"> <SearchMarker :keywords="['chat', 'messaging']">
<MkFolder> <MkFolder>
<template #label><SearchLabel>{{ i18n.ts.chat }}</SearchLabel></template> <template #label><SearchLabel>{{ i18n.ts.chat }}</SearchLabel></template>
@ -468,6 +418,76 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkFolder> </MkFolder>
</SearchMarker> </SearchMarker>
<SearchMarker :keywords="['performance']">
<MkFolder>
<template #label><SearchLabel>{{ i18n.ts.performance }}</SearchLabel></template>
<template #icon><i class="ti ti-battery-vertical-eco"></i></template>
<div class="_gaps_s">
<SearchMarker :keywords="['blur']">
<MkPreferenceContainer k="useBlurEffect">
<MkSwitch v-model="useBlurEffect">
<template #label><SearchLabel>{{ i18n.ts.useBlurEffect }}</SearchLabel></template>
<template #caption><SearchLabel>{{ i18n.ts.turnOffToImprovePerformance }}</SearchLabel></template>
</MkSwitch>
</MkPreferenceContainer>
</SearchMarker>
<SearchMarker :keywords="['blur', 'modal']">
<MkPreferenceContainer k="useBlurEffectForModal">
<MkSwitch v-model="useBlurEffectForModal">
<template #label><SearchLabel>{{ i18n.ts.useBlurEffectForModal }}</SearchLabel></template>
<template #caption><SearchLabel>{{ i18n.ts.turnOffToImprovePerformance }}</SearchLabel></template>
</MkSwitch>
</MkPreferenceContainer>
</SearchMarker>
<SearchMarker :keywords="['sticky']">
<MkPreferenceContainer k="useStickyIcons">
<MkSwitch v-model="useStickyIcons">
<template #label><SearchLabel>{{ i18n.ts._settings.useStickyIcons }}</SearchLabel></template>
<template #caption><SearchLabel>{{ i18n.ts.turnOffToImprovePerformance }}</SearchLabel></template>
</MkSwitch>
</MkPreferenceContainer>
</SearchMarker>
</div>
</MkFolder>
</SearchMarker>
<SearchMarker :keywords="['datasaver']">
<MkFolder>
<template #label><SearchLabel>{{ i18n.ts.dataSaver }}</SearchLabel></template>
<template #icon><i class="ti ti-antenna-bars-3"></i></template>
<div class="_gaps_m">
<MkInfo>{{ i18n.ts.reloadRequiredToApplySettings }}</MkInfo>
<div class="_buttons">
<MkButton inline @click="enableAllDataSaver">{{ i18n.ts.enableAll }}</MkButton>
<MkButton inline @click="disableAllDataSaver">{{ i18n.ts.disableAll }}</MkButton>
</div>
<div class="_gaps_m">
<MkSwitch v-model="dataSaver.media">
{{ i18n.ts._dataSaver._media.title }}
<template #caption>{{ i18n.ts._dataSaver._media.description }}</template>
</MkSwitch>
<MkSwitch v-model="dataSaver.avatar">
{{ i18n.ts._dataSaver._avatar.title }}
<template #caption>{{ i18n.ts._dataSaver._avatar.description }}</template>
</MkSwitch>
<MkSwitch v-model="dataSaver.urlPreview">
{{ i18n.ts._dataSaver._urlPreview.title }}
<template #caption>{{ i18n.ts._dataSaver._urlPreview.description }}</template>
</MkSwitch>
<MkSwitch v-model="dataSaver.code">
{{ i18n.ts._dataSaver._code.title }}
<template #caption>{{ i18n.ts._dataSaver._code.description }}</template>
</MkSwitch>
</div>
</div>
</MkFolder>
</SearchMarker>
<SearchMarker :keywords="['other']"> <SearchMarker :keywords="['other']">
<MkFolder> <MkFolder>
<template #label><SearchLabel>{{ i18n.ts.other }}</SearchLabel></template> <template #label><SearchLabel>{{ i18n.ts.other }}</SearchLabel></template>
@ -650,6 +670,7 @@ const useBlurEffect = prefer.model('useBlurEffect');
const defaultFollowWithReplies = prefer.model('defaultFollowWithReplies'); const defaultFollowWithReplies = prefer.model('defaultFollowWithReplies');
const chatShowSenderName = prefer.model('chat.showSenderName'); const chatShowSenderName = prefer.model('chat.showSenderName');
const chatSendOnEnter = prefer.model('chat.sendOnEnter'); const chatSendOnEnter = prefer.model('chat.sendOnEnter');
const useStickyIcons = prefer.model('useStickyIcons');
watch(lang, () => { watch(lang, () => {
miLocalStorage.setItem('lang', lang.value as string); miLocalStorage.setItem('lang', lang.value as string);
@ -678,6 +699,7 @@ watch([
highlightSensitiveMedia, highlightSensitiveMedia,
enableSeasonalScreenEffect, enableSeasonalScreenEffect,
chatShowSenderName, chatShowSenderName,
useStickyIcons,
], async () => { ], async () => {
await reloadAsk({ reason: i18n.ts.reloadToApplySetting, unison: true }); await reloadAsk({ reason: i18n.ts.reloadToApplySetting, unison: true });
}); });

View File

@ -198,6 +198,9 @@ export const PREF_DEF = {
useBlurEffect: { useBlurEffect: {
default: DEFAULT_DEVICE_KIND === 'desktop', default: DEFAULT_DEVICE_KIND === 'desktop',
}, },
useStickyIcons: {
default: true,
},
showFixedPostForm: { showFixedPostForm: {
default: false, default: false,
}, },

View File

@ -290,51 +290,41 @@ export const searchIndexes: SearchIndexItem[] = [
}, },
{ {
id: 'lfI3yMX9g', id: 'lfI3yMX9g',
label: i18n.ts.useBlurEffect,
keywords: ['blur'],
},
{
id: '31Y4IcGEf',
label: i18n.ts.useBlurEffectForModal,
keywords: ['blur', 'modal'],
},
{
id: '78q2asrLS',
label: i18n.ts.showAvatarDecorations, label: i18n.ts.showAvatarDecorations,
keywords: ['avatar', 'icon', 'decoration', 'show'], keywords: ['avatar', 'icon', 'decoration', 'show'],
}, },
{ {
id: 'zydOfGYip', id: '31Y4IcGEf',
label: i18n.ts.alwaysConfirmFollow, label: i18n.ts.alwaysConfirmFollow,
keywords: ['follow', 'confirm', 'always'], keywords: ['follow', 'confirm', 'always'],
}, },
{ {
id: 'wqpOC22Zm', id: '78q2asrLS',
label: i18n.ts.highlightSensitiveMedia, label: i18n.ts.highlightSensitiveMedia,
keywords: ['highlight', 'sensitive', 'nsfw', 'image', 'photo', 'picture', 'media', 'thumbnail'], keywords: ['highlight', 'sensitive', 'nsfw', 'image', 'photo', 'picture', 'media', 'thumbnail'],
}, },
{ {
id: 'c98gbF9c6', id: 'zydOfGYip',
label: i18n.ts.confirmWhenRevealingSensitiveMedia, label: i18n.ts.confirmWhenRevealingSensitiveMedia,
keywords: ['sensitive', 'nsfw', 'media', 'image', 'photo', 'picture', 'attachment', 'confirm'], keywords: ['sensitive', 'nsfw', 'media', 'image', 'photo', 'picture', 'attachment', 'confirm'],
}, },
{ {
id: '4LxdiOMNh', id: 'wqpOC22Zm',
label: i18n.ts.enableAdvancedMfm, label: i18n.ts.enableAdvancedMfm,
keywords: ['mfm', 'enable', 'show', 'advanced'], keywords: ['mfm', 'enable', 'show', 'advanced'],
}, },
{ {
id: '9gTCaLkIf', id: 'c98gbF9c6',
label: i18n.ts.enableInfiniteScroll, label: i18n.ts.enableInfiniteScroll,
keywords: ['auto', 'load', 'auto', 'more', 'scroll'], keywords: ['auto', 'load', 'auto', 'more', 'scroll'],
}, },
{ {
id: 'jmJT0twuJ', id: '6ANRSOaNg',
label: i18n.ts.emojiStyle, label: i18n.ts.emojiStyle,
keywords: ['emoji', 'style', 'native', 'system', 'fluent', 'twemoji'], keywords: ['emoji', 'style', 'native', 'system', 'fluent', 'twemoji'],
}, },
{ {
id: 'igFN7RIUa', id: 'wo0s0CaI1',
label: i18n.ts.pinnedList, label: i18n.ts.pinnedList,
keywords: ['pinned', 'list'], keywords: ['pinned', 'list'],
}, },
@ -343,85 +333,85 @@ export const searchIndexes: SearchIndexItem[] = [
keywords: ['general'], keywords: ['general'],
}, },
{ {
id: 'ufc2X9voy', id: 'l78F2W9Ok',
children: [ children: [
{ {
id: 'd2H4E5ys6', id: 'iOJ3Crlky',
label: i18n.ts.showFixedPostForm, label: i18n.ts.showFixedPostForm,
keywords: ['post', 'form', 'timeline'], keywords: ['post', 'form', 'timeline'],
}, },
{ {
id: '1LHOhDKGW', id: 'CQldliCSi',
label: i18n.ts.showFixedPostFormInChannel, label: i18n.ts.showFixedPostFormInChannel,
keywords: ['post', 'form', 'timeline', 'channel'], keywords: ['post', 'form', 'timeline', 'channel'],
}, },
{ {
id: 'DSzwvTp7i', id: 'd2H4E5ys6',
label: i18n.ts.collapseRenotes, label: i18n.ts.collapseRenotes,
keywords: ['renote', i18n.ts.collapseRenotesDescription], keywords: ['renote', i18n.ts.collapseRenotesDescription],
}, },
{ {
id: 'jb3HUeyrx', id: 'yb11lSY1G',
label: i18n.ts.showGapBetweenNotesInTimeline, label: i18n.ts.showGapBetweenNotesInTimeline,
keywords: ['note', 'timeline', 'gap'], keywords: ['note', 'timeline', 'gap'],
}, },
{ {
id: '2LNjwv1cr', id: 'fL49Zxe9i',
label: i18n.ts.disableStreamingTimeline, label: i18n.ts.disableStreamingTimeline,
keywords: ['disable', 'streaming', 'timeline'], keywords: ['disable', 'streaming', 'timeline'],
}, },
{ {
id: '7W6g8Dcqz', id: 'ykifk3NHS',
label: i18n.ts.showNoteActionsOnlyHover, label: i18n.ts.showNoteActionsOnlyHover,
keywords: ['hover', 'show', 'footer', 'action'], keywords: ['hover', 'show', 'footer', 'action'],
}, },
{ {
id: 'uAOoH3LFF', id: 'tLGyaQagB',
label: i18n.ts.showClipButtonInNoteFooter, label: i18n.ts.showClipButtonInNoteFooter,
keywords: ['footer', 'action', 'clip', 'show'], keywords: ['footer', 'action', 'clip', 'show'],
}, },
{ {
id: 'eCiyZLC8n', id: '7W6g8Dcqz',
label: i18n.ts.showReactionsCount, label: i18n.ts.showReactionsCount,
keywords: ['reaction', 'count', 'show'], keywords: ['reaction', 'count', 'show'],
}, },
{ {
id: '68u9uRmFP', id: 'uAOoH3LFF',
label: i18n.ts.confirmOnReact, label: i18n.ts.confirmOnReact,
keywords: ['reaction', 'confirm'], keywords: ['reaction', 'confirm'],
}, },
{ {
id: 'rHWm4sXIe', id: 'eCiyZLC8n',
label: i18n.ts.loadRawImages, label: i18n.ts.loadRawImages,
keywords: ['image', 'photo', 'picture', 'media', 'thumbnail', 'quality', 'raw', 'attachment'], keywords: ['image', 'photo', 'picture', 'media', 'thumbnail', 'quality', 'raw', 'attachment'],
}, },
{ {
id: '9L2XGJw7e', id: '68u9uRmFP',
label: i18n.ts.useReactionPickerForContextMenu, label: i18n.ts.useReactionPickerForContextMenu,
keywords: ['reaction', 'picker', 'contextmenu', 'open'], keywords: ['reaction', 'picker', 'contextmenu', 'open'],
}, },
{ {
id: 'uIMCIK7kG', id: 'yxehrHZ6x',
label: i18n.ts.reactionsDisplaySize, label: i18n.ts.reactionsDisplaySize,
keywords: ['reaction', 'size', 'scale', 'display'], keywords: ['reaction', 'size', 'scale', 'display'],
}, },
{ {
id: 'uMckjO9bz', id: 'gi8ILaE2Z',
label: i18n.ts.limitWidthOfReaction, label: i18n.ts.limitWidthOfReaction,
keywords: ['reaction', 'size', 'scale', 'display', 'width', 'limit'], keywords: ['reaction', 'size', 'scale', 'display', 'width', 'limit'],
}, },
{ {
id: 'yeghU4qiH', id: 'cEQJZ7DQG',
label: i18n.ts.mediaListWithOneImageAppearance, label: i18n.ts.mediaListWithOneImageAppearance,
keywords: ['attachment', 'image', 'photo', 'picture', 'media', 'thumbnail', 'list', 'size', 'height'], keywords: ['attachment', 'image', 'photo', 'picture', 'media', 'thumbnail', 'list', 'size', 'height'],
}, },
{ {
id: 'yYSOPoAKE', id: 'haX4QVulD',
label: i18n.ts.instanceTicker, label: i18n.ts.instanceTicker,
keywords: ['ticker', 'information', 'label', 'instance', 'server', 'host', 'federation'], keywords: ['ticker', 'information', 'label', 'instance', 'server', 'host', 'federation'],
}, },
{ {
id: 'iOHiIu32L', id: 'pneYnQekL',
label: i18n.ts.displayOfSensitiveMedia, label: i18n.ts.displayOfSensitiveMedia,
keywords: ['attachment', 'image', 'photo', 'picture', 'media', 'thumbnail', 'nsfw', 'sensitive', 'display', 'show', 'hide', 'visibility'], keywords: ['attachment', 'image', 'photo', 'picture', 'media', 'thumbnail', 'nsfw', 'sensitive', 'display', 'show', 'hide', 'visibility'],
}, },
@ -430,25 +420,25 @@ export const searchIndexes: SearchIndexItem[] = [
keywords: ['timeline', 'note'], keywords: ['timeline', 'note'],
}, },
{ {
id: 'eROFRMtXv', id: 'eJ2jme16W',
children: [ children: [
{ {
id: 'BaQfrVO82', id: 'ErMQr6LQk',
label: i18n.ts.keepCw, label: i18n.ts.keepCw,
keywords: ['remember', 'keep', 'note', 'cw'], keywords: ['remember', 'keep', 'note', 'cw'],
}, },
{ {
id: 'vFerPo2he', id: 'zrJicawH9',
label: i18n.ts.rememberNoteVisibility, label: i18n.ts.rememberNoteVisibility,
keywords: ['remember', 'keep', 'note', 'visibility'], keywords: ['remember', 'keep', 'note', 'visibility'],
}, },
{ {
id: 'dcAC0yJcH', id: 'BaQfrVO82',
label: i18n.ts.enableQuickAddMfmFunction, label: i18n.ts.enableQuickAddMfmFunction,
keywords: ['mfm', 'enable', 'show', 'advanced', 'picker', 'form', 'function', 'fn'], keywords: ['mfm', 'enable', 'show', 'advanced', 'picker', 'form', 'function', 'fn'],
}, },
{ {
id: 'bECeWZVMb', id: 'C2WYcVM1d',
label: i18n.ts.defaultNoteVisibility, label: i18n.ts.defaultNoteVisibility,
keywords: ['default', 'note', 'visibility'], keywords: ['default', 'note', 'visibility'],
}, },
@ -457,20 +447,20 @@ export const searchIndexes: SearchIndexItem[] = [
keywords: ['post', 'form'], keywords: ['post', 'form'],
}, },
{ {
id: 'tsSP93Cc6', id: 'sQXSA6gik',
children: [ children: [
{ {
id: 'dtw8FepYL', id: 'rICn8stqk',
label: i18n.ts.useGroupedNotifications, label: i18n.ts.useGroupedNotifications,
keywords: ['group'], keywords: ['group'],
}, },
{ {
id: 'eb0yCYJTn', id: 'xFmAg2tDe',
label: i18n.ts.position, label: i18n.ts.position,
keywords: ['position'], keywords: ['position'],
}, },
{ {
id: '1Spt4Gpr5', id: 'Ek4Cw3VPq',
label: i18n.ts.stackAxis, label: i18n.ts.stackAxis,
keywords: ['stack', 'axis', 'direction'], keywords: ['stack', 'axis', 'direction'],
}, },
@ -479,20 +469,15 @@ export const searchIndexes: SearchIndexItem[] = [
keywords: ['notification'], keywords: ['notification'],
}, },
{ {
id: 'SYmWxGOF', id: 'gDVCqZfxm',
label: i18n.ts.dataSaver,
keywords: ['datasaver'],
},
{
id: 'vPQPvmntL',
children: [ children: [
{ {
id: 'zZxyXHk3A', id: 'ei8Ix3s4S',
label: i18n.ts._settings._chat.showSenderName, label: i18n.ts._settings._chat.showSenderName,
keywords: ['show', 'sender', 'name'], keywords: ['show', 'sender', 'name'],
}, },
{ {
id: 'omEy5Q3Ev', id: '2E7vdIUQd',
label: i18n.ts._settings._chat.sendOnEnter, label: i18n.ts._settings._chat.sendOnEnter,
keywords: ['send', 'enter', 'newline'], keywords: ['send', 'enter', 'newline'],
}, },
@ -501,50 +486,77 @@ export const searchIndexes: SearchIndexItem[] = [
keywords: ['chat', 'messaging'], keywords: ['chat', 'messaging'],
}, },
{ {
id: '5fy7VEy6i', id: '96LnS1sxB',
children: [ children: [
{ {
id: 'EosiWZvak', id: '5h8vhCX1S',
label: i18n.ts.turnOffToImprovePerformance,
keywords: ['blur'],
},
{
id: 'Cbjosj3TG',
label: i18n.ts.turnOffToImprovePerformance,
keywords: ['blur', 'modal'],
},
{
id: 'BKndoHcCj',
label: i18n.ts.turnOffToImprovePerformance,
keywords: ['sticky'],
},
],
label: i18n.ts.performance,
keywords: ['performance'],
},
{
id: '4yCgcFElF',
label: i18n.ts.dataSaver,
keywords: ['datasaver'],
},
{
id: 'DILm2LlCn',
children: [
{
id: 'Fd0rFTSry',
label: i18n.ts.squareAvatars, label: i18n.ts.squareAvatars,
keywords: ['avatar', 'icon', 'square'], keywords: ['avatar', 'icon', 'square'],
}, },
{ {
id: 'qY5xTzl35', id: 'xNsLokqeA',
label: i18n.ts.seasonalScreenEffect, label: i18n.ts.seasonalScreenEffect,
keywords: ['effect', 'show'], keywords: ['effect', 'show'],
}, },
{ {
id: '2VSnj81vC', id: 'sZcalFBE8',
label: i18n.ts.openImageInNewTab, label: i18n.ts.openImageInNewTab,
keywords: ['image', 'photo', 'picture', 'media', 'thumbnail', 'new', 'tab'], keywords: ['image', 'photo', 'picture', 'media', 'thumbnail', 'new', 'tab'],
}, },
{ {
id: 'hdQa7W2H1', id: 'Eh7vTluDO',
label: i18n.ts.withRepliesByDefaultForNewlyFollowed, label: i18n.ts.withRepliesByDefaultForNewlyFollowed,
keywords: ['follow', 'replies'], keywords: ['follow', 'replies'],
}, },
{ {
id: 'nnj4DkjhP', id: 'vTRSKf1JA',
label: i18n.ts.whenServerDisconnected, label: i18n.ts.whenServerDisconnected,
keywords: ['server', 'disconnect', 'reconnect', 'reload', 'streaming'], keywords: ['server', 'disconnect', 'reconnect', 'reload', 'streaming'],
}, },
{ {
id: 'Eh7vTluDO', id: 'zlO5cBZFH',
label: i18n.ts.numberOfPageCache, label: i18n.ts.numberOfPageCache,
keywords: ['cache', 'page'], keywords: ['cache', 'page'],
}, },
{ {
id: 'vTRSKf1JA', id: 'huQ8nc4iD',
label: i18n.ts.forceShowAds, label: i18n.ts.forceShowAds,
keywords: ['ad', 'show'], keywords: ['ad', 'show'],
}, },
{ {
id: 'dwhQfcLGt', id: 'nJWfqwQ4R',
label: i18n.ts.hemisphere, label: i18n.ts.hemisphere,
keywords: [], keywords: [],
}, },
{ {
id: 'Ar1lj7f7U', id: 'kwEEgTlwR',
label: i18n.ts.additionalEmojiDictionary, label: i18n.ts.additionalEmojiDictionary,
keywords: ['emoji', 'dictionary', 'additional', 'extra'], keywords: ['emoji', 'dictionary', 'additional', 'extra'],
}, },