From 712257a376a75b40d6d27bcd0895d43807af102e Mon Sep 17 00:00:00 2001
From: naskya <m@naskya.net>
Date: Fri, 5 Jul 2024 23:37:15 +0900
Subject: [PATCH 01/29] docs: add some docs for backend-rs

---
 packages/backend-rs/README.md  | 114 +++++++++++++++++++++++++++++++++
 packages/backend-rs/src/lib.rs |   2 +
 2 files changed, 116 insertions(+)
 create mode 100644 packages/backend-rs/README.md

diff --git a/packages/backend-rs/README.md b/packages/backend-rs/README.md
new file mode 100644
index 0000000000..467d66b39c
--- /dev/null
+++ b/packages/backend-rs/README.md
@@ -0,0 +1,114 @@
+A work-in-progress Firefish backend written in Rust
+
+Minimum supported Rust version (MSRV): 1.74
+
+Auto-generated documentation is at <https://docs.firefish.dev/backend_rs>
+
+# How to write the code
+
+Currently, there is no entrypoint in this project, and all functions are executed via Node-API.
+
+You need to apply the [`macros::export`] proc macro to export a function to the Node.js backend:
+
+```rust,ignore
+#[macros::export]
+pub fn to_be_exported(value: &str) -> i32 {
+    // You can also call other functions that are not exported
+    do_something();
+    42
+}
+
+fn do_something() {
+    do_other_thing();
+}
+```
+
+this code will be translated into this TypeScript code:
+
+```typescript
+export declare function toBeExported(value: string): number {
+    /* executes the compiled Rust function */
+}
+```
+
+You can also export `async` functions:
+
+```rust,ignore
+#[macros::export]
+pub async fn async_function() -> i32 {
+    some_async_task().await
+}
+```
+
+```typescript
+export declare function asyncFunction(): Promise<number> {
+    /* executes the compiled Rust function */
+}
+```
+
+You need to specify `object` attribute to export `struct`s:
+
+```rust,ignore
+#[macros::export(object)]
+pub struct Thing {
+    pub field_one: String,
+    pub field_two: Option<String>,
+}
+```
+
+```typescript
+export interface Thing {
+    fieldOne: string
+    fieldTwo: string | null
+}
+```
+
+# Update auto-generated files
+
+These files are auto-generated and are not intended for manual editing:
+- `packages/backend-rs/index.js`
+- `packages/backend-rs/index.d.ts`
+- [`packages/backend-rs/src/model/entity/*`](crate::model::entity)
+
+## Prerequisites
+
+1. `dev/config.env` (see `dev/config.example.env` for reference)
+2. PostgreSQL database listening on port `25432`
+3. Dev dependencies
+    - [GNU Make](<https://www.gnu.org/software/make/>)
+    - [sea-orm-cli](<https://www.sea-ql.org/SeaORM/docs/generate-entity/sea-orm-cli/>)
+
+## Update database entity
+
+Run the following command in the repository root directory
+
+```sh
+make entities
+```
+
+## Update `index.js` and `index.d.ts`
+
+Run the following command in the repository root directory
+
+```sh
+make napi
+```
+
+# Unit tests
+
+It is highly encouraged that you write unit tests and test the code yourself (there is no integration test at this point).
+
+## Prerequisites
+
+1. `dev/config.env` (see `dev/config.example.env` for reference)
+2. PostgreSQL and Redis/Valkey instances and the config file (`.config/default.yml`)
+3. Dev dependency
+    - [cargo-nextest](<https://nexte.st/>)
+
+## Run unit tests
+
+Run the following command in the repository root directory
+
+```sh
+pnpm run test:rs
+```
diff --git a/packages/backend-rs/src/lib.rs b/packages/backend-rs/src/lib.rs
index 1b9933fb8a..ff7a49a471 100644
--- a/packages/backend-rs/src/lib.rs
+++ b/packages/backend-rs/src/lib.rs
@@ -1,3 +1,5 @@
+#![doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/README.md"))]
+
 pub mod config;
 pub mod database;
 pub mod federation;

From e011455a25aa272c7a708016d80036dff1069af7 Mon Sep 17 00:00:00 2001
From: naskya <m@naskya.net>
Date: Fri, 5 Jul 2024 23:45:58 +0900
Subject: [PATCH 02/29] fix (client): clicking remote instance ticker on
 unsigned UI causes an API error

---
 packages/client/src/components/note/MkNoteHeader.vue | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/packages/client/src/components/note/MkNoteHeader.vue b/packages/client/src/components/note/MkNoteHeader.vue
index c5abfef6b2..1188f14575 100644
--- a/packages/client/src/components/note/MkNoteHeader.vue
+++ b/packages/client/src/components/note/MkNoteHeader.vue
@@ -58,6 +58,7 @@ import { userPage } from "@/filters/user";
 import { i18n } from "@/i18n";
 import { pageWindow } from "@/os";
 import icon from "@/scripts/icon";
+import { me, isSignedIn } from "@/me";
 
 const props = defineProps<{
 	note: entities.Note;
@@ -71,6 +72,8 @@ const showTicker =
 
 function openServerInfo() {
 	if (!props.canOpenServerInfo || !defaultStore.state.openServerInfo) return;
+	if (props.note.user.host != null && !isSignedIn(me)) return;
+
 	const instanceInfoUrl =
 		props.note.user.host == null
 			? "/about"

From 920a8ecf40e2251a58752296f1f3cce965328191 Mon Sep 17 00:00:00 2001
From: naskya <m@naskya.net>
Date: Sat, 6 Jul 2024 00:13:09 +0900
Subject: [PATCH 03/29] ci: specify different target directory for msrv check

---
 .gitlab-ci.yml | 3 ++-
 ci/.gitignore  | 1 +
 2 files changed, 3 insertions(+), 1 deletion(-)
 create mode 100644 ci/.gitignore

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 063082d28c..91a19438b2 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -42,7 +42,7 @@ variables:
   CARGO_PROFILE_DEV_LTO: 'off'
   CARGO_PROFILE_DEV_DEBUG: 'none'
   CARGO_TERM_COLOR: 'always'
-  GIT_CLEAN_FLAGS: -ffdx -e node_modules/ -e built/ -e target/ -e packages/backend-rs/built/
+  GIT_CLEAN_FLAGS: -ffdx -e node_modules/ -e built/ -e target/ -e packages/backend-rs/built/ -e ci/target-msrv/
 
 default:
   before_script:
@@ -247,6 +247,7 @@ cargo:check:msrv:
     - apt-get update && apt-get -y upgrade
     - apt-get install -y --no-install-recommends build-essential clang mold python3 perl nodejs postgresql-client
     - cp ci/cargo/config.toml /usr/local/cargo/config.toml
+    - export CARGO_TARGET_DIR='ci/target-msrv'
   script:
     - cargo fetch --locked --manifest-path Cargo.toml
     - cargo check --locked --frozen --all-features
diff --git a/ci/.gitignore b/ci/.gitignore
new file mode 100644
index 0000000000..5546ffea79
--- /dev/null
+++ b/ci/.gitignore
@@ -0,0 +1 @@
+target-msrv/

From d5ec949f629878191f5711edf6d58da9d187648e Mon Sep 17 00:00:00 2001
From: jolupa <jolupameister@gmail.com>
Date: Thu, 4 Jul 2024 17:51:13 +0000
Subject: [PATCH 04/29] locale: update translations (Catalan)

Currently translated at 100.0% (1948 of 1948 strings)

Translation: Firefish/locales
Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ca/
---
 locales/ca-ES.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/locales/ca-ES.yml b/locales/ca-ES.yml
index 4e4f96cbb2..50deed771d 100644
--- a/locales/ca-ES.yml
+++ b/locales/ca-ES.yml
@@ -2324,3 +2324,4 @@ cancelScheduledPost: Elimina la planificació
 addAlt4MeTag: "Afegeix automàticament l'etiqueta #Alt4Me a les teves publicacions
   que tinguin un fitxer adjunt sense descripció"
 strongPassword: Bona contrasenya
+turnOffCatLanguage: Desactiva la conversió al llenguatge de gat

From 6c17d3e56004181ab7a8e6cb527ee63da2eae568 Mon Sep 17 00:00:00 2001
From: naskya <m@naskya.net>
Date: Thu, 4 Jul 2024 17:24:28 +0000
Subject: [PATCH 05/29] locale: update translations (Japanese)

Currently translated at 100.0% (1948 of 1948 strings)

Translation: Firefish/locales
Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ja/
---
 locales/ja-JP.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index b9b2d6745d..3be63d1ef2 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -2089,3 +2089,4 @@ cancelScheduledPost: 予約を解除する
 scheduledPostAt: '{time}に投稿されます'
 strongPassword: 強いパスワード
 addAlt4MeTag: '説明の無いファイルを投稿する際に自動で #Alt4Me のハッシュタグをつける'
+turnOffCatLanguage: 猫語への変換を無効化する

From 3af46024cf43702b893156a2d117d3bbdd033537 Mon Sep 17 00:00:00 2001
From: naskya <m@naskya.net>
Date: Sat, 6 Jul 2024 00:42:53 +0900
Subject: [PATCH 06/29] chore (client): move accessibility settings into a
 separate page

---
 .../src/pages/settings/accessibility.vue      | 195 ++++++++++++++++++
 .../client/src/pages/settings/general.vue     | 162 +--------------
 packages/client/src/pages/settings/index.vue  |  42 ++--
 packages/client/src/router.ts                 |   5 +
 4 files changed, 225 insertions(+), 179 deletions(-)
 create mode 100644 packages/client/src/pages/settings/accessibility.vue

diff --git a/packages/client/src/pages/settings/accessibility.vue b/packages/client/src/pages/settings/accessibility.vue
new file mode 100644
index 0000000000..18ed74ad42
--- /dev/null
+++ b/packages/client/src/pages/settings/accessibility.vue
@@ -0,0 +1,195 @@
+<template>
+	<div class="_formRoot">
+		<FormSection>
+			<FormSwitch v-model="showNoAltTextWarning" class="_formBlock">{{
+				i18n.ts.showNoAltTextWarning
+			}}</FormSwitch>
+			<FormSwitch v-if="showNoAltTextWarning" v-model="showAddFileDescriptionAtFirstPost" class="_formBlock">{{
+				i18n.ts.showAddFileDescriptionAtFirstPost
+			}}</FormSwitch>
+			<FormSwitch v-model="addAlt4MeTag" class="_formBlock">{{
+				i18n.ts.addAlt4MeTag
+			}}</FormSwitch>
+			<FormSwitch v-model="expandOnNoteClick" class="_formBlock"
+				>{{ i18n.ts.expandOnNoteClick
+				}}<template #caption>{{
+					i18n.ts.expandOnNoteClickDesc
+				}}</template>
+			</FormSwitch>
+			<FormSwitch v-model="turnOffCatLanguage" @update:modelValue="save()" class="_formBlock"
+				>{{ i18n.ts.turnOffCatLanguage }}<template #caption>{{
+					i18n.ts.reflectMayTakeTime
+				}}</template>
+			</FormSwitch>
+			<FormSwitch v-model="advancedMfm" class="_formBlock">
+				{{ i18n.ts._mfm.advanced
+				}}<template #caption>{{
+					i18n.ts._mfm.advancedDescription
+				}}</template>
+			</FormSwitch>
+			<FormSwitch v-model="autoplayMfm" class="_formBlock">
+				{{ i18n.ts._mfm.alwaysPlay }}
+				<template #caption>
+					<i
+						:class="icon('ph-warning')"
+						style="color: var(--warn)"
+					></i>
+					{{ i18n.ts._mfm.warn }}
+				</template>
+			</FormSwitch>
+			<FormSwitch v-model="reduceAnimation" class="_formBlock">{{
+				i18n.ts.reduceUiAnimation
+			}}</FormSwitch>
+			<FormSwitch
+				v-model="disableShowingAnimatedImages"
+				class="_formBlock"
+				>{{ i18n.ts.disableShowingAnimatedImages }}</FormSwitch
+			>
+			<FormSwitch v-model="useSystemFont" class="_formBlock">{{
+				i18n.ts.useSystemFont
+			}}</FormSwitch>
+			<FormSwitch v-model="useOsNativeEmojis" class="_formBlock">
+				{{ i18n.ts.useOsNativeEmojis }}
+				<div>
+					<Mfm :key="useOsNativeEmojis" text="🍮🍦🍭🍩🍰🍫🍬🥞🍪" />
+				</div>
+			</FormSwitch>
+			<FormSwitch
+				v-model="vibrate"
+				class="_formBlock"
+				@click="demoVibrate"
+				>{{ i18n.ts.vibrate }}
+			</FormSwitch>
+			<FormRadios v-model="fontSize" class="_formBlock">
+				<template #label>{{ i18n.ts.fontSize }}</template>
+				<option :value="null">
+					<span style="font-size: 14px">14</span>
+				</option>
+				<option value="15">
+					<span style="font-size: 15px">15</span>
+				</option>
+				<option value="16">
+					<span style="font-size: 16px">16</span>
+				</option>
+				<option value="17">
+					<span style="font-size: 17px">17</span>
+				</option>
+				<option value="18">
+					<span style="font-size: 18px">18</span>
+				</option>
+			</FormRadios>
+
+			<!-- <FormRange
+				v-model="fontSize"
+				:min="12"
+				:max="18"
+				:step="1"
+				:value="fontSize ? fontSize : 14"
+				easing
+				:showTicks="true"
+				class="_formBlock"
+			>
+				<template #label>{{ i18n.ts.fontSize }}</template>
+			</FormRange> -->
+		</FormSection>
+	</div>
+</template>
+
+<script lang="ts" setup>
+import { computed, ref, watch } from "vue";
+import { me } from "@/me";
+import FormSwitch from "@/components/form/switch.vue";
+import FormRadios from "@/components/form/radios.vue";
+import FormSection from "@/components/form/section.vue";
+import { ColdDeviceStorage, defaultStore } from "@/store";
+import * as os from "@/os";
+import { unisonReload } from "@/scripts/unison-reload";
+import { i18n } from "@/i18n";
+import { definePageMetadata } from "@/scripts/page-metadata";
+import icon from "@/scripts/icon";
+
+const fontSize = ref(localStorage.getItem("fontSize"));
+const useSystemFont = ref(localStorage.getItem("useSystemFont") !== "f");
+const turnOffCatLanguage = ref(!me?.readCatLanguage);
+
+function save() {
+	os.api("i/update", {
+		readCatLanguage: !turnOffCatLanguage.value,
+	});
+}
+
+async function reloadAsk() {
+	const { canceled } = await os.confirm({
+		type: "info",
+		text: i18n.ts.reloadToApplySetting,
+	});
+	if (canceled) return;
+
+	unisonReload();
+}
+
+function demoVibrate() {
+	window.navigator.vibrate(100);
+}
+
+const reduceAnimation = computed(
+	defaultStore.makeGetterSetter(
+		"animation",
+		(v) => !v,
+		(v) => !v,
+	),
+);
+const advancedMfm = computed(defaultStore.makeGetterSetter("advancedMfm"));
+const autoplayMfm = computed(
+	defaultStore.makeGetterSetter(
+		"animatedMfm",
+		(v) => !v,
+		(v) => !v,
+	),
+);
+const useOsNativeEmojis = computed(
+	defaultStore.makeGetterSetter("useOsNativeEmojis"),
+);
+const disableShowingAnimatedImages = computed(
+	defaultStore.makeGetterSetter("disableShowingAnimatedImages"),
+);
+const vibrate = computed(ColdDeviceStorage.makeGetterSetter("vibrate"));
+const expandOnNoteClick = computed(
+	defaultStore.makeGetterSetter("expandOnNoteClick"),
+);
+const showNoAltTextWarning = computed(
+	defaultStore.makeGetterSetter("showNoAltTextWarning"),
+);
+const showAddFileDescriptionAtFirstPost = computed(
+	defaultStore.makeGetterSetter("showAddFileDescriptionAtFirstPost"),
+);
+const addAlt4MeTag = computed(defaultStore.makeGetterSetter("addAlt4MeTag"));
+
+watch(fontSize, () => {
+	if (fontSize.value == null) {
+		localStorage.removeItem("fontSize");
+	} else {
+		localStorage.setItem("fontSize", fontSize.value);
+	}
+});
+
+watch(useSystemFont, () => {
+	if (useSystemFont.value) {
+		localStorage.setItem("useSystemFont", "t");
+	} else {
+		localStorage.setItem("useSystemFont", "f");
+	}
+});
+
+watch(
+	[fontSize, useSystemFont, advancedMfm, autoplayMfm, expandOnNoteClick],
+	async () => {
+		await reloadAsk();
+	},
+);
+
+definePageMetadata({
+	title: i18n.ts.accessibility,
+	icon: `${icon("ph-person-arms-spread")}`,
+});
+</script>
diff --git a/packages/client/src/pages/settings/general.vue b/packages/client/src/pages/settings/general.vue
index aa6d2a9ad5..2e27818e2f 100644
--- a/packages/client/src/pages/settings/general.vue
+++ b/packages/client/src/pages/settings/general.vue
@@ -183,91 +183,6 @@
 			</FormSelect>
 		</FormSection>
 
