From 2f5c51c1ca5e9726a590211416796a772beb9511 Mon Sep 17 00:00:00 2001 From: ShittyKopper <shittykopper@w.on-t.work> Date: Mon, 27 Nov 2023 22:12:20 +0300 Subject: [PATCH 1/6] fix: don't load text of empty draft this fixes a small ux quirk where blanking a reply and cancelling it results in an empty reply next time you try to reply to that note, accidentally un-tagging everyone --- packages/frontend/src/components/MkPostForm.vue | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/frontend/src/components/MkPostForm.vue b/packages/frontend/src/components/MkPostForm.vue index c9784fc40f..a209128d55 100644 --- a/packages/frontend/src/components/MkPostForm.vue +++ b/packages/frontend/src/components/MkPostForm.vue @@ -923,12 +923,19 @@ onMounted(() => { if (!props.instant && !props.mention && !props.specified && !props.mock) { const draft = JSON.parse(miLocalStorage.getItem('drafts') ?? '{}')[draftKey.value]; if (draft) { - text.value = draft.data.text; + if (typeof draft.data.text === 'string' && draft.data.text.trim()) { + text.value = draft.data.text; + } + + if (typeof draft.data.cw === 'string' && draft.data.cw.trim()) { + cw.value = draft.data.cw; + } + useCw.value = draft.data.useCw; - cw.value = draft.data.cw; visibility.value = draft.data.visibility; localOnly.value = draft.data.localOnly; files.value = (draft.data.files || []).filter(draftFile => draftFile); + if (draft.data.poll) { poll.value = draft.data.poll; } From 62a5793e7104b1806a7b7ebe270632af1a4cd9c0 Mon Sep 17 00:00:00 2001 From: ShittyKopper <shittykopper@w.on-t.work> Date: Mon, 27 Nov 2023 23:55:43 +0300 Subject: [PATCH 2/6] fix: don't show filename as alt text --- packages/frontend/src/components/MkMediaBanner.vue | 2 +- packages/frontend/src/components/MkMediaImage.vue | 8 ++++---- packages/frontend/src/components/MkMediaList.vue | 4 ++-- packages/frontend/src/components/MkMediaVideo.vue | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/frontend/src/components/MkMediaBanner.vue b/packages/frontend/src/components/MkMediaBanner.vue index 4594c8a1db..7b0387cefe 100644 --- a/packages/frontend/src/components/MkMediaBanner.vue +++ b/packages/frontend/src/components/MkMediaBanner.vue @@ -14,7 +14,7 @@ SPDX-License-Identifier: AGPL-3.0-only <audio ref="audioEl" :src="media.url" - :title="media.name" + :title="media.comment ?? undefined" controls preload="metadata" /> diff --git a/packages/frontend/src/components/MkMediaImage.vue b/packages/frontend/src/components/MkMediaImage.vue index 0040f00dc2..ef57cea32a 100644 --- a/packages/frontend/src/components/MkMediaImage.vue +++ b/packages/frontend/src/components/MkMediaImage.vue @@ -8,10 +8,10 @@ SPDX-License-Identifier: AGPL-3.0-only <component :is="disableImageLink ? 'div' : 'a'" v-bind="disableImageLink ? { - title: image.name, + title: image.comment, class: $style.imageContainer, } : { - title: image.name, + title: image.comment, class: $style.imageContainer, href: image.url, style: 'cursor: zoom-in;' @@ -22,8 +22,8 @@ SPDX-License-Identifier: AGPL-3.0-only :src="(defaultStore.state.dataSaver.media && hide) ? null : url" :forceBlurhash="hide" :cover="hide || cover" - :alt="image.comment || image.name" - :title="image.comment || image.name" + :alt="image.comment" + :title="image.comment" :width="image.properties.width" :height="image.properties.height" :style="hide ? 'filter: brightness(0.7);' : null" diff --git a/packages/frontend/src/components/MkMediaList.vue b/packages/frontend/src/components/MkMediaList.vue index 46e32ef2d8..ff227b0ef9 100644 --- a/packages/frontend/src/components/MkMediaList.vue +++ b/packages/frontend/src/components/MkMediaList.vue @@ -156,8 +156,8 @@ onMounted(() => { [itemData.w, itemData.h] = [itemData.h, itemData.w]; } itemData.msrc = file.thumbnailUrl; - itemData.alt = file.comment ?? file.name; - itemData.comment = file.comment ?? file.name; + itemData.alt = file.comment ?? undefined; + itemData.comment = file.comment; itemData.thumbCropped = true; }); diff --git a/packages/frontend/src/components/MkMediaVideo.vue b/packages/frontend/src/components/MkMediaVideo.vue index 4f8560f0f1..a1950b110a 100644 --- a/packages/frontend/src/components/MkMediaVideo.vue +++ b/packages/frontend/src/components/MkMediaVideo.vue @@ -17,7 +17,7 @@ SPDX-License-Identifier: AGPL-3.0-only ref="videoEl" :class="$style.video" :poster="video.thumbnailUrl" - :title="video.comment" + :title="video.comment ?? undefined" :alt="video.comment" preload="none" controls From 32318bbbfa1e67913100c3d03a3ee64393831d50 Mon Sep 17 00:00:00 2001 From: ShittyKopper <shittykopper@w.on-t.work> Date: Sat, 23 Dec 2023 15:20:51 +0300 Subject: [PATCH 3/6] fix: un-hardcode more border radius values all of these are blind find and replace, no clue if they end up breaking anything --- packages/frontend/src/components/MkChannelPreview.vue | 2 +- packages/frontend/src/components/MkCode.core.vue | 2 +- packages/frontend/src/components/MkCode.vue | 4 ++-- packages/frontend/src/components/MkCodeEditor.vue | 4 ++-- packages/frontend/src/components/MkEmojiPicker.section.vue | 4 ++-- packages/frontend/src/components/MkPostForm.vue | 2 +- .../src/components/global/MkMisskeyFlavoredMarkdown.ts | 2 +- .../src/pages/settings/avatar-decoration.decoration.vue | 2 +- packages/frontend/src/pages/settings/emoji-picker.vue | 4 ++-- packages/frontend/src/pages/user/raw.vue | 2 +- 10 files changed, 14 insertions(+), 14 deletions(-) diff --git a/packages/frontend/src/components/MkChannelPreview.vue b/packages/frontend/src/components/MkChannelPreview.vue index 96590a469b..f870b0eef1 100644 --- a/packages/frontend/src/components/MkChannelPreview.vue +++ b/packages/frontend/src/components/MkChannelPreview.vue @@ -198,7 +198,7 @@ const bannerStyle = computed(() => { transform: translate(25%, -25%); background-color: var(--accent); border: solid var(--bg) 4px; - border-radius: 100%; + border-radius: var(--radius-full); width: 1.5rem; height: 1.5rem; aspect-ratio: 1 / 1; diff --git a/packages/frontend/src/components/MkCode.core.vue b/packages/frontend/src/components/MkCode.core.vue index 19418cd4da..579c72b186 100644 --- a/packages/frontend/src/components/MkCode.core.vue +++ b/packages/frontend/src/components/MkCode.core.vue @@ -62,7 +62,7 @@ watch(() => props.lang, (to) => { padding: 1em; margin: .5em 0; overflow: auto; - border-radius: 8px; + border-radius: var(--radius-sm); & pre, & code { diff --git a/packages/frontend/src/components/MkCode.vue b/packages/frontend/src/components/MkCode.vue index 2c016e4d7c..7346d5782b 100644 --- a/packages/frontend/src/components/MkCode.vue +++ b/packages/frontend/src/components/MkCode.vue @@ -56,7 +56,7 @@ const XCode = defineAsyncComponent(() => import('@/components/MkCode.core.vue')) padding: 1em; margin: .5em 0; overflow: auto; - border-radius: 8px; + border-radius: var(--radius-sm); } .codeBlockFallbackCode { @@ -74,7 +74,7 @@ const XCode = defineAsyncComponent(() => import('@/components/MkCode.core.vue')) cursor: pointer; box-sizing: border-box; - border-radius: 8px; + border-radius: var(--radius-sm); padding: 24px; margin-top: 4px; color: #D4D4D4; diff --git a/packages/frontend/src/components/MkCodeEditor.vue b/packages/frontend/src/components/MkCodeEditor.vue index c9bcc71196..c1aaa7f1ff 100644 --- a/packages/frontend/src/components/MkCodeEditor.vue +++ b/packages/frontend/src/components/MkCodeEditor.vue @@ -161,7 +161,7 @@ watch(v, newValue => { overflow-y: hidden; box-sizing: border-box; margin: 0; - border-radius: 6px; + border-radius: var(--radius-sm); padding: 0; color: var(--fg); border: solid 1px var(--panel); @@ -202,7 +202,7 @@ watch(v, newValue => { caret-color: rgb(225, 228, 232); background-color: transparent; border: 0; - border-radius: 6px; + border-radius: var(--radius-sm); outline: 0; min-width: calc(100% - 24px); height: 100%; diff --git a/packages/frontend/src/components/MkEmojiPicker.section.vue b/packages/frontend/src/components/MkEmojiPicker.section.vue index 49c146b68d..ea9d7a0d26 100644 --- a/packages/frontend/src/components/MkEmojiPicker.section.vue +++ b/packages/frontend/src/components/MkEmojiPicker.section.vue @@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only <template> <!-- このコンポーネントの要素のclassは親から利用されるのでむやみに弄らないこと --> <!-- フォルダの中にはカスタム絵文字だけ(Unicode絵文字もこっち) --> -<section v-if="!hasChildSection" v-panel style="border-radius: 6px; border-bottom: 0.5px solid var(--divider);"> +<section v-if="!hasChildSection" v-panel style="border-radius: var(--radius-sm); border-bottom: 0.5px solid var(--divider);"> <header class="_acrylic" @click="shown = !shown"> <i class="toggle ti-fw" :class="shown ? 'ph-caret-down ph-bold ph-lg' : 'ph-caret-up ph-bold ph-lg'"></i> <slot></slot> (<i class="ph-bold ph-lg"></i>:{{ emojis.length }}) </header> @@ -25,7 +25,7 @@ SPDX-License-Identifier: AGPL-3.0-only </div> </section> <!-- フォルダの中にはカスタム絵文字やフォルダがある --> -<section v-else v-panel style="border-radius: 6px; border-bottom: 0.5px solid var(--divider);"> +<section v-else v-panel style="border-radius: var(--radius-sm); border-bottom: 0.5px solid var(--divider);"> <header class="_acrylic" @click="shown = !shown"> <i class="toggle ti-fw" :class="shown ? 'ph-caret-down ph-bold ph-lg' : 'ph-caret-up ph-bold ph-lg'"></i> <slot></slot> (<i class="ph-folder ph-bold ph-lg"></i>:{{ customEmojiTree.length }} <i class="ti ti-icons ti-fw"></i>:{{ emojis.length }}) </header> diff --git a/packages/frontend/src/components/MkPostForm.vue b/packages/frontend/src/components/MkPostForm.vue index a209128d55..b26ce2932a 100644 --- a/packages/frontend/src/components/MkPostForm.vue +++ b/packages/frontend/src/components/MkPostForm.vue @@ -1059,7 +1059,7 @@ defineExpose({ left: 12px; width: 5px; height: 100% ; - border-radius: 999px; + border-radius: var(--radius-ellipse); pointer-events: none; } diff --git a/packages/frontend/src/components/global/MkMisskeyFlavoredMarkdown.ts b/packages/frontend/src/components/global/MkMisskeyFlavoredMarkdown.ts index 83b7ef2e78..4c6034c901 100644 --- a/packages/frontend/src/components/global/MkMisskeyFlavoredMarkdown.ts +++ b/packages/frontend/src/components/global/MkMisskeyFlavoredMarkdown.ts @@ -277,7 +277,7 @@ export default function(props: MfmProps) { const child = token.children[0]; const unixtime = parseInt(child.type === 'text' ? child.props.text : ''); return h('span', { - style: 'display: inline-block; font-size: 90%; border: solid 1px var(--divider); border-radius: 999px; padding: 4px 10px 4px 6px;', + style: 'display: inline-block; font-size: 90%; border: solid 1px var(--divider); border-radius: var(--radius-ellipse); padding: 4px 10px 4px 6px;', }, [ h('i', { class: 'ph-clock ph-bold ph-lg', diff --git a/packages/frontend/src/pages/settings/avatar-decoration.decoration.vue b/packages/frontend/src/pages/settings/avatar-decoration.decoration.vue index 9c95b5547e..fcd74002f2 100644 --- a/packages/frontend/src/pages/settings/avatar-decoration.decoration.vue +++ b/packages/frontend/src/pages/settings/avatar-decoration.decoration.vue @@ -42,7 +42,7 @@ const emit = defineEmits<{ cursor: pointer; padding: 16px 16px 28px 16px; border: solid 2px var(--divider); - border-radius: 8px; + border-radius: var(--radius-sm); text-align: center; font-size: 90%; overflow: clip; diff --git a/packages/frontend/src/pages/settings/emoji-picker.vue b/packages/frontend/src/pages/settings/emoji-picker.vue index 61f3332122..1a07790e75 100644 --- a/packages/frontend/src/pages/settings/emoji-picker.vue +++ b/packages/frontend/src/pages/settings/emoji-picker.vue @@ -12,7 +12,7 @@ SPDX-License-Identifier: AGPL-3.0-only <div class="_gaps"> <div> - <div v-panel style="border-radius: 6px;"> + <div v-panel style="border-radius: var(--radius-sm);"> <Sortable v-model="pinnedEmojisForReaction" :class="$style.emojis" @@ -52,7 +52,7 @@ SPDX-License-Identifier: AGPL-3.0-only <div class="_gaps"> <div> - <div v-panel style="border-radius: 6px;"> + <div v-panel style="border-radius: var(--radius-sm);"> <Sortable v-model="pinnedEmojis" :class="$style.emojis" diff --git a/packages/frontend/src/pages/user/raw.vue b/packages/frontend/src/pages/user/raw.vue index 0c0bfc29ca..ebe40d5860 100644 --- a/packages/frontend/src/pages/user/raw.vue +++ b/packages/frontend/src/pages/user/raw.vue @@ -107,7 +107,7 @@ const suspended = computed(() => props.user.isSuspended ?? false); > .moderator { display: inline-block; border: solid 1px; - border-radius: 6px; + border-radius: var(--radius-sm); padding: 2px 6px; font-size: 85%; } From aafdcccd247fd5fdef5b14fae033e87bf058aec5 Mon Sep 17 00:00:00 2001 From: ShittyKopper <shittykopper@w.on-t.work> Date: Tue, 26 Dec 2023 21:56:34 +0300 Subject: [PATCH 4/6] fix: note history not working --- packages/frontend/src/components/SkOldNoteWindow.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/src/components/SkOldNoteWindow.vue b/packages/frontend/src/components/SkOldNoteWindow.vue index 237032c9d5..f8de28e346 100644 --- a/packages/frontend/src/components/SkOldNoteWindow.vue +++ b/packages/frontend/src/components/SkOldNoteWindow.vue @@ -132,7 +132,7 @@ const isRenote = ( ); const el = shallowRef<HTMLElement>(); -let appearNote = computed(() => isRenote ? note.value.renote as Misskey.entities.Note : note); +let appearNote = computed(() => isRenote ? note.value.renote as Misskey.entities.Note : note.value); const renoteUrl = appearNote.value.renote ? appearNote.value.renote.url : null; const renoteUri = appearNote.value.renote ? appearNote.value.renote.uri : null; From 6242f371114ad691041676613845754d110143a0 Mon Sep 17 00:00:00 2001 From: ShittyKopper <shittykopper@w.on-t.work> Date: Tue, 26 Dec 2023 21:40:49 +0300 Subject: [PATCH 5/6] Partial Revert "fix: fix: notification count position" Firefox now implements :has. There is no reason for this workaround This partially reverts commit 4f0bc185af86096c1337d35119e6444253b69682. --- packages/frontend/src/ui/_common_/navbar.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/frontend/src/ui/_common_/navbar.vue b/packages/frontend/src/ui/_common_/navbar.vue index 184d32edd7..20d4564770 100644 --- a/packages/frontend/src/ui/_common_/navbar.vue +++ b/packages/frontend/src/ui/_common_/navbar.vue @@ -29,7 +29,7 @@ SPDX-License-Identifier: AGPL-3.0-only v-on="navbarItemDef[item].action ? { click: navbarItemDef[item].action } : {}" > <i class="ti-fw" :class="[$style.itemIcon, navbarItemDef[item].icon]"></i><span :class="$style.itemText">{{ navbarItemDef[item].title }}</span> - <span v-if="navbarItemDef[item].indicated" :class="[$style.itemIndicator, { [$style.hasItemIndicateValueIcon]: navbarItemDef[item].indicateValue }]"> + <span v-if="navbarItemDef[item].indicated" :class="$style.itemIndicator"> <span v-if="navbarItemDef[item].indicateValue" class="_indicateCounter" :class="$style.itemIndicateValueIcon">{{ navbarItemDef[item].indicateValue }}</span> <i v-else class="_indicatorCircle"></i> </span> @@ -315,7 +315,7 @@ function more(ev: MouseEvent) { font-size: 8px; animation: blink 1s infinite; - &.hasItemIndicateValueIcon { + &:has(.itemIndicateValueIcon) { animation: none; left: auto; right: 40px; From 5d746d4ee5fca16392ef8b61d0277bc16af540b4 Mon Sep 17 00:00:00 2001 From: ShittyKopper <shittykopper@w.on-t.work> Date: Wed, 27 Dec 2023 13:19:29 +0300 Subject: [PATCH 6/6] fix: hide photoswipe alt text when its empty --- packages/frontend/src/components/MkMediaList.vue | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/frontend/src/components/MkMediaList.vue b/packages/frontend/src/components/MkMediaList.vue index ff227b0ef9..8f73018734 100644 --- a/packages/frontend/src/components/MkMediaList.vue +++ b/packages/frontend/src/components/MkMediaList.vue @@ -172,6 +172,12 @@ onMounted(() => { el.appendChild(textBox); pwsp.on('change', (a) => { + if (pwsp.currSlide?.data.comment) { + textBox.style.display = ''; + } else { + textBox.style.display = 'none'; + } + textBox.textContent = pwsp.currSlide.data.comment; }); },