Merge branch 'develop'

This commit is contained in:
syuilo 2022-07-19 17:22:32 +09:00
commit 09591fa4ae
15 changed files with 368 additions and 335 deletions

View file

@ -9,6 +9,18 @@
You should also include the user name that made the change. You should also include the user name that made the change.
--> -->
## 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) ## 12.117.0 (2022/07/18)
### Improvements ### Improvements

View file

@ -1038,6 +1038,8 @@ _mfm:
sparkleDescription: "キラキラしたパーティクルのエフェクトを追加します。" sparkleDescription: "キラキラしたパーティクルのエフェクトを追加します。"
rotate: "回転" rotate: "回転"
rotateDescription: "指定した角度で回転させます。" rotateDescription: "指定した角度で回転させます。"
plain: "プレーン"
plainDescription: "内側の構文を全て無効にします。"
_instanceTicker: _instanceTicker:
none: "表示しない" none: "表示しない"

View file

@ -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." 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" navbar: "Navigačný panel"
account: "Účty" account: "Účty"
move: "Pohyb"
_sensitiveMediaDetection: _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." 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" sensitivity: "Citlivosť detekcie"
@ -1691,6 +1692,7 @@ _deck:
alwaysShowMainColumn: "Vždy zobraziť v hlavnom stĺpci" alwaysShowMainColumn: "Vždy zobraziť v hlavnom stĺpci"
columnAlign: "Zarovnať stĺpce" columnAlign: "Zarovnať stĺpce"
addColumn: "Pridať stĺpec" addColumn: "Pridať stĺpec"
configureColumn: "Nastavenie stĺpcov"
swapLeft: "Vymeniť vľavo" swapLeft: "Vymeniť vľavo"
swapRight: "Vymeniť vpravo" swapRight: "Vymeniť vpravo"
swapUp: "Vymeniť hore" swapUp: "Vymeniť hore"

View file