-		<FormSection>
-			<template #label>{{ i18n.ts.accessibility }}</template>
-			<FormSwitch v-model="showNoAltTextWarning" class="_formBlock">{{
-				i18n.ts.showNoAltTextWarning
-			}}</FormSwitch>
-			<FormSwitch v-if="showNoAltTextWarning" v-model="showAddFileDescriptionAtFirstPost" class="_formBlock">{{
-				i18n.ts.showAddFileDescriptionAtFirstPost
-			}}</FormSwitch>
-			<FormSwitch v-model="addAlt4MeTag" class="_formBlock">{{
-				i18n.ts.addAlt4MeTag
-			}}</FormSwitch>
-			<FormSwitch v-model="expandOnNoteClick" class="_formBlock"
-				>{{ i18n.ts.expandOnNoteClick
-				}}<template #caption>{{
-					i18n.ts.expandOnNoteClickDesc
-				}}</template>
-			</FormSwitch>
-			<FormSwitch v-model="turnOffCatLanguage" @update:modelValue="save()" class="_formBlock"
-				>{{ i18n.ts.turnOffCatLanguage }}<template #caption>{{
-					i18n.ts.reflectMayTakeTime
-				}}</template>
-			</FormSwitch>
-			<FormSwitch v-model="advancedMfm" class="_formBlock">
-				{{ i18n.ts._mfm.advanced
-				}}<template #caption>{{
-					i18n.ts._mfm.advancedDescription
-				}}</template>
-			</FormSwitch>
-			<FormSwitch v-model="autoplayMfm" class="_formBlock">
-				{{ i18n.ts._mfm.alwaysPlay }}
-				<template #caption>
-					<i
-						:class="icon('ph-warning')"
-						style="color: var(--warn)"
-					></i>
-					{{ i18n.ts._mfm.warn }}
-				</template>
-			</FormSwitch>
-			<FormSwitch v-model="reduceAnimation" class="_formBlock">{{
-				i18n.ts.reduceUiAnimation
-			}}</FormSwitch>
-			<FormSwitch
-				v-model="disableShowingAnimatedImages"
-				class="_formBlock"
-				>{{ i18n.ts.disableShowingAnimatedImages }}</FormSwitch
-			>
-			<FormSwitch
-				v-model="vibrate"
-				class="_formBlock"
-				@click="demoVibrate"
-				>{{ i18n.ts.vibrate }}
-			</FormSwitch>
-			<FormRadios v-model="fontSize" class="_formBlock">
-				<template #label>{{ i18n.ts.fontSize }}</template>
-				<option :value="null">
-					<span style="font-size: 14px">14</span>
-				</option>
-				<option value="15">
-					<span style="font-size: 15px">15</span>
-				</option>
-				<option value="16">
-					<span style="font-size: 16px">16</span>
-				</option>
-				<option value="17">
-					<span style="font-size: 17px">17</span>
-				</option>
-				<option value="18">
-					<span style="font-size: 18px">18</span>
-				</option>
-			</FormRadios>
-
-			<!-- <FormRange
-				v-model="fontSize"
-				:min="12"
-				:max="18"
-				:step="1"
-				:value="fontSize ? fontSize : 14"
-				easing
-				:showTicks="true"
-				class="_formBlock"
-			>
-				<template #label>{{ i18n.ts.fontSize }}</template>
-			</FormRange> -->
-		</FormSection>
-
 		<FormSection>
 			<template #label>{{ i18n.ts.appearance }}</template>
 			<FormSwitch v-model="showAds" class="_formBlock">{{
@@ -299,15 +214,6 @@
 			<FormSwitch v-model="seperateRenoteQuote" class="_formBlock">{{
 				i18n.ts.seperateRenoteQuote
 			}}</FormSwitch>
-			<FormSwitch v-model="useSystemFont" class="_formBlock">{{
-				i18n.ts.useSystemFont
-			}}</FormSwitch>
-			<FormSwitch v-model="useOsNativeEmojis" class="_formBlock">
-				{{ i18n.ts.useOsNativeEmojis }}
-				<div>
-					<Mfm :key="useOsNativeEmojis" text="🍮🍦🍭🍩🍰🍫🍬🥞🍪" />
-				</div>
-			</FormSwitch>
 			<FormSwitch v-model="disableDrawer" class="_formBlock">{{
 				i18n.ts.disableDrawer
 			}}</FormSwitch>
@@ -415,7 +321,7 @@ import FormSection from "@/components/form/section.vue";
 import FormLink from "@/components/form/link.vue";
 import MkLink from "@/components/MkLink.vue";
 import { langs } from "@/config";
-import { ColdDeviceStorage, defaultStore } from "@/store";
+import { defaultStore } from "@/store";
 import * as os from "@/os";
 import { unisonReload } from "@/scripts/unison-reload";
 import { i18n } from "@/i18n";
@@ -426,15 +332,6 @@ import icon from "@/scripts/icon";
 const lang = ref(localStorage.getItem("lang"));
 const serverLang = ref(me?.lang);
 const translateLang = ref(localStorage.getItem("translateLang"));
-const fontSize = ref(localStorage.getItem("fontSize"));
-const useSystemFont = ref(localStorage.getItem("useSystemFont") !== "f");
-const turnOffCatLanguage = ref(!me?.readCatLanguage);
-
-function save() {
-	os.api("i/update", {
-		readCatLanguage: !turnOffCatLanguage.value,
-	});
-}
 
 async function reloadAsk() {
 	const { canceled } = await os.confirm({
@@ -446,23 +343,12 @@ async function reloadAsk() {
 	unisonReload();
 }
 
-function demoVibrate() {
-	window.navigator.vibrate(100);
-}
-
 const overridedDeviceKind = computed(
 	defaultStore.makeGetterSetter("overridedDeviceKind"),
 );
 const serverDisconnectedBehavior = computed(
 	defaultStore.makeGetterSetter("serverDisconnectedBehavior"),
 );
-const reduceAnimation = computed(
-	defaultStore.makeGetterSetter(
-		"animation",
-		(v) => !v,
-		(v) => !v,
-	),
-);
 const useBlurEffectForModal = computed(
 	defaultStore.makeGetterSetter("useBlurEffectForModal"),
 );
@@ -471,31 +357,13 @@ const showGapBetweenNotesInTimeline = computed(
 	defaultStore.makeGetterSetter("showGapBetweenNotesInTimeline"),
 );
 const showAds = computed(defaultStore.makeGetterSetter("showAds"));
-const advancedMfm = computed(defaultStore.makeGetterSetter("advancedMfm"));
-const autoplayMfm = computed(
-	defaultStore.makeGetterSetter(
-		"animatedMfm",
-		(v) => !v,
-		(v) => !v,
-	),
-);
-const useOsNativeEmojis = computed(
-	defaultStore.makeGetterSetter("useOsNativeEmojis"),
-);
 const disableDrawer = computed(defaultStore.makeGetterSetter("disableDrawer"));
-const disableShowingAnimatedImages = computed(
-	defaultStore.makeGetterSetter("disableShowingAnimatedImages"),
-);
-const vibrate = computed(ColdDeviceStorage.makeGetterSetter("vibrate"));
 const loadRawImages = computed(defaultStore.makeGetterSetter("loadRawImages"));
 const imageNewTab = computed(defaultStore.makeGetterSetter("imageNewTab"));
 const nsfw = computed(defaultStore.makeGetterSetter("nsfw"));
 const disablePagesScript = computed(
 	defaultStore.makeGetterSetter("disablePagesScript"),
 );
-const expandOnNoteClick = computed(
-	defaultStore.makeGetterSetter("expandOnNoteClick"),
-);
 const showFixedPostForm = computed(
 	defaultStore.makeGetterSetter("showFixedPostForm"),
 );
@@ -565,12 +433,6 @@ const enablePullToRefresh = computed(
 const pullToRefreshThreshold = computed(
 	defaultStore.makeGetterSetter("pullToRefreshThreshold"),
 );
-const showNoAltTextWarning = computed(
-	defaultStore.makeGetterSetter("showNoAltTextWarning"),
-);
-const showAddFileDescriptionAtFirstPost = computed(
-	defaultStore.makeGetterSetter("showAddFileDescriptionAtFirstPost"),
-);
 const autocorrectNoteLanguage = computed(
 	defaultStore.makeGetterSetter("autocorrectNoteLanguage"),
 );
@@ -583,7 +445,6 @@ const mergeThreadInTimeline = computed(
 const mergeRenotesInTimeline = computed(
 	defaultStore.makeGetterSetter("mergeRenotesInTimeline"),
 );
-const addAlt4MeTag = computed(defaultStore.makeGetterSetter("addAlt4MeTag"));
 
 // This feature (along with injectPromo) is currently disabled
 // function onChangeInjectFeaturedNote(v) {
@@ -619,28 +480,10 @@ watch(translateLang, () => {
 	localStorage.setItem("translateLang", translateLang.value as string);
 });
 
-watch(fontSize, () => {
-	if (fontSize.value == null) {
-		localStorage.removeItem("fontSize");
-	} else {
-		localStorage.setItem("fontSize", fontSize.value);
-	}
-});
-
-watch(useSystemFont, () => {
-	if (useSystemFont.value) {
-		localStorage.setItem("useSystemFont", "t");
-	} else {
-		localStorage.setItem("useSystemFont", "f");
-	}
-});
-
 watch(
 	[
 		lang,
 		translateLang,
-		fontSize,
-		useSystemFont,
 		enableInfiniteScroll,
 		squareAvatars,
 		showGapBetweenNotesInTimeline,
@@ -652,9 +495,6 @@ watch(
 		swipeOnDesktop,
 		seperateRenoteQuote,
 		showAdminUpdates,
-		advancedMfm,
-		autoplayMfm,
-		expandOnNoteClick,
 		iconSet,
 		useEmojiCdn,
 		enableTimelineStreaming,
diff --git a/packages/client/src/pages/settings/index.vue b/packages/client/src/pages/settings/index.vue
index 96e538898a..a3d9f4fb66 100644
--- a/packages/client/src/pages/settings/index.vue
+++ b/packages/client/src/pages/settings/index.vue
@@ -106,12 +106,6 @@ const menuDef = computed(() => [
 				to: "/settings/drive",
 				active: currentPage.value?.route.name === "drive",
 			},
-			{
-				icon: `${icon("ph-bell")}`,
-				text: i18n.ts.notifications,
-				to: "/settings/notifications",
-				active: currentPage.value?.route.name === "notifications",
-			},
 			{
 				icon: `${icon("ph-envelope-simple-open")}`,
 				text: i18n.ts.email,
@@ -141,6 +135,18 @@ const menuDef = computed(() => [
 				to: "/settings/theme",
 				active: currentPage.value?.route.name === "theme",
 			},
+			{
+				icon: `${icon("ph-person-arms-spread")}`,
+				text: i18n.ts.accessibility,
+				to: "/settings/accessibility",
+				active: currentPage.value?.route.name === "accessibility",
+			},
+			{
+				icon: `${icon("ph-bell")}`,
+				text: i18n.ts.notifications,
+				to: "/settings/notifications",
+				active: currentPage.value?.route.name === "notifications",
+			},
 			{
 				icon: `${icon("ph-list")}`,
 				text: i18n.ts.navbar,
@@ -170,18 +176,6 @@ const menuDef = computed(() => [
 	{
 		title: i18n.ts.otherSettings,
 		items: [
-			{
-				icon: `${icon("ph-airplane-takeoff")}`,
-				text: i18n.ts.migration,
-				to: "/settings/migration",
-				active: currentPage.value?.route.name === "migration",
-			},
-			{
-				icon: `${icon("ph-package")}`,
-				text: i18n.ts.importAndExport,
-				to: "/settings/import-export",
-				active: currentPage.value?.route.name === "import-export",
-			},
 			{
 				icon: `${icon("ph-speaker-none")}`,
 				text: i18n.ts.instanceMute,
@@ -212,6 +206,18 @@ const menuDef = computed(() => [
 				to: "/settings/webhook",
 				active: currentPage.value?.route.name === "webhook",
 			},
+			{
+				icon: `${icon("ph-package")}`,
+				text: i18n.ts.importAndExport,
+				to: "/settings/import-export",
+				active: currentPage.value?.route.name === "import-export",
+			},
+			{
+				icon: `${icon("ph-airplane-takeoff")}`,
+				text: i18n.ts.migration,
+				to: "/settings/migration",
+				active: currentPage.value?.route.name === "migration",
+			},
 			{
 				icon: `${icon("ph-dots-three-outline")}`,
 				text: i18n.ts.other,
diff --git a/packages/client/src/router.ts b/packages/client/src/router.ts
index 769cbd44f7..dff7e93fa9 100644
--- a/packages/client/src/router.ts
+++ b/packages/client/src/router.ts
@@ -91,6 +91,11 @@ export const routes: RouteDef[] = [
 				name: "notifications",
 				component: page(() => import("./pages/settings/notifications.vue")),
 			},
+			{
+				path: "/accessibility",
+				name: "accessibility",
+				component: page(() => import("./pages/settings/accessibility.vue")),
+			},
 			{
 				path: "/email",
 				name: "email",

From db0ca693c6738c56b19df48776ead829926d30d0 Mon Sep 17 00:00:00 2001
From: naskya <m@naskya.net>
Date: Sat, 6 Jul 2024 02:04:24 +0900
Subject: [PATCH 07/29] docs (backend-rs): minor updates

---
 packages/backend-rs/README.md       | 2 +-
 packages/macro-rs/macros/src/lib.rs | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/packages/backend-rs/README.md b/packages/backend-rs/README.md
index 467d66b39c..b1c2a45037 100644
--- a/packages/backend-rs/README.md
+++ b/packages/backend-rs/README.md
@@ -101,7 +101,7 @@ It is highly encouraged that you write unit tests and test the code yourself (th
 ## Prerequisites
 
 1. `dev/config.env` (see `dev/config.example.env` for reference)
-2. PostgreSQL and Redis/Valkey instances and the config file (`.config/default.yml`)
+2. Firefish config file (`.config/default.yml`)
 3. Dev dependency
     - [cargo-nextest](<https://nexte.st/>)
 
diff --git a/packages/macro-rs/macros/src/lib.rs b/packages/macro-rs/macros/src/lib.rs
index 533f058a96..6bc2c0ddc1 100644
--- a/packages/macro-rs/macros/src/lib.rs
+++ b/packages/macro-rs/macros/src/lib.rs
@@ -51,7 +51,7 @@ define_wrapper_proc_macro_attributes! {
     /// #[cfg_attr(feature = "napi", macros::napi(attr))]
     /// # fn f() {} // to work around doc test compilation error
     /// ```
-    /// where `attr` is given attribute(s). See [macro@napi] for more details.
+    /// where `attr` is given attribute(s). See [macro@napi] and [macros_impl::napi::napi] for more details.
     export(attr, item) {
         #[cfg_attr(feature = "napi", macros::napi(#attr))]
         #item

From 012a564265553b28e11052aa34022fb5861e7dba Mon Sep 17 00:00:00 2001
From: naskya <m@naskya.net>
Date: Sat, 6 Jul 2024 02:16:31 +0900
Subject: [PATCH 08/29] ci: add miri task

---
 .gitlab-ci.yml | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 91a19438b2..d33e744247 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -322,6 +322,18 @@ cargo:doc:
     - cd target/doc
     - npx --yes netlify-cli deploy --prod --site="${CARGO_DOC_SITE_ID}" --dir=.
 
+cargo:test:miri:
+  stage: test
+  rules:
+    - if: $MIRI
+  script:
+    - export RUST_BACKTRACE=1
+    - curl -LsSf https://get.nexte.st/latest/linux | tar zxf - -C /usr/local/cargo/bin
+    - rustup default nightly
+    - rustup component add miri
+    - rustup update
+    - MIRIFLAGS='-Zmiri-disable-isolation' cargo miri nextest run -j$(nproc --all)
+
 renovate:
   stage: dependency
   image:

From 55c6255f58d0cd7180a61fca026275fb9c32d4ae Mon Sep 17 00:00:00 2001
From: naskya <m@naskya.net>
Date: Sat, 6 Jul 2024 03:24:52 +0900
Subject: [PATCH 09/29] ci: update miri task

---
 .gitlab-ci.yml | 6 ++++--
 ci/.gitignore  | 1 +
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d33e744247..7b9baab5de 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -328,10 +328,12 @@ cargo:test:miri:
     - if: $MIRI
   script:
     - export RUST_BACKTRACE=1
+    - export CARGO_TARGET_DIR='ci/target-miri'
+    - export MIRI_NIGHTLY=nightly-$(curl -s https://rust-lang.github.io/rustup-components-history/x86_64-unknown-linux-gnu/miri)
     - curl -LsSf https://get.nexte.st/latest/linux | tar zxf - -C /usr/local/cargo/bin
-    - rustup default nightly
+    - rustup set profile minimal
+    - rustup override set "${MIRI_NIGHTLY}"
     - rustup component add miri
-    - rustup update
     - MIRIFLAGS='-Zmiri-disable-isolation' cargo miri nextest run -j$(nproc --all)
 
 renovate:
diff --git a/ci/.gitignore b/ci/.gitignore
index 5546ffea79..1e50174ff5 100644
--- a/ci/.gitignore
+++ b/ci/.gitignore
@@ -1 +1,2 @@
 target-msrv/
+target-miri/

From 612c222c981592e236accf8db81b3c1620e60a33 Mon Sep 17 00:00:00 2001
From: GitLab CI
 <project_7_bot_1bfaee5701aed20091a86249a967a6c1@noreply.firefish.dev>
Date: Fri, 5 Jul 2024 20:06:44 +0000
Subject: [PATCH 10/29] chore(deps): update dependency @types/node to v20.14.10

---
 package.json                      |   2 +-
 packages/backend/package.json     |   2 +-
 packages/firefish-js/package.json |   2 +-
 pnpm-lock.yaml                    | 182 +++++++++++++++---------------
 4 files changed, 94 insertions(+), 94 deletions(-)

diff --git a/package.json b/package.json
index 1f6e3c65d3..153ead3da7 100644
--- a/package.json
+++ b/package.json
@@ -47,7 +47,7 @@
 		"@biomejs/cli-darwin-x64": "1.8.3",
 		"@biomejs/cli-linux-arm64": "1.8.3",
 		"@biomejs/cli-linux-x64": "1.8.3",
-		"@types/node": "20.14.9",
+		"@types/node": "20.14.10",
 		"execa": "9.3.0",
 		"pnpm": "9.4.0"
 	}
diff --git a/packages/backend/package.json b/packages/backend/package.json
index f17b02d734..913db3393c 100644
--- a/packages/backend/package.json
+++ b/packages/backend/package.json
@@ -137,7 +137,7 @@
 		"@types/koa__multer": "2.0.7",
 		"@types/koa__router": "12.0.4",
 		"@types/mocha": "10.0.7",
-		"@types/node": "20.14.9",
+		"@types/node": "20.14.10",
 		"@types/node-fetch": "2.6.11",
 		"@types/nodemailer": "6.4.15",
 		"@types/oauth": "0.9.5",
diff --git a/packages/firefish-js/package.json b/packages/firefish-js/package.json
index f929db6a2b..8e6b903a07 100644
--- a/packages/firefish-js/package.json
+++ b/packages/firefish-js/package.json
@@ -21,7 +21,7 @@
 	},
 	"devDependencies": {
 		"@types/jest": "29.5.12",
-		"@types/node": "20.14.9",
+		"@types/node": "20.14.10",
 		"jest": "29.7.0",
 		"jest-fetch-mock": "3.0.3",
 		"jest-websocket-mock": "2.5.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 64b29c7227..0d7a8d20e0 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -28,8 +28,8 @@ importers:
         specifier: 1.8.3
         version: 1.8.3
       '@types/node':
-        specifier: 20.14.9
-        version: 20.14.9
+        specifier: 20.14.10
+        version: 20.14.10
       execa:
         specifier: 9.3.0
         version: 9.3.0
@@ -314,7 +314,7 @@ importers:
         version: 0.2.3
       typeorm:
         specifier: 0.3.20
-        version: 0.3.20(ioredis@5.4.1)(pg@8.12.0)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.3))
+        version: 0.3.20(ioredis@5.4.1)(pg@8.12.0)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3))
       ulid:
         specifier: 2.3.0
         version: 2.3.0
@@ -389,8 +389,8 @@ importers:
         specifier: 10.0.7
         version: 10.0.7
       '@types/node':
-        specifier: 20.14.9
-        version: 20.14.9
+        specifier: 20.14.10
+        version: 20.14.10
       '@types/node-fetch':
         specifier: 2.6.11
         version: 2.6.11
@@ -474,7 +474,7 @@ importers:
         version: 9.5.1(typescript@5.5.3)(webpack@5.92.1)
       ts-node:
         specifier: 10.9.2
-        version: 10.9.2(@types/node@20.14.9)(typescript@5.5.3)
+        version: 10.9.2(@types/node@20.14.10)(typescript@5.5.3)
       tsc-alias:
         specifier: 1.8.10
         version: 1.8.10
@@ -561,7 +561,7 @@ importers:
         version: 10.0.0
       '@vitejs/plugin-vue':
         specifier: 5.0.5
-        version: 5.0.5(vite@5.3.3(@types/node@20.14.9)(sass@1.77.6)(terser@5.31.1))(vue@3.4.31(typescript@5.5.3))
+        version: 5.0.5(vite@5.3.3(@types/node@20.14.10)(sass@1.77.6)(terser@5.31.1))(vue@3.4.31(typescript@5.5.3))
       '@vue/runtime-core':
         specifier: 3.4.31
         version: 3.4.31
@@ -711,10 +711,10 @@ importers:
         version: 10.0.0
       vite:
         specifier: 5.3.3
-        version: 5.3.3(@types/node@20.14.9)(sass@1.77.6)(terser@5.31.1)
+        version: 5.3.3(@types/node@20.14.10)(sass@1.77.6)(terser@5.31.1)
       vite-plugin-compression:
         specifier: 0.5.1
-        version: 0.5.1(vite@5.3.3(@types/node@20.14.9)(sass@1.77.6)(terser@5.31.1))
+        version: 0.5.1(vite@5.3.3(@types/node@20.14.10)(sass@1.77.6)(terser@5.31.1))
       vue:
         specifier: 3.4.31
         version: 3.4.31(typescript@5.5.3)
@@ -744,11 +744,11 @@ importers:
         specifier: 29.5.12
         version: 29.5.12
       '@types/node':
-        specifier: 20.14.9
-        version: 20.14.9
+        specifier: 20.14.10
+        version: 20.14.10
       jest:
         specifier: 29.7.0
-        version: 29.7.0(@types/node@20.14.9)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.3))
+        version: 29.7.0(@types/node@20.14.10)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3))
       jest-fetch-mock:
         specifier: 3.0.3
         version: 3.0.3
@@ -760,10 +760,10 @@ importers:
         version: 9.3.1
       ts-jest:
         specifier: 29.1.5
-        version: 29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.14.9)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.3)))(typescript@5.5.3)
+        version: 29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.14.10)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)))(typescript@5.5.3)
       ts-node:
         specifier: 10.9.2
-        version: 10.9.2(@types/node@20.14.9)(typescript@5.5.3)
+        version: 10.9.2(@types/node@20.14.10)(typescript@5.5.3)
       tsc-alias:
         specifier: 1.8.10
         version: 1.8.10
@@ -869,10 +869,10 @@ importers:
         version: 6.2.1
       vite:
         specifier: 5.3.3
-        version: 5.3.3(@types/node@20.14.9)(sass@1.77.6)(terser@5.31.1)
+        version: 5.3.3(@types/node@20.14.10)(sass@1.77.6)(terser@5.31.1)
       vite-plugin-compression:
         specifier: 0.5.1
-        version: 0.5.1(vite@5.3.3(@types/node@20.14.9)(sass@1.77.6)(terser@5.31.1))
+        version: 0.5.1(vite@5.3.3(@types/node@20.14.10)(sass@1.77.6)(terser@5.31.1))
 
 packages:
 
@@ -2547,8 +2547,8 @@ packages:
   '@types/node@18.11.18':
     resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==}
 
-  '@types/node@20.14.9':
-    resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==}
+  '@types/node@20.14.10':
+    resolution: {integrity: sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==}
 
   '@types/nodemailer@6.4.15':
     resolution: {integrity: sha512-0EBJxawVNjPkng1zm2vopRctuWVCxk34JcIlRuXSf54habUWdz1FB7wHDqOqvDa8Mtpt0Q3LTXQkAs2LNyK5jQ==}
@@ -7770,27 +7770,27 @@ snapshots:
   '@jest/console@29.7.0':
     dependencies:
       '@jest/types': 29.6.3
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
       chalk: 4.1.2
       jest-message-util: 29.7.0
       jest-util: 29.7.0
       slash: 3.0.0
 
-  '@jest/core@29.7.0(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.3))':
+  '@jest/core@29.7.0(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3))':
     dependencies:
       '@jest/console': 29.7.0
       '@jest/reporters': 29.7.0
       '@jest/test-result': 29.7.0
       '@jest/transform': 29.7.0
       '@jest/types': 29.6.3
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
       ansi-escapes: 4.3.2
       chalk: 4.1.2
       ci-info: 3.9.0
       exit: 0.1.2
       graceful-fs: 4.2.11
       jest-changed-files: 29.7.0
-      jest-config: 29.7.0(@types/node@20.14.9)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.3))
+      jest-config: 29.7.0(@types/node@20.14.10)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3))
       jest-haste-map: 29.7.0
       jest-message-util: 29.7.0
       jest-regex-util: 29.6.3
@@ -7815,7 +7815,7 @@ snapshots:
     dependencies:
       '@jest/fake-timers': 29.7.0
       '@jest/types': 29.6.3
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
       jest-mock: 29.7.0
 
   '@jest/expect-utils@29.7.0':
@@ -7833,7 +7833,7 @@ snapshots:
     dependencies:
       '@jest/types': 29.6.3
       '@sinonjs/fake-timers': 10.3.0
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
       jest-message-util: 29.7.0
       jest-mock: 29.7.0
       jest-util: 29.7.0
@@ -7855,7 +7855,7 @@ snapshots:
       '@jest/transform': 29.7.0
       '@jest/types': 29.6.3
       '@jridgewell/trace-mapping': 0.3.25
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
       chalk: 4.1.2
       collect-v8-coverage: 1.0.2
       exit: 0.1.2
@@ -7925,7 +7925,7 @@ snapshots:
       '@jest/schemas': 29.6.3
       '@types/istanbul-lib-coverage': 2.0.6
       '@types/istanbul-reports': 3.0.4
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
       '@types/yargs': 17.0.32
       chalk: 4.1.2
 
@@ -8529,11 +8529,11 @@ snapshots:
 
   '@types/accepts@1.3.7':
     dependencies:
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
 
   '@types/adm-zip@0.5.5':
     dependencies:
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
 
   '@types/async-lock@1.4.0': {}
 
@@ -8563,18 +8563,18 @@ snapshots:
   '@types/body-parser@1.19.5':
     dependencies:
       '@types/connect': 3.4.38
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
 
   '@types/cacheable-request@6.0.3':
     dependencies:
       '@types/http-cache-semantics': 4.0.4
       '@types/keyv': 3.1.4
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
       '@types/responselike': 1.0.3
 
   '@types/co-body@6.1.3':
     dependencies:
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
       '@types/qs': 6.9.15
 
   '@types/color-convert@2.0.3':
@@ -8585,7 +8585,7 @@ snapshots:
 
   '@types/connect@3.4.38':
     dependencies:
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
 
   '@types/content-disposition@0.5.8': {}
 
@@ -8594,7 +8594,7 @@ snapshots:
       '@types/connect': 3.4.38
       '@types/express': 4.17.21
       '@types/keygrip': 1.0.6
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
 
   '@types/core-js@2.5.8': {}
 
@@ -8621,7 +8621,7 @@ snapshots:
 
   '@types/express-serve-static-core@4.19.5':
     dependencies:
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
       '@types/qs': 6.9.15
       '@types/range-parser': 1.2.7
       '@types/send': 0.17.4
@@ -8635,7 +8635,7 @@ snapshots:
 
   '@types/fluent-ffmpeg@2.1.24':
     dependencies:
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
 
   '@types/form-data@2.5.0':
     dependencies:
@@ -8643,16 +8643,16 @@ snapshots:
 
   '@types/formidable@2.0.6':
     dependencies:
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
 
   '@types/glob@8.1.0':
     dependencies:
       '@types/minimatch': 5.1.2
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
 
   '@types/graceful-fs@4.1.9':
     dependencies:
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
 
   '@types/http-assert@1.5.5': {}
 
@@ -8679,7 +8679,7 @@ snapshots:
 
   '@types/jsdom@21.1.7':
     dependencies:
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
       '@types/tough-cookie': 4.0.5
       parse5: 7.1.2
 
@@ -8695,7 +8695,7 @@ snapshots:
 
   '@types/keyv@3.1.4':
     dependencies:
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
 
   '@types/koa-bodyparser@4.3.12':
     dependencies:
@@ -8734,7 +8734,7 @@ snapshots:
       '@types/http-errors': 2.0.4
       '@types/keygrip': 1.0.6
       '@types/koa-compose': 3.2.8
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
 
   '@types/koa__cors@5.0.0':
     dependencies:
@@ -8760,28 +8760,28 @@ snapshots:
 
   '@types/needle@3.3.0':
     dependencies:
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
 
   '@types/node-fetch@2.6.11':
     dependencies:
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
       form-data: 4.0.0
 
   '@types/node@18.11.18': {}
 
-  '@types/node@20.14.9':
+  '@types/node@20.14.10':
     dependencies:
       undici-types: 5.26.5
 
   '@types/nodemailer@6.4.15':
     dependencies:
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
 
   '@types/normalize-package-data@2.4.4': {}
 
   '@types/oauth@0.9.5':
     dependencies:
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
 
   '@types/object-assign-deep@0.4.3': {}
 
@@ -8791,7 +8791,7 @@ snapshots:
 
   '@types/pg@8.11.6':
     dependencies:
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
       pg-protocol: 1.6.1
       pg-types: 4.0.2
 
@@ -8800,7 +8800,7 @@ snapshots:
   '@types/probe-image-size@7.2.4':
     dependencies:
       '@types/needle': 3.3.0
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
 
   '@types/pug@2.0.10': {}
 
@@ -8808,7 +8808,7 @@ snapshots:
 
   '@types/qrcode@1.5.5':
     dependencies:
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
 
   '@types/qs@6.9.15': {}
 
@@ -8822,7 +8822,7 @@ snapshots:
 
   '@types/responselike@1.0.3':
     dependencies:
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
 
   '@types/sanitize-html@2.11.0':
     dependencies:
@@ -8835,12 +8835,12 @@ snapshots:
   '@types/send@0.17.4':
     dependencies:
       '@types/mime': 1.3.5
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
 
   '@types/serve-static@1.15.7':
     dependencies:
       '@types/http-errors': 2.0.4
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
       '@types/send': 0.17.4
 
   '@types/sinonjs__fake-timers@8.1.5': {}
@@ -8867,11 +8867,11 @@ snapshots:
 
   '@types/websocket@1.0.10':
     dependencies:
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
 
   '@types/ws@8.5.10':
     dependencies:
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
 
   '@types/yargs-parser@21.0.3': {}
 
@@ -8879,9 +8879,9 @@ snapshots:
     dependencies:
       '@types/yargs-parser': 21.0.3
 
-  '@vitejs/plugin-vue@5.0.5(vite@5.3.3(@types/node@20.14.9)(sass@1.77.6)(terser@5.31.1))(vue@3.4.31(typescript@5.5.3))':
+  '@vitejs/plugin-vue@5.0.5(vite@5.3.3(@types/node@20.14.10)(sass@1.77.6)(terser@5.31.1))(vue@3.4.31(typescript@5.5.3))':
     dependencies:
-      vite: 5.3.3(@types/node@20.14.9)(sass@1.77.6)(terser@5.31.1)
+      vite: 5.3.3(@types/node@20.14.10)(sass@1.77.6)(terser@5.31.1)
       vue: 3.4.31(typescript@5.5.3)
 
   '@volar/language-core@2.4.0-alpha.15':
@@ -9774,13 +9774,13 @@ snapshots:
       - supports-color
       - ts-node
 
-  create-jest@29.7.0(@types/node@20.14.9)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.3)):
+  create-jest@29.7.0(@types/node@20.14.10)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)):
     dependencies:
       '@jest/types': 29.6.3
       chalk: 4.1.2
       exit: 0.1.2
       graceful-fs: 4.2.11
