From 5b994b3e03345c4d701e1d70eab6c30afe669d0e Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sat, 6 Sep 2025 12:41:27 +0900 Subject: [PATCH 1/3] =?UTF-8?q?fix(frontend):=20=E3=83=97=E3=83=AD?= =?UTF-8?q?=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E3=82=92=E5=BE=A9=E5=85=83?= =?UTF-8?q?=E5=BE=8C=E3=82=A2=E3=82=AB=E3=82=A6=E3=83=B3=E3=83=88=E3=81=AE?= =?UTF-8?q?=E5=88=87=E3=82=8A=E6=9B=BF=E3=81=88=E3=81=8C=E3=81=A7=E3=81=8D?= =?UTF-8?q?=E3=81=AA=E3=81=84=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 Fix #16508 --- CHANGELOG.md | 1 + packages/frontend/src/accounts.ts | 21 +++++++++++++++++-- .../src/components/MkSignin.input.vue | 4 +++- packages/frontend/src/components/MkSignin.vue | 3 +++ .../src/components/MkSigninDialog.vue | 4 +++- 5 files changed, 29 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6abe71ae73..d7df4a3465 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ - Enhance: クリップ/リスト/アンテナ/ロール追加系メニュー項目において、表示件数を拡張 - Fix: プッシュ通知を有効にできない問題を修正 - Fix: RSSティッカーウィジェットが正しく動作しない問題を修正 +- Fix: プロファイルを復元後アカウントの切り替えができない問題を修正 - Fix: エラー画像が横に引き伸ばされてしまう問題に対応 ### Server diff --git a/packages/frontend/src/accounts.ts b/packages/frontend/src/accounts.ts index afa2ecb911..60f7cd0b4b 100644 --- a/packages/frontend/src/accounts.ts +++ b/packages/frontend/src/accounts.ts @@ -251,13 +251,30 @@ export async function openAccountMenu(opts: { } }, }; - } else { + } else { // プロファイルを復元した場合などはアカウントのトークンや詳細情報はstoreにキャッシュされていない return { type: 'button' as const, text: username, active: opts.active != null ? opts.active === id : false, action: async () => { - // TODO + const { dispose } = popup(defineAsyncComponent(() => import('@/components/MkSigninDialog.vue')), { + initialUsername: username, + }, { + done: async (res: Misskey.entities.SigninFlowResponse & { finished: true }) => { + store.set('accountTokens', { ...store.s.accountTokens, [host + '/' + res.id]: res.i }); + + if (callback) { + fetchAccount(res.i, id).then(account => { + callback(account); + }); + } else { + switchAccount(host, id); + } + }, + closed: () => { + dispose(); + }, + }); }, }; } diff --git a/packages/frontend/src/components/MkSignin.input.vue b/packages/frontend/src/components/MkSignin.input.vue index aacd1eae2a..4c73eab3f5 100644 --- a/packages/frontend/src/components/MkSignin.input.vue +++ b/packages/frontend/src/components/MkSignin.input.vue @@ -69,9 +69,11 @@ import MkInfo from '@/components/MkInfo.vue'; const props = withDefaults(defineProps<{ message?: string, openOnRemote?: OpenOnRemoteOptions, + initialUsername?: string; }>(), { message: '', openOnRemote: undefined, + initialUsername: undefined, }); const emit = defineEmits<{ @@ -81,7 +83,7 @@ const emit = defineEmits<{ const host = toUnicode(configHost); -const username = ref(''); +const username = ref(props.initialUsername ?? ''); //#region Open on remote function openRemote(options: OpenOnRemoteOptions, targetHost?: string): void { diff --git a/packages/frontend/src/components/MkSignin.vue b/packages/frontend/src/components/MkSignin.vue index b0fbe3c490..93a29b0b54 100644 --- a/packages/frontend/src/components/MkSignin.vue +++ b/packages/frontend/src/components/MkSignin.vue @@ -20,6 +20,7 @@ SPDX-License-Identifier: AGPL-3.0-only key="input" :message="message" :openOnRemote="openOnRemote" + :initialUsername="initialUsername" @usernameSubmitted="onUsernameSubmitted" @passkeyClick="onPasskeyLogin" @@ -89,10 +90,12 @@ const props = withDefaults(defineProps<{ autoSet?: boolean; message?: string, openOnRemote?: OpenOnRemoteOptions, + initialUsername?: string; }>(), { autoSet: false, message: '', openOnRemote: undefined, + initialUsername: undefined, }); const page = ref<'input' | 'password' | 'totp' | 'passkey'>('input'); diff --git a/packages/frontend/src/components/MkSigninDialog.vue b/packages/frontend/src/components/MkSigninDialog.vue index 60c99880cd..77141f1714 100644 --- a/packages/frontend/src/components/MkSigninDialog.vue +++ b/packages/frontend/src/components/MkSigninDialog.vue @@ -16,7 +16,7 @@ SPDX-License-Identifier: AGPL-3.0-only
- +
@@ -34,10 +34,12 @@ withDefaults(defineProps<{ autoSet?: boolean; message?: string, openOnRemote?: OpenOnRemoteOptions, + initialUsername?: string; }>(), { autoSet: false, message: '', openOnRemote: undefined, + initialUsername: undefined, }); const emit = defineEmits<{ From 6cf1f8663605b3be58979b8dcbc22df3296c3fa5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 6 Sep 2025 03:42:29 +0000 Subject: [PATCH 2/3] Bump version to 2025.9.0-alpha.1 --- package.json | 2 +- packages/misskey-js/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index df1b3892bb..faafb9c264 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "misskey", - "version": "2025.9.0-alpha.0", + "version": "2025.9.0-alpha.1", "codename": "nasubi", "repository": { "type": "git", diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json index e3122622c6..344b625ca7 100644 --- a/packages/misskey-js/package.json +++ b/packages/misskey-js/package.json @@ -1,7 +1,7 @@ { "type": "module", "name": "misskey-js", - "version": "2025.9.0-alpha.0", + "version": "2025.9.0-alpha.1", "description": "Misskey SDK for JavaScript", "license": "MIT", "main": "./built/index.js", From 788c5660ba10c55284c40830d412801ec3b3dcd6 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, 6 Sep 2025 14:46:24 +0900 Subject: [PATCH 3/3] =?UTF-8?q?enhance(frontend):=20=E3=83=95=E3=83=AD?= =?UTF-8?q?=E3=83=B3=E3=83=88=E3=82=A8=E3=83=B3=E3=83=89=E3=81=AE=E3=82=AD?= =?UTF-8?q?=E3=83=A3=E3=83=83=E3=82=B7=E3=83=A5=E3=82=AF=E3=83=AA=E3=82=A2?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E3=81=A7=E3=83=96=E3=83=A9=E3=82=A6=E3=82=B6?= =?UTF-8?q?=E3=81=AE=E5=86=85=E9=83=A8=E3=82=AD=E3=83=A3=E3=83=83=E3=82=B7?= =?UTF-8?q?=E3=83=A5=E3=82=82=E5=89=8A=E9=99=A4=E3=81=99=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB=20(#16522)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * enhance(frontend): フロントエンドのキャッシュクリア操作でブラウザの内部キャッシュも削除するように * 削除するキャッシュを増やす * Update Changelog * fix: 何らかのエラーがあっても無視するように --- CHANGELOG.md | 1 + .../backend/src/server/api/ApiServerService.ts | 11 +++++++++++ packages/frontend/src/utility/clear-cache.ts | 4 ++++ packages/misskey-js/etc/misskey-js.api.md | 4 ++++ packages/misskey-js/src/api.types.ts | 14 ++++++++++++-- 5 files changed, 32 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d7df4a3465..5ee7d4ec96 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - Enhance: AiScriptAppウィジェットで構文エラーを検知してもダイアログではなくウィジェット内にエラーを表示するように - Enhance: /flushページでサイトキャッシュをクリアできるようになりました - Enhance: クリップ/リスト/アンテナ/ロール追加系メニュー項目において、表示件数を拡張 +- Enhance: 「キャッシュを削除」ボタンでブラウザの内部キャッシュの削除も行えるように - Fix: プッシュ通知を有効にできない問題を修正 - Fix: RSSティッカーウィジェットが正しく動作しない問題を修正 - Fix: プロファイルを復元後アカウントの切り替えができない問題を修正 diff --git a/packages/backend/src/server/api/ApiServerService.ts b/packages/backend/src/server/api/ApiServerService.ts index 32818003ad..57d74ef2b1 100644 --- a/packages/backend/src/server/api/ApiServerService.ts +++ b/packages/backend/src/server/api/ApiServerService.ts @@ -176,6 +176,17 @@ export class ApiServerService { } }); + fastify.all('/clear-browser-cache', (request, reply) => { + if (['GET', 'POST'].includes(request.method)) { + reply.header('Clear-Site-Data', '"cache", "prefetchCache", "prerenderCache", "executionContexts"'); + reply.code(204); + reply.send(); + } else { + reply.code(405); + reply.send(); + } + }); + // Make sure any unknown path under /api returns HTTP 404 Not Found, // because otherwise ClientServerService will return the base client HTML // page with HTTP 200. diff --git a/packages/frontend/src/utility/clear-cache.ts b/packages/frontend/src/utility/clear-cache.ts index 8a62265438..8f1f73466f 100644 --- a/packages/frontend/src/utility/clear-cache.ts +++ b/packages/frontend/src/utility/clear-cache.ts @@ -4,6 +4,7 @@ */ import { unisonReload } from '@/utility/unison-reload.js'; +import { misskeyApiGet } from '@/utility/misskey-api.js'; import * as os from '@/os.js'; import { miLocalStorage } from '@/local-storage.js'; import { fetchCustomEmojis } from '@/custom-emojis.js'; @@ -16,6 +17,9 @@ export async function clearCache() { miLocalStorage.removeItem('theme'); miLocalStorage.removeItem('emojis'); miLocalStorage.removeItem('lastEmojisFetchedAt'); + await misskeyApiGet('clear-browser-cache', {}).catch(() => { + // ignore + }); await fetchInstance(true); await fetchCustomEmojis(true); unisonReload(); diff --git a/packages/misskey-js/etc/misskey-js.api.md b/packages/misskey-js/etc/misskey-js.api.md index d901232d8f..ac405c1fb0 100644 --- a/packages/misskey-js/etc/misskey-js.api.md +++ b/packages/misskey-js/etc/misskey-js.api.md @@ -1449,6 +1449,10 @@ export type Endpoints = Overwrite; res: AdminRolesCreateResponse; }; + 'clear-browser-cache': { + req: EmptyRequest; + res: EmptyResponse; + }; }>; // @public (undocumented) diff --git a/packages/misskey-js/src/api.types.ts b/packages/misskey-js/src/api.types.ts index fa803194bf..a842f0e47c 100644 --- a/packages/misskey-js/src/api.types.ts +++ b/packages/misskey-js/src/api.types.ts @@ -1,6 +1,12 @@ import { Endpoints as Gen } from './autogen/endpoint.js'; import { UserDetailed } from './autogen/models.js'; -import { AdminRolesCreateRequest, AdminRolesCreateResponse, UsersShowRequest } from './autogen/entities.js'; +import { + AdminRolesCreateRequest, + AdminRolesCreateResponse, + EmptyRequest, + EmptyResponse, + UsersShowRequest, +} from './autogen/entities.js'; import { PartialRolePolicyOverride, SigninFlowRequest, @@ -106,6 +112,10 @@ export type Endpoints = Overwrite< 'admin/roles/create': { req: Overwrite; res: AdminRolesCreateResponse; - } + }, + 'clear-browser-cache': { + req: EmptyRequest; + res: EmptyResponse; + }, } >;