@ -1,6 +1,6 @@
{ {
"name": "misskey", "name": "misskey",
"version": "12.117.0", "version": "12.117.1",
"codename": "indigo", "codename": "indigo",
"repository": { "repository": {
"type": "git", "type": "git",

View file

@ -101,13 +101,17 @@ export async function getFileInfo(path: string, opts: {
let porn = false; let porn = false;
if (!opts.skipSensitiveDetection) { if (!opts.skipSensitiveDetection) {
[sensitive, porn] = await detectSensitivity( await detectSensitivity(
path, path,
type.mime, type.mime,
opts.sensitiveThreshold ?? 0.5, opts.sensitiveThreshold ?? 0.5,
opts.sensitiveThresholdForPorn ?? 0.75, opts.sensitiveThresholdForPorn ?? 0.75,
opts.enableSensitiveMediaDetectionForVideos ?? false, opts.enableSensitiveMediaDetectionForVideos ?? false,
); ).then(value => {
[sensitive, porn] = value;
}, error => {
warnings.push(`detectSensitivity failed: ${error}`);
});
} }
return { return {

View file

@ -15,7 +15,7 @@
"@rollup/plugin-alias": "3.1.9", "@rollup/plugin-alias": "3.1.9",
"@rollup/plugin-json": "4.1.0", "@rollup/plugin-json": "4.1.0",
"@syuilo/aiscript": "0.11.1", "@syuilo/aiscript": "0.11.1",
"@vitejs/plugin-vue": "3.0.0", "@vitejs/plugin-vue": "3.0.1",
"@vue/compiler-sfc": "3.2.37", "@vue/compiler-sfc": "3.2.37",
"abort-controller": "3.0.0", "abort-controller": "3.0.0",
"autobind-decorator": "2.4.0", "autobind-decorator": "2.4.0",
@ -73,7 +73,7 @@
"uuid": "8.3.2", "uuid": "8.3.2",
"v-debounce": "0.1.2", "v-debounce": "0.1.2",
"vanilla-tilt": "1.7.2", "vanilla-tilt": "1.7.2",
"vite": "3.0.0", "vite": "3.0.2",
"vue": "3.2.37", "vue": "3.2.37",
"vue-prism-editor": "2.0.0-alpha.2", "vue-prism-editor": "2.0.0-alpha.2",
"vuedraggable": "4.0.1", "vuedraggable": "4.0.1",

View file

@ -75,7 +75,7 @@ const props = withDefaults(defineProps<{
canResize: false, canResize: false,
closeButton: true, closeButton: true,
mini: false, mini: false,
front: true, front: false,
contextmenu: null, contextmenu: null,
buttonsLeft: () => [], buttonsLeft: () => [],
buttonsRight: () => [], buttonsRight: () => [],

View file

@ -1,6 +1,7 @@
<template> <template>
<MkStickyContainer> <MkStickyContainer>
<template #header><MkPageHeader/></template> <template #header><MkPageHeader/></template>
<MkSpacer :content-max="800">
<div class="mwysmxbg"> <div class="mwysmxbg">
<div>{{ $ts._mfm.intro }}</div> <div>{{ $ts._mfm.intro }}</div>
<div class="section _block"> <div class="section _block">
@ -295,7 +296,18 @@
</div> </div>
</div> </div>
</div> </div>
<div class="section _block">
<div class="title">{{ $ts._mfm.plain }}</div>
<div class="content">
<p>{{ $ts._mfm.plainDescription }}</p>
<div class="preview">
<Mfm :text="preview_plain"/>
<MkTextarea v-model="preview_plain"><span>MFM</span></MkTextarea>
</div> </div>
</div>
</div>
</div>
</MkSpacer>
</MkStickyContainer> </MkStickyContainer>
</template> </template>
@ -306,35 +318,36 @@ import { definePageMetadata } from '@/scripts/page-metadata';
import { i18n } from '@/i18n'; import { i18n } from '@/i18n';
import { instance } from '@/instance'; import { instance } from '@/instance';
const preview_mention = '@example'; let preview_mention = $ref('@example');
const preview_hashtag = '#test'; let preview_hashtag = $ref('#test');
const preview_url = 'https://example.com'; let preview_url = $ref('https://example.com');
const preview_link = `[${i18n.ts._mfm.dummy}](https://example.com)`; let preview_link = $ref(`[${i18n.ts._mfm.dummy}](https://example.com)`);
const preview_emoji = instance.emojis.length ? `:${instance.emojis[0].name}:` : ':emojiname:'; let preview_emoji = $ref(instance.emojis.length ? `:${instance.emojis[0].name}:` : ':emojiname:');
const preview_bold = `**${i18n.ts._mfm.dummy}**`; let preview_bold = $ref(`**${i18n.ts._mfm.dummy}**`);
const preview_small = `<small>${i18n.ts._mfm.dummy}</small>`; let preview_small = $ref(`<small>${i18n.ts._mfm.dummy}</small>`);
const preview_center = `<center>${i18n.ts._mfm.dummy}</center>`; let preview_center = $ref(`<center>${i18n.ts._mfm.dummy}</center>`);
const preview_inlineCode = '`<: "Hello, world!"`'; let preview_inlineCode = $ref('`<: "Hello, world!"`');
const 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_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```');
const preview_inlineMath = '\\(x= \\frac{-b\' \\pm \\sqrt{(b\')^2-ac}}{a}\\)'; let preview_inlineMath = $ref('\\(x= \\frac{-b\' \\pm \\sqrt{(b\')^2-ac}}{a}\\)');
const preview_quote = `> ${i18n.ts._mfm.dummy}`; let preview_quote = $ref(`> ${i18n.ts._mfm.dummy}`);
const preview_search = `${i18n.ts._mfm.dummy} 検索`; let preview_search = $ref(`${i18n.ts._mfm.dummy} 検索`);
const preview_jelly = '$[jelly 🍮] $[jelly.speed=5s 🍮]'; let preview_jelly = $ref('$[jelly 🍮] $[jelly.speed=5s 🍮]');
const preview_tada = '$[tada 🍮] $[tada.speed=5s 🍮]'; let preview_tada = $ref('$[tada 🍮] $[tada.speed=5s 🍮]');
const preview_jump = '$[jump 🍮] $[jump.speed=5s 🍮]'; let preview_jump = $ref('$[jump 🍮] $[jump.speed=5s 🍮]');
const preview_bounce = '$[bounce 🍮] $[bounce.speed=5s 🍮]'; let preview_bounce = $ref('$[bounce 🍮] $[bounce.speed=5s 🍮]');
const preview_shake = '$[shake 🍮] $[shake.speed=5s 🍮]'; let preview_shake = $ref('$[shake 🍮] $[shake.speed=5s 🍮]');
const preview_twitch = '$[twitch 🍮] $[twitch.speed=5s 🍮]'; let preview_twitch = $ref('$[twitch 🍮] $[twitch.speed=5s 🍮]');
const 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_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 🍮]');
const preview_flip = `$[flip ${i18n.ts._mfm.dummy}]\n$[flip.v ${i18n.ts._mfm.dummy}]\n$[flip.h,v ${i18n.ts._mfm.dummy}]`; let preview_flip = $ref(`$[flip ${i18n.ts._mfm.dummy}]\n$[flip.v ${i18n.ts._mfm.dummy}]\n$[flip.h,v ${i18n.ts._mfm.dummy}]`);
const 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_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}]`);
const preview_x2 = '$[x2 🍮]'; let preview_x2 = $ref('$[x2 🍮]');
const preview_x3 = '$[x3 🍮]'; let preview_x3 = $ref('$[x3 🍮]');
const preview_x4 = '$[x4 🍮]'; let preview_x4 = $ref('$[x4 🍮]');
const preview_blur = `$[blur ${i18n.ts._mfm.dummy}]`; let preview_blur = $ref(`$[blur ${i18n.ts._mfm.dummy}]`);
const preview_rainbow = '$[rainbow 🍮] $[rainbow.speed=5s 🍮]'; let preview_rainbow = $ref('$[rainbow 🍮] $[rainbow.speed=5s 🍮]');
const preview_sparkle = '$[sparkle 🍮]'; let preview_sparkle = $ref('$[sparkle 🍮]');
const preview_rotate = '$[rotate 🍮]'; let preview_rotate = $ref('$[rotate 🍮]');
let preview_plain = $ref('<plain>**bold** @mention #hashtag `code` $[x2 🍮]</plain>');
definePageMetadata({ definePageMetadata({
title: i18n.ts._mfm.cheatSheet, title: i18n.ts._mfm.cheatSheet,

View file

@ -74,7 +74,7 @@ function fetchValue() {
async function save() { async function save() {
try { try {
JSON5.parse(valueForEditor); JSON5.parse(valueForEditor);
} catch (e) { } catch (err) {
os.alert({ os.alert({
type: 'error', type: 'error',
text: i18n.ts.invalidValue, text: i18n.ts.invalidValue,

View file

@ -10,7 +10,7 @@
</FormSection> </FormSection>
<FormSection> <FormSection>
<FormSwitch :value="$i.receiveAnnouncementEmail" @update:modelValue="onChangeReceiveAnnouncementEmail"> <FormSwitch :model-value="$i.receiveAnnouncementEmail" @update:modelValue="onChangeReceiveAnnouncementEmail">
{{ $ts.receiveAnnouncementFromInstance }} {{ $ts.receiveAnnouncementFromInstance }}
</FormSwitch> </FormSwitch>
</FormSection> </FormSection>

View file

@ -6,7 +6,7 @@
<div v-if="user"> <div v-if="user">
<XFollowList :user="user" type="followers"/> <XFollowList :user="user" type="followers"/>
</div> </div>
<MkError v-else-if="error" @retry="fetch()"/> <MkError v-else-if="error" @retry="fetchUser()"/>
<MkLoading v-else/> <MkLoading v-else/>
</transition> </transition>
</MkSpacer> </MkSpacer>

View file

@ -6,7 +6,7 @@
<div v-if="user"> <div v-if="user">
<XFollowList :user="user" type="following"/> <XFollowList :user="user" type="following"/>
</div> </div>
<MkError v-else-if="error" @retry="fetch()"/> <MkError v-else-if="error" @retry="fetchUser()"/>
<MkLoading v-else/> <MkLoading v-else/>
</transition> </transition>
</MkSpacer> </MkSpacer>

View file

@ -10,7 +10,7 @@
<XPages v-else-if="tab === 'pages'" :user="user"/> <XPages v-else-if="tab === 'pages'" :user="user"/>
<XGallery v-else-if="tab === 'gallery'" :user="user"/> <XGallery v-else-if="tab === 'gallery'" :user="user"/>
</div> </div>
<MkError v-else-if="error" @retry="fetch()"/> <MkError v-else-if="error" @retry="fetchUser()"/>
<MkLoading v-else/> <MkLoading v-else/>
</transition> </transition>
</div> </div>

View file

@ -156,7 +156,7 @@ function more(ev: MouseEvent) {
<style lang="scss" scoped> <style lang="scss" scoped>
.mvcprjjd { .mvcprjjd {
$nav-width: 250px; $nav-width: 250px;
$nav-icon-only-width: 86px; $nav-icon-only-width: 80px;
flex: 0 0 $nav-width; flex: 0 0 $nav-width;
width: $nav-width; width: $nav-width;

View file

@ -600,10 +600,10 @@
resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44"
integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==
"@vitejs/plugin-vue@3.0.0": "@vitejs/plugin-vue@3.0.1":
version "3.0.0" version "3.0.1"
resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-3.0.0.tgz#7081e2b3fbe04e291bb85107b9fb57a1fa5e6aeb" resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-3.0.1.tgz#b6af8f782485374bbb5fe09edf067a845bf4caae"
integrity sha512-yWP34ArFh/jAeNUDkkLz/kVRLjf5ppJiq4L36f64Cp6dIrMQeYZGDP9xxdemlXfZR9ylN9JgHUl3GzfqOtgYDg== integrity sha512-Ll9JgxG7ONIz/XZv3dssfoMUDu9qAnlJ+km+pBA0teYSXzwPCIzS/e1bmwNYl5dcQGs677D21amgfYAnzMl17A==
"@vue/compiler-core@3.2.37": "@vue/compiler-core@3.2.37":
version "3.2.37" version "3.2.37"
@ -4222,10 +4222,10 @@ verror@1.10.0:
core-util-is "1.0.2" core-util-is "1.0.2"
extsprintf "^1.2.0" extsprintf "^1.2.0"
vite@3.0.0: vite@3.0.2:
version "3.0.0" version "3.0.2"
resolved "https://registry.yarnpkg.com/vite/-/vite-3.0.0.tgz#b4675cb9ab83ec0803b9c952ffa6519bcce033a7" resolved "https://registry.yarnpkg.com/vite/-/vite-3.0.2.tgz#2a7b4642c53ae066cf724e7e581d6c1fd24e2c32"
integrity sha512-M7phQhY3+fRZa0H+1WzI6N+/onruwPTBTMvaj7TzgZ0v2TE+N2sdLKxJOfOv9CckDWt5C4HmyQP81xB4dwRKzA== integrity sha512-TAqydxW/w0U5AoL5AsD9DApTvGb2iNbGs3sN4u2VdT1GFkQVUfgUldt+t08TZgi23uIauh1TUOQJALduo9GXqw==
dependencies: dependencies:
esbuild "^0.14.47" esbuild "^0.14.47"
postcss "^8.4.14" postcss "^8.4.14"