-      jest-config: 29.7.0(@types/node@20.14.9)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.3))
+      jest-config: 29.7.0(@types/node@20.14.10)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3))
       jest-util: 29.7.0
       prompts: 2.4.2
     transitivePeerDependencies:
@@ -9941,7 +9941,7 @@ snapshots:
 
   deepl-node@1.13.0:
     dependencies:
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
       axios: 1.7.2
       form-data: 3.0.1
       loglevel: 1.9.1
@@ -10944,7 +10944,7 @@ snapshots:
       '@jest/expect': 29.7.0
       '@jest/test-result': 29.7.0
       '@jest/types': 29.6.3
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
       chalk: 4.1.2
       co: 4.6.0
       dedent: 1.5.3
@@ -10966,7 +10966,7 @@ snapshots:
 
   jest-cli@29.7.0(@types/node@18.11.18):
     dependencies:
-      '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.3))
+      '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3))
       '@jest/test-result': 29.7.0
       '@jest/types': 29.6.3
       chalk: 4.1.2
@@ -10983,16 +10983,16 @@ snapshots:
       - supports-color
       - ts-node
 
-  jest-cli@29.7.0(@types/node@20.14.9)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.3)):
+  jest-cli@29.7.0(@types/node@20.14.10)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)):
     dependencies:
-      '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.3))
+      '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3))
       '@jest/test-result': 29.7.0
       '@jest/types': 29.6.3
       chalk: 4.1.2
-      create-jest: 29.7.0(@types/node@20.14.9)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.3))
+      create-jest: 29.7.0(@types/node@20.14.10)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3))
       exit: 0.1.2
       import-local: 3.1.0
-      jest-config: 29.7.0(@types/node@20.14.9)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.3))
+      jest-config: 29.7.0(@types/node@20.14.10)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3))
       jest-util: 29.7.0
       jest-validate: 29.7.0
       yargs: 17.7.2
@@ -11032,7 +11032,7 @@ snapshots:
       - babel-plugin-macros
       - supports-color
 
-  jest-config@29.7.0(@types/node@20.14.9)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.3)):
+  jest-config@29.7.0(@types/node@20.14.10)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)):
     dependencies:
       '@babel/core': 7.24.7
       '@jest/test-sequencer': 29.7.0
@@ -11057,8 +11057,8 @@ snapshots:
       slash: 3.0.0
       strip-json-comments: 3.1.1
     optionalDependencies:
-      '@types/node': 20.14.9
-      ts-node: 10.9.2(@types/node@20.14.9)(typescript@5.5.3)
+      '@types/node': 20.14.10
+      ts-node: 10.9.2(@types/node@20.14.10)(typescript@5.5.3)
     transitivePeerDependencies:
       - babel-plugin-macros
       - supports-color
@@ -11087,7 +11087,7 @@ snapshots:
       '@jest/environment': 29.7.0
       '@jest/fake-timers': 29.7.0
       '@jest/types': 29.6.3
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
       jest-mock: 29.7.0
       jest-util: 29.7.0
 
@@ -11104,7 +11104,7 @@ snapshots:
     dependencies:
       '@jest/types': 29.6.3
       '@types/graceful-fs': 4.1.9
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
       anymatch: 3.1.3
       fb-watchman: 2.0.2
       graceful-fs: 4.2.11
@@ -11143,7 +11143,7 @@ snapshots:
   jest-mock@29.7.0:
     dependencies:
       '@jest/types': 29.6.3
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
       jest-util: 29.7.0
 
   jest-pnp-resolver@1.2.3(jest-resolve@29.7.0):
@@ -11178,7 +11178,7 @@ snapshots:
       '@jest/test-result': 29.7.0
       '@jest/transform': 29.7.0
       '@jest/types': 29.6.3
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
       chalk: 4.1.2
       emittery: 0.13.1
       graceful-fs: 4.2.11
@@ -11206,7 +11206,7 @@ snapshots:
       '@jest/test-result': 29.7.0
       '@jest/transform': 29.7.0
       '@jest/types': 29.6.3
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
       chalk: 4.1.2
       cjs-module-lexer: 1.3.1
       collect-v8-coverage: 1.0.2
@@ -11252,7 +11252,7 @@ snapshots:
   jest-util@29.7.0:
     dependencies:
       '@jest/types': 29.6.3
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
       chalk: 4.1.2
       ci-info: 3.9.0
       graceful-fs: 4.2.11
@@ -11271,7 +11271,7 @@ snapshots:
     dependencies:
       '@jest/test-result': 29.7.0
       '@jest/types': 29.6.3
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
       ansi-escapes: 4.3.2
       chalk: 4.1.2
       emittery: 0.13.1
@@ -11285,20 +11285,20 @@ snapshots:
 
   jest-worker@27.5.1:
     dependencies:
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
       merge-stream: 2.0.0
       supports-color: 8.1.1
 
   jest-worker@29.7.0:
     dependencies:
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
       jest-util: 29.7.0
       merge-stream: 2.0.0
       supports-color: 8.1.1
 
   jest@29.7.0(@types/node@18.11.18):
     dependencies:
