diff options
| author | misskey-release-bot[bot] <157398866+misskey-release-bot[bot]@users.noreply.github.com> | 2025-12-06 12:22:58 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-12-06 12:22:58 +0000 |
| commit | e40c84f31df0202351c5585d3edbca000846b73b (patch) | |
| tree | 548eafb27b758c55de2e750a0ef9efbe3f056357 /packages/frontend/src | |
| parent | Merge pull request #16840 from misskey-dev/develop (diff) | |
| parent | Release: 2025.12.0 (diff) | |
| download | misskey-e40c84f31df0202351c5585d3edbca000846b73b.tar.gz misskey-e40c84f31df0202351c5585d3edbca000846b73b.tar.bz2 misskey-e40c84f31df0202351c5585d3edbca000846b73b.zip | |
Merge pull request #16916 from misskey-dev/develop
Release: 2025.12.0
Diffstat (limited to 'packages/frontend/src')
| -rw-r--r-- | packages/frontend/src/components/MkMediaImage.vue | 18 | ||||
| -rw-r--r-- | packages/frontend/src/components/global/I18n.vue | 4 | ||||
| -rw-r--r-- | packages/frontend/src/components/global/StackingRouterView.vue | 1 | ||||
| -rw-r--r-- | packages/frontend/src/i18n.ts | 2 | ||||
| -rw-r--r-- | packages/frontend/src/theme.ts | 4 |
5 files changed, 17 insertions, 12 deletions
diff --git a/packages/frontend/src/components/MkMediaImage.vue b/packages/frontend/src/components/MkMediaImage.vue index 99ea606a11..f59d15d9a2 100644 --- a/packages/frontend/src/components/MkMediaImage.vue +++ b/packages/frontend/src/components/MkMediaImage.vue @@ -233,16 +233,18 @@ function showMenu(ev: MouseEvent) { .hide { display: block; position: absolute; - border-radius: 6px; - background-color: var(--MI_THEME-fg); - color: hsl(from var(--MI_THEME-accent) h s calc(l + 10)); + background-color: rgba(0, 0, 0, 0.3); + -webkit-backdrop-filter: var(--MI-blur, blur(15px)); + backdrop-filter: var(--MI-blur, blur(15px)); + border-radius: 0 0 0 9px; + color: #fff; font-size: 12px; opacity: .5; padding: 5px 8px; text-align: center; cursor: pointer; - top: 12px; - right: 12px; + top: 0; + right: 0; } .hiddenTextWrapper { @@ -272,17 +274,17 @@ html[data-color-scheme=light] .visible { .menu { display: block; position: absolute; - border-radius: 999px; background-color: rgba(0, 0, 0, 0.3); -webkit-backdrop-filter: var(--MI-blur, blur(15px)); backdrop-filter: var(--MI-blur, blur(15px)); + border-radius: 9px 0 0 0; color: #fff; font-size: 0.8em; width: 28px; height: 28px; text-align: center; - bottom: 10px; - right: 10px; + bottom: 0; + right: 0; } .imageContainer { diff --git a/packages/frontend/src/components/global/I18n.vue b/packages/frontend/src/components/global/I18n.vue index 6b7723e6ac..9866e50958 100644 --- a/packages/frontend/src/components/global/I18n.vue +++ b/packages/frontend/src/components/global/I18n.vue @@ -9,7 +9,7 @@ SPDX-License-Identifier: AGPL-3.0-only <script setup lang="ts" generic="T extends string | ParameterizedString"> import { computed, h } from 'vue'; -import type { ParameterizedString } from '../../../../../locales/index.js'; +import type { ParameterizedString } from 'i18n'; const props = withDefaults(defineProps<{ src: T; @@ -25,7 +25,7 @@ const slots = defineSlots<T extends ParameterizedString<infer R> ? { [K in R]: ( const parsed = computed(() => { let str = props.src as string; const value: (string | { arg: string; })[] = []; - for (;;) { + for (; ;) { const nextBracketOpen = str.indexOf('{'); const nextBracketClose = str.indexOf('}'); diff --git a/packages/frontend/src/components/global/StackingRouterView.vue b/packages/frontend/src/components/global/StackingRouterView.vue index 4c56767608..d52dd9b89d 100644 --- a/packages/frontend/src/components/global/StackingRouterView.vue +++ b/packages/frontend/src/components/global/StackingRouterView.vue @@ -74,6 +74,7 @@ function mount() { } function back() { + if (tabs.value.length <= 1) return; // transitionの関係でタブが1つの状態でbackが呼ばれることがある const prev = tabs.value[tabs.value.length - 2]; tabs.value = [...tabs.value.slice(0, tabs.value.length - 1)]; router?.replaceByPath(prev.fullPath); diff --git a/packages/frontend/src/i18n.ts b/packages/frontend/src/i18n.ts index 0b2b206b7e..6a3a18df17 100644 --- a/packages/frontend/src/i18n.ts +++ b/packages/frontend/src/i18n.ts @@ -6,7 +6,7 @@ import { markRaw } from 'vue'; import { I18n } from '@@/js/i18n.js'; import { locale } from '@@/js/locale.js'; -import type { Locale } from '../../../locales/index.js'; +import type { Locale } from 'i18n'; export const i18n = markRaw(new I18n<Locale>(locale, _DEV_)); diff --git a/packages/frontend/src/theme.ts b/packages/frontend/src/theme.ts index fc3f5f55f2..e001bed8f3 100644 --- a/packages/frontend/src/theme.ts +++ b/packages/frontend/src/theme.ts @@ -144,7 +144,9 @@ export function applyTheme(theme: Theme, persist = true) { if (theme.id === currentThemeId && miLocalStorage.getItem('themeCachedVersion') === version) return; currentThemeId = theme.id; - if (window.document.startViewTransition != null) { + // visibilityStateがhiddenな状態でstartViewTransitionするとブラウザによってはエラーになる + // 通常hiddenな時に呼ばれることはないが、iOSのPWAだとアプリ切り替え時に(何故か)hiddenな状態で(何故か)一瞬デバイスのダークモード判定が変わりapplyThemeが呼ばれる場合がある + if (window.document.startViewTransition != null && window.document.visibilityState === 'visible') { window.document.documentElement.classList.add('_themeChanging_'); try { window.document.startViewTransition(async () => { |