From 41b5677f01db37d60a53dc9671465f6f53d511c0 Mon Sep 17 00:00:00 2001 From: anatawa12 Date: Mon, 25 Aug 2025 10:04:35 +0900 Subject: [PATCH 01/11] fix: Pages will be deleted when eye-catching image is moved (#16455) --- ...756062689648-NonCascadingPageEyeCatching.js | 18 ++++++++++++++++++ packages/backend/src/models/Page.ts | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 packages/backend/migration/1756062689648-NonCascadingPageEyeCatching.js diff --git a/packages/backend/migration/1756062689648-NonCascadingPageEyeCatching.js b/packages/backend/migration/1756062689648-NonCascadingPageEyeCatching.js new file mode 100644 index 0000000000..8554cc4304 --- /dev/null +++ b/packages/backend/migration/1756062689648-NonCascadingPageEyeCatching.js @@ -0,0 +1,18 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +export class NonCascadingPageEyeCatching1756062689648 { + name = 'NonCascadingPageEyeCatching1756062689648' + + async up(queryRunner) { + await queryRunner.query(`ALTER TABLE "page" DROP CONSTRAINT "FK_a9ca79ad939bf06066b81c9d3aa"`); + await queryRunner.query(`ALTER TABLE "page" ADD CONSTRAINT "FK_a9ca79ad939bf06066b81c9d3aa" FOREIGN KEY ("eyeCatchingImageId") REFERENCES "drive_file"("id") ON DELETE SET NULL ON UPDATE NO ACTION`); + } + + async down(queryRunner) { + await queryRunner.query(`ALTER TABLE "page" DROP CONSTRAINT "FK_a9ca79ad939bf06066b81c9d3aa"`); + await queryRunner.query(`ALTER TABLE "page" ADD CONSTRAINT "FK_a9ca79ad939bf06066b81c9d3aa" FOREIGN KEY ("eyeCatchingImageId") REFERENCES "drive_file"("id") ON DELETE CASCADE ON UPDATE NO ACTION`); + } +} diff --git a/packages/backend/src/models/Page.ts b/packages/backend/src/models/Page.ts index 0b59e7a92c..d112a66c04 100644 --- a/packages/backend/src/models/Page.ts +++ b/packages/backend/src/models/Page.ts @@ -69,7 +69,7 @@ export class MiPage { public eyeCatchingImageId: MiDriveFile['id'] | null; @ManyToOne(type => MiDriveFile, { - onDelete: 'CASCADE', + onDelete: 'SET NULL', }) @JoinColumn() public eyeCatchingImage: MiDriveFile | null; From 30987b6f1f7ffc22614e4b2f587f3b1d05affe47 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon, 25 Aug 2025 10:05:15 +0900 Subject: [PATCH 02/11] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b072de50b9..9cceb6e432 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -67,6 +67,7 @@ - Fix: `notes/mentions` で場合によっては並び順が正しく返されない問題を修正 - Fix: SystemWebhook設定でsecretを空に出来ない問題を修正 - Fix: 削除されたユーザーがチャットメッセージにリアクションしている場合`chat/history`などでエラーになる問題を修正 +- Fix: Pageのアイキャッチ画像をドライブから消してもPageごと消えないように ## 2025.7.0 From 27df7f643e3bfec74ec75996ddc5a7cdb690cf5d Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon, 25 Aug 2025 10:07:42 +0900 Subject: [PATCH 03/11] fix typo Fix #16452 --- locales/index.d.ts | 2 +- locales/ja-JP.yml | 2 +- packages/frontend/src/components/MkVisitorDashboard.vue | 6 +++--- packages/frontend/src/pages/admin/branding.vue | 8 ++++---- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/locales/index.d.ts b/locales/index.d.ts index c31a3f4e83..37350a7b04 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -6633,7 +6633,7 @@ export interface Locale extends ILocale { /** * アクティビティを表示する */ - "showActivityiesForVisitor": string; + "showActivitiesForVisitor": string; "_userGeneratedContentsVisibilityForVisitor": { /** * 全て公開 diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 522f53ce4d..fd64fa23c8 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -1685,7 +1685,7 @@ _serverSettings: restartServerSetupWizardConfirm_text: "現在の一部の設定はリセットされます。" entrancePageStyle: "エントランスページのスタイル" showTimelineForVisitor: "タイムラインを表示する" - showActivityiesForVisitor: "アクティビティを表示する" + showActivitiesForVisitor: "アクティビティを表示する" _userGeneratedContentsVisibilityForVisitor: all: "全て公開" diff --git a/packages/frontend/src/components/MkVisitorDashboard.vue b/packages/frontend/src/components/MkVisitorDashboard.vue index 1f0117406e..50520b5d9d 100644 --- a/packages/frontend/src/components/MkVisitorDashboard.vue +++ b/packages/frontend/src/components/MkVisitorDashboard.vue @@ -30,7 +30,7 @@ SPDX-License-Identifier: AGPL-3.0-only -
+
{{ i18n.ts.users }}
@@ -46,7 +46,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-
+
@@ -72,7 +72,7 @@ import { openInstanceMenu } from '@/ui/_common_/common.js'; const stats = ref(null); -if (instance.clientOptions.showActivityiesForVisitor !== false) { +if (instance.clientOptions.showActivitiesForVisitor !== false) { misskeyApi('stats', {}).then((res) => { stats.value = res; }); diff --git a/packages/frontend/src/pages/admin/branding.vue b/packages/frontend/src/pages/admin/branding.vue index ac7797becc..f78a4f27bd 100644 --- a/packages/frontend/src/pages/admin/branding.vue +++ b/packages/frontend/src/pages/admin/branding.vue @@ -23,8 +23,8 @@ SPDX-License-Identifier: AGPL-3.0-only - - + + @@ -168,7 +168,7 @@ const meta = await misskeyApi('admin/meta'); const entrancePageStyle = ref(meta.clientOptions.entrancePageStyle ?? 'classic'); const showTimelineForVisitor = ref(meta.clientOptions.showTimelineForVisitor ?? true); -const showActivityiesForVisitor = ref(meta.clientOptions.showActivityiesForVisitor ?? true); +const showActivitiesForVisitor = ref(meta.clientOptions.showActivitiesForVisitor ?? true); const iconUrl = ref(meta.iconUrl); const app192IconUrl = ref(meta.app192IconUrl); const app512IconUrl = ref(meta.app512IconUrl); @@ -189,7 +189,7 @@ function save() { clientOptions: { entrancePageStyle: entrancePageStyle.value, showTimelineForVisitor: showTimelineForVisitor.value, - showActivityiesForVisitor: showActivityiesForVisitor.value, + showActivitiesForVisitor: showActivitiesForVisitor.value, }, iconUrl: iconUrl.value, app192IconUrl: app192IconUrl.value, From 3741fa4b494d5941bf487ff267b4a1a80cbe3258 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon, 25 Aug 2025 13:25:05 +0900 Subject: [PATCH 04/11] refactor --- packages/frontend/src/components/MkAnimBg.vue | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/frontend/src/components/MkAnimBg.vue b/packages/frontend/src/components/MkAnimBg.vue index e57fbcdee3..82606c9aa4 100644 --- a/packages/frontend/src/components/MkAnimBg.vue +++ b/packages/frontend/src/components/MkAnimBg.vue @@ -44,7 +44,7 @@ function initShaderProgram(gl: WebGLRenderingContext, vsSource: string, fsSource const fragmentShader = loadShader(gl, gl.FRAGMENT_SHADER, fsSource); const shaderProgram = gl.createProgram(); - if (shaderProgram == null || vertexShader == null || fragmentShader == null) return null; + if (vertexShader == null || fragmentShader == null) return null; gl.attachShader(shaderProgram, vertexShader); gl.attachShader(shaderProgram, fragmentShader); @@ -71,8 +71,10 @@ onMounted(() => { canvas.width = width; canvas.height = height; - const gl = canvas.getContext('webgl', { premultipliedAlpha: true }); - if (gl == null) return; + const maybeGl = canvas.getContext('webgl', { premultipliedAlpha: true }); + if (maybeGl == null) return; + + const gl = maybeGl; gl.clearColor(0.0, 0.0, 0.0, 0.0); gl.clear(gl.COLOR_BUFFER_BIT); @@ -229,8 +231,8 @@ onMounted(() => { gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.DYNAMIC_DRAW); if (isChromatic()) { - gl!.uniform1f(u_time, 0); - gl!.drawArrays(gl!.TRIANGLE_STRIP, 0, 4); + gl.uniform1f(u_time, 0); + gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4); } else { function render(timeStamp: number) { let sizeChanged = false; @@ -249,8 +251,8 @@ onMounted(() => { gl.viewport(0, 0, width, height); } - gl!.uniform1f(u_time, timeStamp); - gl!.drawArrays(gl!.TRIANGLE_STRIP, 0, 4); + gl.uniform1f(u_time, timeStamp); + gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4); handle = window.requestAnimationFrame(render); } From f4baa973bfdd48f3f33abdf49c20804fa86bd7b9 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon, 25 Aug 2025 13:26:41 +0900 Subject: [PATCH 05/11] refactor --- packages/frontend/src/components/MkDrive.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/src/components/MkDrive.vue b/packages/frontend/src/components/MkDrive.vue index 8a33dfb842..25c10a65cf 100644 --- a/packages/frontend/src/components/MkDrive.vue +++ b/packages/frontend/src/components/MkDrive.vue @@ -363,7 +363,7 @@ function onDrop(ev: DragEvent) { //#endregion } -function onUploadRequested(files: File[], folder: Misskey.entities.DriveFolder | null) { +function onUploadRequested(files: File[], folder?: Misskey.entities.DriveFolder | null) { os.launchUploader(files, { folderId: folder?.id ?? null, }); From caf6a3ab811ac4257d5f8e08c3646baa28b50edd Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon, 25 Aug 2025 13:34:17 +0900 Subject: [PATCH 06/11] refactor --- packages/frontend/src/components/MkDriveFileThumbnail.vue | 2 +- packages/frontend/src/components/MkFlashPreview.vue | 2 +- packages/frontend/src/components/MkLink.vue | 6 +++--- packages/frontend/src/components/MkUrlPreviewPopup.vue | 8 ++++---- packages/frontend/src/components/global/MkUrl.vue | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/frontend/src/components/MkDriveFileThumbnail.vue b/packages/frontend/src/components/MkDriveFileThumbnail.vue index 88afdef114..3933421fc0 100644 --- a/packages/frontend/src/components/MkDriveFileThumbnail.vue +++ b/packages/frontend/src/components/MkDriveFileThumbnail.vue @@ -22,7 +22,7 @@ SPDX-License-Identifier: AGPL-3.0-only :forceBlurhash="forceBlurhash" />

- +

{{ userName(flash.user) }}

diff --git a/packages/frontend/src/components/MkLink.vue b/packages/frontend/src/components/MkLink.vue index 309ef727da..a8545f9445 100644 --- a/packages/frontend/src/components/MkLink.vue +++ b/packages/frontend/src/components/MkLink.vue @@ -17,11 +17,11 @@ SPDX-License-Identifier: AGPL-3.0-only