-      '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.3))
+      '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3))
       '@jest/types': 29.6.3
       import-local: 3.1.0
       jest-cli: 29.7.0(@types/node@18.11.18)
@@ -11308,12 +11308,12 @@ snapshots:
       - supports-color
       - ts-node
 
-  jest@29.7.0(@types/node@20.14.9)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.3)):
+  jest@29.7.0(@types/node@20.14.10)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)):
     dependencies:
-      '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.3))
+      '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3))
       '@jest/types': 29.6.3
       import-local: 3.1.0
-      jest-cli: 29.7.0(@types/node@20.14.9)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.3))
+      jest-cli: 29.7.0(@types/node@20.14.10)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3))
     transitivePeerDependencies:
       - '@types/node'
       - babel-plugin-macros
@@ -13174,11 +13174,11 @@ snapshots:
       '@jest/types': 29.6.3
       babel-jest: 29.7.0(@babel/core@7.24.7)
 
-  ts-jest@29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.14.9)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.3)))(typescript@5.5.3):
+  ts-jest@29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.14.10)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)))(typescript@5.5.3):
     dependencies:
       bs-logger: 0.2.6
       fast-json-stable-stringify: 2.1.0
-      jest: 29.7.0(@types/node@20.14.9)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.3))
+      jest: 29.7.0(@types/node@20.14.10)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3))
       jest-util: 29.7.0
       json5: 2.2.3
       lodash.memoize: 4.1.2
@@ -13202,14 +13202,14 @@ snapshots:
       typescript: 5.5.3
       webpack: 5.92.1
 
-  ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.3):
+  ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3):
     dependencies:
       '@cspotcode/source-map-support': 0.8.1
       '@tsconfig/node10': 1.0.11
       '@tsconfig/node12': 1.0.11
       '@tsconfig/node14': 1.0.3
       '@tsconfig/node16': 1.0.4
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
       acorn: 8.12.0
       acorn-walk: 8.3.3
       arg: 4.1.3
@@ -13286,7 +13286,7 @@ snapshots:
       shiki: 0.14.7
       typescript: 4.9.4
 
-  typeorm@0.3.20(ioredis@5.4.1)(pg@8.12.0)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.3)):
+  typeorm@0.3.20(ioredis@5.4.1)(pg@8.12.0)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)):
     dependencies:
       '@sqltools/formatter': 1.2.5
       app-root-path: 3.1.0
@@ -13306,7 +13306,7 @@ snapshots:
     optionalDependencies:
       ioredis: 5.4.1
       pg: 8.12.0
-      ts-node: 10.9.2(@types/node@20.14.9)(typescript@5.5.3)
+      ts-node: 10.9.2(@types/node@20.14.10)(typescript@5.5.3)
     transitivePeerDependencies:
       - supports-color
 
@@ -13406,22 +13406,22 @@ snapshots:
       core-util-is: 1.0.2
       extsprintf: 1.3.0
 
-  vite-plugin-compression@0.5.1(vite@5.3.3(@types/node@20.14.9)(sass@1.77.6)(terser@5.31.1)):
+  vite-plugin-compression@0.5.1(vite@5.3.3(@types/node@20.14.10)(sass@1.77.6)(terser@5.31.1)):
     dependencies:
       chalk: 4.1.2
       debug: 4.3.5(supports-color@8.1.1)
       fs-extra: 10.1.0
-      vite: 5.3.3(@types/node@20.14.9)(sass@1.77.6)(terser@5.31.1)
+      vite: 5.3.3(@types/node@20.14.10)(sass@1.77.6)(terser@5.31.1)
     transitivePeerDependencies:
       - supports-color
 
-  vite@5.3.3(@types/node@20.14.9)(sass@1.77.6)(terser@5.31.1):
+  vite@5.3.3(@types/node@20.14.10)(sass@1.77.6)(terser@5.31.1):
     dependencies:
       esbuild: 0.21.5
       postcss: 8.4.39
       rollup: 4.17.2
     optionalDependencies:
-      '@types/node': 20.14.9
+      '@types/node': 20.14.10
       fsevents: 2.3.3
       sass: 1.77.6
       terser: 5.31.1

From 271df05244588e77cb071faba2214afdb7845aeb Mon Sep 17 00:00:00 2001
From: GitLab CI
 <project_7_bot_1bfaee5701aed20091a86249a967a6c1@noreply.firefish.dev>
Date: Fri, 5 Jul 2024 20:07:22 +0000
Subject: [PATCH 11/29] fix(deps): update dependency aws-sdk to v2.1655.0

---
 packages/backend/package.json |  2 +-
 pnpm-lock.yaml                | 10 +++++-----
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/packages/backend/package.json b/packages/backend/package.json
index f17b02d734..96a27f6fb0 100644
--- a/packages/backend/package.json
+++ b/packages/backend/package.json
@@ -33,7 +33,7 @@
 		"adm-zip": "0.5.14",
 		"ajv": "8.16.0",
 		"archiver": "7.0.1",
-		"aws-sdk": "2.1654.0",
+		"aws-sdk": "2.1655.0",
 		"axios": "1.7.2",
 		"backend-rs": "workspace:*",
 		"blurhash": "2.0.5",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 64b29c7227..d386d37198 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -82,8 +82,8 @@ importers:
         specifier: 7.0.1
         version: 7.0.1
       aws-sdk:
-        specifier: 2.1654.0
-        version: 2.1654.0
+        specifier: 2.1655.0
+        version: 2.1655.0
       axios:
         specifier: 1.7.2
         version: 1.7.2
@@ -2935,8 +2935,8 @@ packages:
     resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
     engines: {node: '>= 0.4'}
 
-  aws-sdk@2.1654.0:
-    resolution: {integrity: sha512-b5ryvXipBJod9Uh1GUfQNgi5tIIiluxJbyqr/hZ/mr5U8WxrrfjVq3nGnx5JjevFKYRqXIywhumsVyanfACzFA==}
+  aws-sdk@2.1655.0:
+    resolution: {integrity: sha512-Tec0/ZHK8ES6NvAEJhgEm3znyoPb4QUuyQZ2RdvbNTbpJDbeeDuu4BaCAR5HbEVXREVk1/8OBDMsWW1B5lkcww==}
     engines: {node: '>= 10.0.0'}
 
   axios@0.24.0:
@@ -9199,7 +9199,7 @@ snapshots:
     dependencies:
       possible-typed-array-names: 1.0.0
 
-  aws-sdk@2.1654.0:
+  aws-sdk@2.1655.0:
     dependencies:
       buffer: 4.9.2
       events: 1.1.1

From b47ca37df05bbf3563e14e383bd0c4578c1c776d Mon Sep 17 00:00:00 2001
From: GitLab CI
 <project_7_bot_1bfaee5701aed20091a86249a967a6c1@noreply.firefish.dev>
Date: Sat, 6 Jul 2024 04:08:19 +0000
Subject: [PATCH 12/29] chore(deps): lock file maintenance

---
 Cargo.lock     |  74 +++++++++++++-------------
 pnpm-lock.yaml | 142 +++++++++++++++++++++++--------------------------
 2 files changed, 105 insertions(+), 111 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index c73b469059..460e99fb2a 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -334,9 +334,9 @@ dependencies = [
 
 [[package]]
 name = "bitstream-io"
-version = "2.3.0"
+version = "2.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c12d1856e42f0d817a835fe55853957c85c8c8a470114029143d3f12671446e"
+checksum = "415f8399438eb5e4b2f73ed3152a3448b98149dda642a957ee704e1daa5cf1d8"
 
 [[package]]
 name = "blake2"
@@ -447,7 +447,7 @@ dependencies = [
  "num-traits",
  "serde",
  "wasm-bindgen",
- "windows-targets 0.52.5",
+ "windows-targets 0.52.6",
 ]
 
 [[package]]
@@ -1647,7 +1647,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e310b3a6b5907f99202fcdb4960ff45b93735d7c7d96b760fcff8db2dc0e103d"
 dependencies = [
  "cfg-if",
- "windows-targets 0.52.5",
+ "windows-targets 0.52.6",
 ]
 
 [[package]]
@@ -2196,7 +2196,7 @@ dependencies = [
  "libc",
  "redox_syscall 0.5.2",
  "smallvec",
- "windows-targets 0.52.5",
+ "windows-targets 0.52.6",
 ]
 
 [[package]]
@@ -2553,9 +2553,9 @@ dependencies = [
 
 [[package]]
 name = "ravif"
-version = "0.11.5"
+version = "0.11.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc13288f5ab39e6d7c9d501759712e6969fcc9734220846fc9ed26cae2cc4234"
+checksum = "67376f469e7e7840d0040bbf4b9b3334005bb167f814621326e4c7ab8cd6e944"
 dependencies = [
  "avif-serialize",
  "imgref",
@@ -3566,9 +3566,9 @@ dependencies = [
 
 [[package]]
 name = "tinyvec"
-version = "1.6.1"
+version = "1.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c55115c6fbe2d2bef26eb09ad74bde02d8255476fc0c7b515ef09fbb35742d82"
+checksum = "ce6b6a2fb3a985e99cebfaefa9faa3024743da73304ca1c683a36429613d3d22"
 dependencies = [
  "tinyvec_macros",
 ]
@@ -4016,7 +4016,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be"
 dependencies = [
  "windows-core",
- "windows-targets 0.52.5",
+ "windows-targets 0.52.6",
 ]
 
 [[package]]
@@ -4025,7 +4025,7 @@ version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
 dependencies = [
- "windows-targets 0.52.5",
+ "windows-targets 0.52.6",
 ]
 
 [[package]]
@@ -4043,7 +4043,7 @@ version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
 dependencies = [
- "windows-targets 0.52.5",
+ "windows-targets 0.52.6",
 ]
 
 [[package]]
@@ -4063,18 +4063,18 @@ dependencies = [
 
 [[package]]
 name = "windows-targets"
-version = "0.52.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
 dependencies = [
- "windows_aarch64_gnullvm 0.52.5",
- "windows_aarch64_msvc 0.52.5",
- "windows_i686_gnu 0.52.5",
+ "windows_aarch64_gnullvm 0.52.6",
+ "windows_aarch64_msvc 0.52.6",
+ "windows_i686_gnu 0.52.6",
  "windows_i686_gnullvm",
- "windows_i686_msvc 0.52.5",
- "windows_x86_64_gnu 0.52.5",
- "windows_x86_64_gnullvm 0.52.5",
- "windows_x86_64_msvc 0.52.5",
+ "windows_i686_msvc 0.52.6",
+ "windows_x86_64_gnu 0.52.6",
+ "windows_x86_64_gnullvm 0.52.6",
+ "windows_x86_64_msvc 0.52.6",
 ]
 
 [[package]]
@@ -4085,9 +4085,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
 
 [[package]]
 name = "windows_aarch64_gnullvm"
-version = "0.52.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
 
 [[package]]
 name = "windows_aarch64_msvc"
@@ -4097,9 +4097,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
 
 [[package]]
 name = "windows_aarch64_msvc"
-version = "0.52.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
 
 [[package]]
 name = "windows_i686_gnu"
@@ -4109,15 +4109,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
 
 [[package]]
 name = "windows_i686_gnu"
-version = "0.52.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
 
 [[package]]
 name = "windows_i686_gnullvm"
-version = "0.52.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
 
 [[package]]
 name = "windows_i686_msvc"
@@ -4127,9 +4127,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
 
 [[package]]
 name = "windows_i686_msvc"
-version = "0.52.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
 
 [[package]]
 name = "windows_x86_64_gnu"
@@ -4139,9 +4139,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
 
 [[package]]
 name = "windows_x86_64_gnu"
-version = "0.52.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
@@ -4151,9 +4151,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
-version = "0.52.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
 
 [[package]]
 name = "windows_x86_64_msvc"
@@ -4163,9 +4163,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
 
 [[package]]
 name = "windows_x86_64_msvc"
-version = "0.52.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
 
 [[package]]
 name = "winnow"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 4470a2c48f..005cc8f2b3 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -2124,11 +2124,11 @@ packages:
   '@octokit/openapi-types@22.2.0':
     resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==}
 
-  '@octokit/plugin-paginate-rest@11.3.1':
-    resolution: {integrity: sha512-ryqobs26cLtM1kQxqeZui4v8FeznirUsksiA+RYemMPJ7Micju0WSkv50dBksTuZks9O5cg4wp+t8fZ/cLY56g==}
+  '@octokit/plugin-paginate-rest@11.3.3':
+    resolution: {integrity: sha512-o4WRoOJZlKqEEgj+i9CpcmnByvtzoUYC6I8PD2SA95M+BJ2x8h7oLcVOg9qcowWXBOdcTRsMZiwvM3EyLm9AfA==}
     engines: {node: '>= 18'}
     peerDependencies:
-      '@octokit/core': '5'
+      '@octokit/core': '>=6'
 
   '@octokit/plugin-request-log@5.3.0':
     resolution: {integrity: sha512-FiGcyjdtYPlr03ExBk/0ysIlEFIFGJQAVoPPMxL19B24bVSEiZQnVGBunNtaAF1YnvE/EFoDpXmITtRnyCiypQ==}
@@ -2136,11 +2136,11 @@ packages:
     peerDependencies:
       '@octokit/core': '>=6'
 
-  '@octokit/plugin-rest-endpoint-methods@13.2.2':
-    resolution: {integrity: sha512-EI7kXWidkt3Xlok5uN43suK99VWqc8OaIMktY9d9+RNKl69juoTyxmLoWPIZgJYzi41qj/9zU7G/ljnNOJ5AFA==}
+  '@octokit/plugin-rest-endpoint-methods@13.2.4':
+    resolution: {integrity: sha512-gusyAVgTrPiuXOdfqOySMDztQHv6928PQ3E4dqVGEtOvRXAKRbJR4b1zQyniIT9waqaWk/UDaoJ2dyPr7Bk7Iw==}
     engines: {node: '>= 18'}
     peerDependencies:
-      '@octokit/core': ^5
+      '@octokit/core': '>=6'
 
   '@octokit/request-error@6.1.1':
     resolution: {integrity: sha512-1mw1gqT3fR/WFvnoVpY/zUM2o/XkMs/2AszUUG9I69xn0JFLv6PGkPhNk5lbfvROs79wiS0bqiJNxfCZcRJJdg==}
@@ -2797,8 +2797,8 @@ packages:
     engines: {node: '>=0.4.0'}
     hasBin: true
 
-  acorn@8.12.0:
-    resolution: {integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==}
+  acorn@8.12.1:
+    resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==}
     engines: {node: '>=0.4.0'}
     hasBin: true
 
@@ -3137,8 +3137,8 @@ packages:
     resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
     engines: {node: '>=10'}
 
-  caniuse-lite@1.0.30001639:
-    resolution: {integrity: sha512-eFHflNTBIlFwP2AIKaYuBQN/apnUoKNhBdza8ZnW/h2di4LCZ4xFqYlxUxo+LQ76KFI1PGcC1QDxMbxTZpSCAg==}
+  caniuse-lite@1.0.30001640:
+    resolution: {integrity: sha512-lA4VMpW0PSUrFnkmVuEKBUovSWKhj7puyCg8StBChgu298N1AtuF1sKWEvfDuimSEDbhlb/KqPKC3fs1HbuQUA==}
 
   canonicalize@1.0.8:
     resolution: {integrity: sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==}
@@ -3844,8 +3844,8 @@ packages:
     engines: {node: '>=0.10.0'}
     hasBin: true
 
-  electron-to-chromium@1.4.815:
-    resolution: {integrity: sha512-OvpTT2ItpOXJL7IGcYakRjHCt8L5GrrN/wHCQsRB4PQa1X9fe+X9oen245mIId7s14xvArCGSTIq644yPUKKLg==}
+  electron-to-chromium@1.4.818:
+    resolution: {integrity: sha512-eGvIk2V0dGImV9gWLq8fDfTTsCAeMDwZqEPMr+jMInxZdnp9Us8UpovYpRCf9NQ7VOFgrN2doNSgvISbsbNpxA==}
 
   emittery@0.13.1:
     resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==}
@@ -4230,9 +4230,9 @@ packages:
   glob-to-regexp@0.4.1:
     resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
 
-  glob@10.4.2:
-    resolution: {integrity: sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==}
-    engines: {node: '>=16 || 14 >=14.18'}
+  glob@10.4.3:
+    resolution: {integrity: sha512-Q38SGlYRpVtDBPSWEylRyctn7uDeTp4NQERTLiCT1FqA9JXPYWqAVmQU6qh4r/zMM5ehxTcbaO8EjhWnvEhmyg==}
+    engines: {node: '>=18'}
     hasBin: true
 
   glob@7.2.3:
@@ -4450,8 +4450,8 @@ packages:
   ini@1.3.8:
     resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
 
-  inquirer@9.3.2:
-    resolution: {integrity: sha512-+ynEbhWKhyomnaX0n2aLIMSkgSlGB5RrWbNXnEqj6mdaIydu6y40MdBjL38SAB0JcdmOaIaMua1azdjLEr3sdw==}
+  inquirer@9.3.4:
+    resolution: {integrity: sha512-Hp6meNSDzp+Oc9JNUUlYsK81dxaPrrBRa7H/s3+yebCDRJe4UNKYSkEUZoIcuKJjNipBLPKsuc7BvO6tLzo/KA==}
     engines: {node: '>=18'}
 
   insert-text-at-cursor@0.3.0:
@@ -4656,9 +4656,9 @@ packages:
     resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==}
     engines: {node: '>=8'}
 
-  jackspeak@3.4.0:
-    resolution: {integrity: sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==}
-    engines: {node: '>=14'}
+  jackspeak@3.4.1:
+    resolution: {integrity: sha512-U23pQPDnmYybVkYjObcuYMk43VRlMLLqLI+RdZy8s8WV8WsxO9SnqSroKaluuvcNOdCAlauKszDwd+umbot5Mg==}
+    engines: {node: '>=18'}
 
   jake@10.9.1:
     resolution: {integrity: sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==}
@@ -5580,8 +5580,8 @@ packages:
     resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
     engines: {node: '>=8'}
 
-  peek-readable@5.1.0:
-    resolution: {integrity: sha512-Tq2I+yoz6Xq3S09E2PyjzOy/oYuNg5v7wyjmrw7OQYSKc7QnDs63q4RXFXraMoI6LZyiEOJ/wDEYzGDPhWwNPA==}
+  peek-readable@5.1.1:
+    resolution: {integrity: sha512-4hEOSH7KeEaZpMDF/xfm1W9fS5rT7Ett3BkXWHqAEzRLLwLaHkwOL+GvvpIEh9UrvX9BDhzfkvteslgraoH69w==}
     engines: {node: '>=14.16'}
 
   peek-stream@1.1.3:
@@ -6349,8 +6349,8 @@ packages:
   strnum@1.0.5:
     resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==}
 
