From 11a6bd890cc752ee7abd2890773054743433eae1 Mon Sep 17 00:00:00 2001
From: tamaina <tamaina@hotmail.co.jp>
Date: Sun, 12 Jun 2022 19:28:13 +0900
Subject: [PATCH 1/8] fix: some fixes of multiple notification read (#8819)

* fix: limit multiple notification read

* fix

* fix
---
 .../src/server/api/common/read-notification.ts       |  2 ++
 .../src/server/api/endpoints/notifications/read.ts   |  6 +++++-
 packages/sw/src/scripts/notification-read.ts         | 12 +++++++++++-
 3 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/packages/backend/src/server/api/common/read-notification.ts b/packages/backend/src/server/api/common/read-notification.ts
index 0dad35bcc2..8c4ba41a36 100644
--- a/packages/backend/src/server/api/common/read-notification.ts
+++ b/packages/backend/src/server/api/common/read-notification.ts
@@ -9,6 +9,8 @@ export async function readNotification(
 	userId: User['id'],
 	notificationIds: Notification['id'][]
 ) {
+	if (notificationIds.length === 0) return;
+
 	// Update documents
 	await Notifications.update({
 		id: In(notificationIds),
diff --git a/packages/backend/src/server/api/endpoints/notifications/read.ts b/packages/backend/src/server/api/endpoints/notifications/read.ts
index 65e96d4862..e7839b2460 100644
--- a/packages/backend/src/server/api/endpoints/notifications/read.ts
+++ b/packages/backend/src/server/api/endpoints/notifications/read.ts
@@ -34,7 +34,11 @@ export const paramDef = {
 		{
 			type: 'object',
 			properties: {
-				notificationIds: { type: 'array', items: { type: 'string', format: 'misskey:id' } },
+				notificationIds: {
+					type: 'array',
+					items: { type: 'string', format: 'misskey:id' },
+					maxItems: 100,
+				},
 			},
 			required: ['notificationIds'],
 		},
diff --git a/packages/sw/src/scripts/notification-read.ts b/packages/sw/src/scripts/notification-read.ts
index 8433f902b4..5c1de89088 100644
--- a/packages/sw/src/scripts/notification-read.ts
+++ b/packages/sw/src/scripts/notification-read.ts
@@ -37,12 +37,22 @@ class SwNotificationReadManager {
 
 		account.queue.push(data.body.id as string);
 
+		if (account.queue.length >= 20) {
+			if (account.timeout) clearTimeout(account.timeout);
+			const notificationIds = account.queue;
+			account.queue = [];
+			await api('notifications/read', data.userId, { notificationIds });
+			return;
+		}
+
 		// 最後の呼び出しから200ms待ってまとめて処理する
 		if (account.timeout) clearTimeout(account.timeout);
 		account.timeout = setTimeout(() => {
 			account.timeout = null;
 
-			api('notifications/read', data.userId, { notificationIds: account.queue });
+			const notificationIds = account.queue;
+			account.queue = [];
+			api('notifications/read', data.userId, { notificationIds });
 		}, 200);
 	}
 }

From a8e7b1a303234b14f2ed2758efde649d7c5bf607 Mon Sep 17 00:00:00 2001
From: syuilo <Syuilotan@yahoo.co.jp>
Date: Sun, 12 Jun 2022 19:50:43 +0900
Subject: [PATCH 2/8] =?UTF-8?q?fix(client):=20=E3=83=87=E3=83=83=E3=82=AD?=
 =?UTF-8?q?=E3=81=A7=E3=82=A6=E3=82=A3=E3=82=B8=E3=82=A7=E3=83=83=E3=83=88?=
 =?UTF-8?q?=E3=81=AE=E6=83=85=E5=A0=B1=E3=81=8C=E4=BF=9D=E5=AD=98=E3=81=95?=
 =?UTF-8?q?=E3=82=8C=E3=81=AA=E3=81=84=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE?=
 =?UTF-8?q?=E6=AD=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Fix #8818
---
 CHANGELOG.md                              | 7 +++++++
 packages/client/src/ui/deck/deck-store.ts | 2 +-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index eb16a1675d..3035e8d022 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,13 @@
 You should also include the user name that made the change.
 -->
 
+## 12.x.x (unreleased)
+
+### Improvements
+
+### Bugfixes
+- Client: デッキでウィジェットの情報が保存されない問題を修正 @syuilo
+
 ## 12.111.0 (2022/06/11)
 ### Improvements
 - Supports Unicode Emoji 14.0 @mei23
diff --git a/packages/client/src/ui/deck/deck-store.ts b/packages/client/src/ui/deck/deck-store.ts
index c847bf2b43..b9bbbb96f2 100644
--- a/packages/client/src/ui/deck/deck-store.ts
+++ b/packages/client/src/ui/deck/deck-store.ts
@@ -276,7 +276,7 @@ export function setColumnWidgets(id: Column['id'], widgets: ColumnWidget[]) {
 	saveDeck();
 }
 
-export function updateColumnWidget(id: Column['id'], widgetId: string, WidgetData: any) {
+export function updateColumnWidget(id: Column['id'], widgetId: string, widgetData: any) {
 	const columns = copy(deckStore.state.columns);
 	const columnIndex = deckStore.state.columns.findIndex(c => c.id === id);
 	const column = copy(deckStore.state.columns[columnIndex]);

From 4e89d41f048beb6c962155e599acf21af8cda0fe Mon Sep 17 00:00:00 2001
From: syuilo <Syuilotan@yahoo.co.jp>
Date: Sun, 12 Jun 2022 19:50:47 +0900
Subject: [PATCH 3/8] lint

---
 packages/client/src/ui/deck/deck-store.ts     | 24 +++++++++----------
 .../client/src/ui/deck/widgets-column.vue     |  2 +-
 2 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/packages/client/src/ui/deck/deck-store.ts b/packages/client/src/ui/deck/deck-store.ts
index b9bbbb96f2..03d57c3467 100644
--- a/packages/client/src/ui/deck/deck-store.ts
+++ b/packages/client/src/ui/deck/deck-store.ts
@@ -1,9 +1,9 @@
 import { throttle } from 'throttle-debounce';
+import { markRaw } from 'vue';
+import { notificationTypes } from 'misskey-js';
+import { Storage } from '../../pizzax';
 import { i18n } from '@/i18n';
 import { api } from '@/os';
-import { markRaw } from 'vue';
-import { Storage } from '../../pizzax';
-import { notificationTypes } from 'misskey-js';
 
 type ColumnWidget = {
 	name: string;
@@ -32,35 +32,35 @@ function copy<T>(x: T): T {
 export const deckStore = markRaw(new Storage('deck', {
 	profile: {
 		where: 'deviceAccount',
-		default: 'default'
+		default: 'default',
 	},
 	columns: {
 		where: 'deviceAccount',
-		default: [] as Column[]
+		default: [] as Column[],
 	},
 	layout: {
 		where: 'deviceAccount',
-		default: [] as Column['id'][][]
+		default: [] as Column['id'][][],
 	},
 	columnAlign: {
 		where: 'deviceAccount',
-		default: 'left' as 'left' | 'right' | 'center'
+		default: 'left' as 'left' | 'right' | 'center',
 	},
 	alwaysShowMainColumn: {
 		where: 'deviceAccount',
-		default: true
+		default: true,
 	},
 	navWindow: {
 		where: 'deviceAccount',
-		default: true
+		default: true,
 	},
 	columnMargin: {
 		where: 'deviceAccount',
-		default: 16
+		default: 16,
 	},
 	columnHeaderHeight: {
 		where: 'deviceAccount',
-		default: 42
+		default: 42,
 	},
 }));
 
@@ -109,7 +109,7 @@ export const saveDeck = throttle(1000, () => {
 		value: {
 			columns: deckStore.reactiveState.columns.value,
 			layout: deckStore.reactiveState.layout.value,
-		}
+		},
 	});
 });
 
diff --git a/packages/client/src/ui/deck/widgets-column.vue b/packages/client/src/ui/deck/widgets-column.vue
index 10c6f5adf6..9b10f602fb 100644
--- a/packages/client/src/ui/deck/widgets-column.vue
+++ b/packages/client/src/ui/deck/widgets-column.vue
@@ -10,9 +10,9 @@
 
 <script lang="ts" setup>
 import { } from 'vue';
-import XWidgets from '@/components/widgets.vue';
 import XColumn from './column.vue';
 import { addColumnWidget, Column, removeColumnWidget, setColumnWidgets, updateColumnWidget } from './deck-store';
+import XWidgets from '@/components/widgets.vue';
 
 const props = defineProps<{
 	column: Column;

From b15dbb818f89527fc955079fa5ef7a0f49fe7f4f Mon Sep 17 00:00:00 2001
From: futchitwo <74236683+futchitwo@users.noreply.github.com>
Date: Sun, 12 Jun 2022 19:53:21 +0900
Subject: [PATCH 4/8] Fix(client): fix wrong gallery page component (#8815)

---
 packages/client/src/router.ts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/packages/client/src/router.ts b/packages/client/src/router.ts
index db39dd741c..96c793166c 100644
--- a/packages/client/src/router.ts
+++ b/packages/client/src/router.ts
@@ -41,7 +41,7 @@ const defaultRoutes = [
 	{ path: '/gallery', component: page(() => import('./pages/gallery/index.vue')) },
 	{ path: '/gallery/new', component: page(() => import('./pages/gallery/edit.vue')) },
 	{ path: '/gallery/:postId/edit', component: page(() => import('./pages/gallery/edit.vue')), props: route => ({ postId: route.params.postId }) },
-	{ path: '/gallery/:postId', component: page(() => import('./pages/gallery/edit.vue')), props: route => ({ postId: route.params.postId }) },
+	{ path: '/gallery/:postId', component: page(() => import('./pages/gallery/post.vue')), props: route => ({ postId: route.params.postId }) },
 	{ path: '/channels', component: page('channels') },
 	{ path: '/channels/new', component: page('channel-editor') },
 	{ path: '/channels/:channelId/edit', component: page('channel-editor'), props: true },

From 2a2f9b580181aa2c6bb15a79b2ee290727295df5 Mon Sep 17 00:00:00 2001
From: syuilo <Syuilotan@yahoo.co.jp>
Date: Sun, 12 Jun 2022 19:53:33 +0900
Subject: [PATCH 5/8] New translations ja-JP.yml (Korean) (#8812)

---
 locales/ko-KR.yml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml
index 4e7369a5ef..e0a839a2c8 100644
--- a/locales/ko-KR.yml
+++ b/locales/ko-KR.yml
@@ -842,6 +842,9 @@ oneDay: "1일"
 oneWeek: "일주일"
 reflectMayTakeTime: "반영되기까지 시간이 걸릴 수 있습니다."
 failedToFetchAccountInformation: "계정 정보를 가져오지 못했습니다"
+rateLimitExceeded: "요청 제한 횟수를 초과하였습니다"
+cropImage: "이미지 자르기"
+cropImageAsk: "이미지를 자르시겠습니까?"
 _emailUnavailable:
   used: "이 메일 주소는 사용중입니다"
   format: "형식이 올바르지 않습니다"

From d4484b13d5bd86aa8c92d66c50285e463dbd82d9 Mon Sep 17 00:00:00 2001
From: syuilo <Syuilotan@yahoo.co.jp>
Date: Sun, 12 Jun 2022 19:54:49 +0900
Subject: [PATCH 6/8] Update CHANGELOG.md

---
 CHANGELOG.md | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3035e8d022..14982ef387 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -17,6 +17,9 @@ You should also include the user name that made the change.
 - Client: デッキでウィジェットの情報が保存されない問題を修正 @syuilo
 
 ## 12.111.0 (2022/06/11)
+### Note
+- Node.js 16.15.0 or later is required
+
 ### Improvements
 - Supports Unicode Emoji 14.0 @mei23
 - プッシュ通知を複数アカウント対応に #7667 @tamaina

From 963758d8ecc7b83838c3994e42405fc0e965c799 Mon Sep 17 00:00:00 2001
From: Johann150 <johann.galle@protonmail.com>
Date: Sun, 12 Jun 2022 17:25:06 +0200
Subject: [PATCH 7/8] fix: missing file name parameter (#8820)

---
 packages/backend/src/services/drive/generate-video-thumbnail.ts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/packages/backend/src/services/drive/generate-video-thumbnail.ts b/packages/backend/src/services/drive/generate-video-thumbnail.ts
index ca12ab8d3d..b3fd025abc 100644
--- a/packages/backend/src/services/drive/generate-video-thumbnail.ts
+++ b/packages/backend/src/services/drive/generate-video-thumbnail.ts
@@ -24,7 +24,7 @@ export async function GenerateVideoThumbnail(source: string): Promise<IImage> {
 		});
 
 		// JPEGに変換 (Webpでもいいが、MastodonはWebpをサポートせず表示できなくなる)
-		return await convertToJpeg(498, 280);
+		return await convertToJpeg(file, 498, 280);
 	} finally {
 		cleanup();
 	}

From c9296cf095e9def2ae1338f232ad020d462a467b Mon Sep 17 00:00:00 2001
From: syuilo <Syuilotan@yahoo.co.jp>
Date: Mon, 13 Jun 2022 00:26:31 +0900
Subject: [PATCH 8/8] 12.111.1

---
 CHANGELOG.md | 9 ++++-----
 package.json | 2 +-
 2 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 14982ef387..7854f0ea48 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,12 +9,13 @@
 You should also include the user name that made the change.
 -->
 
-## 12.x.x (unreleased)
-
-### Improvements
+## 12.111.1 (2022/06/13)
 
 ### Bugfixes
+- some fixes of multiple notification read @tamaina
+- some GenerateVideoThumbnail failed @Johann150
 - Client: デッキでウィジェットの情報が保存されない問題を修正 @syuilo
+- Client: ギャラリーの投稿を開こうとすると編集画面が表示される @futchitwo
 
 ## 12.111.0 (2022/06/11)
 ### Note
@@ -42,10 +43,8 @@ You should also include the user name that made the change.
 
 ### Bugfixes
 - Server: keep file order of note attachement @Johann150
-- Server: fix caching @Johann150
 - Server: fix missing foreign key for reports leading to reports page being unusable @Johann150
 - Server: fix internal in-memory caching @Johann150
-- Server: use correct order of attachments on notes @Johann150
 - Server: prevent crash when processing certain PNGs @syuilo
 - Server: Fix unable to generate video thumbnails @mei23
 - Server: Fix `Cannot find module` issue @mei23
diff --git a/package.json b/package.json
index e3340005ad..a035745727 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
 	"name": "misskey",
-	"version": "12.111.0",
+	"version": "12.111.1",
 	"codename": "indigo",
 	"repository": {
 		"type": "git",