diff --git a/CHANGELOG.md b/CHANGELOG.md
index 57f3861ab..c6a6e6951 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,25 @@
You should also include the user name that made the change.
-->
+## 12.x.x (unreleased)
+
+### Improvements
+
+### Bugfixes
+- Client: 一度作ったwebhookの設定画面を開こうとするとページがフリーズする @syuilo
+
+## 12.117.1 (2022/07/19)
+
+### Improvements
+- Client: UIのブラッシュアップ @syuilo
+
+### Bugfixes
+- Server: ファイルのアップロードに失敗することがある問題を修正 @acid-chicken
+- Client: リアクションピッカーがアプリ内ウィンドウの後ろに表示されてしまう問題を修正 @syuilo
+- Client: ユーザー情報の取得の再試行を修正 @xianonn
+- Client: MFMチートシートの挙動を修正 @syuilo
+- Client: 「インスタンスからのお知らせを受け取る」の設定を変更できない問題を修正 @syuilo
+
## 12.117.0 (2022/07/18)
### Improvements
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index d2dc3ec45..05006fafb 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -1047,6 +1047,8 @@ _mfm:
sparkleDescription: "キラキラしたパーティクルのエフェクトを追加します。"
rotate: "回転"
rotateDescription: "指定した角度で回転させます。"
+ plain: "プレーン"
+ plainDescription: "内側の構文を全て無効にします。"
_instanceTicker:
none: "表示しない"
diff --git a/locales/sk-SK.yml b/locales/sk-SK.yml
index 2ac0a8566..4fbdc1cb1 100644
--- a/locales/sk-SK.yml
+++ b/locales/sk-SK.yml
@@ -885,6 +885,7 @@ enableAutoSensitiveDescription: "Ak je zapnuté, príznak NSFW sa na médiách a
activeEmailValidationDescription: "Dôkladnejšie overí e-mailovú adresu používateľa tým, že zistí, či ide o vyradenú e-mailovú adresu a či sa s ňou dá skutočne komunikovať. Ak nie je začiarknuté, e-mailová adresa sa kontroluje len ako text."
navbar: "Navigačný panel"
account: "Účty"
+move: "Pohyb"
_sensitiveMediaDetection:
description: "Strojové učenie sa použije na automatickú detekciu citlivých médií na účely ich moderovania. Mierne sa zvýši zaťaženie servera."
sensitivity: "Citlivosť detekcie"
@@ -1691,6 +1692,7 @@ _deck:
alwaysShowMainColumn: "Vždy zobraziť v hlavnom stĺpci"
columnAlign: "Zarovnať stĺpce"
addColumn: "Pridať stĺpec"
+ configureColumn: "Nastavenie stĺpcov"
swapLeft: "Vymeniť vľavo"
swapRight: "Vymeniť vpravo"
swapUp: "Vymeniť hore"
diff --git a/packages/backend/src/misc/get-file-info.ts b/packages/backend/src/misc/get-file-info.ts
index 42061fcf8..1c988b248 100644
--- a/packages/backend/src/misc/get-file-info.ts
+++ b/packages/backend/src/misc/get-file-info.ts
@@ -101,13 +101,17 @@ export async function getFileInfo(path: string, opts: {
let porn = false;
if (!opts.skipSensitiveDetection) {
- [sensitive, porn] = await detectSensitivity(
+ await detectSensitivity(
path,
type.mime,
opts.sensitiveThreshold ?? 0.5,
opts.sensitiveThresholdForPorn ?? 0.75,
opts.enableSensitiveMediaDetectionForVideos ?? false,
- );
+ ).then(value => {
+ [sensitive, porn] = value;
+ }, error => {
+ warnings.push(`detectSensitivity failed: ${error}`);
+ });
}
return {
diff --git a/packages/client/src/components/global/router-view.vue b/packages/client/src/components/global/router-view.vue
index fca2371f0..cd1e78019 100644
--- a/packages/client/src/components/global/router-view.vue
+++ b/packages/client/src/components/global/router-view.vue
@@ -1,6 +1,12 @@
-
+
+
+
+
+ Loading...
+
+
diff --git a/packages/client/src/pages/mfm-cheat-sheet.vue b/packages/client/src/pages/mfm-cheat-sheet.vue
index b3e6f5f9c..0b5dae996 100644
--- a/packages/client/src/pages/mfm-cheat-sheet.vue
+++ b/packages/client/src/pages/mfm-cheat-sheet.vue
@@ -1,301 +1,313 @@
-
-
{{ $ts._mfm.intro }}
+
+
+
{{ $ts._mfm.intro }}
+
+
{{ $ts._mfm.mention }}
+
+
{{ $ts._mfm.mentionDescription }}
+
+
+ MFM
+
+
+
+
+
{{ $ts._mfm.hashtag }}
+
+
{{ $ts._mfm.hashtagDescription }}
+
+
+ MFM
+
+
+
+
+
{{ $ts._mfm.url }}
+
+
{{ $ts._mfm.urlDescription }}
+
+
+ MFM
+
+
+
+
+
{{ $ts._mfm.link }}
+
+
{{ $ts._mfm.linkDescription }}
+
+
+ MFM
+
+
+
+
+
{{ $ts._mfm.emoji }}
+
+
{{ $ts._mfm.emojiDescription }}
+
+
+ MFM
+
+
+
+
+
{{ $ts._mfm.bold }}
+
+
{{ $ts._mfm.boldDescription }}
+
+
+ MFM
+
+
+
+
+
{{ $ts._mfm.small }}
+
+
{{ $ts._mfm.smallDescription }}
+
+
+ MFM
+
+
+
+
+
{{ $ts._mfm.quote }}
+
+
{{ $ts._mfm.quoteDescription }}
+
+
+ MFM
+
+
+
+
+
{{ $ts._mfm.center }}
+
+
{{ $ts._mfm.centerDescription }}
+
+
+ MFM
+
+
+
+
+
{{ $ts._mfm.inlineCode }}
+
+
{{ $ts._mfm.inlineCodeDescription }}
+
+
+ MFM
+
+
+
+
+
{{ $ts._mfm.blockCode }}
+
+
{{ $ts._mfm.blockCodeDescription }}
+
+
+ MFM
+
+
+
+
+
{{ $ts._mfm.inlineMath }}
+
+
{{ $ts._mfm.inlineMathDescription }}
+
+
+ MFM
+
+
+
+
+
+
{{ $ts._mfm.flip }}
+
+
{{ $ts._mfm.flipDescription }}
+
+
+ MFM
+
+
+
+
+
{{ $ts._mfm.font }}
+
+
{{ $ts._mfm.fontDescription }}
+
+
+ MFM
+
+
+
+
+
{{ $ts._mfm.x2 }}
+
+
{{ $ts._mfm.x2Description }}
+
+
+ MFM
+
+
+
+
+
{{ $ts._mfm.x3 }}
+
+
{{ $ts._mfm.x3Description }}
+
+
+ MFM
+
+
+
+
+
{{ $ts._mfm.x4 }}
+
+
{{ $ts._mfm.x4Description }}
+
+
+ MFM
+
+
+
+
+
{{ $ts._mfm.blur }}
+
+
{{ $ts._mfm.blurDescription }}
+
+
+ MFM
+
+
+
+
+
{{ $ts._mfm.jelly }}
+
+
{{ $ts._mfm.jellyDescription }}
+
+
+ MFM
+
+
+
+
+
{{ $ts._mfm.tada }}
+
+
{{ $ts._mfm.tadaDescription }}
+
+
+ MFM
+
+
+
+
+
{{ $ts._mfm.jump }}
+
+
{{ $ts._mfm.jumpDescription }}
+
+
+ MFM
+
+
+
+
+
{{ $ts._mfm.bounce }}
+
+
{{ $ts._mfm.bounceDescription }}
+
+
+ MFM
+
+
+
+
+
{{ $ts._mfm.spin }}
+
+
{{ $ts._mfm.spinDescription }}
+
+
+ MFM
+
+
+
+
+
{{ $ts._mfm.shake }}
+
+
{{ $ts._mfm.shakeDescription }}
+
+
+ MFM
+
+
+
+
+
{{ $ts._mfm.twitch }}
+
+
{{ $ts._mfm.twitchDescription }}
+
+
+ MFM
+
+
+
+
+
{{ $ts._mfm.rainbow }}
+
+
{{ $ts._mfm.rainbowDescription }}
+
+
+ MFM
+
+
+
+
+
{{ $ts._mfm.sparkle }}
+
+
{{ $ts._mfm.sparkleDescription }}
+
+
+ MFM
+
+
+
+
+
{{ $ts._mfm.rotate }}
+
+
{{ $ts._mfm.rotateDescription }}
+
+
+ MFM
+
+
+
+
+
{{ $ts._mfm.plain }}
+
+
{{ $ts._mfm.plainDescription }}
+
+
+ MFM
+
-
-
{{ $ts._mfm.url }}
-
-
{{ $ts._mfm.urlDescription }}
-
-
- MFM
-
-
-
-
-
{{ $ts._mfm.link }}
-
-
{{ $ts._mfm.linkDescription }}
-
-
- MFM
-
-
-
-
-
{{ $ts._mfm.emoji }}
-
-
{{ $ts._mfm.emojiDescription }}
-
-
- MFM
-
-
-
-
-
{{ $ts._mfm.bold }}
-
-
{{ $ts._mfm.boldDescription }}
-
-
- MFM
-
-
-
-
-
{{ $ts._mfm.small }}
-
-
{{ $ts._mfm.smallDescription }}
-
-
- MFM
-
-
-
-
-
{{ $ts._mfm.quote }}
-
-
{{ $ts._mfm.quoteDescription }}
-
-
- MFM
-
-
-
-
-
{{ $ts._mfm.center }}
-
-
{{ $ts._mfm.centerDescription }}
-
-
- MFM
-
-
-
-
-
{{ $ts._mfm.inlineCode }}
-
-
{{ $ts._mfm.inlineCodeDescription }}
-
-
- MFM
-
-
-
-
-
{{ $ts._mfm.blockCode }}
-
-
{{ $ts._mfm.blockCodeDescription }}
-
-
- MFM
-
-
-
-
-
{{ $ts._mfm.inlineMath }}
-
-
{{ $ts._mfm.inlineMathDescription }}
-
-
- MFM
-
-
-
-
-
-
{{ $ts._mfm.flip }}
-
-
{{ $ts._mfm.flipDescription }}
-
-
- MFM
-
-
-
-
-
{{ $ts._mfm.font }}
-
-
{{ $ts._mfm.fontDescription }}
-
-
- MFM
-
-
-
-
-
{{ $ts._mfm.x2 }}
-
-
{{ $ts._mfm.x2Description }}
-
-
- MFM
-
-
-
-
-
{{ $ts._mfm.x3 }}
-
-
{{ $ts._mfm.x3Description }}
-
-
- MFM
-
-
-
-
-
{{ $ts._mfm.x4 }}
-
-
{{ $ts._mfm.x4Description }}
-
-
- MFM
-
-
-
-
-
{{ $ts._mfm.blur }}
-
-
{{ $ts._mfm.blurDescription }}
-
-
- MFM
-
-
-
-
-
{{ $ts._mfm.jelly }}
-
-
{{ $ts._mfm.jellyDescription }}
-
-
- MFM
-
-
-
-
-
{{ $ts._mfm.tada }}
-
-
{{ $ts._mfm.tadaDescription }}
-
-
- MFM
-
-
-
-
-
{{ $ts._mfm.jump }}
-
-
{{ $ts._mfm.jumpDescription }}
-
-
- MFM
-
-
-
-
-
{{ $ts._mfm.bounce }}
-
-
{{ $ts._mfm.bounceDescription }}
-
-
- MFM
-
-
-
-
-
{{ $ts._mfm.spin }}
-
-
{{ $ts._mfm.spinDescription }}
-
-
- MFM
-
-
-
-
-
{{ $ts._mfm.shake }}
-
-
{{ $ts._mfm.shakeDescription }}
-
-
- MFM
-
-
-
-
-
{{ $ts._mfm.twitch }}
-
-
{{ $ts._mfm.twitchDescription }}
-
-
- MFM
-
-
-
-
-
{{ $ts._mfm.rainbow }}
-
-
{{ $ts._mfm.rainbowDescription }}
-
-
- MFM
-
-
-
-
-
{{ $ts._mfm.sparkle }}
-
-
{{ $ts._mfm.sparkleDescription }}
-
-
- MFM
-
-
-
-
-
{{ $ts._mfm.rotate }}
-
-
{{ $ts._mfm.rotateDescription }}
-
-
- MFM
-
-
-
-
+
@@ -306,35 +318,36 @@ import { definePageMetadata } from '@/scripts/page-metadata';
import { i18n } from '@/i18n';
import { instance } from '@/instance';
-let preview_mention = '@example';
-let preview_hashtag = '#test';
-let preview_url = 'https://example.com';
-let preview_link = `[${i18n.ts._mfm.dummy}](https://example.com)`;
-let preview_emoji = instance.emojis.length ? `:${instance.emojis[0].name}:` : ':emojiname:';
-let preview_bold = `**${i18n.ts._mfm.dummy}**`;
-let preview_small = `${i18n.ts._mfm.dummy}`;
-let preview_center = `
${i18n.ts._mfm.dummy}`;
-let preview_inlineCode = '`<: "Hello, world!"`';
-let preview_blockCode = '```\n~ (#i, 100) {\n\t<: ? ((i % 15) = 0) "FizzBuzz"\n\t\t.? ((i % 3) = 0) "Fizz"\n\t\t.? ((i % 5) = 0) "Buzz"\n\t\t. i\n}\n```';
-let preview_inlineMath = '\\(x= \\frac{-b\' \\pm \\sqrt{(b\')^2-ac}}{a}\\)';
-let preview_quote = `> ${i18n.ts._mfm.dummy}`;
-let preview_search = `${i18n.ts._mfm.dummy} 検索`;
-let preview_jelly = '$[jelly 🍮] $[jelly.speed=5s 🍮]';
-let preview_tada = '$[tada 🍮] $[tada.speed=5s 🍮]';
-let preview_jump = '$[jump 🍮] $[jump.speed=5s 🍮]';
-let preview_bounce = '$[bounce 🍮] $[bounce.speed=5s 🍮]';
-let preview_shake = '$[shake 🍮] $[shake.speed=5s 🍮]';
-let preview_twitch = '$[twitch 🍮] $[twitch.speed=5s 🍮]';
-let preview_spin = '$[spin 🍮] $[spin.left 🍮] $[spin.alternate 🍮]\n$[spin.x 🍮] $[spin.x,left 🍮] $[spin.x,alternate 🍮]\n$[spin.y 🍮] $[spin.y,left 🍮] $[spin.y,alternate 🍮]\n\n$[spin.speed=5s 🍮]';
-let preview_flip = `$[flip ${i18n.ts._mfm.dummy}]\n$[flip.v ${i18n.ts._mfm.dummy}]\n$[flip.h,v ${i18n.ts._mfm.dummy}]`;
-let preview_font = `$[font.serif ${i18n.ts._mfm.dummy}]\n$[font.monospace ${i18n.ts._mfm.dummy}]\n$[font.cursive ${i18n.ts._mfm.dummy}]\n$[font.fantasy ${i18n.ts._mfm.dummy}]`;
-let preview_x2 = '$[x2 🍮]';
-let preview_x3 = '$[x3 🍮]';
-let preview_x4 = '$[x4 🍮]';
-let preview_blur = `$[blur ${i18n.ts._mfm.dummy}]`;
-let preview_rainbow = '$[rainbow 🍮] $[rainbow.speed=5s 🍮]';
-let preview_sparkle = '$[sparkle 🍮]';
-let preview_rotate = '$[rotate 🍮]';
+let preview_mention = $ref('@example');
+let preview_hashtag = $ref('#test');
+let preview_url = $ref('https://example.com');
+let preview_link = $ref(`[${i18n.ts._mfm.dummy}](https://example.com)`);
+let preview_emoji = $ref(instance.emojis.length ? `:${instance.emojis[0].name}:` : ':emojiname:');
+let preview_bold = $ref(`**${i18n.ts._mfm.dummy}**`);
+let preview_small = $ref(`${i18n.ts._mfm.dummy}`);
+let preview_center = $ref(`${i18n.ts._mfm.dummy}`);
+let preview_inlineCode = $ref('`<: "Hello, world!"`');
+let preview_blockCode = $ref('```\n~ (#i, 100) {\n\t<: ? ((i % 15) = 0) "FizzBuzz"\n\t\t.? ((i % 3) = 0) "Fizz"\n\t\t.? ((i % 5) = 0) "Buzz"\n\t\t. i\n}\n```');
+let preview_inlineMath = $ref('\\(x= \\frac{-b\' \\pm \\sqrt{(b\')^2-ac}}{a}\\)');
+let preview_quote = $ref(`> ${i18n.ts._mfm.dummy}`);
+let preview_search = $ref(`${i18n.ts._mfm.dummy} 検索`);
+let preview_jelly = $ref('$[jelly 🍮] $[jelly.speed=5s 🍮]');
+let preview_tada = $ref('$[tada 🍮] $[tada.speed=5s 🍮]');
+let preview_jump = $ref('$[jump 🍮] $[jump.speed=5s 🍮]');
+let preview_bounce = $ref('$[bounce 🍮] $[bounce.speed=5s 🍮]');
+let preview_shake = $ref('$[shake 🍮] $[shake.speed=5s 🍮]');
+let preview_twitch = $ref('$[twitch 🍮] $[twitch.speed=5s 🍮]');
+let preview_spin = $ref('$[spin 🍮] $[spin.left 🍮] $[spin.alternate 🍮]\n$[spin.x 🍮] $[spin.x,left 🍮] $[spin.x,alternate 🍮]\n$[spin.y 🍮] $[spin.y,left 🍮] $[spin.y,alternate 🍮]\n\n$[spin.speed=5s 🍮]');
+let preview_flip = $ref(`$[flip ${i18n.ts._mfm.dummy}]\n$[flip.v ${i18n.ts._mfm.dummy}]\n$[flip.h,v ${i18n.ts._mfm.dummy}]`);
+let preview_font = $ref(`$[font.serif ${i18n.ts._mfm.dummy}]\n$[font.monospace ${i18n.ts._mfm.dummy}]\n$[font.cursive ${i18n.ts._mfm.dummy}]\n$[font.fantasy ${i18n.ts._mfm.dummy}]`);
+let preview_x2 = $ref('$[x2 🍮]');
+let preview_x3 = $ref('$[x3 🍮]');
+let preview_x4 = $ref('$[x4 🍮]');
+let preview_blur = $ref(`$[blur ${i18n.ts._mfm.dummy}]`);
+let preview_rainbow = $ref('$[rainbow 🍮] $[rainbow.speed=5s 🍮]');
+let preview_sparkle = $ref('$[sparkle 🍮]');
+let preview_rotate = $ref('$[rotate 🍮]');
+let preview_plain = $ref('**bold** @mention #hashtag `code` $[x2 🍮]');
definePageMetadata({
title: i18n.ts._mfm.cheatSheet,
diff --git a/packages/client/src/pages/settings/email.vue b/packages/client/src/pages/settings/email.vue
index e575af6d6..9d2afd6a6 100644
--- a/packages/client/src/pages/settings/email.vue
+++ b/packages/client/src/pages/settings/email.vue
@@ -10,7 +10,7 @@
-
+
{{ $ts.receiveAnnouncementFromInstance }}