-  strtok3@7.0.0:
-    resolution: {integrity: sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==}
+  strtok3@7.1.0:
+    resolution: {integrity: sha512-19dQEwG6Jd+VabjPRyBhymIF069vZiqWSZa2jJBoKJTsqGKnTxowGoQaLnz+yLARfDI041IUQekyPUMWElOgsQ==}
     engines: {node: '>=14.16'}
 
   summaly@2.7.0:
@@ -6739,8 +6739,8 @@ packages:
     resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
     engines: {node: '>= 0.8'}
 
-  update-browserslist-db@1.0.16:
-    resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==}
+  update-browserslist-db@1.1.0:
+    resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==}
     hasBin: true
     peerDependencies:
       browserslist: '>= 4.21.0'
@@ -7070,10 +7070,6 @@ packages:
     resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==}
     engines: {node: '>=6'}
 
-  yargs-parser@20.2.4:
-    resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==}
-    engines: {node: '>=10'}
-
   yargs-parser@20.2.9:
     resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
     engines: {node: '>=10'}
@@ -7113,12 +7109,12 @@ packages:
     resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
     engines: {node: '>=10'}
 
-  yoctocolors-cjs@2.1.1:
-    resolution: {integrity: sha512-c6T13b6qYcJZvck7QbEFXrFX/Mu2KOjvAGiKHmYMUg96jxNpfP6i+psGW72BOPxOIDUJrORG+Kyu7quMX9CQBQ==}
+  yoctocolors-cjs@2.1.2:
+    resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==}
     engines: {node: '>=18'}
 
-  yoctocolors@2.1.0:
-    resolution: {integrity: sha512-FsQpXXeOEe05tcJN4Z2eicuC6+6KiJdBbPOAChanSkwwjZ277XGsh8wh/HaPuGeifTiw/7dgAzabitu2bnDvRg==}
+  yoctocolors@2.1.1:
+    resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==}
     engines: {node: '>=18'}
 
   zip-stream@6.0.1:
@@ -8076,7 +8072,7 @@ snapshots:
       clipanion: 3.2.1(typanion@3.14.0)
       colorette: 2.0.20
       debug: 4.3.5(supports-color@8.1.1)
-      inquirer: 9.3.2
+      inquirer: 9.3.4
       js-yaml: 4.1.0
       lodash-es: 4.17.21
       semver: 7.6.2
@@ -8327,7 +8323,7 @@ snapshots:
 
   '@octokit/openapi-types@22.2.0': {}
 
-  '@octokit/plugin-paginate-rest@11.3.1(@octokit/core@6.1.2)':
+  '@octokit/plugin-paginate-rest@11.3.3(@octokit/core@6.1.2)':
     dependencies:
       '@octokit/core': 6.1.2
       '@octokit/types': 13.5.0
@@ -8336,7 +8332,7 @@ snapshots:
     dependencies:
       '@octokit/core': 6.1.2
 
-  '@octokit/plugin-rest-endpoint-methods@13.2.2(@octokit/core@6.1.2)':
+  '@octokit/plugin-rest-endpoint-methods@13.2.4(@octokit/core@6.1.2)':
     dependencies:
       '@octokit/core': 6.1.2
       '@octokit/types': 13.5.0
@@ -8355,9 +8351,9 @@ snapshots:
   '@octokit/rest@21.0.0':
     dependencies:
       '@octokit/core': 6.1.2
-      '@octokit/plugin-paginate-rest': 11.3.1(@octokit/core@6.1.2)
+      '@octokit/plugin-paginate-rest': 11.3.3(@octokit/core@6.1.2)
       '@octokit/plugin-request-log': 5.3.0(@octokit/core@6.1.2)
-      '@octokit/plugin-rest-endpoint-methods': 13.2.2(@octokit/core@6.1.2)
+      '@octokit/plugin-rest-endpoint-methods': 13.2.4(@octokit/core@6.1.2)
 
   '@octokit/types@13.5.0':
     dependencies:
@@ -9062,17 +9058,17 @@ snapshots:
       mime-types: 2.1.35
       negotiator: 0.6.3
 
-  acorn-import-attributes@1.9.5(acorn@8.12.0):
+  acorn-import-attributes@1.9.5(acorn@8.12.1):
     dependencies:
-      acorn: 8.12.0
+      acorn: 8.12.1
 
   acorn-walk@8.3.3:
     dependencies:
-      acorn: 8.12.0
+      acorn: 8.12.1
 
   acorn@7.4.1: {}
 
-  acorn@8.12.0: {}
+  acorn@8.12.1: {}
 
   adm-zip@0.5.14: {}
 
@@ -9143,7 +9139,7 @@ snapshots:
 
   archiver-utils@5.0.2:
     dependencies:
-      glob: 10.4.2
+      glob: 10.4.3
       graceful-fs: 4.2.11
       is-stream: 2.0.1
       lazystream: 1.0.1
@@ -9354,10 +9350,10 @@ snapshots:
 
   browserslist@4.23.1:
     dependencies:
-      caniuse-lite: 1.0.30001639
-      electron-to-chromium: 1.4.815
+      caniuse-lite: 1.0.30001640
+      electron-to-chromium: 1.4.818
       node-releases: 2.0.14
-      update-browserslist-db: 1.0.16(browserslist@4.23.1)
+      update-browserslist-db: 1.1.0(browserslist@4.23.1)
 
   bs-logger@0.2.6:
     dependencies:
@@ -9385,7 +9381,7 @@ snapshots:
   buffer@4.9.2:
     dependencies:
       base64-js: 1.5.1
-      ieee754: 1.2.1
+      ieee754: 1.1.13
       isarray: 1.0.0
 
   buffer@5.7.1:
@@ -9471,7 +9467,7 @@ snapshots:
 
   camelcase@6.3.0: {}
 
-  caniuse-lite@1.0.30001639: {}
+  caniuse-lite@1.0.30001640: {}
 
   canonicalize@1.0.8: {}
 
@@ -10067,7 +10063,7 @@ snapshots:
     dependencies:
       jake: 10.9.1
 
-  electron-to-chromium@1.4.815: {}
+  electron-to-chromium@1.4.818: {}
 
   emittery@0.13.1: {}
 
@@ -10241,7 +10237,7 @@ snapshots:
       pretty-ms: 9.0.0
       signal-exit: 4.1.0
       strip-final-newline: 4.0.0
-      yoctocolors: 2.1.0
+      yoctocolors: 2.1.1
 
   exit@0.1.2: {}
 
@@ -10317,7 +10313,7 @@ snapshots:
   file-type@19.0.0:
     dependencies:
       readable-web-to-node-stream: 3.0.2
-      strtok3: 7.0.0
+      strtok3: 7.1.0
       token-types: 5.0.1
 
   file-type@3.9.0: {}
@@ -10475,10 +10471,10 @@ snapshots:
 
   glob-to-regexp@0.4.1: {}
 
-  glob@10.4.2:
+  glob@10.4.3:
     dependencies:
       foreground-child: 3.2.1
-      jackspeak: 3.4.0
+      jackspeak: 3.4.1
       minimatch: 9.0.5
       minipass: 7.1.2
       package-json-from-dist: 1.0.0
@@ -10727,7 +10723,7 @@ snapshots:
 
   ini@1.3.8: {}
 
-  inquirer@9.3.2:
+  inquirer@9.3.4:
     dependencies:
       '@inquirer/figures': 1.0.3
       ansi-escapes: 4.3.2
@@ -10740,7 +10736,7 @@ snapshots:
       string-width: 4.2.3
       strip-ansi: 6.0.1
       wrap-ansi: 6.2.0
-      yoctocolors-cjs: 2.1.1
+      yoctocolors-cjs: 2.1.2
 
   insert-text-at-cursor@0.3.0: {}
 
@@ -10919,7 +10915,7 @@ snapshots:
       html-escaper: 2.0.2
       istanbul-lib-report: 3.0.1
 
-  jackspeak@3.4.0:
+  jackspeak@3.4.1:
     dependencies:
       '@isaacs/cliui': 8.0.2
     optionalDependencies:
@@ -11328,7 +11324,7 @@ snapshots:
     dependencies:
       config-chain: 1.1.13
       editorconfig: 1.0.4
-      glob: 10.4.2
+      glob: 10.4.3
       js-cookie: 3.0.5
       nopt: 7.2.1
 
@@ -11605,7 +11601,7 @@ snapshots:
       content-disposition: 0.5.4
       content-type: 1.0.5
       cookies: 0.8.0
-      debug: 4.3.5(supports-color@8.1.1)
+      debug: 4.3.3
       delegates: 1.0.0
       depd: 2.0.0
       destroy: 1.2.0
@@ -12159,7 +12155,7 @@ snapshots:
 
   path-type@4.0.0: {}
 
-  peek-readable@5.1.0: {}
+  peek-readable@5.1.1: {}
 
   peek-stream@1.1.3:
     dependencies:
@@ -12978,10 +12974,10 @@ snapshots:
 
   strnum@1.0.5: {}
 
-  strtok3@7.0.0:
+  strtok3@7.1.0:
     dependencies:
       '@tokenizer/token': 0.3.0
-      peek-readable: 5.1.0
+      peek-readable: 5.1.1
 
   summaly@2.7.0:
     dependencies:
@@ -13058,7 +13054,7 @@ snapshots:
   terser@5.31.1:
     dependencies:
       '@jridgewell/source-map': 0.3.6
-      acorn: 8.12.0
+      acorn: 8.12.1
       commander: 2.20.3
       source-map-support: 0.5.21
 
@@ -13210,7 +13206,7 @@ snapshots:
       '@tsconfig/node14': 1.0.3
       '@tsconfig/node16': 1.0.4
       '@types/node': 20.14.10
-      acorn: 8.12.0
+      acorn: 8.12.1
       acorn-walk: 8.3.3
       arg: 4.1.3
       create-require: 1.1.1
@@ -13296,7 +13292,7 @@ snapshots:
       dayjs: 1.11.11
       debug: 4.3.5(supports-color@8.1.1)
       dotenv: 16.4.5
-      glob: 10.4.2
+      glob: 10.4.3
       mkdirp: 2.1.6
       reflect-metadata: 0.2.2
       sha.js: 2.4.11
@@ -13341,7 +13337,7 @@ snapshots:
 
   unpipe@1.0.0: {}
 
-  update-browserslist-db@1.0.16(browserslist@4.23.1):
+  update-browserslist-db@1.1.0(browserslist@4.23.1):
     dependencies:
       browserslist: 4.23.1
       escalade: 3.1.2
@@ -13510,8 +13506,8 @@ snapshots:
       '@webassemblyjs/ast': 1.12.1
       '@webassemblyjs/wasm-edit': 1.12.1
       '@webassemblyjs/wasm-parser': 1.12.1
-      acorn: 8.12.0
-      acorn-import-attributes: 1.9.5(acorn@8.12.0)
+      acorn: 8.12.1
+      acorn-import-attributes: 1.9.5(acorn@8.12.1)
       browserslist: 4.23.1
       chrome-trace-event: 1.0.4
       enhanced-resolve: 5.17.0
@@ -13638,7 +13634,7 @@ snapshots:
 
   xml2js@0.6.2:
     dependencies:
-      sax: 1.4.1
+      sax: 1.2.1
       xmlbuilder: 11.0.1
 
   xmlbuilder@11.0.1: {}
@@ -13664,8 +13660,6 @@ snapshots:
       camelcase: 5.3.1
       decamelize: 1.2.0
 
-  yargs-parser@20.2.4: {}
-
   yargs-parser@20.2.9: {}
 
   yargs-parser@21.1.1: {}
@@ -13699,7 +13693,7 @@ snapshots:
       require-directory: 2.1.1
       string-width: 4.2.3
       y18n: 5.0.8
-      yargs-parser: 20.2.4
+      yargs-parser: 20.2.9
 
   yargs@17.7.2:
     dependencies:
@@ -13722,9 +13716,9 @@ snapshots:
 
   yocto-queue@0.1.0: {}
 
-  yoctocolors-cjs@2.1.1: {}
+  yoctocolors-cjs@2.1.2: {}
 
-  yoctocolors@2.1.0: {}
+  yoctocolors@2.1.1: {}
 
   zip-stream@6.0.1:
     dependencies:

From 8585d112d17e032d1812dabc7292447c26fb54f9 Mon Sep 17 00:00:00 2001
From: naskya <m@naskya.net>
Date: Sat, 6 Jul 2024 13:09:51 +0900
Subject: [PATCH 13/29] chore (deps): Cargo.lock maintenance

