diff --git a/locales/index.d.ts b/locales/index.d.ts
index fbe8c30c94..e2a239ae7b 100644
--- a/locales/index.d.ts
+++ b/locales/index.d.ts
@@ -5577,6 +5577,14 @@ export interface Locale extends ILocale {
* 予約
*/
"scheduled": string;
+ /**
+ * デバイス情報
+ */
+ "deviceInfo": string;
+ /**
+ * 技術的なお問い合わせの際に、以下の情報を併記すると問題の解決に役立つことがあります。
+ */
+ "deviceInfoDescription": string;
"_compression": {
"_quality": {
/**
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index d21df5d5e1..ed8d8033d9 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -1389,6 +1389,8 @@ scheduleToPostOnX: "{x}に投稿を予約します"
scheduledToPostOnX: "{x}に投稿が予約されています"
schedule: "予約"
scheduled: "予約"
+deviceInfo: "デバイス情報"
+deviceInfoDescription: "技術的なお問い合わせの際に、以下の情報を併記すると問題の解決に役立つことがあります。"
_compression:
_quality:
diff --git a/packages/frontend/package.json b/packages/frontend/package.json
index 0200269fcd..4f327e0b0b 100644
--- a/packages/frontend/package.json
+++ b/packages/frontend/package.json
@@ -33,6 +33,7 @@
"aiscript-vscode": "github:aiscript-dev/aiscript-vscode#v0.1.15",
"analytics": "0.8.19",
"astring": "1.9.0",
+ "bowser": "2.12.1",
"broadcast-channel": "7.1.0",
"buraha": "0.0.1",
"canvas-confetti": "1.9.3",
@@ -105,6 +106,7 @@
"@storybook/vue3-vite": "9.1.8",
"@tabler/icons-webfont": "3.35.0",
"@testing-library/vue": "8.1.0",
+ "@types/bowser": "1.1.5",
"@types/canvas-confetti": "1.9.0",
"@types/estree": "1.0.8",
"@types/matter-js": "0.20.2",
diff --git a/packages/frontend/src/components/MkCode.core.vue b/packages/frontend/src/components/MkCode.core.vue
index 8b39468d4c..f669e4b87a 100644
--- a/packages/frontend/src/components/MkCode.core.vue
+++ b/packages/frontend/src/components/MkCode.core.vue
@@ -5,7 +5,13 @@ SPDX-License-Identifier: AGPL-3.0-only
-
+