diff options
| author | misskey-release-bot[bot] <157398866+misskey-release-bot[bot]@users.noreply.github.com> | 2026-03-05 10:56:50 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-05 10:56:50 +0000 |
| commit | fe3dd8edb5f30104cd0a7ed755eb254feda2922d (patch) | |
| tree | af6cf5fa4ca75302ac2de5db742cead00bc13d21 /packages/frontend-embed | |
| parent | Merge pull request #16998 from misskey-dev/develop (diff) | |
| parent | Release: 2026.3.0 (diff) | |
| download | misskey-fe3dd8edb5f30104cd0a7ed755eb254feda2922d.tar.gz misskey-fe3dd8edb5f30104cd0a7ed755eb254feda2922d.tar.bz2 misskey-fe3dd8edb5f30104cd0a7ed755eb254feda2922d.zip | |
Merge pull request #17217 from misskey-dev/develop
Release: 2026.3.0
Diffstat (limited to 'packages/frontend-embed')
| -rw-r--r-- | packages/frontend-embed/eslint.config.js | 11 | ||||
| -rw-r--r-- | packages/frontend-embed/package.json | 43 | ||||
| -rw-r--r-- | packages/frontend-embed/src/components/EmAvatar.vue | 12 | ||||
| -rw-r--r-- | packages/frontend-embed/src/components/EmImgWithBlurhash.vue | 2 | ||||
| -rw-r--r-- | packages/frontend-embed/src/components/EmMediaImage.vue | 2 | ||||
| -rw-r--r-- | packages/frontend-embed/src/components/EmMfm.ts | 2 | ||||
| -rw-r--r-- | packages/frontend-embed/src/pages/clip.vue | 2 | ||||
| -rw-r--r-- | packages/frontend-embed/src/pages/tag.vue | 8 | ||||
| -rw-r--r-- | packages/frontend-embed/src/pages/user-timeline.vue | 6 | ||||
| -rw-r--r-- | packages/frontend-embed/tsconfig.json | 3 |
10 files changed, 48 insertions, 43 deletions
diff --git a/packages/frontend-embed/eslint.config.js b/packages/frontend-embed/eslint.config.js index 46247e40d5..d1ca70617b 100644 --- a/packages/frontend-embed/eslint.config.js +++ b/packages/frontend-embed/eslint.config.js @@ -41,7 +41,6 @@ export default [ }, }, rules: { - '@typescript-eslint/no-unused-vars': 'off', '@typescript-eslint/no-empty-interface': ['error', { allowSingleExtends: true, }], @@ -145,7 +144,15 @@ export default [ 'vue/return-in-computed-property': 'warn', 'vue/no-setup-props-reactivity-loss': 'warn', 'vue/max-attributes-per-line': 'off', - 'vue/html-self-closing': 'off', + 'vue/html-self-closing': ['error', { + html: { + void: 'any', + normal: 'never', + component: 'any', + }, + svg: 'any', + math: 'any', + }], 'vue/singleline-html-element-content-newline': 'off', 'vue/v-on-event-hyphenation': ['error', 'never', { autofix: true, diff --git a/packages/frontend-embed/package.json b/packages/frontend-embed/package.json index 808559f44a..14a3f27601 100644 --- a/packages/frontend-embed/package.json +++ b/packages/frontend-embed/package.json @@ -11,27 +11,27 @@ }, "dependencies": { "@discordapp/twemoji": "16.0.1", - "i18n": "workspace:*", "@rollup/plugin-json": "6.1.0", "@rollup/plugin-replace": "6.0.3", "@rollup/pluginutils": "5.3.0", "@twemoji/parser": "16.0.0", - "@vitejs/plugin-vue": "6.0.2", + "@vitejs/plugin-vue": "6.0.4", "buraha": "0.0.1", "estree-walker": "3.0.3", "frontend-shared": "workspace:*", + "i18n": "workspace:*", "icons-subsetter": "workspace:*", "json5": "2.2.3", "mfm-js": "0.25.0", "misskey-js": "workspace:*", "punycode.js": "2.3.1", - "rollup": "4.53.3", - "sass": "1.95.1", - "shiki": "3.19.0", + "rollup": "4.59.0", + "sass": "1.97.3", + "shiki": "3.22.0", "tinycolor2": "1.6.0", "uuid": "13.0.0", - "vite": "7.2.7", - "vue": "3.5.25" + "vite": "7.3.1", + "vue": "3.5.28" }, "devDependencies": { "@misskey-dev/summaly": "5.2.5", @@ -39,30 +39,29 @@ "@testing-library/vue": "8.1.0", "@types/estree": "1.0.8", "@types/micromatch": "4.0.10", - "@types/node": "24.10.2", + "@types/node": "24.10.13", "@types/punycode.js": "npm:@types/punycode@2.1.4", "@types/tinycolor2": "1.4.6", "@types/ws": "8.18.1", - "@typescript-eslint/eslint-plugin": "8.49.0", - "@typescript-eslint/parser": "8.49.0", - "@vitest/coverage-v8": "4.0.15", - "@vue/runtime-core": "3.5.25", - "acorn": "8.15.0", + "@typescript-eslint/eslint-plugin": "8.56.0", + "@typescript-eslint/parser": "8.56.0", + "@vitest/coverage-v8": "4.0.18", + "@vue/runtime-core": "3.5.28", + "acorn": "8.16.0", "cross-env": "10.1.0", "eslint-plugin-import": "2.32.0", - "eslint-plugin-vue": "10.6.2", - "happy-dom": "20.0.11", + "eslint-plugin-vue": "10.8.0", + "happy-dom": "20.7.0", "intersection-observer": "0.12.2", "micromatch": "4.0.8", - "msw": "2.12.4", - "nodemon": "3.1.11", - "prettier": "3.7.4", + "msw": "2.12.10", + "nodemon": "3.1.14", + "prettier": "3.8.1", "start-server-and-test": "2.1.3", "tsx": "4.21.0", - "typescript": "5.9.3", "vite-plugin-turbosnap": "1.0.3", - "vue-component-type-helpers": "3.1.8", - "vue-eslint-parser": "10.2.0", - "vue-tsc": "3.1.8" + "vue-component-type-helpers": "3.2.4", + "vue-eslint-parser": "10.4.0", + "vue-tsc": "3.2.4" } } diff --git a/packages/frontend-embed/src/components/EmAvatar.vue b/packages/frontend-embed/src/components/EmAvatar.vue index 58c35c8ef0..3f91e14403 100644 --- a/packages/frontend-embed/src/components/EmAvatar.vue +++ b/packages/frontend-embed/src/components/EmAvatar.vue @@ -9,16 +9,16 @@ SPDX-License-Identifier: AGPL-3.0-only <div v-if="user.isCat" :class="[$style.ears]"> <div :class="$style.earLeft"> <div v-if="false" :class="$style.layer"> - <div :class="$style.plot" :style="{ backgroundImage: `url(${JSON.stringify(url)})` }"/> - <div :class="$style.plot" :style="{ backgroundImage: `url(${JSON.stringify(url)})` }"/> - <div :class="$style.plot" :style="{ backgroundImage: `url(${JSON.stringify(url)})` }"/> + <div :class="$style.plot" :style="{ backgroundImage: `url(${JSON.stringify(url)})` }"></div> + <div :class="$style.plot" :style="{ backgroundImage: `url(${JSON.stringify(url)})` }"></div> + <div :class="$style.plot" :style="{ backgroundImage: `url(${JSON.stringify(url)})` }"></div> </div> </div> <div :class="$style.earRight"> <div v-if="false" :class="$style.layer"> - <div :class="$style.plot" :style="{ backgroundImage: `url(${JSON.stringify(url)})` }"/> - <div :class="$style.plot" :style="{ backgroundImage: `url(${JSON.stringify(url)})` }"/> - <div :class="$style.plot" :style="{ backgroundImage: `url(${JSON.stringify(url)})` }"/> + <div :class="$style.plot" :style="{ backgroundImage: `url(${JSON.stringify(url)})` }"></div> + <div :class="$style.plot" :style="{ backgroundImage: `url(${JSON.stringify(url)})` }"></div> + <div :class="$style.plot" :style="{ backgroundImage: `url(${JSON.stringify(url)})` }"></div> </div> </div> </div> diff --git a/packages/frontend-embed/src/components/EmImgWithBlurhash.vue b/packages/frontend-embed/src/components/EmImgWithBlurhash.vue index 71f0ee9294..be18ce79d5 100644 --- a/packages/frontend-embed/src/components/EmImgWithBlurhash.vue +++ b/packages/frontend-embed/src/components/EmImgWithBlurhash.vue @@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only <template> <div ref="root" :class="['chromatic-ignore', $style.root, { [$style.cover]: cover }]" :title="title ?? ''"> - <canvas v-show="hide" key="canvas" ref="canvas" :class="$style.canvas" :width="canvasWidth" :height="canvasHeight" :title="title ?? undefined" tabindex="-1"/> + <canvas v-show="hide" key="canvas" ref="canvas" :class="$style.canvas" :width="canvasWidth" :height="canvasHeight" :title="title ?? undefined" tabindex="-1"></canvas> <img v-show="!hide" key="img" ref="img" :height="imgHeight ?? undefined" :width="imgWidth ?? undefined" :class="$style.img" :src="src ?? undefined" :title="title ?? undefined" :alt="alt ?? undefined" loading="eager" decoding="async" tabindex="-1"/> </div> </template> diff --git a/packages/frontend-embed/src/components/EmMediaImage.vue b/packages/frontend-embed/src/components/EmMediaImage.vue index 94f0268da4..8cb90247fc 100644 --- a/packages/frontend-embed/src/components/EmMediaImage.vue +++ b/packages/frontend-embed/src/components/EmMediaImage.vue @@ -64,7 +64,7 @@ const url = computed(() => (props.raw) : props.image.thumbnailUrl, ); -async function onclick(ev: MouseEvent) { +async function onclick(ev: PointerEvent) { if (hide.value) { ev.stopPropagation(); hide.value = false; diff --git a/packages/frontend-embed/src/components/EmMfm.ts b/packages/frontend-embed/src/components/EmMfm.ts index 1f9ce9d4f4..5b9a53bbc2 100644 --- a/packages/frontend-embed/src/components/EmMfm.ts +++ b/packages/frontend-embed/src/components/EmMfm.ts @@ -299,7 +299,7 @@ export default function (props: MfmProps, { emit }: { emit: SetupContext<MfmEven ]); } case 'clickable': { - return h('span', { onClick(ev: MouseEvent): void { + return h('span', { onClick(ev: PointerEvent): void { ev.stopPropagation(); ev.preventDefault(); const clickEv = typeof token.props.args.ev === 'string' ? token.props.args.ev : ''; diff --git a/packages/frontend-embed/src/pages/clip.vue b/packages/frontend-embed/src/pages/clip.vue index f4d4e8cf6f..a65f38aa7d 100644 --- a/packages/frontend-embed/src/pages/clip.vue +++ b/packages/frontend-embed/src/pages/clip.vue @@ -84,7 +84,7 @@ const pagination = computed(() => ({ const notesEl = useTemplateRef('notesEl'); -function top(ev: MouseEvent) { +function top(ev: PointerEvent) { const target = ev.target as HTMLElement | null; if (target && isLink(target)) return; diff --git a/packages/frontend-embed/src/pages/tag.vue b/packages/frontend-embed/src/pages/tag.vue index 4b00ae7c2d..8c6cd32bab 100644 --- a/packages/frontend-embed/src/pages/tag.vue +++ b/packages/frontend-embed/src/pages/tag.vue @@ -40,15 +40,15 @@ SPDX-License-Identifier: AGPL-3.0-only <script setup lang="ts"> import { computed, inject, useTemplateRef } from 'vue'; import { scrollToTop } from '@@/js/scroll.js'; +import { url, instanceName } from '@@/js/config.js'; +import { isLink } from '@@/js/is-link.js'; +import { defaultEmbedParams } from '@@/js/embed-page.js'; import type { Paging } from '@/components/EmPagination.vue'; import EmNotes from '@/components/EmNotes.vue'; import XNotFound from '@/pages/not-found.vue'; import EmTimelineContainer from '@/components/EmTimelineContainer.vue'; import { i18n } from '@/i18n.js'; -import { url, instanceName } from '@@/js/config.js'; -import { isLink } from '@@/js/is-link.js'; import { DI } from '@/di.js'; -import { defaultEmbedParams } from '@@/js/embed-page.js'; const props = defineProps<{ tag: string; @@ -67,7 +67,7 @@ const pagination = computed(() => ({ const notesEl = useTemplateRef('notesEl'); -function top(ev: MouseEvent) { +function top(ev: PointerEvent) { const target = ev.target as HTMLElement | null; if (target && isLink(target)) return; diff --git a/packages/frontend-embed/src/pages/user-timeline.vue b/packages/frontend-embed/src/pages/user-timeline.vue index 348b1a7622..4b5daf54da 100644 --- a/packages/frontend-embed/src/pages/user-timeline.vue +++ b/packages/frontend-embed/src/pages/user-timeline.vue @@ -49,6 +49,8 @@ import { ref, computed, inject, useTemplateRef } from 'vue'; import * as Misskey from 'misskey-js'; import { url, instanceName } from '@@/js/config.js'; import { defaultEmbedParams } from '@@/js/embed-page.js'; +import { scrollToTop } from '@@/js/scroll.js'; +import { isLink } from '@@/js/is-link.js'; import type { Paging } from '@/components/EmPagination.vue'; import EmNotes from '@/components/EmNotes.vue'; import EmAvatar from '@/components/EmAvatar.vue'; @@ -56,8 +58,6 @@ import EmUserName from '@/components/EmUserName.vue'; import I18n from '@/components/I18n.vue'; import XNotFound from '@/pages/not-found.vue'; import EmTimelineContainer from '@/components/EmTimelineContainer.vue'; -import { scrollToTop } from '@@/js/scroll.js'; -import { isLink } from '@@/js/is-link.js'; import { misskeyApi } from '@/misskey-api.js'; import { i18n } from '@/i18n.js'; import { assertServerContext } from '@/server-context.js'; @@ -101,7 +101,7 @@ const pagination = computed(() => ({ const notesEl = useTemplateRef('notesEl'); -function top(ev: MouseEvent) { +function top(ev: PointerEvent) { const target = ev.target as HTMLElement | null; if (target && isLink(target)) return; diff --git a/packages/frontend-embed/tsconfig.json b/packages/frontend-embed/tsconfig.json index 63e637c844..24fa71de19 100644 --- a/packages/frontend-embed/tsconfig.json +++ b/packages/frontend-embed/tsconfig.json @@ -2,7 +2,7 @@ "compilerOptions": { "allowJs": true, "noEmitOnError": false, - "noImplicitAny": false, + "noImplicitAny": true, "noImplicitReturns": true, "noUnusedParameters": false, "noUnusedLocals": false, @@ -22,7 +22,6 @@ "isolatedModules": true, "useDefineForClassFields": true, "verbatimModuleSyntax": true, - "baseUrl": ".", "paths": { "@/*": ["./src/*"], "@@/*": ["../frontend-shared/*"] |