diff --git a/CHANGELOG.md b/CHANGELOG.md index 9053d0e803..0707ba24d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,12 @@ - Fix: システムアカウントが削除できる問題を修正 ### Client -- +- Enhance: モデレーターがセンシティブ設定を変更する際に確認ダイアログを出すように +- Enhance: ユーザーページのノート一覧と前後のノート表示でチャンネルのノートを含めるように +- Enhance: 「UIのアニメーションを減らす」で画面上のエフェクトも減らせるように +- Fix: 削除して編集の削除タイミングを投稿後になるように `#14498` +- Fix: フォローされたときのメッセージがちらつくことがある問題を修正 +- Fix: 投稿ダイアログがサイズ限界を超えた際にスクロールできない問題を修正 ### Server - Fix: 特定のケースでActivityPubの処理がデッドロックになることがあるのを修正 diff --git a/locales/index.d.ts b/locales/index.d.ts index dfdc5a3b37..947b577792 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -5262,6 +5262,14 @@ export interface Locale extends ILocale { * " {emoji} " をリアクションしますか? */ "reactAreYouSure": ParameterizedString<"emoji">; + /** + * このメディアをセンシティブとして設定しますか? + */ + "markAsSensitiveConfirm": string; + /** + * このメディアのセンシティブ指定を解除しますか? + */ + "unmarkAsSensitiveConfirm": string; "_accountSettings": { /** * コンテンツの表示にログインを必須にする diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index c3d6fa5a41..fbe4d98896 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -1311,6 +1311,8 @@ federationSpecified: "このサーバーはホワイトリスト連合で運用 federationDisabled: "このサーバーは連合が無効化されています。他のサーバーのユーザーとやり取りすることはできません。" confirmOnReact: "リアクションする際に確認する" reactAreYouSure: "\" {emoji} \" をリアクションしますか?" +markAsSensitiveConfirm: "このメディアをセンシティブとして設定しますか?" +unmarkAsSensitiveConfirm: "このメディアのセンシティブ指定を解除しますか?" _accountSettings: requireSigninToViewContents: "コンテンツの表示にログインを必須にする" diff --git a/packages/frontend-embed/package.json b/packages/frontend-embed/package.json index 416aa89bc0..9d6443bd1f 100644 --- a/packages/frontend-embed/package.json +++ b/packages/frontend-embed/package.json @@ -25,7 +25,7 @@ "misskey-js": "workspace:*", "frontend-shared": "workspace:*", "punycode.js": "2.3.1", - "rollup": "4.34.8", + "rollup": "4.34.9", "sass": "1.85.1", "shiki": "3.1.0", "tinycolor2": "1.6.0", @@ -42,7 +42,7 @@ "@testing-library/vue": "8.1.0", "@types/estree": "1.0.6", "@types/micromatch": "4.0.9", - "@types/node": "22.13.7", + "@types/node": "22.13.8", "@types/punycode.js": "npm:@types/punycode@2.1.4", "@types/tinycolor2": "1.4.6", "@types/ws": "8.5.14", @@ -60,11 +60,11 @@ "micromatch": "4.0.8", "msw": "2.7.3", "nodemon": "3.1.9", - "prettier": "3.5.2", + "prettier": "3.5.3", "start-server-and-test": "2.0.10", "vite-plugin-turbosnap": "1.0.3", - "vue-component-type-helpers": "2.2.4", + "vue-component-type-helpers": "2.2.8", "vue-eslint-parser": "9.4.3", - "vue-tsc": "2.2.4" + "vue-tsc": "2.2.8" } } diff --git a/packages/frontend-shared/package.json b/packages/frontend-shared/package.json index 10df3b3999..392571582a 100644 --- a/packages/frontend-shared/package.json +++ b/packages/frontend-shared/package.json @@ -21,7 +21,7 @@ "lint": "pnpm typecheck && pnpm eslint" }, "devDependencies": { - "@types/node": "22.13.7", + "@types/node": "22.13.8", "@typescript-eslint/eslint-plugin": "8.25.0", "@typescript-eslint/parser": "8.25.0", "esbuild": "0.25.0", diff --git a/packages/frontend/package.json b/packages/frontend/package.json index c4b81b847d..ddf2a20189 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -42,7 +42,7 @@ "chartjs-plugin-zoom": "2.2.0", "chromatic": "11.26.1", "compare-versions": "6.1.1", - "cropperjs": "2.0.0-rc.2", + "cropperjs": "2.0.0", "date-fns": "4.1.0", "estree-walker": "3.0.3", "eventemitter3": "5.0.1", @@ -58,7 +58,7 @@ "misskey-reversi": "workspace:*", "photoswipe": "5.4.4", "punycode.js": "2.3.1", - "rollup": "4.34.8", + "rollup": "4.34.9", "sanitize-html": "2.14.0", "sass": "1.85.1", "shiki": "3.1.0", @@ -78,30 +78,30 @@ }, "devDependencies": { "@misskey-dev/summaly": "5.2.0", - "@storybook/addon-actions": "8.6.2", - "@storybook/addon-essentials": "8.6.2", - "@storybook/addon-interactions": "8.6.2", - "@storybook/addon-links": "8.6.2", - "@storybook/addon-mdx-gfm": "8.6.2", - "@storybook/addon-storysource": "8.6.2", - "@storybook/blocks": "8.6.2", - "@storybook/components": "8.6.2", - "@storybook/core-events": "8.6.2", - "@storybook/manager-api": "8.6.2", - "@storybook/preview-api": "8.6.2", - "@storybook/react": "8.6.2", - "@storybook/react-vite": "8.6.2", - "@storybook/test": "8.6.2", - "@storybook/theming": "8.6.2", - "@storybook/types": "8.6.2", - "@storybook/vue3": "8.6.2", - "@storybook/vue3-vite": "8.6.2", + "@storybook/addon-actions": "8.6.3", + "@storybook/addon-essentials": "8.6.3", + "@storybook/addon-interactions": "8.6.3", + "@storybook/addon-links": "8.6.3", + "@storybook/addon-mdx-gfm": "8.6.3", + "@storybook/addon-storysource": "8.6.3", + "@storybook/blocks": "8.6.3", + "@storybook/components": "8.6.3", + "@storybook/core-events": "8.6.3", + "@storybook/manager-api": "8.6.3", + "@storybook/preview-api": "8.6.3", + "@storybook/react": "8.6.3", + "@storybook/react-vite": "8.6.3", + "@storybook/test": "8.6.3", + "@storybook/theming": "8.6.3", + "@storybook/types": "8.6.3", + "@storybook/vue3": "8.6.3", + "@storybook/vue3-vite": "8.6.3", "@testing-library/vue": "8.1.0", "@types/canvas-confetti": "1.9.0", "@types/estree": "1.0.6", "@types/matter-js": "0.19.8", "@types/micromatch": "4.0.9", - "@types/node": "22.13.7", + "@types/node": "22.13.8", "@types/punycode.js": "npm:@types/punycode@2.1.4", "@types/sanitize-html": "2.13.0", "@types/seedrandom": "3.0.8", @@ -124,18 +124,18 @@ "msw": "2.7.3", "msw-storybook-addon": "2.0.4", "nodemon": "3.1.9", - "prettier": "3.5.2", + "prettier": "3.5.3", "react": "19.0.0", "react-dom": "19.0.0", "seedrandom": "3.0.5", "start-server-and-test": "2.0.10", - "storybook": "8.6.2", + "storybook": "8.6.3", "storybook-addon-misskey-theme": "github:misskey-dev/storybook-addon-misskey-theme", "vite-plugin-turbosnap": "1.0.3", "vitest": "3.0.7", "vitest-fetch-mock": "0.4.4", - "vue-component-type-helpers": "2.2.4", + "vue-component-type-helpers": "2.2.8", "vue-eslint-parser": "9.4.3", - "vue-tsc": "2.2.4" + "vue-tsc": "2.2.8" } } diff --git a/packages/frontend/src/components/MkEmojiPicker.vue b/packages/frontend/src/components/MkEmojiPicker.vue index 5da161dae8..62a1000674 100644 --- a/packages/frontend/src/components/MkEmojiPicker.vue +++ b/packages/frontend/src/components/MkEmojiPicker.vue @@ -413,7 +413,7 @@ function computeButtonTitle(ev: MouseEvent): void { function chosen(emoji: string | Misskey.entities.EmojiSimple | UnicodeEmojiDef, ev?: MouseEvent) { const el = ev && (ev.currentTarget ?? ev.target) as HTMLElement | null | undefined; - if (el) { + if (el && defaultStore.state.animation) { const rect = el.getBoundingClientRect(); const x = rect.left + (el.offsetWidth / 2); const y = rect.top + (el.offsetHeight / 2); diff --git a/packages/frontend/src/components/MkMediaAudio.vue b/packages/frontend/src/components/MkMediaAudio.vue index 8cf88abaaf..3d2795b37a 100644 --- a/packages/frontend/src/components/MkMediaAudio.vue +++ b/packages/frontend/src/components/MkMediaAudio.vue @@ -259,7 +259,14 @@ function showMenu(ev: MouseEvent) { }); } -function toggleSensitive(file: Misskey.entities.DriveFile) { +async function toggleSensitive(file: Misskey.entities.DriveFile) { + const { canceled } = await os.confirm({ + type: 'warning', + text: file.isSensitive ? i18n.ts.unmarkAsSensitiveConfirm : i18n.ts.markAsSensitiveConfirm, + }); + + if (canceled) return; + os.apiWithDialog('drive/files/update', { fileId: file.id, isSensitive: !file.isSensitive, diff --git a/packages/frontend/src/components/MkMediaImage.vue b/packages/frontend/src/components/MkMediaImage.vue index 3645a4a66e..8ab990b926 100644 --- a/packages/frontend/src/components/MkMediaImage.vue +++ b/packages/frontend/src/components/MkMediaImage.vue @@ -124,11 +124,21 @@ function showMenu(ev: MouseEvent) { if (iAmModerator) { menuItems.push({ - text: i18n.ts.markAsSensitive, + text: props.image.isSensitive ? i18n.ts.unmarkAsSensitive : i18n.ts.markAsSensitive, icon: 'ti ti-eye-exclamation', danger: true, - action: () => { - os.apiWithDialog('drive/files/update', { fileId: props.image.id, isSensitive: true }); + action: async () => { + const { canceled } = await os.confirm({ + type: 'warning', + text: props.image.isSensitive ? i18n.ts.unmarkAsSensitiveConfirm : i18n.ts.markAsSensitiveConfirm, + }); + + if (canceled) return; + + os.apiWithDialog('drive/files/update', { + fileId: props.image.id, + isSensitive: !props.image.isSensitive, + }); }, }); } diff --git a/packages/frontend/src/components/MkMediaVideo.vue b/packages/frontend/src/components/MkMediaVideo.vue index 26372e1a52..682da22711 100644 --- a/packages/frontend/src/components/MkMediaVideo.vue +++ b/packages/frontend/src/components/MkMediaVideo.vue @@ -284,7 +284,14 @@ function showMenu(ev: MouseEvent) { }); } -function toggleSensitive(file: Misskey.entities.DriveFile) { +async function toggleSensitive(file: Misskey.entities.DriveFile) { + const { canceled } = await os.confirm({ + type: 'warning', + text: file.isSensitive ? i18n.ts.unmarkAsSensitiveConfirm : i18n.ts.markAsSensitiveConfirm, + }); + + if (canceled) return; + os.apiWithDialog('drive/files/update', { fileId: file.id, isSensitive: !file.isSensitive, diff --git a/packages/frontend/src/components/MkNote.vue b/packages/frontend/src/components/MkNote.vue index 193dfe5b7e..8e1d854660 100644 --- a/packages/frontend/src/components/MkNote.vue +++ b/packages/frontend/src/components/MkNote.vue @@ -479,7 +479,7 @@ function react(): void { reaction: '❤️', }); const el = reactButton.value; - if (el) { + if (el && defaultStore.state.animation) { const rect = el.getBoundingClientRect(); const x = rect.left + (el.offsetWidth / 2); const y = rect.top + (el.offsetHeight / 2); diff --git a/packages/frontend/src/components/MkNoteDetailed.vue b/packages/frontend/src/components/MkNoteDetailed.vue index d5bd4ad133..27d8a399cc 100644 --- a/packages/frontend/src/components/MkNoteDetailed.vue +++ b/packages/frontend/src/components/MkNoteDetailed.vue @@ -442,7 +442,7 @@ function react(): void { reaction: '❤️', }); const el = reactButton.value; - if (el) { + if (el && defaultStore.state.animation) { const rect = el.getBoundingClientRect(); const x = rect.left + (el.offsetWidth / 2); const y = rect.top + (el.offsetHeight / 2); diff --git a/packages/frontend/src/components/MkPostForm.vue b/packages/frontend/src/components/MkPostForm.vue index ad0a332f99..255aa6ca19 100644 --- a/packages/frontend/src/components/MkPostForm.vue +++ b/packages/frontend/src/components/MkPostForm.vue @@ -67,7 +67,7 @@ SPDX-License-Identifier: AGPL-3.0-only {{ i18n.ts.notSpecifiedMentionWarning }} -
-
{{ maxCwTextLength - cwTextLength }}
+
{{ maxCwTextLength - cwTextLength }}
@@ -104,18 +104,18 @@ SPDX-License-Identifier: AGPL-3.0-only