---
 Cargo.lock | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 460e99fb2a..59b91b908d 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -334,9 +334,9 @@ dependencies = [
 
 [[package]]
 name = "bitstream-io"
-version = "2.4.2"
+version = "2.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "415f8399438eb5e4b2f73ed3152a3448b98149dda642a957ee704e1daa5cf1d8"
+checksum = "7c12d1856e42f0d817a835fe55853957c85c8c8a470114029143d3f12671446e"
 
 [[package]]
 name = "blake2"
@@ -2553,9 +2553,9 @@ dependencies = [
 
 [[package]]
 name = "ravif"
-version = "0.11.7"
+version = "0.11.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "67376f469e7e7840d0040bbf4b9b3334005bb167f814621326e4c7ab8cd6e944"
+checksum = "bc13288f5ab39e6d7c9d501759712e6969fcc9734220846fc9ed26cae2cc4234"
 dependencies = [
  "avif-serialize",
  "imgref",

From a73dab36f4f37e8dfe481d7bbfdf21ab7d6f1b6e Mon Sep 17 00:00:00 2001
From: GitLab CI
 <project_7_bot_1bfaee5701aed20091a86249a967a6c1@noreply.firefish.dev>
Date: Sat, 6 Jul 2024 12:05:09 +0000
Subject: [PATCH 14/29] chore(deps): update dependency cropperjs to v2.0.0-rc.1

---
 packages/client/package.json |   2 +-
 pnpm-lock.yaml               | 148 +++++++++++++++++------------------
 2 files changed, 75 insertions(+), 75 deletions(-)

diff --git a/packages/client/package.json b/packages/client/package.json
index 5def464b86..ad2db35cda 100644
--- a/packages/client/package.json
+++ b/packages/client/package.json
@@ -45,7 +45,7 @@
 		"check-password-strength": "2.0.10",
 		"city-timezones": "1.2.1",
 		"compare-versions": "6.1.0",
-		"cropperjs": "2.0.0-rc.0",
+		"cropperjs": "2.0.0-rc.1",
 		"date-fns": "3.6.0",
 		"emojilib": "3.0.12",
 		"eventemitter3": "5.0.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 005cc8f2b3..7a166599c4 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -599,8 +599,8 @@ importers:
         specifier: 6.1.0
         version: 6.1.0
       cropperjs:
-        specifier: 2.0.0-rc.0
-        version: 2.0.0-rc.0
+        specifier: 2.0.0-rc.1
+        version: 2.0.0-rc.1
       date-fns:
         specifier: 3.6.0
         version: 3.6.0
@@ -1166,38 +1166,38 @@ packages:
   '@chainsafe/is-ip@2.0.2':
     resolution: {integrity: sha512-ndGqEMG1W5WkGagaqOZHpPU172AGdxr+LD15sv3WIUvT5oCFUrG1Y0CW/v2Egwj4JXEvSibaIIIqImsm98y1nA==}
 
-  '@cropper/element-canvas@2.0.0-rc.0':
-    resolution: {integrity: sha512-SKrGJS5Wnx8RzTnqcDWxpW6GEW9k0pvNPiu5cFtpGl6dMbs1fBTBqhV8xiv4wiw9lzRvI+kZW+0AlKpYy3sFEQ==}
+  '@cropper/element-canvas@2.0.0-rc.1':
+    resolution: {integrity: sha512-jRt9OM7cls+zch8U2m7pA9wp8dNOz0EtedGKkqH+DInUYw1+UtonEJirrxyl1YHRgOme5M5DTsDmkUSrUiZN6g==}
 
-  '@cropper/element-crosshair@2.0.0-rc.0':
-    resolution: {integrity: sha512-3GcreYQ3wnVV57XZ7tmhkr39fxa3+dqql/odrtgjqPjWQe/wKgQCe3I3Zihs4hEIGpls1D6aF2uX670xR/wt2w==}
+  '@cropper/element-crosshair@2.0.0-rc.1':
+    resolution: {integrity: sha512-xfLelqM8EnRZUf7xEE88RWQQx5erUv7jrzni52bAw3/Ua8HXIz3uAMnkrGKOTBj8K4Rv/mNJY8k1DVAEfHY6Lg==}
 
-  '@cropper/element-grid@2.0.0-rc.0':
-    resolution: {integrity: sha512-tb2DaDH1v23lP/R6CJEEdSlNmz5nC+SGCiTHjNmnDAphnSrfzByOyc4q2+t88B3UbT574AtCe5sYZqraZwkQ3w==}
+  '@cropper/element-grid@2.0.0-rc.1':
+    resolution: {integrity: sha512-U/BYPl76upd9sXT+pZTFoQzUqWyNxdGs4YR2UtaVCfTMHLDTrssPAedmqEEnHgbqVcr325sIEfVmwWVA+v+8Dg==}
 
-  '@cropper/element-handle@2.0.0-rc.0':
-    resolution: {integrity: sha512-RLQKDXDRX7XwG4rxauGidqbzamACr4RCat4msGAg1ULOUL1Ba8r4e5cxaKfeYHcmNW9flBg+AbPF8SERwmU56w==}
+  '@cropper/element-handle@2.0.0-rc.1':
+    resolution: {integrity: sha512-GuOHbjkg5CP1+oFzWQeD7VZffUE86dp4gKv5egLxkBEwnQp1VQxjO7L1Wkgj+KsQymoDczsl+x4bF12KDyDg2g==}
 
-  '@cropper/element-image@2.0.0-rc.0':
-    resolution: {integrity: sha512-anlxSutFmfkaxXJGpdmSRx/h3Tk7ceD6G7FiGtu3hXwr7lFJQ7zFYOrV+1RdQnxahgKJdiUc540ijX+hrWXjBA==}
+  '@cropper/element-image@2.0.0-rc.1':
+    resolution: {integrity: sha512-ttzawKbUkR2A9U3bc2AN/jbNdszBP/yb83PIc5jekjOs+Z7kUBVdOo1SLIewpQ0DjUzhfCRXWUowP1McVQUXZw==}
 
-  '@cropper/element-selection@2.0.0-rc.0':
-    resolution: {integrity: sha512-On158qtmYG0nwIDH/1WqyMj2Fq4sLayWGJ0KgyWX6MRessY6pA+ZEt7jXq7TqTUfFVDs+pyeLHar4Dybs7U69A==}
+  '@cropper/element-selection@2.0.0-rc.1':
+    resolution: {integrity: sha512-AcRHRbsyt9xRfBD1QRyNDTS+vaYg6uAeuqhk/Ra58pqxlhtoimAV3oQ7uc/edwOlK60f/DxtKCc8rSOYFQ85bQ==}
 
-  '@cropper/element-shade@2.0.0-rc.0':
-    resolution: {integrity: sha512-w/zxsZKHNqfArQOsMgYUUms6OuACwJiJX86//ChDaZCooqFWwC0MuEmrRkuP/lcWqq3SdfeAwOpeoflsVOeDNQ==}
+  '@cropper/element-shade@2.0.0-rc.1':
+    resolution: {integrity: sha512-nHv2WujETENoIfxWQn7TYiOnXm5YUnZsoG4r6njK5cxj0gIUfPudUSbjWCQSuB2oxxpeEK8oyTdfOZtP9cxK4g==}
 
-  '@cropper/element-viewer@2.0.0-rc.0':
-    resolution: {integrity: sha512-XZlOrXFSdEyc711YTWPqIW2eyN1JdG3fL8hElXyYfIyZm7p0BVYMTVoX3jQ59K50FFegYclUYHUxRIybolOx7g==}
+  '@cropper/element-viewer@2.0.0-rc.1':
+    resolution: {integrity: sha512-xTj0BObCygbVWXc7t7FYZ9k2eFyWN360it5uGeAkImXcwINRQGTFcLLOjs6i3SwedI7F1a1yNcTBfoT1B/sNAg==}
 
-  '@cropper/element@2.0.0-rc.0':
-    resolution: {integrity: sha512-VrVQpUKZYBEq7GOxkzui5coSMALrRJUzqi0Z3FGJ1+wce7KqMuBMZQ2wkZIevAC+I0AWip4NNREXqeySexRMrQ==}
+  '@cropper/element@2.0.0-rc.1':
+    resolution: {integrity: sha512-OPKgjUgYC2Xmv77vEqtAR6bdfKOW+v9FrSjr4re3u95rcVj6NJ0JidIta41Ipp8KydHTXSmLetq4XDrA+vuIJQ==}
 
-  '@cropper/elements@2.0.0-rc.0':
-    resolution: {integrity: sha512-VAbLz+sBMkraDQNQPvMb6HoGYR8xQDj8d5Yf3V94KCUmcD9sHWkyhaHJ+ThXQc7oyhPqv2puPl9371ucl40j5w==}
+  '@cropper/elements@2.0.0-rc.1':
+    resolution: {integrity: sha512-6qbtCq3iL3dETVav2XA03a8iLkHXWMIqHFxViMjlLr9CSuDjjaS5wp0JDuGtPv5FHxjsjyQ8Yayt8Ak5p09Zxg==}
 
-  '@cropper/utils@2.0.0-rc.0':
-    resolution: {integrity: sha512-28owk7shP5915It+VeXFn1mjdClYfAlkqBU3yIkjkeOmMP7Fd7TX8/969bvamJW+5+8afcxzAshgs+zzKO+qBQ==}
+  '@cropper/utils@2.0.0-rc.1':
+    resolution: {integrity: sha512-kreB3wdrAhmTEscfB8/j7ksGBgYSKN+28t37CAI0Vb5DvX/aUDPDH+3e2kyD7YE+DIZgdnuY2FsMYJAQ9sTThg==}
 
   '@cspotcode/source-map-support@0.8.1':
     resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
@@ -3569,8 +3569,8 @@ packages:
     resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==}
     engines: {node: '>=12.0.0'}
 
-  cropperjs@2.0.0-rc.0:
-    resolution: {integrity: sha512-/1oQT6Ten55trDVsC3OsVqp09ugf0T/QP8NKcvq0wIUTqpfDqpqD/Nk+c5sdbSKeoGyCwnswZYJJkFgLVm0HFA==}
+  cropperjs@2.0.0-rc.1:
+    resolution: {integrity: sha512-Y9ciurIuK6G1vy0ErHC8Gt6wHWvsHWJ5fgE60GL6vsuF2WzHwDpH7F1yof40XAEheeSN4v3rD09D1VZ7kiiSOA==}
 
   cross-env@7.0.3:
     resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==}
@@ -7491,71 +7491,71 @@ snapshots:
 
   '@chainsafe/is-ip@2.0.2': {}
 
-  '@cropper/element-canvas@2.0.0-rc.0':
+  '@cropper/element-canvas@2.0.0-rc.1':
     dependencies:
-      '@cropper/element': 2.0.0-rc.0
-      '@cropper/utils': 2.0.0-rc.0
+      '@cropper/element': 2.0.0-rc.1
+      '@cropper/utils': 2.0.0-rc.1
 
-  '@cropper/element-crosshair@2.0.0-rc.0':
+  '@cropper/element-crosshair@2.0.0-rc.1':
     dependencies:
-      '@cropper/element': 2.0.0-rc.0
-      '@cropper/utils': 2.0.0-rc.0
+      '@cropper/element': 2.0.0-rc.1
+      '@cropper/utils': 2.0.0-rc.1
 
-  '@cropper/element-grid@2.0.0-rc.0':
+  '@cropper/element-grid@2.0.0-rc.1':
     dependencies:
-      '@cropper/element': 2.0.0-rc.0
-      '@cropper/utils': 2.0.0-rc.0
+      '@cropper/element': 2.0.0-rc.1
+      '@cropper/utils': 2.0.0-rc.1
 
-  '@cropper/element-handle@2.0.0-rc.0':
+  '@cropper/element-handle@2.0.0-rc.1':
     dependencies:
-      '@cropper/element': 2.0.0-rc.0
-      '@cropper/utils': 2.0.0-rc.0
+      '@cropper/element': 2.0.0-rc.1
+      '@cropper/utils': 2.0.0-rc.1
 
-  '@cropper/element-image@2.0.0-rc.0':
+  '@cropper/element-image@2.0.0-rc.1':
     dependencies:
-      '@cropper/element': 2.0.0-rc.0
-      '@cropper/element-canvas': 2.0.0-rc.0
-      '@cropper/utils': 2.0.0-rc.0
+      '@cropper/element': 2.0.0-rc.1
+      '@cropper/element-canvas': 2.0.0-rc.1
+      '@cropper/utils': 2.0.0-rc.1
 
-  '@cropper/element-selection@2.0.0-rc.0':
+  '@cropper/element-selection@2.0.0-rc.1':
     dependencies:
-      '@cropper/element': 2.0.0-rc.0
-      '@cropper/element-canvas': 2.0.0-rc.0
-      '@cropper/element-image': 2.0.0-rc.0
-      '@cropper/utils': 2.0.0-rc.0
+      '@cropper/element': 2.0.0-rc.1
+      '@cropper/element-canvas': 2.0.0-rc.1
+      '@cropper/element-image': 2.0.0-rc.1
+      '@cropper/utils': 2.0.0-rc.1
 
-  '@cropper/element-shade@2.0.0-rc.0':
+  '@cropper/element-shade@2.0.0-rc.1':
     dependencies:
-      '@cropper/element': 2.0.0-rc.0
-      '@cropper/element-canvas': 2.0.0-rc.0
-      '@cropper/element-selection': 2.0.0-rc.0
-      '@cropper/utils': 2.0.0-rc.0
+      '@cropper/element': 2.0.0-rc.1
+      '@cropper/element-canvas': 2.0.0-rc.1
+      '@cropper/element-selection': 2.0.0-rc.1
+      '@cropper/utils': 2.0.0-rc.1
 
-  '@cropper/element-viewer@2.0.0-rc.0':
+  '@cropper/element-viewer@2.0.0-rc.1':
     dependencies:
-      '@cropper/element': 2.0.0-rc.0
-      '@cropper/element-canvas': 2.0.0-rc.0
-      '@cropper/element-image': 2.0.0-rc.0
-      '@cropper/element-selection': 2.0.0-rc.0
-      '@cropper/utils': 2.0.0-rc.0
+      '@cropper/element': 2.0.0-rc.1
+      '@cropper/element-canvas': 2.0.0-rc.1
+      '@cropper/element-image': 2.0.0-rc.1
+      '@cropper/element-selection': 2.0.0-rc.1
+      '@cropper/utils': 2.0.0-rc.1
 
-  '@cropper/element@2.0.0-rc.0':
+  '@cropper/element@2.0.0-rc.1':
     dependencies:
-      '@cropper/utils': 2.0.0-rc.0
+      '@cropper/utils': 2.0.0-rc.1
 
-  '@cropper/elements@2.0.0-rc.0':
+  '@cropper/elements@2.0.0-rc.1':
     dependencies:
-      '@cropper/element': 2.0.0-rc.0
-      '@cropper/element-canvas': 2.0.0-rc.0
-      '@cropper/element-crosshair': 2.0.0-rc.0
-      '@cropper/element-grid': 2.0.0-rc.0
-      '@cropper/element-handle': 2.0.0-rc.0
-      '@cropper/element-image': 2.0.0-rc.0
-      '@cropper/element-selection': 2.0.0-rc.0
-      '@cropper/element-shade': 2.0.0-rc.0
-      '@cropper/element-viewer': 2.0.0-rc.0
+      '@cropper/element': 2.0.0-rc.1
+      '@cropper/element-canvas': 2.0.0-rc.1
+      '@cropper/element-crosshair': 2.0.0-rc.1
+      '@cropper/element-grid': 2.0.0-rc.1
+      '@cropper/element-handle': 2.0.0-rc.1
+      '@cropper/element-image': 2.0.0-rc.1
+      '@cropper/element-selection': 2.0.0-rc.1
+      '@cropper/element-shade': 2.0.0-rc.1
+      '@cropper/element-viewer': 2.0.0-rc.1
 
-  '@cropper/utils@2.0.0-rc.0': {}
+  '@cropper/utils@2.0.0-rc.1': {}
 
   '@cspotcode/source-map-support@0.8.1':
     dependencies:
@@ -9791,10 +9791,10 @@ snapshots:
     dependencies:
       luxon: 3.4.4
 
-  cropperjs@2.0.0-rc.0:
+  cropperjs@2.0.0-rc.1:
     dependencies:
-      '@cropper/elements': 2.0.0-rc.0
-      '@cropper/utils': 2.0.0-rc.0
+      '@cropper/elements': 2.0.0-rc.1
+      '@cropper/utils': 2.0.0-rc.1
 
   cross-env@7.0.3:
     dependencies:

From df80ba616a2e9854ed7c5bf11a52bab1e4aa16e5 Mon Sep 17 00:00:00 2001
From: GitLab CI
 <project_7_bot_1bfaee5701aed20091a86249a967a6c1@noreply.firefish.dev>
Date: Sat, 6 Jul 2024 12:06:14 +0000
Subject: [PATCH 15/29] chore(deps): update rust crate napi to 3.0.0-alpha.4

---
 Cargo.lock | 4 ++--
 Cargo.toml | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 59b91b908d..de4b6cc0aa 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1808,9 +1808,9 @@ dependencies = [
 
 [[package]]
 name = "napi"
-version = "3.0.0-alpha.3"
+version = "3.0.0-alpha.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53112614847625adf534655b35b7adcc66c4f6ca407284cca73fd5bb0cf8cde5"
+checksum = "05ced4f57658f822b2567154a5c0b721736c86d4d463205a150ade25123fc0d3"
 dependencies = [
  "bitflags 2.6.0",
  "chrono",
diff --git a/Cargo.toml b/Cargo.toml
index d36b5e09d5..e9446f9d50 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -6,7 +6,7 @@ resolver = "2"
 macros = { path = "packages/macro-rs/macros" }
 macros-impl = { path = "packages/macro-rs/macros-impl" }
 
-napi = "3.0.0-alpha.3"
+napi = "3.0.0-alpha.4"
 napi-derive = "3.0.0-alpha.3"
 napi-build = "2.1.3"
 

From 76b13797a787ca621dddb9b7f88aa73ae88f5a38 Mon Sep 17 00:00:00 2001
From: naskya <m@naskya.net>
Date: Sun, 7 Jul 2024 00:37:11 +0900
Subject: [PATCH 16/29] chore (client): remove link to the emoji pack creator

You can just import a zip file that contains emoji images
---
 locales/ca-ES.yml                          | 1 -
 locales/de-DE.yml                          | 1 -
 locales/en-US.yml                          | 1 -
 locales/es-ES.yml                          | 1 -
 locales/fr-FR.yml                          | 1 -
 locales/id-ID.yml                          | 1 -
 locales/it-IT.yml                          | 1 -
 locales/ja-JP.yml                          | 1 -
 locales/ko-KR.yml                          | 1 -
 locales/no-NO.yml                          | 1 -
 locales/ru-RU.yml                          | 1 -
 locales/tr-TR.yml                          | 1 -
 locales/uk-UA.yml                          | 1 -
 locales/zh-CN.yml                          | 1 -
 locales/zh-TW.yml                          | 1 -
 packages/client/src/pages/admin/emojis.vue | 7 -------
 16 files changed, 22 deletions(-)

diff --git a/locales/ca-ES.yml b/locales/ca-ES.yml
index 50deed771d..7a490b06bd 100644
--- a/locales/ca-ES.yml
+++ b/locales/ca-ES.yml
@@ -2168,7 +2168,6 @@ addRe: Afegeix "re:" al començament del comentari quant responguis a un missatg
 confirm: Confirmar
 importZip: Importar ZIP
 exportZip: Exportar ZIP
-emojiPackCreator: Creador de paquets Emoji
 detectPostLanguage: Detecta l'idioma automàticament i mostra un botó per els articles
   en altres idiomes
 indexableDescription: Permet al cercador intern mostrar els missatges públics
diff --git a/locales/de-DE.yml b/locales/de-DE.yml
index f6093b823d..2b372c3b1e 100644
--- a/locales/de-DE.yml
+++ b/locales/de-DE.yml
@@ -2186,7 +2186,6 @@ addRe: Ein "re:" am Anfang des Kommentars hinzufügen, um einem Beitrag mit eine
   zu antworten
 confirm: Bestätigen
 importZip: ZIP Importieren
-emojiPackCreator: Emoji-Pack Ersteller
 exportZip: ZIP exportieren
 detectPostLanguage: Sprache automatisch erkennen und eine Schaltfläche zum Übersetzen
   von Beiträgen in Fremdsprachen anzeigen
diff --git a/locales/en-US.yml b/locales/en-US.yml
index 3a09448ac1..9cd9c92a83 100644
--- a/locales/en-US.yml
+++ b/locales/en-US.yml
@@ -1166,7 +1166,6 @@ exportZip: "Export ZIP"
 getQrCode: "Show QR code"
 remoteFollow: "Remote follow"
 copyRemoteFollowUrl: "Copy remote follow URL"
-emojiPackCreator: "Emoji pack creator"
 indexable: "Indexable"
 indexableDescription: "Allow built-in search to show your public posts"
 languageForTranslation: "Post translation language"
diff --git a/locales/es-ES.yml b/locales/es-ES.yml
index 2b45b41ff7..183f10a583 100644
--- a/locales/es-ES.yml
+++ b/locales/es-ES.yml
@@ -2152,7 +2152,6 @@ detectPostLanguage: Detectar automáticamente el idioma y mostrar el botón de t
 indexableDescription: Permitir que el buscador integrado muestre tus publicaciones
 reactions: Reacciones
 exportZip: Exportar ZIP
-emojiPackCreator: Creador de pack de Emoji
 importZip: Importar ZIP
 vibrate: Reproducir vibraciones
 openServerInfo: Mostrar información del servidor al presionar el simbolo del servidor
diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml
index 44cec380ca..209b103896 100644
--- a/locales/fr-FR.yml
+++ b/locales/fr-FR.yml
@@ -2193,7 +2193,6 @@ addRe: Ajouter « re: » au début d'un avertissement de contenu (CW) en répo
 confirm: Confirmer
 importZip: Importer ZIP
 exportZip: Exporter ZIP
-emojiPackCreator: Créateur de pack d'émoji
 detectPostLanguage: Détecter automatiquement la langue et afficher un bouton de traduction
   pour les publications en langues étrangères
 indexableDescription: Permettre à la recherche interne d'afficher vos publications
diff --git a/locales/id-ID.yml b/locales/id-ID.yml
index 325941779d..28ea9c5a0e 100644
--- a/locales/id-ID.yml
+++ b/locales/id-ID.yml
@@ -2147,7 +2147,6 @@ addRe: Tambahkan "re:" pada awal komentar balasan postingan dengan peringatan ko
 confirm: Konfirmasi
 importZip: Impor ZIP
 exportZip: Ekspor ZIP
-emojiPackCreator: Pembuat paket emoji
 detectPostLanguage: Deteksi bahasa secara otomatis dan tampilkan tombol terjemahkan
   untuk kiriman dalam bahasa asing
 indexableDescription: Perbolehkan pencarian di sini untuk menampilkan kiriman publikmu
diff --git a/locales/it-IT.yml b/locales/it-IT.yml
index 8ecfd09bdc..4039e2b385 100644
--- a/locales/it-IT.yml
+++ b/locales/it-IT.yml
@@ -2132,7 +2132,6 @@ _messaging:
 confirm: Conferma
 importZip: Importa ZIP
 exportZip: Esporta ZIP
-emojiPackCreator: Creazione di un pacchetto Emoji
 addRe: Aggiungi "re:" all'inizio di un commento in risposta a un post che ha un content
   warning
 detectPostLanguage: Riconosci la lingua automaticamente e mostra il bottone per tradurre
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index 3be63d1ef2..a2fb5fa399 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -2010,7 +2010,6 @@ delete2faConfirm: これで、このアカウントの2要素認証は完全に
 inputNotMatch: 入力が一致しません
 deletePasskeysConfirm: これで、このアカウントのパスキーは完全に削除されます。続行しますか?
 importZip: ZIPをインポート
-emojiPackCreator: 絵文字パックの作者
 confirm: 確認
 exportZip: ZIPをエクスポート
 openServerInfo: "投稿内のサーバー名をクリックでサーバー情報を開く"
diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml
index bad1f8ee80..2f2c54c7e6 100644
--- a/locales/ko-KR.yml
+++ b/locales/ko-KR.yml
@@ -1980,7 +1980,6 @@ _feeds:
 _dialog:
   charactersExceeded: 글자 수 제한을 초과했습니다! 현재 {current}자 / 최대 {max}자
   charactersBelow: 최소 글자 수 보다 작습니다! 현재 {current}자 / 최소 {max}자
-emojiPackCreator: 이모지 팩 만든이
 objectStorageS3ForcePathStyleDesc: Endpoint URL을 '<bucket>.s3.amazonaws.com'가 아닌 's3.amazonaws.com/<bucket>/'와
   같은 형식으로 사용할 경우에 활성화해 주세요.
 confirm: 확인
diff --git a/locales/no-NO.yml b/locales/no-NO.yml
index adafb8face..9bde2c9ae3 100644
--- a/locales/no-NO.yml
+++ b/locales/no-NO.yml
@@ -1859,7 +1859,6 @@ enterSendsMessage: Trykk enter for å sende meldinger. (Hvis avslått må du try
 confirmToUnclipAlreadyClippedNote: Denne posten er allerede en del av utklippet "{name}".
   Vil du fjerne den fra dette utklippet i stedet?
 showWithSparkles: Vis med gnister
-emojiPackCreator: Emoji-pakke-bygger
 importZip: Importer zip-fil
 pushNotificationAlreadySubscribed: Push-varsler er allerede påslått
 ratio: Forhold
diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml
index e360b5ae27..c2d59df339 100644
--- a/locales/ru-RU.yml
+++ b/locales/ru-RU.yml
@@ -2113,7 +2113,6 @@ removeMember: Удалить участника
 confirm: Подтвердить
 importZip: Импортировать ZIP
 exportZip: Экспортировать ZIP
-emojiPackCreator: Генератор паков эмодзи
 objectStorageS3ForcePathStyle: Использовать путь вместо домена в URL
 objectStorageS3ForcePathStyleDesc: Включите, если хотите, чтобы URL был в формате
   's3.amazonaws.com/<bucket>/' вместо '<bucket>.s3.amazonaws.com'.
diff --git a/locales/tr-TR.yml b/locales/tr-TR.yml
index 66bfe28133..b22dfac06d 100644
--- a/locales/tr-TR.yml
+++ b/locales/tr-TR.yml
@@ -2123,7 +2123,6 @@ indexableDescription: Yerleşik aramanın herkese açık gönderilerinizi göste
 addRe: İçerik uyarısına sahip bir gönderiye yanıt olarak paylaşılan gönderinin başına
   "re:" ekle
 exportZip: ZIP dışa aktar
-emojiPackCreator: Emoji paketi oluşturucu
 importZip: ZIP içe aktar
 indexable: Endekslenebilir
 languageForTranslation: Çeviri sonrası dili
diff --git a/locales/uk-UA.yml b/locales/uk-UA.yml
index 206a52ce95..c170d7fbed 100644
--- a/locales/uk-UA.yml
+++ b/locales/uk-UA.yml
@@ -2126,4 +2126,3 @@ addRe: Додати "re:" на початку коментаря у відпов
 confirm: Підтвердити
 importZip: Імпортувати ZIP
 exportZip: Експортувати ZIP
-emojiPackCreator: Генератор паків емодзі
diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml
index 5cf4c8883f..3c17ef985f 100644
--- a/locales/zh-CN.yml
+++ b/locales/zh-CN.yml
@@ -1992,7 +1992,6 @@ exportZip: 导出 ZIP
 getQrCode: "获取二维码"
 remoteFollow: "远程关注"
 copyRemoteFollowUrl: "复制远程关注 URL"
-emojiPackCreator: 表情包创建工具
 objectStorageS3ForcePathStyleDesc: 打开此选项可构建格式为 "s3.amazonaws.com/<bucket>/" 而非 "<bucket>.s3.amazonaws.com"
   的端点 URL。
 objectStorageS3ForcePathStyle: 使用基于路径的端点 URL
diff --git a/locales/zh-TW.yml b/locales/zh-TW.yml
index a153513f03..93e9638a85 100644
--- a/locales/zh-TW.yml
+++ b/locales/zh-TW.yml
@@ -1971,7 +1971,6 @@ _feeds:
   rss: RSS
   copyFeed: 複製訂閱URL
   jsonFeed: JSON Feed
-emojiPackCreator: 表情包的作者
 importZip: 匯入ZIP
 delete2fa: 停用二階段認證(2FA)
 confirm: 確認
diff --git a/packages/client/src/pages/admin/emojis.vue b/packages/client/src/pages/admin/emojis.vue
index 869979063c..4f64c69085 100644
--- a/packages/client/src/pages/admin/emojis.vue
+++ b/packages/client/src/pages/admin/emojis.vue
@@ -322,13 +322,6 @@ const menu = (ev: MouseEvent) => {
 						});
 				},
 			},
-			{
-				icon: `${icon("ph-info")}`,
-				text: i18n.ts.emojiPackCreator,
-				action: () => {
-					window.open("https://firefish.dev/firefish/emoji-gen", "_blank");
-				},
-			},
 		],
 		ev.currentTarget ?? ev.target,
 	);

