From da3b3af984971555d407bfe5c3947f183a9087a7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 6 Dec 2025 12:23:00 +0000 Subject: [PATCH 01/21] [skip ci] Update CHANGELOG.md (prepend template) --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 383af2bf02..1caffeceef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +## Unreleased + +### General +- + +### Client +- + +### Server +- + + ## 2025.12.0 ### Note From 73cc30f50f653af0484f33fb1bfca68f2281968d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?= <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Mon, 8 Dec 2025 10:17:13 +0900 Subject: [PATCH 02/21] =?UTF-8?q?fix(frontend):=20=E3=83=AD=E3=83=BC?= =?UTF-8?q?=E3=83=89=E6=99=82=E3=81=AE=E8=A8=80=E8=AA=9E=E5=88=A4=E5=AE=9A?= =?UTF-8?q?=E7=B5=90=E6=9E=9C=E3=81=8C=E4=BF=9D=E5=AD=98=E3=81=95=E3=82=8C?= =?UTF-8?q?=E3=81=AA=E3=81=84=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=20(#16956)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(frontend): ロード時の言語判定結果が保存されない問題を修正 * Update Changelog --- CHANGELOG.md | 2 +- packages/frontend-embed/public/loader/boot.js | 2 ++ packages/frontend/public/loader/boot.js | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1caffeceef..8d2db60739 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ - ### Client -- +- Fix: 初回読み込み時などに、言語設定で不整合が発生することがある問題を修正 ### Server - diff --git a/packages/frontend-embed/public/loader/boot.js b/packages/frontend-embed/public/loader/boot.js index ba6366b3db..9b3d27873b 100644 --- a/packages/frontend-embed/public/loader/boot.js +++ b/packages/frontend-embed/public/loader/boot.js @@ -70,6 +70,8 @@ importAppScript(); }); } + + localStorage.setItem('lang', lang); //#endregion async function addStyle(styleText) { diff --git a/packages/frontend/public/loader/boot.js b/packages/frontend/public/loader/boot.js index ab4b158287..8aafb282aa 100644 --- a/packages/frontend/public/loader/boot.js +++ b/packages/frontend/public/loader/boot.js @@ -42,6 +42,8 @@ console.error('invalid lang value detected!!!', typeof lang, lang); lang = 'en-US'; } + + localStorage.setItem('lang', lang); //#endregion //#region Script From 3afe7c5348515fcfe2f17eee35180e9dd89881f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?= <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Mon, 8 Dec 2025 10:20:07 +0900 Subject: [PATCH 03/21] Update CHANGELOG.md [ci skip] --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d2db60739..95b9aa6c58 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ - ### Client -- Fix: 初回読み込み時などに、言語設定で不整合が発生することがある問題を修正 +- Fix: 初回読み込み時などに、言語設定で不整合が発生することがある問題を修正 ### Server - From 988f5ab69fe2f31952269fed158f4aa285e46475 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon, 8 Dec 2025 15:44:37 +0900 Subject: [PATCH 04/21] =?UTF-8?q?fix(backend):=20=E3=82=B8=E3=83=A7?= =?UTF-8?q?=E3=83=96=E3=82=AD=E3=83=A5=E3=83=BC=E3=81=A7Sentry=E3=81=8C?= =?UTF-8?q?=E6=9C=89=E5=8A=B9=E3=81=AB=E3=81=AA=E3=82=89=E3=81=AA=E3=81=84?= =?UTF-8?q?=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 2 +- packages/backend/src/queue/QueueProcessorService.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 95b9aa6c58..cf2e910d41 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ - Fix: 初回読み込み時などに、言語設定で不整合が発生することがある問題を修正 ### Server -- +- Fix: ジョブキューでSentryが有効にならない問題を修正 ## 2025.12.0 diff --git a/packages/backend/src/queue/QueueProcessorService.ts b/packages/backend/src/queue/QueueProcessorService.ts index 306fdb41f6..2b3b3fc0ad 100644 --- a/packages/backend/src/queue/QueueProcessorService.ts +++ b/packages/backend/src/queue/QueueProcessorService.ts @@ -157,7 +157,7 @@ export class QueueProcessorService implements OnApplicationShutdown { } let Sentry: typeof import('@sentry/node') | undefined; - if (Sentry != null) { + if (this.config.sentryForBackend) { import('@sentry/node').then((mod) => { Sentry = mod; }); From 2cffd9f0fbceac21817918abf50dbb2b17df0f63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=BE=E3=81=A3=E3=81=A1=E3=82=83=E3=81=A6=E3=81=83?= =?UTF-8?q?=E3=83=BC=E3=80=82?= <56515516+mattyatea@users.noreply.github.com> Date: Wed, 10 Dec 2025 17:26:30 +0900 Subject: [PATCH 05/21] =?UTF-8?q?fix(sw):=20=E3=82=AA=E3=83=95=E3=83=A9?= =?UTF-8?q?=E3=82=A4=E3=83=B3=E6=99=82=E3=81=AEfetch=20timeout=E5=87=A6?= =?UTF-8?q?=E7=90=86=E3=82=92=E5=AE=9F=E8=A3=85=20=20(#16952)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(sw): implement fetch timeout handling for navigation and offline content * fix(sw): increase fetch timeout * fix(sw): improve fetch timeout handling for i18n content * fix(sw): 結局、fetchを通るかCacheがhitするはずなので、i18nのところはいらない * fix(sw): 400番台のエラーを無条件でオフラインページにしていたのを修正 * 間違えた * i18nもtimeoutが必要 * import sortingを修正 * import sortingを修正 * Fix: Frontend のsharedにはアクセスできないじゃん... * SPDX * Update CHANGELOG.md * Update packages/sw/src/scripts/lang.ts Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> * Update packages/sw/src/sw.ts Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> * Update CHANGELOG.md Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> --------- Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> --- CHANGELOG.md | 1 + packages/sw/src/const.ts | 6 +++ packages/sw/src/scripts/lang.ts | 19 +++++++-- packages/sw/src/sw.ts | 71 ++++++++++++++++++++++----------- 4 files changed, 70 insertions(+), 27 deletions(-) create mode 100644 packages/sw/src/const.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index cf2e910d41..7c33deaa2e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ - ### Client +- Fix: 特定の条件下でMisskeyが起動せず空白のページが表示されることがある問題を軽減 - Fix: 初回読み込み時などに、言語設定で不整合が発生することがある問題を修正 ### Server diff --git a/packages/sw/src/const.ts b/packages/sw/src/const.ts new file mode 100644 index 0000000000..9dd9bad30f --- /dev/null +++ b/packages/sw/src/const.ts @@ -0,0 +1,6 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +export const FETCH_TIMEOUT_MS = 10000; diff --git a/packages/sw/src/scripts/lang.ts b/packages/sw/src/scripts/lang.ts index 40b6aa4e7b..63ac4ce399 100644 --- a/packages/sw/src/scripts/lang.ts +++ b/packages/sw/src/scripts/lang.ts @@ -8,6 +8,7 @@ */ import { get, set } from 'idb-keyval'; import { I18n } from '@@/js/i18n.js'; +import { FETCH_TIMEOUT_MS } from '@/const.js'; import type { Locale } from 'i18n'; class SwLang { @@ -37,11 +38,21 @@ class SwLang { // _DEV_がtrueの場合は常に最新化 if (!localeRes || _DEV_) { - localeRes = await fetch(localeUrl); - const clone = localeRes.clone(); - if (!clone.clone().ok) throw new Error('locale fetching error'); + const controller = new AbortController(); + const timeout = globalThis.setTimeout(() => { + controller.abort('locale-fetch-timeout'); + }, FETCH_TIMEOUT_MS); - caches.open(this.cacheName).then(cache => cache.put(localeUrl, clone)); + try { + localeRes = await fetch(localeUrl, { signal: controller.signal }); + + const clone = localeRes.clone(); + if (!clone.clone().ok) throw new Error('locale fetching error'); + + caches.open(this.cacheName).then(cache => cache.put(localeUrl, clone)); + } finally { + globalThis.clearTimeout(timeout); + } } return new I18n(await localeRes.json()); diff --git a/packages/sw/src/sw.ts b/packages/sw/src/sw.ts index 5cece73401..21017f8241 100644 --- a/packages/sw/src/sw.ts +++ b/packages/sw/src/sw.ts @@ -5,6 +5,7 @@ import { get } from 'idb-keyval'; import * as Misskey from 'misskey-js'; +import { FETCH_TIMEOUT_MS } from '@/const.js'; import type { PushNotificationDataMap } from '@/types.js'; import type { I18n } from '@@/js/i18n.js'; import type { Locale } from 'i18n'; @@ -12,6 +13,52 @@ import { createEmptyNotification, createNotification } from '@/scripts/create-no import { swLang } from '@/scripts/lang.js'; import * as swos from '@/scripts/operations.js'; +async function respondToNavigation(request: Request): Promise { + const controller = new AbortController(); + const timeout = globalThis.setTimeout(() => { + controller.abort('navigation-timeout'); + }, FETCH_TIMEOUT_MS); + + try { + const response = await fetch(request, { signal: controller.signal }); + + if (response?.status && response.status < 500) return response; + if (response?.type === 'opaqueredirect') return response; + } catch (error) { + if (_DEV_) { + console.warn('navigation fetch failed; showing offline page', error); + } + } finally { + globalThis.clearTimeout(timeout); + } + + // Only show offline page when network request actually fails + const html = await offlineContentHTML(); + return new Response(html, { + status: 200, + headers: { + 'content-type': 'text/html', + }, + }); +} + +async function offlineContentHTML() { + let i18n: Partial>; + try { + i18n = await (swLang.i18n ?? await swLang.fetchLocale()) as Partial>; + } catch { + i18n = {}; + } + + const messages = { + title: i18n.ts?._offlineScreen.title ?? 'Offline - Could not connect to server', + header: i18n.ts?._offlineScreen.header ?? 'Could not connect to server', + reload: i18n.ts?.reload ?? 'Reload', + }; + + return `${messages.title}
${messages.header}
v${_VERSION_}
`; +} + globalThis.addEventListener('install', () => { // ev.waitUntil(globalThis.skipWaiting()); }); @@ -28,17 +75,6 @@ globalThis.addEventListener('activate', ev => { ); }); -async function offlineContentHTML() { - const i18n = await (swLang.i18n ?? swLang.fetchLocale()) as Partial>; - const messages = { - title: i18n.ts?._offlineScreen.title ?? 'Offline - Could not connect to server', - header: i18n.ts?._offlineScreen.header ?? 'Could not connect to server', - reload: i18n.ts?.reload ?? 'Reload', - }; - - return `${messages.title}
${messages.header}
v${_VERSION_}
`; -} - globalThis.addEventListener('fetch', ev => { let isHTMLRequest = false; if (ev.request.headers.get('sec-fetch-dest') === 'document') { @@ -50,18 +86,7 @@ globalThis.addEventListener('fetch', ev => { } if (!isHTMLRequest) return; - ev.respondWith( - fetch(ev.request) - .catch(async () => { - const html = await offlineContentHTML(); - return new Response(html, { - status: 200, - headers: { - 'content-type': 'text/html', - }, - }); - }), - ); + ev.respondWith(respondToNavigation(ev.request)); }); globalThis.addEventListener('push', ev => { From 8e6fffee68cfa36f66c0e10f84f159d1ade72e70 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Thu, 11 Dec 2025 23:08:26 +0900 Subject: [PATCH 06/21] enhance: use native glob (#16965) * enhance: use native glob * remove tiny-glob * remove fast-glob * refactor * fix: use async glob if possible --------- Co-authored-by: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com> --- package.json | 2 - packages/frontend-embed/package.json | 1 - packages/frontend-shared/build.js | 3 +- packages/frontend/.storybook/generate.tsx | 66 +++++++++---------- .../lib/vite-plugin-create-search-index.ts | 3 +- packages/frontend/package.json | 1 - packages/i18n/build.ts | 3 +- packages/i18n/package.json | 1 - packages/icons-subsetter/package.json | 1 - packages/icons-subsetter/src/generator.ts | 9 ++- packages/misskey-bubble-game/build.js | 3 +- packages/misskey-bubble-game/package.json | 1 - packages/misskey-js/build.js | 3 +- packages/misskey-js/package.json | 1 - packages/misskey-reversi/build.js | 3 +- packages/misskey-reversi/package.json | 1 - pnpm-lock.yaml | 55 ---------------- scripts/tarball.mjs | 5 +- 18 files changed, 44 insertions(+), 118 deletions(-) diff --git a/package.json b/package.json index 40542046eb..d7067f705e 100644 --- a/package.json +++ b/package.json @@ -60,8 +60,6 @@ "cssnano": "7.1.2", "esbuild": "0.27.0", "execa": "9.6.0", - "fast-glob": "3.3.3", - "glob": "13.0.0", "ignore-walk": "8.0.0", "js-yaml": "4.1.1", "postcss": "8.5.6", diff --git a/packages/frontend-embed/package.json b/packages/frontend-embed/package.json index 6122f2cab6..cdf13120c0 100644 --- a/packages/frontend-embed/package.json +++ b/packages/frontend-embed/package.json @@ -56,7 +56,6 @@ "cross-env": "10.1.0", "eslint-plugin-import": "2.32.0", "eslint-plugin-vue": "10.6.2", - "fast-glob": "3.3.3", "happy-dom": "20.0.11", "intersection-observer": "0.12.2", "micromatch": "4.0.8", diff --git a/packages/frontend-shared/build.js b/packages/frontend-shared/build.js index 9941114757..07e98ad182 100644 --- a/packages/frontend-shared/build.js +++ b/packages/frontend-shared/build.js @@ -3,14 +3,13 @@ import { fileURLToPath } from 'node:url'; import { dirname } from 'node:path'; import * as esbuild from 'esbuild'; import { build } from 'esbuild'; -import { globSync } from 'glob'; import { execa } from 'execa'; const _filename = fileURLToPath(import.meta.url); const _dirname = dirname(_filename); const _package = JSON.parse(fs.readFileSync(_dirname + '/package.json', 'utf-8')); -const entryPoints = globSync('./js/**/**.{ts,tsx}'); +const entryPoints = fs.globSync('./js/**/**.{ts,tsx}'); /** @type {import('esbuild').BuildOptions} */ const options = { diff --git a/packages/frontend/.storybook/generate.tsx b/packages/frontend/.storybook/generate.tsx index 89d4214141..6005049dde 100644 --- a/packages/frontend/.storybook/generate.tsx +++ b/packages/frontend/.storybook/generate.tsx @@ -3,12 +3,11 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -import { existsSync, readFileSync } from 'node:fs'; +import { existsSync, readFileSync, globSync } from 'node:fs'; import { writeFile } from 'node:fs/promises'; import { basename, dirname } from 'node:path/posix'; import { GENERATOR, type State, generate } from 'astring'; import type * as estree from 'estree'; -import glob from 'fast-glob'; import { format } from 'prettier'; interface SatisfiesExpression extends estree.BaseExpression { @@ -439,38 +438,37 @@ function toStories(component: string): Promise { // glob('src/{components,pages,ui,widgets}/**/*.vue') (async () => { - const globs = await Promise.all([ - glob('src/components/global/Mk*.vue'), - glob('src/components/global/RouterView.vue'), - glob('src/components/MkAbuseReportWindow.vue'), - glob('src/components/MkAccountMoved.vue'), - glob('src/components/MkAchievements.vue'), - glob('src/components/MkAnalogClock.vue'), - glob('src/components/MkAnimBg.vue'), - glob('src/components/MkAnnouncementDialog.vue'), - glob('src/components/MkAntennaEditor.vue'), - glob('src/components/MkAntennaEditorDialog.vue'), - glob('src/components/MkAsUi.vue'), - glob('src/components/MkAutocomplete.vue'), - glob('src/components/MkAvatars.vue'), - glob('src/components/Mk[B-E]*.vue'), - glob('src/components/MkFlashPreview.vue'), - glob('src/components/MkGalleryPostPreview.vue'), - glob('src/components/MkSignupServerRules.vue'), - glob('src/components/MkUserSetupDialog.vue'), - glob('src/components/MkUserSetupDialog.*.vue'), - glob('src/components/MkImgPreviewDialog.vue'), - glob('src/components/MkInstanceCardMini.vue'), - glob('src/components/MkInviteCode.vue'), - glob('src/components/MkTagItem.vue'), - glob('src/components/MkRoleSelectDialog.vue'), - glob('src/components/grid/MkGrid.vue'), - glob('src/pages/admin/custom-emojis-manager2.vue'), - glob('src/pages/admin/overview.ap-requests.vue'), - glob('src/pages/user/home.vue'), - glob('src/pages/search.vue'), - ]); - const components = globs.flat(); + const components = [ + globSync('src/components/global/Mk*.vue'), + globSync('src/components/global/RouterView.vue'), + globSync('src/components/MkAbuseReportWindow.vue'), + globSync('src/components/MkAccountMoved.vue'), + globSync('src/components/MkAchievements.vue'), + globSync('src/components/MkAnalogClock.vue'), + globSync('src/components/MkAnimBg.vue'), + globSync('src/components/MkAnnouncementDialog.vue'), + globSync('src/components/MkAntennaEditor.vue'), + globSync('src/components/MkAntennaEditorDialog.vue'), + globSync('src/components/MkAsUi.vue'), + globSync('src/components/MkAutocomplete.vue'), + globSync('src/components/MkAvatars.vue'), + globSync('src/components/Mk[B-E]*.vue'), + globSync('src/components/MkFlashPreview.vue'), + globSync('src/components/MkGalleryPostPreview.vue'), + globSync('src/components/MkSignupServerRules.vue'), + globSync('src/components/MkUserSetupDialog.vue'), + globSync('src/components/MkUserSetupDialog.*.vue'), + globSync('src/components/MkImgPreviewDialog.vue'), + globSync('src/components/MkInstanceCardMini.vue'), + globSync('src/components/MkInviteCode.vue'), + globSync('src/components/MkTagItem.vue'), + globSync('src/components/MkRoleSelectDialog.vue'), + globSync('src/components/grid/MkGrid.vue'), + globSync('src/pages/admin/custom-emojis-manager2.vue'), + globSync('src/pages/admin/overview.ap-requests.vue'), + globSync('src/pages/user/home.vue'), + globSync('src/pages/search.vue'), + ].flat(); await Promise.all(components.map(async (component) => { const stories = component.replace(/\.vue$/, '.stories.ts'); await writeFile(stories, await toStories(component)); diff --git a/packages/frontend/lib/vite-plugin-create-search-index.ts b/packages/frontend/lib/vite-plugin-create-search-index.ts index f17b43b0e3..cfbba0823c 100644 --- a/packages/frontend/lib/vite-plugin-create-search-index.ts +++ b/packages/frontend/lib/vite-plugin-create-search-index.ts @@ -16,7 +16,6 @@ import { type PluginOption } from 'vite'; import fs from 'node:fs'; -import { glob } from 'glob'; import JSON5 from 'json5'; import MagicString, { SourceMap } from 'magic-string'; import path from 'node:path' @@ -724,7 +723,7 @@ export function pluginCreateSearchIndexVirtualModule(options: Options, asigner: async load(id) { if (id == '\0' + allSearchIndexFile) { - const files = await Promise.all(options.targetFilePaths.map(async (filePathPattern) => await glob(filePathPattern))).then(paths => paths.flat()); + const files = options.targetFilePaths.map((filePathPattern) => fs.globSync(filePathPattern)).flat(); let generatedFile = ''; let arrayElements = ''; for (let file of files) { diff --git a/packages/frontend/package.json b/packages/frontend/package.json index c9d49201c4..785dbbcfab 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -128,7 +128,6 @@ "cypress": "15.7.0", "eslint-plugin-import": "2.32.0", "eslint-plugin-vue": "10.6.2", - "fast-glob": "3.3.3", "happy-dom": "20.0.11", "intersection-observer": "0.12.2", "micromatch": "4.0.8", diff --git a/packages/i18n/build.ts b/packages/i18n/build.ts index a6bbf7dc63..21bf2996b4 100644 --- a/packages/i18n/build.ts +++ b/packages/i18n/build.ts @@ -10,7 +10,6 @@ import { watch as chokidarWatch } from 'chokidar'; import * as esbuild from 'esbuild'; import { build } from 'esbuild'; import { execa } from 'execa'; -import { globSync } from 'glob'; import { generateLocaleInterface } from './scripts/generateLocaleInterface.js'; import type { BuildOptions, BuildResult, Plugin, PluginBuild } from 'esbuild'; @@ -22,7 +21,7 @@ const _rootPackage = JSON.parse(fs.readFileSync(resolve(_rootPackageDir, 'packag const _frontendLocalesDir = resolve(_dirname, '../../built/_frontend_dist_/locales'); const _localesDir = resolve(_rootPackageDir, 'locales'); -const entryPoints = globSync('./src/**/**.{ts,tsx}'); +const entryPoints = fs.globSync('./src/**/**.{ts,tsx}'); const options: BuildOptions = { entryPoints, diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 6ba41632e8..0354c26d15 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -35,7 +35,6 @@ "chokidar": "4.0.3", "esbuild": "0.27.0", "execa": "9.6.0", - "glob": "11.1.0", "nodemon": "3.1.11", "tsx": "4.20.6", "typescript": "5.9.3" diff --git a/packages/icons-subsetter/package.json b/packages/icons-subsetter/package.json index 2c6eac150b..597520ff36 100644 --- a/packages/icons-subsetter/package.json +++ b/packages/icons-subsetter/package.json @@ -19,7 +19,6 @@ "dependencies": { "@tabler/icons-webfont": "3.35.0", "harfbuzzjs": "0.4.13", - "tiny-glob": "0.2.9", "tsx": "4.20.6", "typescript": "5.9.3", "wawoff2": "2.0.1" diff --git a/packages/icons-subsetter/src/generator.ts b/packages/icons-subsetter/src/generator.ts index 1a9e3d8fd2..811972baae 100644 --- a/packages/icons-subsetter/src/generator.ts +++ b/packages/icons-subsetter/src/generator.ts @@ -3,9 +3,8 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -import { promises as fsp, existsSync } from 'fs'; -import path from 'path'; -import glob from 'tiny-glob'; +import { promises as fsp, existsSync } from 'node:fs'; +import path from 'node:path'; import { generateSubsettedFont } from './subsetter.js'; const filesToScan = { @@ -47,8 +46,8 @@ async function main() { const iconsToPack = new Set(); const cwd = path.resolve(process.cwd(), '../../'); - const files = await glob(dir, { cwd }); - for (const file of files) { + const files = fsp.glob(dir, { cwd }); + for await (const file of files) { //console.log(`Scanning ${file}`); const content = await fsp.readFile(path.resolve(cwd, file), 'utf-8'); const classRegex = /ti-[a-z0-9-]+/g; diff --git a/packages/misskey-bubble-game/build.js b/packages/misskey-bubble-game/build.js index 5d534cc6fd..1a6f87a8e8 100644 --- a/packages/misskey-bubble-game/build.js +++ b/packages/misskey-bubble-game/build.js @@ -3,14 +3,13 @@ import { fileURLToPath } from 'node:url'; import { dirname } from 'node:path'; import * as esbuild from 'esbuild'; import { build } from 'esbuild'; -import { globSync } from 'glob'; import { execa } from 'execa'; const _filename = fileURLToPath(import.meta.url); const _dirname = dirname(_filename); const _package = JSON.parse(fs.readFileSync(_dirname + '/package.json', 'utf-8')); -const entryPoints = globSync('./src/**/**.{ts,tsx}'); +const entryPoints = fs.globSync('./src/**/**.{ts,tsx}'); /** @type {import('esbuild').BuildOptions} */ const options = { diff --git a/packages/misskey-bubble-game/package.json b/packages/misskey-bubble-game/package.json index 8dd68aec44..978d77e0e4 100644 --- a/packages/misskey-bubble-game/package.json +++ b/packages/misskey-bubble-game/package.json @@ -31,7 +31,6 @@ "@typescript-eslint/parser": "8.48.0", "esbuild": "0.27.0", "execa": "9.6.0", - "glob": "11.1.0", "nodemon": "3.1.11", "typescript": "5.9.3" }, diff --git a/packages/misskey-js/build.js b/packages/misskey-js/build.js index b794592815..68535556d3 100644 --- a/packages/misskey-js/build.js +++ b/packages/misskey-js/build.js @@ -3,14 +3,13 @@ import { fileURLToPath } from 'node:url'; import { dirname } from 'node:path'; import * as esbuild from 'esbuild'; import { build } from 'esbuild'; -import { globSync } from 'glob'; import { execa } from 'execa'; const _filename = fileURLToPath(import.meta.url); const _dirname = dirname(_filename); const _package = JSON.parse(fs.readFileSync(_dirname + '/package.json', 'utf-8')); -const entryPoints = globSync('./src/**/**.{ts,tsx}'); +const entryPoints = fs.globSync('./src/**/**.{ts,tsx}'); /** @type {import('esbuild').BuildOptions} */ const options = { diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json index 1c0e6ceee6..c549eaf0e4 100644 --- a/packages/misskey-js/package.json +++ b/packages/misskey-js/package.json @@ -44,7 +44,6 @@ "@vitest/coverage-v8": "4.0.13", "esbuild": "0.27.0", "execa": "9.6.0", - "glob": "13.0.0", "ncp": "2.0.0", "nodemon": "3.1.11", "tsd": "0.33.0", diff --git a/packages/misskey-reversi/build.js b/packages/misskey-reversi/build.js index 5d534cc6fd..1a6f87a8e8 100644 --- a/packages/misskey-reversi/build.js +++ b/packages/misskey-reversi/build.js @@ -3,14 +3,13 @@ import { fileURLToPath } from 'node:url'; import { dirname } from 'node:path'; import * as esbuild from 'esbuild'; import { build } from 'esbuild'; -import { globSync } from 'glob'; import { execa } from 'execa'; const _filename = fileURLToPath(import.meta.url); const _dirname = dirname(_filename); const _package = JSON.parse(fs.readFileSync(_dirname + '/package.json', 'utf-8')); -const entryPoints = globSync('./src/**/**.{ts,tsx}'); +const entryPoints = fs.globSync('./src/**/**.{ts,tsx}'); /** @type {import('esbuild').BuildOptions} */ const options = { diff --git a/packages/misskey-reversi/package.json b/packages/misskey-reversi/package.json index 30eace87fe..85c829204e 100644 --- a/packages/misskey-reversi/package.json +++ b/packages/misskey-reversi/package.json @@ -29,7 +29,6 @@ "@typescript-eslint/parser": "8.48.0", "esbuild": "0.27.0", "execa": "9.6.0", - "glob": "11.1.0", "nodemon": "3.1.11", "typescript": "5.9.3" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c9fa1c4a01..56a73fb5fa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,12 +22,6 @@ importers: execa: specifier: 9.6.0 version: 9.6.0 - fast-glob: - specifier: 3.3.3 - version: 3.3.3 - glob: - specifier: 13.0.0 - version: 13.0.0 ignore-walk: specifier: 8.0.0 version: 8.0.0 @@ -1011,9 +1005,6 @@ importers: eslint-plugin-vue: specifier: 10.6.2 version: 10.6.2(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1))(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(vue-eslint-parser@10.2.0(eslint@9.39.1)) - fast-glob: - specifier: 3.3.3 - version: 3.3.3 happy-dom: specifier: 20.0.11 version: 20.0.11 @@ -1250,9 +1241,6 @@ importers: eslint-plugin-vue: specifier: 10.6.2 version: 10.6.2(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1))(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(vue-eslint-parser@10.2.0(eslint@9.39.1)) - fast-glob: - specifier: 3.3.3 - version: 3.3.3 happy-dom: specifier: 20.0.11 version: 20.0.11 @@ -1354,9 +1342,6 @@ importers: execa: specifier: 9.6.0 version: 9.6.0 - glob: - specifier: 11.1.0 - version: 11.1.0 nodemon: specifier: 3.1.11 version: 3.1.11 @@ -1375,9 +1360,6 @@ importers: harfbuzzjs: specifier: 0.4.13 version: 0.4.13 - tiny-glob: - specifier: 0.2.9 - version: 0.2.9 tsx: specifier: 4.20.6 version: 4.20.6 @@ -1434,9 +1416,6 @@ importers: execa: specifier: 9.6.0 version: 9.6.0 - glob: - specifier: 11.1.0 - version: 11.1.0 nodemon: specifier: 3.1.11 version: 3.1.11 @@ -1477,9 +1456,6 @@ importers: execa: specifier: 9.6.0 version: 9.6.0 - glob: - specifier: 13.0.0 - version: 13.0.0 ncp: specifier: 2.0.0 version: 2.0.0 @@ -1553,9 +1529,6 @@ importers: execa: specifier: 9.6.0 version: 9.6.0 - glob: - specifier: 11.1.0 - version: 11.1.0 nodemon: specifier: 3.1.11 version: 3.1.11 @@ -7283,10 +7256,6 @@ packages: engines: {node: 20 || >=22} hasBin: true - glob@13.0.0: - resolution: {integrity: sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==} - engines: {node: 20 || >=22} - glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -7307,16 +7276,10 @@ packages: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} - globalyzer@0.1.0: - resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} - globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} - globrex@0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - google-protobuf@3.21.4: resolution: {integrity: sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ==} @@ -10509,9 +10472,6 @@ packages: through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - tiny-glob@0.2.9: - resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} - tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} @@ -18789,12 +18749,6 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 2.0.1 - glob@13.0.0: - dependencies: - minimatch: 10.1.1 - minipass: 7.1.2 - path-scurry: 2.0.1 - glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -18817,8 +18771,6 @@ snapshots: define-properties: 1.2.1 gopd: 1.2.0 - globalyzer@0.1.0: {} - globby@11.1.0: dependencies: array-union: 2.1.0 @@ -18828,8 +18780,6 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - globrex@0.1.2: {} - google-protobuf@3.21.4: optional: true @@ -22588,11 +22538,6 @@ snapshots: through@2.3.8: {} - tiny-glob@0.2.9: - dependencies: - globalyzer: 0.1.0 - globrex: 0.1.2 - tiny-invariant@1.3.3: {} tinybench@2.9.0: {} diff --git a/scripts/tarball.mjs b/scripts/tarball.mjs index fddbe3b04a..d1fe4de4f5 100644 --- a/scripts/tarball.mjs +++ b/scripts/tarball.mjs @@ -3,11 +3,10 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -import { createWriteStream } from 'node:fs'; +import { createWriteStream, promises as fsp } from 'node:fs'; import { mkdir } from 'node:fs/promises'; import { resolve } from 'node:path'; import { fileURLToPath } from 'node:url'; -import glob from 'fast-glob'; import walk from 'ignore-walk'; import { Pack } from 'tar/pack'; import meta from '../package.json' with { type: "json" }; @@ -25,7 +24,7 @@ export default async function build() { const pack = new Pack({ cwd, gzip: true }); const patterns = await walk({ path: cwd, ignoreFiles: ['.gitignore'] }); - for await (const entry of glob.stream(patterns, { cwd, ignore, dot: true })) { + for await (const entry of fsp.glob(patterns, { cwd, ignore, dot: true })) { pack.add(entry); } From 1096ce8e4afc3eb6c4a59e170029f4c33120ec34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?= <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Thu, 11 Dec 2025 23:10:23 +0900 Subject: [PATCH 07/21] =?UTF-8?q?fix(frontend):=20=E5=89=8A=E9=99=A4?= =?UTF-8?q?=E3=81=95=E3=82=8C=E3=81=9F=E3=83=8E=E3=83=BC=E3=83=88=E3=81=AE?= =?UTF-8?q?=E3=83=AA=E3=83=8E=E3=83=BC=E3=83=88=E3=81=8C=E6=AD=A3=E3=81=97?= =?UTF-8?q?=E3=81=8F=E8=A1=A8=E7=A4=BA=E3=81=95=E3=82=8C=E3=81=AA=E3=81=84?= =?UTF-8?q?=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3=20(#16970)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(frontend): 削除されたノートのリノートが正しく表示されない問題を修正 * Update Changelog * :art: * fix --- CHANGELOG.md | 1 + packages/frontend/src/components/MkNote.vue | 15 ++++++++++++++- .../frontend/src/components/MkNoteDetailed.vue | 15 ++++++++++++++- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c33deaa2e..ea3b9651ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ ### Client - Fix: 特定の条件下でMisskeyが起動せず空白のページが表示されることがある問題を軽減 - Fix: 初回読み込み時などに、言語設定で不整合が発生することがある問題を修正 +- Fix: 削除されたノートのリノートが正しく動作されない問題を修正 ### Server - Fix: ジョブキューでSentryが有効にならない問題を修正 diff --git a/packages/frontend/src/components/MkNote.vue b/packages/frontend/src/components/MkNote.vue index 1b0f25a1a2..e09c5220ad 100644 --- a/packages/frontend/src/components/MkNote.vue +++ b/packages/frontend/src/components/MkNote.vue @@ -38,7 +38,10 @@ SPDX-License-Identifier: AGPL-3.0-only -
+
+ {{ i18n.ts.deletedNote }} +
+
@@ -1144,4 +1147,14 @@ function emitUpdReaction(emoji: string, delta: number) { opacity: .8; font-size: 95%; } + +.deleted { + text-align: center; + padding: 32px; + margin: 6px 32px 28px; + --color: light-dark(rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.15)); + background-size: auto auto; + background-image: repeating-linear-gradient(135deg, transparent, transparent 10px, var(--color) 4px, var(--color) 14px); + border-radius: 8px; +} diff --git a/packages/frontend/src/components/MkNoteDetailed.vue b/packages/frontend/src/components/MkNoteDetailed.vue index 48fd9908bd..bc30360821 100644 --- a/packages/frontend/src/components/MkNoteDetailed.vue +++ b/packages/frontend/src/components/MkNoteDetailed.vue @@ -43,7 +43,10 @@ SPDX-License-Identifier: AGPL-3.0-only
-
+
+ {{ i18n.ts.deletedNote }} +
+
@@ -944,4 +947,14 @@ function loadConversation() { text-align: center; opacity: 0.7; } + +.deleted { + text-align: center; + padding: 32px; + margin: 6px 32px 32px; + --color: light-dark(rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.15)); + background-size: auto auto; + background-image: repeating-linear-gradient(135deg, transparent, transparent 10px, var(--color) 4px, var(--color) 14px); + border-radius: 8px; +} From d605680524bdee6a5e12f0a7810f691dba95f626 Mon Sep 17 00:00:00 2001 From: FINEARCHS <133759614+FineArchs@users.noreply.github.com> Date: Thu, 11 Dec 2025 23:15:57 +0900 Subject: [PATCH 08/21] =?UTF-8?q?fix(frontend):=20=E3=82=AA=E3=83=BC?= =?UTF-8?q?=E3=83=8A=E3=83=BC=E4=B8=8D=E5=9C=A8=E3=81=AE=E3=83=81=E3=83=A3?= =?UTF-8?q?=E3=83=B3=E3=83=8D=E3=83=AB=E3=82=92=E3=83=9F=E3=83=A5=E3=83=BC?= =?UTF-8?q?=E3=83=88=E3=81=A7=E3=81=8D=E3=81=AA=E3=81=84=E3=81=AE=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20(#16906)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * オーナー不在のチャンネルをミュートできないのを修正 * update changelog --------- Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com> --- CHANGELOG.md | 1 + packages/frontend/src/pages/channel.vue | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ea3b9651ce..8f223f6ac1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - Fix: 特定の条件下でMisskeyが起動せず空白のページが表示されることがある問題を軽減 - Fix: 初回読み込み時などに、言語設定で不整合が発生することがある問題を修正 - Fix: 削除されたノートのリノートが正しく動作されない問題を修正 +- Fix: チャンネルオーナーが削除済みの時にチャンネルのヘッダーメニューが表示されない不具合を修正 ### Server - Fix: ジョブキューでSentryが有効にならない問題を修正 diff --git a/packages/frontend/src/pages/channel.vue b/packages/frontend/src/pages/channel.vue index aed64ff3cb..0879aa72be 100644 --- a/packages/frontend/src/pages/channel.vue +++ b/packages/frontend/src/pages/channel.vue @@ -257,7 +257,7 @@ async function search() { } const headerActions = computed(() => { - if (channel.value && channel.value.userId) { + if (channel.value) { const headerItems: PageHeaderItem[] = []; headerItems.push({ From d74aded35fc8bf1c59dc2450076eb8cfbdf900eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?= <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Fri, 12 Dec 2025 10:45:45 +0900 Subject: [PATCH 09/21] fix: remove unused dependencies (#16969) * fix(frontend): remove unused dependencies * fix(backend): remove unused dependencies --- packages/backend/package.json | 9 +- packages/frontend-embed/package.json | 6 +- packages/frontend/package.json | 14 +- packages/frontend/src/components/index.ts | 2 +- pnpm-lock.yaml | 151 ++++------------------ 5 files changed, 30 insertions(+), 152 deletions(-) diff --git a/packages/backend/package.json b/packages/backend/package.json index 40aa2f82a2..f49acff701 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -75,7 +75,6 @@ "@aws-sdk/lib-storage": "3.940.0", "@discordapp/twemoji": "16.0.1", "@fastify/accepts": "5.0.3", - "@fastify/cookie": "11.0.2", "@fastify/cors": "11.1.0", "@fastify/express": "4.0.2", "@fastify/http-proxy": "11.3.0", @@ -107,7 +106,6 @@ "body-parser": "2.2.1", "bullmq": "5.65.0", "cacheable-lookup": "7.0.0", - "cbor": "10.0.11", "chalk": "5.6.2", "chalk-template": "1.1.2", "chokidar": "4.0.3", @@ -131,7 +129,6 @@ "is-svg": "6.1.0", "json5": "2.2.3", "jsonld": "9.0.0", - "jsrsasign": "11.1.0", "juice": "11.0.3", "meilisearch": "0.54.0", "mfm-js": "0.25.0", @@ -145,7 +142,6 @@ "node-html-parser": "7.0.1", "nodemailer": "7.0.11", "nsfwjs": "4.2.0", - "oauth": "0.10.2", "oauth2orize": "1.12.0", "oauth2orize-pkce": "0.1.2", "os-utils": "0.0.14", @@ -174,7 +170,6 @@ "tinycolor2": "1.6.0", "tmp": "0.2.5", "tsc-alias": "1.8.16", - "tsconfig-paths": "4.2.0", "typeorm": "0.3.27", "typescript": "5.9.3", "ulid": "3.0.1", @@ -199,12 +194,10 @@ "@types/http-link-header": "1.0.7", "@types/jest": "29.5.14", "@types/jsonld": "1.5.15", - "@types/jsrsasign": "10.5.15", "@types/mime-types": "3.0.1", "@types/ms": "2.1.0", "@types/node": "24.10.1", "@types/nodemailer": "7.0.4", - "@types/oauth": "0.9.6", "@types/oauth2orize": "1.11.5", "@types/oauth2orize-pkce": "0.1.2", "@types/pg": "8.15.6", @@ -225,13 +218,13 @@ "@typescript-eslint/eslint-plugin": "8.48.0", "@typescript-eslint/parser": "8.48.0", "aws-sdk-client-mock": "4.1.0", + "cbor": "10.0.11", "cross-env": "10.1.0", "eslint-plugin-import": "2.32.0", "execa": "9.6.0", "fkill": "10.0.1", "jest": "29.7.0", "jest-mock": "29.7.0", - "jest-util": "29.7.0", "js-yaml": "4.1.1", "nodemon": "3.1.11", "pid-port": "2.0.0", diff --git a/packages/frontend-embed/package.json b/packages/frontend-embed/package.json index cdf13120c0..e82cdc1f27 100644 --- a/packages/frontend-embed/package.json +++ b/packages/frontend-embed/package.json @@ -17,8 +17,6 @@ "@rollup/pluginutils": "5.3.0", "@twemoji/parser": "16.0.0", "@vitejs/plugin-vue": "6.0.2", - "@vue/compiler-sfc": "3.5.25", - "astring": "1.9.0", "buraha": "0.0.1", "estree-walker": "3.0.3", "frontend-shared": "workspace:*", @@ -31,9 +29,6 @@ "sass": "1.94.2", "shiki": "3.17.0", "tinycolor2": "1.6.0", - "tsc-alias": "1.8.16", - "tsconfig-paths": "4.2.0", - "typescript": "5.9.3", "uuid": "13.0.0", "vite": "7.2.4", "vue": "3.5.25" @@ -64,6 +59,7 @@ "prettier": "3.7.1", "start-server-and-test": "2.1.3", "tsx": "4.20.6", + "typescript": "5.9.3", "vite-plugin-turbosnap": "1.0.3", "vue-component-type-helpers": "3.1.5", "vue-eslint-parser": "10.2.0", diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 785dbbcfab..68dc5bd656 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -30,10 +30,8 @@ "@syuilo/aiscript-0-19-0": "npm:@syuilo/aiscript@^0.19.0", "@twemoji/parser": "16.0.0", "@vitejs/plugin-vue": "6.0.2", - "@vue/compiler-sfc": "3.5.25", "aiscript-vscode": "github:aiscript-dev/aiscript-vscode#v0.1.15", "analytics": "0.8.19", - "astring": "1.9.0", "broadcast-channel": "7.2.0", "buraha": "0.0.1", "canvas-confetti": "1.9.4", @@ -46,7 +44,6 @@ "compare-versions": "6.1.1", "cropperjs": "2.1.0", "date-fns": "4.1.0", - "estree-walker": "3.0.3", "eventemitter3": "5.0.1", "execa": "9.6.0", "exifreader": "4.32.0", @@ -57,7 +54,6 @@ "ios-haptics": "0.1.4", "is-file-animated": "1.0.2", "json5": "2.2.3", - "magic-string": "0.30.21", "matter-js": "0.20.0", "mediabunny": "1.25.3", "mfm-js": "0.25.0", @@ -72,14 +68,10 @@ "sanitize-html": "2.17.0", "sass": "1.94.2", "shiki": "3.17.0", - "strict-event-emitter-types": "2.0.0", "textarea-caret": "3.1.0", "three": "0.181.2", "throttle-debounce": "5.0.2", "tinycolor2": "1.6.0", - "tsc-alias": "1.8.16", - "tsconfig-paths": "4.2.0", - "typescript": "5.9.3", "v-code-diff": "1.13.1", "vite": "7.2.4", "vue": "3.5.25", @@ -117,19 +109,20 @@ "@types/seedrandom": "3.0.8", "@types/throttle-debounce": "5.0.2", "@types/tinycolor2": "1.4.6", - "@types/ws": "8.18.1", "@typescript-eslint/eslint-plugin": "8.48.0", "@typescript-eslint/parser": "8.48.0", "@vitest/coverage-v8": "4.0.14", "@vue/compiler-core": "3.5.25", - "@vue/runtime-core": "3.5.25", "acorn": "8.15.0", + "astring": "1.9.0", "cross-env": "10.1.0", "cypress": "15.7.0", "eslint-plugin-import": "2.32.0", "eslint-plugin-vue": "10.6.2", + "estree-walker": "3.0.3", "happy-dom": "20.0.11", "intersection-observer": "0.12.2", + "magic-string": "0.30.21", "micromatch": "4.0.8", "minimatch": "10.1.1", "msw": "2.12.3", @@ -143,6 +136,7 @@ "storybook": "10.1.0", "storybook-addon-misskey-theme": "github:misskey-dev/storybook-addon-misskey-theme", "tsx": "4.20.6", + "typescript": "5.9.3", "vite-plugin-glsl": "1.5.4", "vite-plugin-turbosnap": "1.0.3", "vitest": "4.0.14", diff --git a/packages/frontend/src/components/index.ts b/packages/frontend/src/components/index.ts index eadf88ebd9..32c9d4bc62 100644 --- a/packages/frontend/src/components/index.ts +++ b/packages/frontend/src/components/index.ts @@ -77,7 +77,7 @@ export const components = { SearchIcon: SearchIcon, }; -declare module '@vue/runtime-core' { +declare module 'vue' { export interface GlobalComponents { I18n: typeof I18n; RouterView: typeof RouterView; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 56a73fb5fa..f85427d764 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -99,9 +99,6 @@ importers: '@fastify/accepts': specifier: 5.0.3 version: 5.0.3 - '@fastify/cookie': - specifier: 11.0.2 - version: 11.0.2 '@fastify/cors': specifier: 11.1.0 version: 11.1.0 @@ -195,9 +192,6 @@ importers: cacheable-lookup: specifier: 7.0.0 version: 7.0.0 - cbor: - specifier: 10.0.11 - version: 10.0.11 chalk: specifier: 5.6.2 version: 5.6.2 @@ -267,9 +261,6 @@ importers: jsonld: specifier: 9.0.0 version: 9.0.0 - jsrsasign: - specifier: 11.1.0 - version: 11.1.0 juice: specifier: 11.0.3 version: 11.0.3 @@ -309,9 +300,6 @@ importers: nsfwjs: specifier: 4.2.0 version: 4.2.0(@tensorflow/tfjs@4.22.0(encoding@0.1.13)(seedrandom@3.0.5))(buffer@6.0.3) - oauth: - specifier: 0.10.2 - version: 0.10.2 oauth2orize: specifier: 1.12.0 version: 1.12.0 @@ -396,9 +384,6 @@ importers: tsc-alias: specifier: 1.8.16 version: 1.8.16 - tsconfig-paths: - specifier: 4.2.0 - version: 4.2.0 typeorm: specifier: 0.3.27 version: 0.3.27(ioredis@5.8.2)(pg@8.16.3)(reflect-metadata@0.2.2) @@ -466,9 +451,6 @@ importers: '@types/jsonld': specifier: 1.5.15 version: 1.5.15 - '@types/jsrsasign': - specifier: 10.5.15 - version: 10.5.15 '@types/mime-types': specifier: 3.0.1 version: 3.0.1 @@ -481,9 +463,6 @@ importers: '@types/nodemailer': specifier: 7.0.4 version: 7.0.4 - '@types/oauth': - specifier: 0.9.6 - version: 0.9.6 '@types/oauth2orize': specifier: 1.11.5 version: 1.11.5 @@ -544,6 +523,9 @@ importers: aws-sdk-client-mock: specifier: 4.1.0 version: 4.1.0 + cbor: + specifier: 10.0.11 + version: 10.0.11 cross-env: specifier: 10.1.0 version: 10.1.0 @@ -562,9 +544,6 @@ importers: jest-mock: specifier: 29.7.0 version: 29.7.0 - jest-util: - specifier: 29.7.0 - version: 29.7.0 js-yaml: specifier: 4.1.1 version: 4.1.1 @@ -713,18 +692,12 @@ importers: '@vitejs/plugin-vue': specifier: 6.0.2 version: 6.0.2(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))(vue@3.5.25(typescript@5.9.3)) - '@vue/compiler-sfc': - specifier: 3.5.25 - version: 3.5.25 aiscript-vscode: specifier: github:aiscript-dev/aiscript-vscode#v0.1.15 version: https://codeload.github.com/aiscript-dev/aiscript-vscode/tar.gz/c3cde89e79a41d93540cf8a48cd619c3f2dcb1b7 analytics: specifier: 0.8.19 version: 0.8.19(@types/dlv@1.1.5) - astring: - specifier: 1.9.0 - version: 1.9.0 broadcast-channel: specifier: 7.2.0 version: 7.2.0 @@ -761,9 +734,6 @@ importers: date-fns: specifier: 4.1.0 version: 4.1.0 - estree-walker: - specifier: 3.0.3 - version: 3.0.3 eventemitter3: specifier: 5.0.1 version: 5.0.1 @@ -797,9 +767,6 @@ importers: json5: specifier: 2.2.3 version: 2.2.3 - magic-string: - specifier: 0.30.21 - version: 0.30.21 matter-js: specifier: 0.20.0 version: 0.20.0 @@ -842,9 +809,6 @@ importers: shiki: specifier: 3.17.0 version: 3.17.0 - strict-event-emitter-types: - specifier: 2.0.0 - version: 2.0.0 textarea-caret: specifier: 3.1.0 version: 3.1.0 @@ -857,15 +821,6 @@ importers: tinycolor2: specifier: 1.6.0 version: 1.6.0 - tsc-alias: - specifier: 1.8.16 - version: 1.8.16 - tsconfig-paths: - specifier: 4.2.0 - version: 4.2.0 - typescript: - specifier: 5.9.3 - version: 5.9.3 v-code-diff: specifier: 1.13.1 version: 1.13.1(vue@3.5.25(typescript@5.9.3)) @@ -972,9 +927,6 @@ importers: '@types/tinycolor2': specifier: 1.4.6 version: 1.4.6 - '@types/ws': - specifier: 8.18.1 - version: 8.18.1 '@typescript-eslint/eslint-plugin': specifier: 8.48.0 version: 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3) @@ -987,12 +939,12 @@ importers: '@vue/compiler-core': specifier: 3.5.25 version: 3.5.25 - '@vue/runtime-core': - specifier: 3.5.25 - version: 3.5.25 acorn: specifier: 8.15.0 version: 8.15.0 + astring: + specifier: 1.9.0 + version: 1.9.0 cross-env: specifier: 10.1.0 version: 10.1.0 @@ -1005,12 +957,18 @@ importers: eslint-plugin-vue: specifier: 10.6.2 version: 10.6.2(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1))(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(vue-eslint-parser@10.2.0(eslint@9.39.1)) + estree-walker: + specifier: 3.0.3 + version: 3.0.3 happy-dom: specifier: 20.0.11 version: 20.0.11 intersection-observer: specifier: 0.12.2 version: 0.12.2 + magic-string: + specifier: 0.30.21 + version: 0.30.21 micromatch: specifier: 4.0.8 version: 4.0.8 @@ -1050,6 +1008,9 @@ importers: tsx: specifier: 4.20.6 version: 4.20.6 + typescript: + specifier: 5.9.3 + version: 5.9.3 vite-plugin-glsl: specifier: 1.5.4 version: 1.5.4(@rollup/pluginutils@5.3.0(rollup@4.53.3))(esbuild@0.27.0)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) @@ -1126,12 +1087,6 @@ importers: '@vitejs/plugin-vue': specifier: 6.0.2 version: 6.0.2(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))(vue@3.5.25(typescript@5.9.3)) - '@vue/compiler-sfc': - specifier: 3.5.25 - version: 3.5.25 - astring: - specifier: 1.9.0 - version: 1.9.0 buraha: specifier: 0.0.1 version: 0.0.1 @@ -1171,15 +1126,6 @@ importers: tinycolor2: specifier: 1.6.0 version: 1.6.0 - tsc-alias: - specifier: 1.8.16 - version: 1.8.16 - tsconfig-paths: - specifier: 4.2.0 - version: 4.2.0 - typescript: - specifier: 5.9.3 - version: 5.9.3 uuid: specifier: 13.0.0 version: 13.0.0 @@ -1265,6 +1211,9 @@ importers: tsx: specifier: 4.20.6 version: 4.20.6 + typescript: + specifier: 5.9.3 + version: 5.9.3 vite-plugin-turbosnap: specifier: 1.0.3 version: 1.0.3 @@ -2500,9 +2449,6 @@ packages: '@fastify/busboy@3.2.0': resolution: {integrity: sha512-m9FVDXU3GT2ITSe0UaMA5rU3QkfC/UXtCU8y0gSN/GugTqtVldOBWIB5V6V3sbmenVZUIpU6f+mPEO2+m5iTaA==} - '@fastify/cookie@11.0.2': - resolution: {integrity: sha512-GWdwdGlgJxyvNv+QcKiGNevSspMQXncjMZ1J8IvuDQk0jvkzgWWZFNC2En3s+nHndZBGV8IbLwOI/sxCZw/mzA==} - '@fastify/cors@11.1.0': resolution: {integrity: sha512-sUw8ed8wP2SouWZTIbA7V2OQtMNpLj2W6qJOYhNdcmINTu6gsxVYXjQiM9mdi8UUDlcoDDJ/W2syPo1WB2QjYA==} @@ -4774,9 +4720,6 @@ packages: '@types/jsonld@1.5.15': resolution: {integrity: sha512-PlAFPZjL+AuGYmwlqwKEL0IMP8M8RexH0NIPGfCVWSQ041H2rR/8OlyZSD7KsCVoN8vCfWdtWDBxX8yBVP+xow==} - '@types/jsrsasign@10.5.15': - resolution: {integrity: sha512-3stUTaSRtN09PPzVWR6aySD9gNnuymz+WviNHoTb85dKu+BjaV4uBbWWGykBBJkfwPtcNZVfTn2lbX00U+yhpQ==} - '@types/long@4.0.2': resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} @@ -4831,9 +4774,6 @@ packages: '@types/oauth2orize@1.11.5': resolution: {integrity: sha512-C6hrRoh9hCnqis39OpeUZSwgw+TIzcV0CsxwJMGfQjTx4I1r+CLmuEPzoDJr5NRTfc7OMwHNLkQwrGFLKrJjMQ==} - '@types/oauth@0.9.6': - resolution: {integrity: sha512-H9TRCVKBNOhZZmyHLqFt9drPM9l+ShWiqqJijU1B8P3DX3ub84NjxDuy+Hjrz+fEca5Kwip3qPMKNyiLgNJtIA==} - '@types/offscreencanvas@2019.3.0': resolution: {integrity: sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q==} @@ -5235,15 +5175,9 @@ packages: '@volar/typescript@2.4.23': resolution: {integrity: sha512-lAB5zJghWxVPqfcStmAP1ZqQacMpe90UrP5RJ3arDyrhy4aCUQqmxPPLB2PWDKugvylmO41ljK7vZ+t6INMTag==} - '@vue/compiler-core@3.5.24': - resolution: {integrity: sha512-eDl5H57AOpNakGNAkFDH+y7kTqrQpJkZFXhWZQGyx/5Wh7B1uQYvcWkvZi11BDhscPgj8N7XV3oRwiPnx1Vrig==} - '@vue/compiler-core@3.5.25': resolution: {integrity: sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==} - '@vue/compiler-dom@3.5.24': - resolution: {integrity: sha512-1QHGAvs53gXkWdd3ZMGYuvQFXHW4ksKWPG8HP8/2BscrbZ0brw183q2oNWjMrSWImYLHxHrx1ItBQr50I/q2zw==} - '@vue/compiler-dom@3.5.25': resolution: {integrity: sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==} @@ -5286,9 +5220,6 @@ packages: peerDependencies: vue: 3.5.25 - '@vue/shared@3.5.24': - resolution: {integrity: sha512-9cwHL2EsJBdi8NY22pngYYWzkTDhld6fAD6jlaeloNGciNSJL6bLpbxVgXl96X00Jtc6YWQv96YA/0sxex/k1A==} - '@vue/shared@3.5.25': resolution: {integrity: sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==} @@ -8096,9 +8027,6 @@ packages: resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==} engines: {'0': node >=0.6.0} - jsrsasign@11.1.0: - resolution: {integrity: sha512-Ov74K9GihaK9/9WncTe1mPmvrO7Py665TUfUKvraXBpu+xcTWitrtuOwcjf4KMU9maPaYn0OuaWy0HOzy/GBXg==} - jstransformer@1.0.0: resolution: {integrity: sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==} @@ -8836,9 +8764,6 @@ packages: resolution: {integrity: sha512-j4XtFDQUBsvUHPjUmvmNDUDMYed2MphMIJBhyxVVe8hGCjkuYnjIsW+D9qk8c5ciXRdnk6x6tEbiO6PLeOZdCQ==} engines: {node: '>= 0.4.0'} - oauth@0.10.2: - resolution: {integrity: sha512-JtFnB+8nxDEXgNyniwz573xxbKSOu3R8D40xQKqcjwJ2CDkYqUDI53o6IuzDJBx60Z8VKCm271+t8iFjakrl8Q==} - object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -12865,11 +12790,6 @@ snapshots: '@fastify/busboy@3.2.0': {} - '@fastify/cookie@11.0.2': - dependencies: - cookie: 1.0.2 - fastify-plugin: 5.1.0 - '@fastify/cors@11.1.0': dependencies: fastify-plugin: 5.1.0 @@ -15542,8 +15462,6 @@ snapshots: '@types/jsonld@1.5.15': {} - '@types/jsrsasign@10.5.15': {} - '@types/long@4.0.2': {} '@types/matter-js@0.20.2': {} @@ -15603,10 +15521,6 @@ snapshots: '@types/express': 5.0.4 '@types/node': 24.10.1 - '@types/oauth@0.9.6': - dependencies: - '@types/node': 24.10.1 - '@types/offscreencanvas@2019.3.0': {} '@types/offscreencanvas@2019.7.3': {} @@ -16141,14 +16055,6 @@ snapshots: path-browserify: 1.0.1 vscode-uri: 3.1.0 - '@vue/compiler-core@3.5.24': - dependencies: - '@babel/parser': 7.28.5 - '@vue/shared': 3.5.24 - entities: 4.5.0 - estree-walker: 2.0.2 - source-map-js: 1.2.1 - '@vue/compiler-core@3.5.25': dependencies: '@babel/parser': 7.28.5 @@ -16157,11 +16063,6 @@ snapshots: estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.24': - dependencies: - '@vue/compiler-core': 3.5.24 - '@vue/shared': 3.5.24 - '@vue/compiler-dom@3.5.25': dependencies: '@vue/compiler-core': 3.5.25 @@ -16192,9 +16093,9 @@ snapshots: '@vue/language-core@2.2.12(typescript@5.9.3)': dependencies: '@volar/language-core': 2.4.15 - '@vue/compiler-dom': 3.5.24 + '@vue/compiler-dom': 3.5.25 '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.5.24 + '@vue/shared': 3.5.25 alien-signals: 1.0.13 minimatch: 9.0.5 muggle-string: 0.4.1 @@ -16205,8 +16106,8 @@ snapshots: '@vue/language-core@3.1.5(typescript@5.9.3)': dependencies: '@volar/language-core': 2.4.23 - '@vue/compiler-dom': 3.5.24 - '@vue/shared': 3.5.24 + '@vue/compiler-dom': 3.5.25 + '@vue/shared': 3.5.25 alien-signals: 3.1.0 muggle-string: 0.4.1 path-browserify: 1.0.1 @@ -16236,8 +16137,6 @@ snapshots: '@vue/shared': 3.5.25 vue: 3.5.25(typescript@5.9.3) - '@vue/shared@3.5.24': {} - '@vue/shared@3.5.25': {} '@vue/test-utils@2.4.6': @@ -19810,8 +19709,6 @@ snapshots: json-schema: 0.4.0 verror: 1.10.0 - jsrsasign@11.1.0: {} - jstransformer@1.0.0: dependencies: is-promise: 2.2.2 @@ -20734,8 +20631,6 @@ snapshots: transitivePeerDependencies: - supports-color - oauth@0.10.2: {} - object-assign@4.1.1: {} object-inspect@1.13.4: {} @@ -23113,7 +23008,7 @@ snapshots: dependencies: '@babel/parser': 7.28.5 '@babel/types': 7.28.5 - '@vue/compiler-dom': 3.5.24 + '@vue/compiler-dom': 3.5.25 '@vue/compiler-sfc': 3.5.25 ast-types: 0.16.1 esm-resolve: 1.0.11 From 78435dc8d4a2c76798431a1383cee97f9e28ec0f Mon Sep 17 00:00:00 2001 From: anatawa12 Date: Fri, 12 Dec 2025 12:53:59 +0900 Subject: [PATCH 10/21] =?UTF-8?q?Fix:=20deck=E3=81=AE=E3=82=BF=E3=82=A4?= =?UTF-8?q?=E3=83=A0=E3=83=A9=E3=82=A4=E3=83=B3=E3=82=BB=E3=83=AC=E3=82=AF?= =?UTF-8?q?=E3=82=BF=E3=81=AE=E3=83=87=E3=83=95=E3=82=A9=E3=83=AB=E3=83=88?= =?UTF-8?q?=E3=81=AE=E5=80=A4=E3=81=8C=E7=8F=BE=E5=9C=A8=E3=81=AE=E3=82=BF?= =?UTF-8?q?=E3=82=A4=E3=83=A0=E3=83=A9=E3=82=A4=E3=83=B3=E3=81=A7=E3=81=AF?= =?UTF-8?q?=E3=81=AA=E3=81=84=E5=95=8F=E9=A1=8C=20(#16008)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: os.selectの型定義の上で default が文字列である問題を修正 * fix: deckのタイムライン選択画面で今指定されているタイムラインがデフォルトで選択されない問題 * fix lint * fix: type error --- packages/frontend/src/ui/deck/antenna-column.vue | 2 +- packages/frontend/src/ui/deck/channel-column.vue | 2 +- packages/frontend/src/ui/deck/list-column.vue | 2 +- packages/frontend/src/ui/deck/role-timeline-column.vue | 2 +- packages/frontend/src/ui/deck/tl-column.vue | 1 + 5 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/frontend/src/ui/deck/antenna-column.vue b/packages/frontend/src/ui/deck/antenna-column.vue index 0423a22ce1..1668af79ee 100644 --- a/packages/frontend/src/ui/deck/antenna-column.vue +++ b/packages/frontend/src/ui/deck/antenna-column.vue @@ -63,7 +63,7 @@ async function setAntenna() { })), } : undefined), ], - default: props.column.antennaId, + default: antennas.find(x => x.id === props.column.antennaId)?.id, }); if (canceled || antennaIdOrOperation == null) return; diff --git a/packages/frontend/src/ui/deck/channel-column.vue b/packages/frontend/src/ui/deck/channel-column.vue index 35ca9f5cc6..dd14e7019e 100644 --- a/packages/frontend/src/ui/deck/channel-column.vue +++ b/packages/frontend/src/ui/deck/channel-column.vue @@ -63,7 +63,7 @@ async function setChannel() { items: channels.map(x => ({ value: x.id, label: x.name, })), - default: props.column.channelId, + default: channels.find(x => x.id === props.column.channelId)?.id, }); if (canceled || chosenChannelId == null) return; const chosenChannel = channels.find(x => x.id === chosenChannelId)!; diff --git a/packages/frontend/src/ui/deck/list-column.vue b/packages/frontend/src/ui/deck/list-column.vue index 7fb0aba1e1..6fc4680396 100644 --- a/packages/frontend/src/ui/deck/list-column.vue +++ b/packages/frontend/src/ui/deck/list-column.vue @@ -70,7 +70,7 @@ async function setList() { })), } : undefined), ], - default: props.column.listId, + default: lists.find(x => x.id === props.column.listId)?.id, }); if (canceled || listIdOrOperation == null) return; diff --git a/packages/frontend/src/ui/deck/role-timeline-column.vue b/packages/frontend/src/ui/deck/role-timeline-column.vue index beb679169c..1f6e8c73d5 100644 --- a/packages/frontend/src/ui/deck/role-timeline-column.vue +++ b/packages/frontend/src/ui/deck/role-timeline-column.vue @@ -54,7 +54,7 @@ async function setRole() { items: roles.map(x => ({ value: x.id, label: x.name, })), - default: props.column.roleId, + default: roles.find(x => x.id === props.column.roleId)?.id, }); if (canceled || roleId == null) return; const role = roles.find(x => x.id === roleId)!; diff --git a/packages/frontend/src/ui/deck/tl-column.vue b/packages/frontend/src/ui/deck/tl-column.vue index afaa08e6d0..0e59913c4c 100644 --- a/packages/frontend/src/ui/deck/tl-column.vue +++ b/packages/frontend/src/ui/deck/tl-column.vue @@ -104,6 +104,7 @@ async function setType() { }, { value: 'global', label: i18n.ts._timelines.global, }], + default: props.column.tl, }); if (canceled) { if (props.column.tl == null) { From bc1f83664f42105f4cf36730812c657fa84a9272 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=BE=E3=81=A3=E3=81=A1=E3=82=83=E3=81=A6=E3=81=83?= =?UTF-8?q?=E3=83=BC=E3=80=82?= <56515516+mattyatea@users.noreply.github.com> Date: Fri, 12 Dec 2025 17:08:15 +0900 Subject: [PATCH 11/21] =?UTF-8?q?fix(sw):=20Service=20Worker=20Auto=20Prel?= =?UTF-8?q?oad=E3=82=92=E3=82=AA=E3=83=97=E3=83=88=E3=82=A2=E3=82=A6?= =?UTF-8?q?=E3=83=88=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=20(#1697?= =?UTF-8?q?1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Service Worker Auto Preloadをオプトアウトするように * TypeErrorを修正 * コメントを追記 --- packages/sw/src/sw.ts | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/sw/src/sw.ts b/packages/sw/src/sw.ts index 21017f8241..2bccbb0542 100644 --- a/packages/sw/src/sw.ts +++ b/packages/sw/src/sw.ts @@ -59,8 +59,21 @@ async function offlineContentHTML() { return `${messages.title}
${messages.header}
v${_VERSION_}
`; } -globalThis.addEventListener('install', () => { - // ev.waitUntil(globalThis.skipWaiting()); +globalThis.addEventListener('install', (ev) => { + // 次の問題が発生するため、ServiceWorkerAutoPreload をオプトアウトする必要がある + // https://issues.chromium.org/issues/466790291 + if ('addRoutes' in ev) { + // doc: https://developer.mozilla.org/en-US/docs/Web/API/InstallEvent/addRoutes + // @ts-expect-error 実験的なAPIなので型定義がない + ev.addRoutes({ + condition: { + // doc: https://developer.mozilla.org/ja/docs/Web/API/URLPattern + // @ts-expect-error 実験的なAPIなので型定義がない + urlPattern: new URLPattern({}), + }, + source: 'fetch-event', + }); + } }); globalThis.addEventListener('activate', ev => { From 5fb4caa14b0335ea6650405c1efe9a61b2c7cdaa Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 12 Dec 2025 08:09:12 +0000 Subject: [PATCH 12/21] Bump version to 2025.12.1-alpha.0 --- CHANGELOG.md | 2 +- package.json | 2 +- packages/misskey-js/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f223f6ac1..d0dd9b3fea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## Unreleased +## 2025.12.1 ### General - diff --git a/package.json b/package.json index d7067f705e..ed4d3e960f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "misskey", - "version": "2025.12.0", + "version": "2025.12.1-alpha.0", "codename": "nasubi", "repository": { "type": "git", diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json index c549eaf0e4..cfe114f511 100644 --- a/packages/misskey-js/package.json +++ b/packages/misskey-js/package.json @@ -1,7 +1,7 @@ { "type": "module", "name": "misskey-js", - "version": "2025.12.0", + "version": "2025.12.1-alpha.0", "description": "Misskey SDK for JavaScript", "license": "MIT", "main": "./built/index.js", From 6fa4eb8c4f9b25283553353d7015ab6080e927da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?= <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sat, 13 Dec 2025 18:16:15 +0900 Subject: [PATCH 13/21] =?UTF-8?q?fix(frontend):=20=E7=84=A1=E9=99=90?= =?UTF-8?q?=E3=82=B9=E3=82=AF=E3=83=AD=E3=83=BC=E3=83=AB=E3=81=A7=E3=81=8D?= =?UTF-8?q?=E3=82=8B=E7=AE=87=E6=89=80=E3=81=AE=E8=AA=BF=E6=95=B4=20(#1697?= =?UTF-8?q?9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/components/MkNoteDetailed.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/frontend/src/components/MkNoteDetailed.vue b/packages/frontend/src/components/MkNoteDetailed.vue index bc30360821..25a55d2d90 100644 --- a/packages/frontend/src/components/MkNoteDetailed.vue +++ b/packages/frontend/src/components/MkNoteDetailed.vue @@ -190,7 +190,7 @@ SPDX-License-Identifier: AGPL-3.0-only
- +