From 2e78bde9b83c78ff3a53ef1c2c43dc684023ad4b Mon Sep 17 00:00:00 2001
From: naskya <m@naskya.net>
Date: Sun, 7 Jul 2024 04:51:34 +0900
Subject: [PATCH 17/29] chore (client): don't "auto correct" post language by
 default

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

diff --git a/packages/client/src/store.ts b/packages/client/src/store.ts
index c1b26136cb..ca0fb91c5d 100644
--- a/packages/client/src/store.ts
+++ b/packages/client/src/store.ts
@@ -455,7 +455,7 @@ export const defaultStore = markRaw(
 		},
 		autocorrectNoteLanguage: {
 			where: "account",
-			default: true,
+			default: false,
 		},
 		foldNotification: {
 			where: "deviceAccount",

From 947fd7243b13280e5cd6f69d34914128f81ca29b Mon Sep 17 00:00:00 2001
From: GitLab CI
 <project_7_bot_1bfaee5701aed20091a86249a967a6c1@noreply.firefish.dev>
Date: Sat, 6 Jul 2024 20:06:36 +0000
Subject: [PATCH 18/29] chore(deps): update rust crate napi to 3.0.0-alpha.5

---
 Cargo.lock | 4 ++--
 Cargo.toml | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index de4b6cc0aa..d9d535dedc 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1808,9 +1808,9 @@ dependencies = [
 
 [[package]]
 name = "napi"
-version = "3.0.0-alpha.4"
+version = "3.0.0-alpha.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05ced4f57658f822b2567154a5c0b721736c86d4d463205a150ade25123fc0d3"
+checksum = "9e1c3a7423adc069939192859f1c5b1e6b576d662a183a70839f5b098dd807ca"
 dependencies = [
  "bitflags 2.6.0",
  "chrono",
diff --git a/Cargo.toml b/Cargo.toml
index e9446f9d50..ea0d1794ea 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -6,7 +6,7 @@ resolver = "2"
 macros = { path = "packages/macro-rs/macros" }
 macros-impl = { path = "packages/macro-rs/macros-impl" }
 
-napi = "3.0.0-alpha.4"
+napi = "3.0.0-alpha.5"
 napi-derive = "3.0.0-alpha.3"
 napi-build = "2.1.3"
 

From 9401955bea4dd38cacd65f9925f89665d52d3907 Mon Sep 17 00:00:00 2001
From: mester yui <oscarodriguez56@gmail.com>
Date: Fri, 5 Jul 2024 23:25:51 +0000
Subject: [PATCH 19/29] locale: update translations (Spanish)

Currently translated at 94.3% (1837 of 1948 strings)

Translation: Firefish/locales
Translate-URL: https://hosted.weblate.org/projects/firefish/locales/es/
---
 locales/es-ES.yml | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/locales/es-ES.yml b/locales/es-ES.yml
index 2b45b41ff7..4e9fe57406 100644
--- a/locales/es-ES.yml
+++ b/locales/es-ES.yml
@@ -1937,7 +1937,7 @@ manageGroups: Administrar grupos
 replayTutorial: Repetir Tutorial
 privateMode: Modo privado
 addInstance: Añadir un servidor
-renoteMute: Silenciar impulsos
+renoteMute: Silenciar impulsos en la línea de tiempo
 renoteUnmute: Dejar de silenciar impulsos
 flagSpeakAsCat: Habla como un gato
 selectInstance: Selecciona un servidor
@@ -2176,3 +2176,10 @@ moreUrlsDescription: 'Ingrese los enlaces de las páginas que desea Fijar en el
   de ayuda, ubicado en la esquina inferior izquierda, usando este formato de notación:
   ["Nombre para mostrar": https://su-enlace.com/]'
 quotes: Citaciónes
+markLocalFilesNsfwByDefault: Marcar todo nuevo archivo local como sensible por defecto
+toReply: Respuesta
+toPost: Publicar
+sentFollowRequests: Enviar solicitudes de seguimiento
+toQuote: Cita
+replyMute: Silenciar respuestas en la linea de tiempo
+replyUnmute: Anular respuestas en las lineas de tiempo

From 10d1cd7f943900e7cb788e89cb95261476a1db19 Mon Sep 17 00:00:00 2001
From: mester yui <oscarodriguez56@gmail.com>
Date: Fri, 5 Jul 2024 23:36:31 +0000
Subject: [PATCH 20/29] locale: update translations (Esperanto)

Currently translated at 0.5% (10 of 1948 strings)

Translation: Firefish/locales
Translate-URL: https://hosted.weblate.org/projects/firefish/locales/eo/
---
 locales/eo.yml | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/locales/eo.yml b/locales/eo.yml
index abff1cccad..6e9bb18d88 100644
--- a/locales/eo.yml
+++ b/locales/eo.yml
@@ -1 +1,11 @@
 _lang_: "Esperanto"
+introFirefish: Bonvenon Firefish estas malfermkoda, ne centra socia platformo kiu
+  estos senpage ĉiam! 🚀
+headlineFirefish: Malfermkoda, ne centra socia platformo kiu estos senpage ĉiam 🚀
+monthAndDay: '{monato}/{tago}'
+search: Serĉi
+searchPlaceholder: Serĉi Firefish
+notifications: Sciigoj
+username: Uzantnomo
+password: Pasvorto
+forgotPassword: Forgesa pasvorto

From a5511b3691fdca6a92fc0b163f92336861251303 Mon Sep 17 00:00:00 2001
From: GitLab CI
 <project_7_bot_1bfaee5701aed20091a86249a967a6c1@noreply.firefish.dev>
Date: Sun, 7 Jul 2024 04:07:02 +0000
Subject: [PATCH 21/29] chore(deps): update rust crate napi-derive to
 3.0.0-alpha.4

---
 Cargo.lock | 8 ++++----
 Cargo.toml | 2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index d9d535dedc..a80570da0f 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1831,9 +1831,9 @@ checksum = "e1c0f5d67ee408a4685b61f5ab7e58605c8ae3f2b4189f0127d804ff13d5560a"
 
 [[package]]
 name = "napi-derive"
-version = "3.0.0-alpha.3"
+version = "3.0.0-alpha.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "823fb2987af2446a2b4055604a920f2c1f1a028743c72adc8872d92da7e30d2b"
+checksum = "9f728c2fc73c9be638b4fc65de1f15309246a1c2d355cb1508fc26a4a265873f"
 dependencies = [
  "cfg-if",
  "convert_case",
@@ -1845,9 +1845,9 @@ dependencies = [
 
 [[package]]
 name = "napi-derive-backend"
-version = "2.0.0-alpha.3"
+version = "2.0.0-alpha.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "abd42151b3c26b5cdde9cf9a8fc5f7240de0919f234e14c6f54e3571d56e4dab"
+checksum = "665de86dea7d1bf1ea6628cb8544edb5008f73e15b5bf5c69e54211c19988b3b"
 dependencies = [
  "convert_case",
  "once_cell",
diff --git a/Cargo.toml b/Cargo.toml
index ea0d1794ea..2742edc522 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -7,7 +7,7 @@ macros = { path = "packages/macro-rs/macros" }
 macros-impl = { path = "packages/macro-rs/macros-impl" }
 
 napi = "3.0.0-alpha.5"
-napi-derive = "3.0.0-alpha.3"
+napi-derive = "3.0.0-alpha.4"
 napi-build = "2.1.3"
 
 argon2 = { version = "0.5.3", default-features = false }

From 62c5ba3ab440d63dcd05afc339a520bf3875eb77 Mon Sep 17 00:00:00 2001
From: GitLab CI
 <project_7_bot_1bfaee5701aed20091a86249a967a6c1@noreply.firefish.dev>
Date: Sun, 7 Jul 2024 04:07:26 +0000
Subject: [PATCH 22/29] chore(deps): update rust crate serde to 1.0.204

---
 Cargo.lock | 8 ++++----
 Cargo.toml | 2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index d9d535dedc..4e178cf16c 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2940,18 +2940,18 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
 
 [[package]]
 name = "serde"
-version = "1.0.203"
+version = "1.0.204"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094"
+checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.203"
+version = "1.0.204"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba"
+checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222"
 dependencies = [
  "proc-macro2",
  "quote",
diff --git a/Cargo.toml b/Cargo.toml
index ea0d1794ea..59c53da86d 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -32,7 +32,7 @@ redis = { version = "0.25.4", default-features = false }
 regex = { version = "1.10.5", default-features = false }
 rmp-serde = { version = "1.3.0", default-features = false }
 sea-orm = { version = "0.12.15", default-features = false }
-serde = { version = "1.0.203", default-features = false }
+serde = { version = "1.0.204", default-features = false }
 serde_json = { version = "1.0.120", default-features = false }
 serde_yaml = { version = "0.9.34", default-features = false }
 syn = { version = "2.0.68", default-features = false }

From 818bfb59c200ec834819d3cbb4c3a9a2cf9e1b85 Mon Sep 17 00:00:00 2001
From: GitLab CI
 <project_7_bot_1bfaee5701aed20091a86249a967a6c1@noreply.firefish.dev>
Date: Sun, 7 Jul 2024 04:07:50 +0000
Subject: [PATCH 23/29] chore(deps): update rust crate syn to 2.0.69

---
 Cargo.lock | 62 +++++++++++++++++++++++++++---------------------------
 Cargo.toml |  2 +-
 2 files changed, 32 insertions(+), 32 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index d9d535dedc..eece7a810e 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -92,7 +92,7 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.68",
+ "syn 2.0.69",
 ]
 
 [[package]]
@@ -143,7 +143,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.68",
+ "syn 2.0.69",
 ]
 
 [[package]]
@@ -154,7 +154,7 @@ checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.68",
+ "syn 2.0.69",
 ]
 
 [[package]]
@@ -629,7 +629,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f"
 dependencies = [
  "quote",
- "syn 2.0.68",
+ "syn 2.0.69",
 ]
 
 [[package]]
@@ -772,7 +772,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.68",
+ "syn 2.0.69",
 ]
 
 [[package]]
@@ -1388,7 +1388,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.68",
+ "syn 2.0.69",
 ]
 
 [[package]]
@@ -1467,7 +1467,7 @@ checksum = "0122b7114117e64a63ac49f752a5ca4624d534c7b1c7de796ac196381cd2d947"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.68",
+ "syn 2.0.69",
 ]
 
 [[package]]
@@ -1496,7 +1496,7 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.68",
+ "syn 2.0.69",
 ]
 
 [[package]]
@@ -1744,7 +1744,7 @@ dependencies = [
  "convert_case",
  "proc-macro2",
  "quote",
- "syn 2.0.68",
+ "syn 2.0.69",
 ]
 
 [[package]]
@@ -1840,7 +1840,7 @@ dependencies = [
  "napi-derive-backend",
  "proc-macro2",
  "quote",
- "syn 2.0.68",
+ "syn 2.0.69",
 ]
 
 [[package]]
@@ -1855,7 +1855,7 @@ dependencies = [
  "quote",
  "regex",
  "semver",
- "syn 2.0.68",
+ "syn 2.0.69",
 ]
 
 [[package]]
@@ -1984,7 +1984,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.68",
+ "syn 2.0.69",
 ]
 
 [[package]]
@@ -2076,7 +2076,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.68",
+ "syn 2.0.69",
 ]
 
 [[package]]
@@ -2137,7 +2137,7 @@ dependencies = [
  "proc-macro-error",
  "proc-macro2",
  "quote",
- "syn 2.0.68",
+ "syn 2.0.69",
 ]
 
 [[package]]
@@ -2295,7 +2295,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.68",
+ "syn 2.0.69",
 ]
 
 [[package]]
@@ -2468,7 +2468,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8021cf59c8ec9c432cfc2526ac6b8aa508ecaf29cd415f271b8406c1b851c3fd"
 dependencies = [
  "quote",
- "syn 2.0.68",
+ "syn 2.0.69",
 ]
 
 [[package]]
@@ -2839,7 +2839,7 @@ dependencies = [
  "proc-macro-error",
  "proc-macro2",
  "quote",
- "syn 2.0.68",
+ "syn 2.0.69",
 ]
 
 [[package]]
@@ -2878,7 +2878,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "sea-bae",
- "syn 2.0.68",
+ "syn 2.0.69",
  "unicode-ident",
 ]
 
@@ -2955,7 +2955,7 @@ checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.68",
+ "syn 2.0.69",
 ]
 
 [[package]]
@@ -3406,9 +3406,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.68"
+version = "2.0.69"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9"
+checksum = "201fcda3845c23e8212cd466bfebf0bd20694490fc0356ae8e428e0824a915a6"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3435,7 +3435,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.68",
+ "syn 2.0.69",
 ]
 
 [[package]]
@@ -3500,7 +3500,7 @@ checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.68",
+ "syn 2.0.69",
 ]
 
 [[package]]
@@ -3605,7 +3605,7 @@ checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.68",
+ "syn 2.0.69",
 ]
 
 [[package]]
@@ -3699,7 +3699,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.68",
+ "syn 2.0.69",
 ]
 
 [[package]]
@@ -3911,7 +3911,7 @@ dependencies = [
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 2.0.68",
+ "syn 2.0.69",
  "wasm-bindgen-shared",
 ]
 
@@ -3933,7 +3933,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.68",
+ "syn 2.0.69",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
@@ -4214,7 +4214,7 @@ checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.68",
+ "syn 2.0.69",
  "synstructure 0.13.1",
 ]
 
@@ -4235,7 +4235,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.68",
+ "syn 2.0.69",
 ]
 
 [[package]]
@@ -4255,7 +4255,7 @@ checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.68",
+ "syn 2.0.69",
  "synstructure 0.13.1",
 ]
 
@@ -4284,7 +4284,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.68",
+ "syn 2.0.69",
 ]
 
 [[package]]
diff --git a/Cargo.toml b/Cargo.toml
index ea0d1794ea..79048289f8 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -35,7 +35,7 @@ sea-orm = { version = "0.12.15", default-features = false }
 serde = { version = "1.0.203", default-features = false }
 serde_json = { version = "1.0.120", default-features = false }
 serde_yaml = { version = "0.9.34", default-features = false }
-syn = { version = "2.0.68", default-features = false }
+syn = { version = "2.0.69", default-features = false }
 sysinfo = { version = "0.30.12", default-features = false }
 thiserror = { version = "1.0.61", default-features = false }
 tokio = { version = "1.38.0", default-features = false }

From 46b5f24ff2468cd2bd6563694556f8011774aa29 Mon Sep 17 00:00:00 2001
From: GitLab CI
 <project_7_bot_1bfaee5701aed20091a86249a967a6c1@noreply.firefish.dev>
Date: Sun, 7 Jul 2024 20:05:48 +0000
Subject: [PATCH 24/29] chore(deps): update rust crate napi to 3.0.0-alpha.6

---
 Cargo.lock | 4 ++--
 Cargo.toml | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 6fb0de3765..c69c7169b5 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1808,9 +1808,9 @@ dependencies = [
 
 [[package]]
 name = "napi"
-version = "3.0.0-alpha.5"
+version = "3.0.0-alpha.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e1c3a7423adc069939192859f1c5b1e6b576d662a183a70839f5b098dd807ca"
+checksum = "2e5a69ce63aa1e68c939c5afa3f7be80d0c37eb3755022b064792dc019f08d8e"
 dependencies = [
  "bitflags 2.6.0",
  "chrono",
diff --git a/Cargo.toml b/Cargo.toml
index 71dffe7d45..3e48493206 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -6,7 +6,7 @@ resolver = "2"
 macros = { path = "packages/macro-rs/macros" }
 macros-impl = { path = "packages/macro-rs/macros-impl" }
 
-napi = "3.0.0-alpha.5"
+napi = "3.0.0-alpha.6"
 napi-derive = "3.0.0-alpha.4"
 napi-build = "2.1.3"
 

From 86abc1e639c9823d523295c9553e5168a65fb929 Mon Sep 17 00:00:00 2001
From: GitLab CI
 <project_7_bot_1bfaee5701aed20091a86249a967a6c1@noreply.firefish.dev>
Date: Sun, 7 Jul 2024 20:07:06 +0000
Subject: [PATCH 25/29] chore(deps): update pnpm to v9.5.0

---
 package.json   |  4 ++--
 pnpm-lock.yaml | 10 +++++-----
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/package.json b/package.json
index 153ead3da7..701c8cc29b 100644
--- a/package.json
+++ b/package.json
@@ -5,7 +5,7 @@
 		"type": "git",
 		"url": "https://firefish.dev/firefish/firefish.git"
 	},
-	"packageManager": "pnpm@9.4.0",
+	"packageManager": "pnpm@9.5.0",
 	"private": true,
 	"scripts": {
 		"rebuild": "pnpm run clean && pnpm run build",
@@ -49,6 +49,6 @@
 		"@biomejs/cli-linux-x64": "1.8.3",
 		"@types/node": "20.14.10",
 		"execa": "9.3.0",
-		"pnpm": "9.4.0"
+		"pnpm": "9.5.0"
 	}
 }
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 7a166599c4..4ce0e016cd 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -34,8 +34,8 @@ importers:
         specifier: 9.3.0
         version: 9.3.0
       pnpm:
-        specifier: 9.4.0
-        version: 9.4.0
+        specifier: 9.5.0
+        version: 9.5.0
 
   packages/backend:
     dependencies:
@@ -5695,8 +5695,8 @@ packages:
     resolution: {integrity: sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==}
     engines: {node: '>=14.19.0'}
 
-  pnpm@9.4.0:
-    resolution: {integrity: sha512-9Um4pSydK4U2di+ZwHIiBe/Fr5E+d4NdvMw7CwssqefcgCK3gGLBcpHEjoh0nHDOiOtadPH6jEv14Yu0bIvYOg==}
+  pnpm@9.5.0:
+    resolution: {integrity: sha512-FAA2gwEkYY1iSiGHtQ0EKJ1aCH8ybJ7fwMzXM9dsT1LDoxPU/BSHlKKp2BVTAWAE5nQujPhQZwJopzh/wiDJAw==}
     engines: {node: '>=18.12'}
     hasBin: true
 
@@ -12258,7 +12258,7 @@ snapshots:
 
   pngjs@7.0.0: {}
 
-  pnpm@9.4.0: {}
+  pnpm@9.5.0: {}
 
   possible-typed-array-names@1.0.0: {}
 

From 28e6b5fbc7b04c665edb1c9c4a30a8761532503d Mon Sep 17 00:00:00 2001
From: GitLab CI
 <project_7_bot_1bfaee5701aed20091a86249a967a6c1@noreply.firefish.dev>
Date: Sun, 7 Jul 2024 23:59:23 +0000
Subject: [PATCH 26/29] chore(deps): update rust crate async-trait to 0.1.81

---
 Cargo.lock | 4 ++--
 Cargo.toml | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index c69c7169b5..9a2f485988 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -148,9 +148,9 @@ dependencies = [
 
 [[package]]
 name = "async-trait"
-version = "0.1.80"
+version = "0.1.81"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca"
+checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107"
 dependencies = [
  "proc-macro2",
  "quote",
diff --git a/Cargo.toml b/Cargo.toml
index 3e48493206..3e264d26bd 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -11,7 +11,7 @@ napi-derive = "3.0.0-alpha.4"
 napi-build = "2.1.3"
 
 argon2 = { version = "0.5.3", default-features = false }
-async-trait = { version = "0.1.80", default-features = false }
+async-trait = { version = "0.1.81", default-features = false }
 basen = { version = "0.1.0", default-features = false }
 bb8 = { version = "0.8.5", default-features = false }
 bcrypt = { version = "0.15.1", default-features = false }

From 970315aed74956b55a1d233cf2d4b727bde68b82 Mon Sep 17 00:00:00 2001
From: GitLab CI
 <project_7_bot_1bfaee5701aed20091a86249a967a6c1@noreply.firefish.dev>
Date: Sun, 7 Jul 2024 23:59:44 +0000
Subject: [PATCH 27/29] chore(deps): update rust crate napi-derive to
 3.0.0-alpha.5

---
 Cargo.lock | 8 ++++----
 Cargo.toml | 2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index c69c7169b5..2366c977c9 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1831,9 +1831,9 @@ checksum = "e1c0f5d67ee408a4685b61f5ab7e58605c8ae3f2b4189f0127d804ff13d5560a"
 
 [[package]]
 name = "napi-derive"
-version = "3.0.0-alpha.4"
+version = "3.0.0-alpha.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f728c2fc73c9be638b4fc65de1f15309246a1c2d355cb1508fc26a4a265873f"
+checksum = "5e82f3209766c72466e28f05d8e55931cfda1652877b2cadf4011034890a2770"
 dependencies = [
  "cfg-if",
  "convert_case",
@@ -1845,9 +1845,9 @@ dependencies = [
 
 [[package]]
 name = "napi-derive-backend"
-version = "2.0.0-alpha.4"
+version = "2.0.0-alpha.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "665de86dea7d1bf1ea6628cb8544edb5008f73e15b5bf5c69e54211c19988b3b"
+checksum = "5b17d6c84ea7366a126d850e2010f2d8354be1d3f2c62bc20751b08ba5b0a774"
 dependencies = [
  "convert_case",
  "once_cell",
diff --git a/Cargo.toml b/Cargo.toml
index 3e48493206..30ef3e0519 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -7,7 +7,7 @@ macros = { path = "packages/macro-rs/macros" }
 macros-impl = { path = "packages/macro-rs/macros-impl" }
 
 napi = "3.0.0-alpha.6"
-napi-derive = "3.0.0-alpha.4"
+napi-derive = "3.0.0-alpha.5"
 napi-build = "2.1.3"
 
 argon2 = { version = "0.5.3", default-features = false }

From c23c9820144cbddfeef77ac7fd626210049f80fa Mon Sep 17 00:00:00 2001
From: GitLab CI
 <project_7_bot_1bfaee5701aed20091a86249a967a6c1@noreply.firefish.dev>
Date: Mon, 8 Jul 2024 00:00:56 +0000
Subject: [PATCH 28/29] chore(deps): lock file maintenance

---
 Cargo.lock     | 32 ++++++++++++++++----------------
 pnpm-lock.yaml | 26 +++++++++++++-------------
 2 files changed, 29 insertions(+), 29 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index c69c7169b5..6e94436535 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -148,9 +148,9 @@ dependencies = [
 
 [[package]]
 name = "async-trait"
-version = "0.1.80"
+version = "0.1.81"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca"
+checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -334,9 +334,9 @@ dependencies = [
 
 [[package]]
 name = "bitstream-io"
-version = "2.3.0"
+version = "2.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c12d1856e42f0d817a835fe55853957c85c8c8a470114029143d3f12671446e"
+checksum = "415f8399438eb5e4b2f73ed3152a3448b98149dda642a957ee704e1daa5cf1d8"
 
 [[package]]
 name = "blake2"
@@ -368,9 +368,9 @@ dependencies = [
 
 [[package]]
 name = "built"
-version = "0.7.3"
+version = "0.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6a6c0b39c38fd754ac338b00a88066436389c0f029da5d37d1e01091d9b7c17"
+checksum = "236e6289eda5a812bc6b53c3b024039382a2895fbbeef2d748b2931546d392c4"
 
 [[package]]
 name = "bumpalo"
@@ -410,9 +410,9 @@ checksum = "a2698f953def977c68f935bb0dfa959375ad4638570e969e2f1e9f433cbf1af6"
 
 [[package]]
 name = "cc"
-version = "1.0.104"
+version = "1.0.105"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74b6a57f98764a267ff415d50a25e6e166f3831a5071af4995296ea97d210490"
+checksum = "5208975e568d83b6b05cc0a063c8e7e9acc2b43bee6da15616a5b73e109d7437"
 dependencies = [
  "jobserver",
  "libc",
@@ -1831,9 +1831,9 @@ checksum = "e1c0f5d67ee408a4685b61f5ab7e58605c8ae3f2b4189f0127d804ff13d5560a"
 
 [[package]]
 name = "napi-derive"
-version = "3.0.0-alpha.4"
+version = "3.0.0-alpha.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f728c2fc73c9be638b4fc65de1f15309246a1c2d355cb1508fc26a4a265873f"
+checksum = "5e82f3209766c72466e28f05d8e55931cfda1652877b2cadf4011034890a2770"
 dependencies = [
  "cfg-if",
  "convert_case",
@@ -1845,9 +1845,9 @@ dependencies = [
 
 [[package]]
 name = "napi-derive-backend"
-version = "2.0.0-alpha.4"
+version = "2.0.0-alpha.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "665de86dea7d1bf1ea6628cb8544edb5008f73e15b5bf5c69e54211c19988b3b"
+checksum = "5b17d6c84ea7366a126d850e2010f2d8354be1d3f2c62bc20751b08ba5b0a774"
 dependencies = [
  "convert_case",
  "once_cell",
@@ -2553,9 +2553,9 @@ dependencies = [
 
 [[package]]
 name = "ravif"
-version = "0.11.5"
+version = "0.11.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc13288f5ab39e6d7c9d501759712e6969fcc9734220846fc9ed26cae2cc4234"
+checksum = "c6ba61c28ba24c0cf8406e025cb29a742637e3f70776e61c27a8a8b72a042d12"
 dependencies = [
  "avif-serialize",
  "imgref",
@@ -2664,9 +2664,9 @@ dependencies = [
 
 [[package]]
 name = "rgb"
-version = "0.8.40"
+version = "0.8.42"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a7439be6844e40133eda024efd85bf07f59d0dd2f59b10c00dd6cfb92cc5c741"
+checksum = "3eeba50c58624afb3be6d04abad8cb7a259d52017068c9f828975aa870a5daf5"
 dependencies = [
  "bytemuck",
 ]
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 4ce0e016cd..75eaa42894 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -2905,8 +2905,8 @@ packages:
   asn1@0.2.6:
     resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==}
 
-  assert-never@1.2.1:
-    resolution: {integrity: sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==}
+  assert-never@1.3.0:
+    resolution: {integrity: sha512-9Z3vxQ+berkL/JJo0dK+EY3Lp0s3NtSnP3VCLsh5HDcZPrh0M+KQRK5sWhUeyPPH+/RCxZqOxLMR+YC6vlviEQ==}
 
   assert-plus@1.0.0:
     resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==}
@@ -4450,8 +4450,8 @@ packages:
   ini@1.3.8:
     resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
 
-  inquirer@9.3.4:
-    resolution: {integrity: sha512-Hp6meNSDzp+Oc9JNUUlYsK81dxaPrrBRa7H/s3+yebCDRJe4UNKYSkEUZoIcuKJjNipBLPKsuc7BvO6tLzo/KA==}
+  inquirer@9.3.5:
+    resolution: {integrity: sha512-SVRCRovA7KaT6nqWB2mCNpTvU4cuZ0hOXo5KPyiyOcNNUIZwq/JKtvXuDJNaxfuJKabBYRu1ecHze0YEwDYoRQ==}
     engines: {node: '>=18'}
 
   insert-text-at-cursor@0.3.0:
@@ -5110,9 +5110,9 @@ packages:
     resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==}
     engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
 
-  lru-cache@10.3.0:
-    resolution: {integrity: sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==}
-    engines: {node: 14 || >=16.14}
+  lru-cache@10.3.1:
+    resolution: {integrity: sha512-9/8QXrtbGeMB6LxwQd4x1tIMnsmUxMvIH/qWGsccz6bt9Uln3S+sgAaqfQNhbGA8ufzs2fHuP/yqapGgP9Hh2g==}
+    engines: {node: '>=18'}
 
   lru-cache@5.1.1:
     resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
@@ -8072,7 +8072,7 @@ snapshots:
       clipanion: 3.2.1(typanion@3.14.0)
       colorette: 2.0.20
       debug: 4.3.5(supports-color@8.1.1)
-      inquirer: 9.3.4
+      inquirer: 9.3.5
       js-yaml: 4.1.0
       lodash-es: 4.17.21
       semver: 7.6.2
@@ -9175,7 +9175,7 @@ snapshots:
     dependencies:
       safer-buffer: 2.1.2
 
-  assert-never@1.2.1: {}
+  assert-never@1.3.0: {}
 
   assert-plus@1.0.0: {}
 
@@ -10723,7 +10723,7 @@ snapshots:
 
   ini@1.3.8: {}
 
-  inquirer@9.3.4:
+  inquirer@9.3.5:
     dependencies:
       '@inquirer/figures': 1.0.3
       ansi-escapes: 4.3.2
@@ -11729,7 +11729,7 @@ snapshots:
 
   lowercase-keys@3.0.0: {}
 
-  lru-cache@10.3.0: {}
+  lru-cache@10.3.1: {}
 
   lru-cache@5.1.1:
     dependencies:
@@ -12148,7 +12148,7 @@ snapshots:
 
   path-scurry@1.11.1:
     dependencies:
-      lru-cache: 10.3.0
+      lru-cache: 10.3.1
       minipass: 7.1.2
 
   path-to-regexp@6.2.2: {}
@@ -13579,7 +13579,7 @@ snapshots:
     dependencies:
       '@babel/parser': 7.24.7
       '@babel/types': 7.24.7
-      assert-never: 1.2.1
+      assert-never: 1.3.0
       babel-walk: 3.0.0-canary-5
 
   workerpool@6.5.1: {}

From 11e1351052281d42b2a2e2085fe2d371342aefd1 Mon Sep 17 00:00:00 2001
From: naskya <m@naskya.net>
Date: Mon, 8 Jul 2024 13:27:50 +0900
Subject: [PATCH 29/29] chore (deps): Cargo.lock maintenance

---
 Cargo.lock | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 6e94436535..d10b3222dd 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -334,9 +334,9 @@ dependencies = [
 
 [[package]]
 name = "bitstream-io"
-version = "2.4.2"
+version = "2.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "415f8399438eb5e4b2f73ed3152a3448b98149dda642a957ee704e1daa5cf1d8"
+checksum = "7c12d1856e42f0d817a835fe55853957c85c8c8a470114029143d3f12671446e"
 
 [[package]]
 name = "blake2"
@@ -2553,9 +2553,9 @@ dependencies = [
 
 [[package]]
 name = "ravif"
-version = "0.11.8"
+version = "0.11.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6ba61c28ba24c0cf8406e025cb29a742637e3f70776e61c27a8a8b72a042d12"
+checksum = "bc13288f5ab39e6d7c9d501759712e6969fcc9734220846fc9ed26cae2cc4234"
 dependencies = [
  "avif-serialize",
  "imgref",